Atunci când un proces se presupune că este prea lent sau nepractic pentru a fi verificat experimental, știinţa simulării este o unealtă valoroasă pentru a-i verifica validitatea. Evoluţia vieţii este, prin excelenţă, un astfel de proces: prea lent pentru observaţii directe concludente și prea vast în timp pentru o abordare empirică practică. Poate fi evoluţia simulată? Dacă da, cu ce rezultate?

Astăzi, simulările pe calculator ale unor procese prea scump sau dificil de recreat în realitate sunt cât se poate de comune în știinţă și în inginerie. În universul virtual al computerelor, caracteristicile dinamice ale avioanelor se cunosc cu mult înainte ca primul prototip fizic să existe, rezistenţa construcţiilor la cutremure poate fi determinată fără a pune în pericol vieţi sau proprietăţi și chiar bombe atomice pot fi detonate în voie de marile puteri ocolind moratoriul global asupra testelor nucleare reale.

Odată cu creșterea exponenţială a puterii de calcul disponibilă, simulările au dobândit o imensă capacitate de modelare și predicţie. Întrebarea dacă nu cumva și procesele evoluţiei ar putea fi simulate devine cât se poate de legitimă.

Supercalculatoarele de azi ar trebui să fie capabile să comprime milioanele de ani de evoluţie în zile sau chiar ore, măcar pentru modele de organisme simple, unicelulare, cu reproducere asexuată, cum ar fi bacteriile.

Dacă evoluţia vieţii este un fenomen real, care se petrece într-un timp vast prin presiuni selective asupra mutaţiilor spontane de la nivelul codului genetic, atunci ar trebui ca trăsăturile generale ale acestui proces să fie deja destul de ușor de simulat. Într-adevăr principiile „de bază” ale evoluţiei sunt simplu de exprimat: mutaţii aleatorii și presiuni selective asupra unei populaţii de coduri genetice care se autoreproduc, adică o populaţie de organisme, din perspectiva unui informatician.

Perspectiva de a aduce confirmări importante teoriei evoluţiei prin simulări a atras deja o masă critică de cercetători, iar domeniul este în plin avânt. Frecvent apar noi și noi rezultate care, aparent, confirmă teoria și o îmbogăţesc. În cele ce urmează vom detalia niște linii directoare în care aceste rezultate pot fi înţelese și interpretate.

Gradualism teleologic

În cartea Ceasornicarul orb, biologul evoluţionist și ateu militant Richard Dawkins a fost printre primii care a propus câteva „jocuri” simple de simulări evoluţioniste. Mai întâi, Dawkins prezintă un joc de cuvinte implementat pe calculator în care se pornește de la un șir de litere la întâmplare și se urmărește „evoluarea” unor generaţii succesive ale acestui șir, până la o propoziţie-ţintă din Shakespeare: „Me thinks it is like a weasel.”

La cadrul fiecărei „generaţii” a şirului se produc un număr oarecare de șiruri succesoare, aproape identice cu cel de referinţă, doar cu mici modificări aleatorii, menite a simula mutaţiile. Dintre acestea, calculatorul selectează automat șirul cel mai asemănător cu propoziţia din Shakespeare, pentru a fi generaţia următoare a șirului. La un calcul simplu, un program de calculator care ar căuta „Me thinks it is like a weasel” prin combinaţii de litere la întâmplare ar avea o șansă din 1040 de succes. Acesta este un număr atât de infim, încât probabil că miliarde de ani nu ar fi suficienţi, indiferent cât de puternic ar fi calculatorul.

Totuși oare din câte generaţii de propoziţii reușește strategia evoluţionistă a programului lui Dawkins să evolueze „Me thinks it is like a weasel” dintr-o adunătură de litere fără sens? Răspunsul este surprinzător și remarcabil în același timp: în general e nevoie de doar 40-60 de generaţii!

Un al doilea exemplu adus de Dawkins este un program care simulează evoluţia unor figurine, numite de el „biomorfe”. O „biomorfă” este o figură geometrică formată din segmente simple și guvernată de niște parametri bine stabiliţi.

La fel ca în cazul anterior, o biomorfă a unei generaţii va da naștere la câteva biomorfe-fiice, variind aleatoriu, câte puţin, parametrii de control și simulând astfel mutaţii aleatorii. Spre deosebire de exemplul precedent însă, nu un calculator selectează biomorfa ce va merge la generaţia următoare, ci utilizatorul uman are acest rol.

În acest fel, experimentul este ghidat la fiecare pas de „selecţia artificială” a omului. Folosind acest proces, Dawkins a reușit să obţină biomorfe care să semene vag cu copaci, broscuţe sau insecte. Iar numărul necesar de generaţii a fost, iarăși, surprinzător de mic.

Aceste rezultate par a aduce confirmări impresionante pentru puterea presiunilor selective de a învinge probabilităţi aparent de netrecut și de a direcţiona un proces aleatoriu spre o ţintă prestabilită. La o privire mai atentă însă, se observă că practic aceste simulări simple nu fac decât să arate că procese aleatorii pot fi constrânse prin presiuni selective puternice și „inteligente” pentru a ajunge la o ţintă dinainte stabilită. Dar cât de „naturale” sunt constrângerile este o cu totul altă discuţie. De fapt gradul mic de mutaţii permis și presiunea selectivă neverosimil de mare sunt cum nu se poate mai nenaturale din perspectivă evoluţionistă și reprezintă cheia acestui succes aparent și facil, dar foarte înșelător. În plus evoluţia naturală presupune și insistă că nu are un scop prestabilit spre care tinde, așa că aceste constrângeri sunt de două ori nenaturale. Acestea sunt două obiecţii majore aduse validităţii acestui tip de simulări:

1) Faptul că sunt teleologice, adică urmăresc un scop dinainte stabilit, caracteristică pe care evoluţia naturală nu o poate avea. În plus acest aspect influenţează subtil, dar decisiv și timpul scurt în care este atins scopul prin presiuni selective: un proces fără scop precis ar avea mult mai multe șanse să caute „orbește” printre forme neinteresante decât un proces constrâns spre un scop precis.

2) Faptul că presiunile selective și ratele de mutaţii folosite sunt complet neverosimile în raport cu orice scenariu natural imaginabil. Practic, poţi să obţii cu destulă ușurinţă nu doar o biomorfă cu o palidă asemănare de insectă, ci chiar un elefant destul de detaliat, dacă factorii aleatori și selecţia „naturală” sunt constrânşi artificial și aprioric pe un drum îngust și gradual de la insectă la elefant.

Deși comunitatea știinţifică evoluţionistă nu denunţă în general aceste simulări ale lui Dawkins ca fiind greșite sau nereprezentative, ele sunt totuși considerate mai mult didactice și ilustrative pentru „ce ar putea face” evoluţia. Ele nu sunt considerate sub nicio formă simulări serioase. Există și simulări care aspiră la acest titlu și de ele ne vom ocupa în continuare.

Algoritmi genetici

Printre primele aplicaţii ale principiilor evoluţiei în informatică s-a numărat şi un tip mai camuflat de abordări simulative numite generic „algoritmi genetici”. Pentru o anumită problemă dată, strategia acestui tip de algoritmi este aceea de a porni de la o „populaţie” iniţială de soluţii neoptime, poate chiar la întâmplare, și de a evolua această populaţie către un optim cât mai bun, adică spre un grad de adaptare cât mai mare.

La un moment dat, soluţiile din populaţie pot suferi mutaţii, recombinări sau pot „muri”, totul sub direcţionarea unei selecţii naturale simulate, în funcţie de gradul de adaptare calculat pentru fiecare. Aceste abordări au generat mare entuziasm în anii ’90, când domeniul se dezvolta cel mai puternic. Odată cu dezvoltarea explozivă a informaticii, tot mai multe probleme reale pe care calculatoarele trebuiau să le rezolve se arătau nerezolvabile prin metode clasice, analitice. Pentru acestea se căutau soluţii tot mai sofisticate, dar aproximative, nu neapărat optime, și care să poată fi obţinute de un calculator într-un timp rezonabil.

Algoritmii genetici promiteau enorm: dacă natura și evoluţia au fost capabile să găsească atât de multe soluţii eficiente în problemele extrem de dificile ale complexităţii funcţionale a vieţii, de ce aceleași principii evoluţioniste nu ar merge aplicate și la căutarea de soluţii la probleme informatice reale și mult mai simple? Cu atât mai mult cu cât un calculator poate fi oricât de rapid și nu este tributar unor procese biologice lente de milioane și milioane de ani.

Însă unde s-a ajuns, în virtutea acestor speranţe, astăzi, câteva decenii mai târziu? Cu toate că şi informatica, și puterea de calcul a calculatoarelor au avansat enorm de atunci, algoritmii genetici au rămas doar un domeniu marginal și fără însemnătate în peisajul informaticii moderne. Caracterul lor promiţător nu s-a materializat, și aceasta datorită unei dinamici de maximă generalitate, căreia nu i se poate scăpa: într-o problemă dată, algoritmii genetici erau propuși pentru a ocoli căutarea de soluţii analitice clasice și greu sau imposibil de găsit.

Dar, cu cât populaţiile de soluţii erau lăsate mai libere de constrângeri pentru a evolua, cu atât acestea tindeau să nu conveargă spre niciun optim interesant, ci să varieze la întâmplare la nesfârșit. În schimb, cu cât erau mai constrânși parametrii de mutaţii, recombinările și mai ales funcţia de evaluare a gradului de succes a unei soluţii, cu atât mai „folositor” devenea procesul evoluţiei populaţiei. Dar, din păcate, constrângerea eficientă a acestor parametri nu însemna decât găsirea de modalităţi tot mai detaliate de rezolvare aproximativă a problemei pe căi clasice, așa că abordarea evolutivă își pierdea din raţiunea de a fi. Așa cum am văzut și în cazurile simulărilor lui Dawkins, este relativ ușor de evoluat soluţii interesante, dar doar dacă în prealabil se constrânge puternic spaţiul în care mutaţiile și selecţia naturală pot să se joace.

Viaţa digitală

Dar poate că avem pretenţii prea mari ca principiile evolutive să facă pentru informatică măcar o fracţiune din ceea ce se presupune că au făcut pentru viaţa biologică. Poate că, dintr-un motiv încă necunoscut, evoluţia nu se aplică prea bine la probleme informatice și algoritmi genetici. Se pune însă întrebarea dacă prin simulări evolutive putem observa măcar câteva aspecte generale, cum ar fi complexificarea informaţiei în pași graduali. Acest lucru ar trebui să se poată observa, pentru că, după cum subliniază și renumitul biolog evoluţionist ateu Daniel Dennett, „evoluţia se va întâmpla oricând și oriunde se întâlnesc trei condiţii: multiplicare, variaţie (mutaţie) și selecţie diferenţiată (competiţie)”[1].

Și, pentru a face lucrurile cât mai simple, în continuare nu ne vom ocupa de chestiunile mai dificile ale simulărilor, ce ţin de genetica populaţiilor sau de simulările evoluţiei a diverse organe, sisteme biologice sau chiar ecosisteme. Nu ne vom ocupa nici măcar de problema simulării evoluţiei vieţii multicelulare sau a organismelor cu reproducere sexuată. Ne vom ocupa doar de cele mai simple imaginabil entităţi informaţionale evoluabile, și anume bucăţi mici de programe de calculator, formate din instrucţiuni bine definite, ce se pot multiplica prin copiere simplă, pot suferi mutaţii și pot executa funcţii.

Acesta este domeniul numit astăzi informal „viaţă digitală” sau „viaţă artificială”. Există deja un întreg ecosistem de platforme software care își propun să susţină experimente de evoluţie a acestor programe, numite „entităţi de viaţă artificială. Ne vom concentra doar pe cel mai folosit și mai dezvoltat dintre aceste pachete software, și anume Avida.

Avida

Creat iniţial în 1993 de profesorul de informatică Charles Ofria și de echipa sa de la Universitatea Statului Michigan, Avida este o platformă software dedicată simulării organismelor digitale: acele mici programe, formate din instrucţiuni simple, care se supun celor trei reguli ale lui Dennett.

Un organism în Avida este un set de instrucţiuni ce se execută secvenţial și circular, fiecare putând fi executat în funcţie de acumularea a suficiente unităţi de energie, care se traduc în timp disponibil pe procesor. Programele din populaţie se află în competiţie pentru această resursă finită – timpul de procesor –, pe care o câștigă proporţional cu lungimea lor. În plus, timpul de procesor poate fi câștigat din abundenţă și prin efectuarea de operaţii complexe (formate din mai multe instrucţiuni primare), cu recompense fixe, predefinite.

Programele nu știu să execute astfel de operaţii complexe la început, dar acesta este și scopul, ca până la urmă programele să se schimbe și să evolueze spontan, sub presiunea selectivă a timpului de acces la procesor. Una dintre instrucţiuni este și cea de înmulţire, iar aceasta se face prin duplicare simplă, proces în care o proporţie predefinită de instrucţiuni suferă mutaţii la întâmplare. Astfel o întreagă populaţie evoluează în direcţia acaparării a cât mai mult timp de procesor și a executării propriului program, cât mai complex, pentru cât mai mult timp. Avida este momentan unealta cel mai bine dezvoltată și des folosită în domeniul vieţii digitale și implementează corect principiile generale ale evoluţiei, lăsând însă suficiente opţiuni și pentru ample calibrări umane.

Complexificarea informaţiei

Celebrul biolog evoluţionist Richard Lenski, a cărui cercetare în evoluţia pe termen lung a bacteriilor E.coli am prezentat-o într-un articol precedent, a arătat un interes special pentru simulările cu Avida. Într-un articol publicat în 2003 în revista Nature, împreună cu Ofria și colaboratorii[2], el descrie un experiment conceput pentru a înţelege dacă Avida poate oferi exemple de complexificare a informaţiei funcţionale prin evoluţie.

Scopul ultim al experimentului a fost obţinerea, prin evoluţie, a programului care să implementeze operatorul „egal”, notat „EQU”, între două șiruri de byţi. Operatorul EQU admite orice două șiruri de byţi (formate din 0 și 1) ca intrare și întoarce „adevărat” sau „fals”, după cum cele două șiruri sunt egale, byte cu byte, sau nu. Deși pare o operaţie banală intuitiv, din punct de vedere logic aceasta presupune un minimum de cinci instrucţiuni elementare pentru șirurile de byţi.

EQU poate fi obţinut și mai complicat, dar nu mai simplu de atât. Lenski și colaboratorii au pornit de la o populaţie de programe formate fiecare dintr-o înșiruire la întâmplare de instrucţiuni logice de 26 de tipuri, în total. Au mai definit și o serie de recompense sub formă de timpi de procesor pentru 9 operaţii complexe intermediare, pe care programele puteau să le evolueze. Timpul de procesor oferit că recompensă creștea în funcţie de complexitatea operaţiei, culminând cu EQU, care avea cea mai mare recompensă.

Cercetătorii au dat drumul la simulare și au așteptat să vadă ce se va întâmpla. Va fi operatorul EQU descoperit evolutiv de organismele artificiale din computer sau nu? Câteva mii de generaţii mai târziu, adică după numai câteva secunde, răspunsul era clar: nu numai că EQU a fost găsit de „avidieni”, dar a fost găsit chiar de o multitudine dintre organismele simulate. Analizându-li-se „istoria evolutivă”, s-a observat în plus că, așa cum prezicea teoria evoluţiei, mai întâi au fost descoperite funcţii simple cu recompense mai mici, pentru ca apoi, în salturi mai degrabă mari, funcţiile complexe să fie și ele construite din cele simple precedente, culminând cu EQU. Funcţiile simple aveau așadar un rol fundamental în descoperirea funcţiilor complicate, iar evoluţia din computer folosea structuri și funcţii gata disponibile pentru a crea structuri și funcţii noi, exact cum se presupune că se întâmplă și în evoluţia biologică. S-a observat de asemenea că dacă se rulează simularea fără recompense pentru funcţiile simple, atunci nici funcţiile complicate, EQU în particular, nu mai evoluau. Funcţiile EQU rezultate erau implementate, în general, diferit între „avidieni”, împlinind astfel și așteptarea evoluţionistă că pot exista multiple drumuri de transformare care duc spre același loc și nu drumurile contează pentru a ajunge la destinaţie, ci presiunea selectivă, care se descurcă cu ce are la dispoziţie la fiecare moment dat.

Este această simulare riguroasă în sfârșit o dovadă concludentă pentru validarea modelului evoluţionist? Până acum am văzut cum exemplele precedente de evoluţie simulată nu reuşeau să convingă din cauza faptului că erau evident teleologice (aveau un scop predefinit) și erau puternic constrânse. Putem să remarcăm că și în acest caz evoluţia simulată este teleologică, autorii alegând un set rigid de 9 operaţii complexe pentru a fi recompensate, una dintre ele fiind și punctul culminant al întregului experiment. În realitate, organismele digitale nu au avut libertatea decât de a urmări acest set de ţeluri predefinite: în lipsa unui peisaj de recompense mult mai vast și complex decât strict ţelurile urmărite, faptul teleologic în sine constrânge destul de puternic experimentul pentru a obţine rezultatele dorite într-un mod facil și nerealist.

Dar există un aspect mai subtil de constrângere implicită în modelul acesta de experiment: o mutaţie este văzută ca schimbarea unei instrucţiuni fundamentale în altă instrucţiune fundamentală din cele 26, în cadrul codului unui program. Dar în oricare dintre cele 26 de cazuri, ceva care avea un sens se transformă în altceva tot cu sens, în limbajul informatic al programului. În realitatea biologică însă, lucrurile sunt departe de a sta asemănător: atunci când ceva „cu sens” biologic se transformă prin mutaţie în altceva, acel altceva, covârșitor de probabil, nu va avea niciun sens biologic, deoarece mutaţiile sunt în cea mai mare parte detrimentale… într-un fel în care simularea din Avida eșuează complet să „simuleze”.

Și chiar dacă toate aceste argumente nu ar fi valide și EQU ar fi într-adevăr un exemplu legitim de informaţie complexificată funcţional prin evoluţie, până la urmă vorbim despre un operator banal după orice standarde am judeca. În plus, dacă EQU este legitim evolutiv, atunci unde sunt exemplele adiţionale de funcţii tot mai complexe, cu adevărat impresionante, care să fi fost create evolutiv prin Avida în ultimii 12 ani[3] – un timp enorm în informatică, în care nu s-a întâmplat mare lucru.

De fapt, există și o altă explicaţie, care ţine de o dinamică a probabilităţilor și a entropiei informaţionale: În termeni cât mai simpli, atunci când un agent acţionează aleatoriu asupra unui sistem organizat, precum o fac mutaţiile la întâmplare în biologia adevărată sau în cazul avidienilor, probabilitatea ca nivelul de organizare a sistemului să scadă (adică să se strice) crește exponenţial cu gradul său de organizare.

Cu alte cuvinte, cu cât un mecanism este mai complex, cu atât este mai probabil că o acţiune la întâmplare asupra lui să-i defecteze din funcţii.

Viceversa este, de asemenea, valabilă: cu cât un mecanism este mai simplu, cu atât există mai multe șanse ca, prin acţiune la întâmplare și pur noroc, nu numai să NU se strice mecanismul acesta simplu, ci şi să devină puţin mai bun.

Dacă punem aceste două observaţii cap la cap, este numai de așteptat ca, prin procese evolutive bazate pe mutaţii la întâmplare, să putem produce anumite mecanisme simple, dar cu cât încercăm să le complexificăm în continuare prin mutaţii la întâmplare este de așteptat să ne izbim de un zid de imposibilitate. Aceasta pentru că, pe măsură ce creștem gradul de complexitate al mecanismului, pentru următoarele acţiuni la întâmplare crește exponenţial probabilitatea de a se strica mecanismul și scade probabilitatea de a-l îmbunătăţi. Așadar ar fi teoretic posibil ca operatori simpli precum EQU să fie obţinuţi prin procese evolutive și, în același timp, este perfect explicabil de ce ultimii doisprezece ani nu au produs rezultate mai complexe de atât: este în afara puterii evoluţiei a produce altceva decât cele mai simple mecanisme!

Concluzii

Simulările discutate sunt teleologice, deci se bazează pe existenţa unui scop final al evoluţiei, iar acest fapt este neconform cu teoria evoluţiei și totodată este sursa de constrângeri nerealiste a procesului simulat. În plus, moderarea selecţiei naturale/artificiale și a mutaţiilor aleatorii acţionează ca niveluri adiţionale de constrângere a simulării pe un drum, în realitate, foarte îngust. În aceste condiţii nu este nici surprinzătoare, nici meritorie obţinerea unor rezultate aparent conforme cu așteptările evoluţioniste. Simulările de fapt nu au succes decât în măsura în care constrângerile implicite și explicite sub care operează presupun și ghidează de la bun început evoluţia.