PC Press
O nama
O nama
Pretplata
O nama
Postanite saradnik PC-ja
Kontakt sa redakcijom
PC Press
Novi broj
Novi broj   
Pretrazivanje
Arhiva
Arhiva   
PC Online
PC Plus   
Specijalna izdanja
Softver Softver
PC #173 : Januar 2011

 Naslovna  Sadržaj 
Voja Antonić  

Evolucija digitalnih organizama

Umesto što u pokušajima da stvorimo veštačku inteligenciju koristimo kreacionistički top-down model, možda je bolje preći na evolucionistički bottom-up model koji ne gradi kuću od krova, nego od temelja...

Breeder (crveno) ostavlja „pištolje“ (zeleno) koji ispaljuju „klizače“ (plavo)
(kliknite za veću sliku)

Reklo bi se da je u novom milenijumu splasnuo početnički zanos u pokušaju da razvijemo veštačku inteligenciju i svi su izgledi da još dugo nećemo biti u stanju da shvatimo od čega je sačinjeno čovekovo psihičko biće. Možda je sam koncept traganja za tim fenomenom bio pogrešan, jer se uglavnom zasnivao na top‑down modelu: postavili smo cilj i zamislili kako treba da izgleda rezultat, pa smo gradili elemente od kojih će se on sastojati. U mnogim domenima nauke ovakav pristup je dao rezultate, ali u stvaranju veštačke inteligencije zastali smo na pola puta – očito nemamo model po kome bi trebalo da gradimo elemente i da ih spajamo u celinu.

Možda je načinjen propust u tome što smo u početku zanemarili alternativni bottom‑up model. Istorijat kompjuterskog softvera uči nas da takav model može nešto što top‑down ne može, a to je da stvori nešto za šta čak i ne znamo kako funkcioniše. To je model koji ne gradi kuću od krova, nego od temelja. Zapravo, ne moramo ni da gradimo – dovoljno je da napravimo dobar temelj i kuća še se graditi sama. Postavimo bazične principe u „digitalne organizme“ i pustimo ih da se sami razvijaju, otimaju resurse jedan drugom, bore za opstanak – ali i da se razmnožavaju i mutiraju, pa da u toj borbi prežive samo uspešni. Drugim rečima, da stvorimo uslove za njihovu evoluciju. Da bismo razumeli strukturu današnjih programa koji na principima evolucije grade savršenije algoritme, osvrnućemo se na razvoj bottom‑up pristupa u programiranju.

Game of Life

Pulsar je blinker (1, 2 i 3), koji se rađa iz oblika (0)
(kliknite za veću sliku)

Oktobra 1970. godine u časopisu Scientific American objavljen je zanimljiv tekst u kome je John Horton Conwa pokazao da Fon Nojmanova ideja iz 1940. godine o samoreplikujućim mašinama može da se bazira i na jednostavnim principima. Matematički model koji je on ponudio ubrzo je postao široko poznat i danas postoji u neizmenjenom obliku pod nazivom Game of Life.

To je dvodimenzionalna mreža ćelija od kojih svaka može da bude „živa“ ili „mrtva“. U sledećoj generaciji, brojanjem koliko je od ukupno osam suseda svake ćelije „živo“, na osnovu jednostavnih pravila odlučuje se da li će ta ćelija biti živa ili mrtva:

– Ako je ćelija okružena sa tri živa suseda, u sledećoj generaciji biće živa.

‑ Ako je okružena sa dva živa suseda, njeno stanje se ne menja

– U svakom drugom slučaju (<2 ili >3) ćelija umire, usled usamljenosti ili prenaseljenosti okruženja.

Tako opstaju samo ćelije koje su se udružile u grupe, ali je fascinantno koliko različitih vidova ponašanja pokazuju te grupe. Osim „bloka“, „košnice“, „čamca“ i mnogih sličnih objekata koji se ne menjaju, postoje i različiti „blinkeri“ koji se periodično menjaju, „šatlovi“ koji šetaju tamo‑ovamo, „klizači“ koji se stalno kreću, „jedači“ koji uništavaju klizače... Postoje i složeniji blinkeri, koji se zovu „pištolji“ i koji proizvode neograničen broj klizača, ali i „puferi“, klizači koji iza sebe ostavljaju nepomičan trag. Slika pokazuje veoma zanimljiv tip pufera, koji je dobio naziv breeder (radi lakše orijentacije obojen je crveno) koji se kreće nadesno i iza sebe, kao trag, ostavlja nepomične pištolje (zeleno), a oni, opet, ka gornjem desnom uglu ispaljuju nove klizače (plavo).

Posebno je zanimljivo to što ovi oblici mogu da se stvore iz haosa, nasumičnim udruživanjem koje im pomaže u opstanku. Čak bi se moglo reći da je formiranje jednostavnijih oblika iz slučajne kombinacije pravilo a ne izuzetak. Mala je verovatnoća da će se stvoriti baš tako složen oblik kao što je breeder, ali neki zanimljivi blinkeri, kao što je pulsar, prikazan na drugoj slici u fazama 1, 2 i 3, veoma često se rađa iz haosa, jer posle 30 generacija potpuno sam izraste iz veoma jednostavne forme (0) sastavljene od samo sedam ćelija.

Veliki broj primera, uz linkove na besplatan softver za ovu „igru za nula igrača“, dostupan je na en.wikipedia.org/wiki/Conway%27s_Game_of_Life .

Creeper i Darwin

DarwinBots: kod svakog robota se vidi DNK koji mu određuje ponašanje
(kliknite za veću sliku)

Stephen Hawking smatra da je kompjuterski virus prvi oblik veštačkog života. Neki naučnici su imali primedbu da su kompjuterski virusi zapravo paraziti, jer ne mogu da opstanu bez domaćina, ali ta rasprava ovde nema značaja, jer mi govorimo o veštačkom životu, a i paraziti su živa bića.

Prvi kompjuterski virus zvao se Creeper – 1971. godine je inficirao nekoliko računara DEC PDP‑10. Stvorio ga je Bob Thomas, bez loše namere, jer program se zapravo nije umnožavao nego se izvorna kopija sama izbrisala svaki put kad se kroz mrežu prekopirala na drugi kompjuter. Virus nije pravio nikakvu štetu, samo je na ekranu ispisivao poruku I'm the Creeper, catch me if you can! Čovek, naravno, nije mogao da ga uhvati, ali je zato odmah napravljen prvi antivirusni program pod nazivom Reaper, čiji je jedini zadatak bio da uništi Creeper.

Ovaj virtuelni rat između programa zapravo nije bio nova stvar u kompjuterskom svetu. Još davne 1961. godine su programeri iz Bell Labs‑a na mainframe sistemu IBM 7090 igrali „ratnu“ igru Darwin. Alat kojim su igrači tada raspolagali bio je čist mašinski jezik, a cilj svakog igrača bio je da napiše program koji će u zajedničkoj memoriji, koja se zvala Arena, onesposobiti protivnički program. Bio je to zapravo rat programerskih veština, jer je najviše izgleda na pobedu imao program koji je bio kratak, koji je umeo da se relocira i multiplikuje, da pronađe i uništi protivnički program, uglavnom tako što je upisivao „štetne“ instrukcije u njega. Sve ovo nije bilo lako postići sa kratkim programom, pa su stalno pravljeni kompromisi.

Pošto početkom šezdesetih mainframe sistemi nisu imali korisnički interfejs kojim bi igrači u realnom vremenu imali uvid u tok igre, postojala je mogućnost varanja ubacivanjem raznih trojanaca, koji su kršili pravila igre. Zbog toga je uvedeno pravilo da posle igre svaki programer mora ostalim igračima da pruži na uvid kod svog programa, kako bi se svi uverili da nije bilo prevare. To je svima pomoglo da uče na tuđim idejama i programerskom lukavstvu.

U pravilima igre stajalo je da svaki igrač može da rezerviše 20 memorijskih lokacija koje su bile zaštićene, jer ako bi neki drugi program pristupio nekoj od njih, automatski bi postao „vlasništvo“ onoga čiji posed je uzurpirao. Ovo pravilo je bilo legitimno dok je najkraći poznati program zauzimao 30 lokacija, pa tako nije mogao da se „sakrije“ u zaštićenu oblast memorije, ali je taj koncept zaštite morao da se menja kada je jedan od autora programa, Douglas McIlroy, uspeo da napiše program koji je zauzimao samo 15 lokacija, što znači da je bio praktično neranjiv, a time i nepobediv.

Igra nije mogla da stekne popularnost jer su mainframe kompjuteri bili retki i skupi, pa su njima imali pristup samo odabrani programeri. Čak i oni su morali da „kradu“ preskupo procesorsko vreme tadašnjih računara da bi se igrali. Tako je Darwin potonuo u zaborav, a tvorci nekih kasnijih sličnih igara su tvrdili da je njihova inspiracija zapravo bio Creeper; o Darwin‑u su čuli tek neke nepotvrđene glasine. Ipak, Steven Lisberger je čuo za ovu igru, pa je, inspirisan njenim konceptom, 1982. godine snimio kultni SF film Tron.

Igra Darwin je 2003. godine dobila i svog grafičkog naslednika, pod nazivom Darwinbots, što je skraćenica od Darwin Robots. Grafičko okruženje je veliko unapređenje u odnosu na prethodnika iz 1961. godine, ali ova grafika nije baš atraktivna kao kod savremenih 3D igara. To je i razumljivo, jer je Darwinbot namenjen drugoj ciljnoj grupi, koju ne može da impresionira realističnost scene, nego pre svega algoritmi igre i modeli ponašanja digitalnih jedinki. Na slici se u organizmima (koji su prozvani roboti) vidi i nešto što su tvorci igre proglasili za DNK, a zapravo su parametri ponašanja robota. Ovaj DNK je uglavnom različit, jer se mutacije (delimične izmene parametara) nasumično unose pri svakoj replikaciji i neuspešni primerci ubrzo bivaju uništeni od strane konkurentskih organizama.

Core Wars

Core Wars se izvršava na platformi MARS
(kliknite za veću sliku)

Početkom osamdesetih godina D. G. Jones i A. K. Dewney su u časopisu Scientific American opisali igru Core Wars, a uz to i programski jezik Redcode, koji je igračima‑programerima služio kao alatka. Redcode je bio veoma sličan asembleru, a sastojao se od samo osam instrukcija.

Igra je tekla tako što bi svaki od igrača u jeziku Redcode napisao program, koji bi se posle starta igre izvršavao samostalno. Kao i u Darwin‑u, cilj programa je da se umnoži, da pronađe i uništi protivnike, a pobednik je onaj program koji poslednji ostane funkcionalan u sistemu. Nekoliko inovacija je učinilo ovaj program veoma popularnim kod programera. Prvo, Redcode je bio tako koncipiran da onemogućava podvaljivanje u igri, a podržavao je samo relativno adresiranje, čime je igra bila ograničena na „arenu“, a igrač (bolje reći program) nije znao kojoj se memorijskoj lokaciji obraća, nego samo koliko je ta lokacija udaljena od njega. Postojala je neka vrsta pseudografičkog interfejsa i igrači su mogli da prate tok igre. Bilo je moguće multiprocesiranje, čime su organizmi mogli da se umnožavaju u proizvoljan broj kopija, ali je to usporavalo izvršavanje, jer je – kao u šahu – svaki virtuelni general u jednom ciklusu mogao da izvrši samo po jednu instrukciju u jednom od svojih organizama.

Orgamizmi koje je moguće stvoriti u ovoj igri ponašaju su se slično igračima u igri „kamen‑papir‑makaze“, koja je popularna na Zapadu. Tako je ovde bombarder (ekvivalent kamen) jači od skenera (makaza), a skener jači od replikatora (papira). Da bi ovaj netranzitivni niz bio zatvoren, replikator je jači od bombardera. Postoje i podvrste ovih virtuelnih ratnika, recimo papir ima i verziju brzog replikatora koji se zove svila, a skener čak tri podvrste ratnika. Od ratničkih zvanja raznih tipova programa, postoje i imp ring i imp spiral (imp je ime koje je autor igre dao svom prvom digitalnom ratniku), zatim brzi skener, čistač jezgra i eskivator bombardera.

Osnovni cilj igrača bio je da naprave program koji će se umnožavati kontrolisanim tempom, uz intervencije kojima će biti stvorena optimalna kombinacija opasnog ratnika. Njihovi kodovi bi morali da budu što kraći, jer će neprijatelju tako biti teže da ih pronađe i uništi.

Core Wars je mogao da se izvršava samo sa instrukcijama jezika Redcode, a za to je bila potrebna platforma pod nazivom MARS (Memory Array Redcode Simulator). Mada je Redcode razvijen samo za ovu igru, kasnije su se pojavile još neke aplikacije zasnovane na tom jednostavnom jeziku. Igra je bila izuzetno popularna u hakerskom svetu – samo godinu dana posle objavljivanja prvog teksta o igri oformljena je grupa ICWS (International Core Wars Society), koja je u dva maha objavila nove standarde za Redcode. I danas je ova igra zaokuplja maštu hakera i angažuje programere koji sebe nazivaju „kompjuterski rekreacionisti“.

Tierra i Avida

Tierra, simulator živih organizama koji evoluiraju
(kliknite za veću sliku)

Ekolog Thomas S. Ray je početkom devedesetih razvio program za eksperimentalno istraživanje osnovnih procesa evolucione i ekološke dinamike. Za razliku od prethodno opisanih programa, ovo nije igra, nego kompjuterski model koji bi trebalo da pomogne u boljem razumevanju tokova evolucije i njenih principa.

Tierra simulira evolucione sisteme tako što se digitalni organizmi bore za resurse, koje uglavnom čine procesorsko vreme i pristup memoriji. Za razliku od Core Wars, u programu Tierra organizmi mogu nasumično (ili, u ograničenoj meri, čak i „svesno“) da modifikuju sami sebe i da na taj način evoluiraju kroz prirodnu selekciju, jer u borbi na život i smrt uglavnom pobeđuju oni koji su bolje opremljeni za preživljavanje. To ih svrstava u klasu digitalnih organizama za koje se uslovno može reći da poseduju veštački život.

Avida, napredna verzija simulatora
(kliknite za veću sliku)

Mark Bedau i Norman Packard su razvili statističke metode klasifikacije evolucionih sistema pa je 1997. godine, inspirisan programom Tierra, Charles Ofria sa svojim timom na Michigan State Universitu razvio program Avida. Novost koju ovaj program donosi tiče se raspodele resursa – dok je Tierra imao samo jedan zajednički „mozak“ za sve organizme, Avida dozvoljava svakom organizmu da izgradi i modifikuje svoj mozak i da, u zavisnosti od kompleksnosti tog modifikovanog mozga, čak dobije više procesorskog vremena za obradu informacija.

Evolucijom su u ovom programu stvoreni digitalni mikrobi, koji su dobili naziv Avidianci. Oni već imaju matematički genetski kod, razmnožavaju se, mutiraju i sa svakom generacijom postaju sve inteligentniji. U drugom eksperimentu, ovi digitalni organizmi su razvili jednostavnu memoriju, pa čak i mozgove koji imaju simetričnu strukturu. Stvoreni su i takozvani organizmi‑altruisti koji su u stanju da se žrtvuju za zajednicu, što bi moglo da obogati postojeću teoriju igara i da pruži neke zanimljive odgovore ne samo biolozima, nego i sociolozima.

Istraživači koji rade na ovim modelima uglavnom tvrde cilj ovog istraživanja nije stvaranje veštačkog života, nego bolje razumevanje mehanizma evolucije i raznih fenomena koji odlikuju živa bića – inteligencije, svesti, instinkata i psihičkog bića u širem smislu.

Na slikama su prikazani izgledi ekrana za neke od navedenih programa, ali pogrešno bi bilo suditi o njima po grafičkim prikazima, ili porediti ih sa savremenim 3D igrama. Bilo bi to kao da poredimo literarna dela svetskih klasika sa stripovima u boji.