|
... Gergő: Mutáció |
|
||||||||
|
Kutatási anyag - 2007 |
|
||||||||
|
Az emberek a mesterséges intelligenciáról teljesen téves véleménnyel vannak, hisz azt, aki nem rendelkezik ezzel kapcsolatos programozási tapasztalattal, könnyű megtéveszteni és kétségek között tartani. Vannak emberek, akik büszkék arra hogyan képesek leprogramozni pl. egy katona célzási és manőverezési készségeit. Valóban, ez tényleg szép és jó, hiszen pénzt lehet keresni azzal a játékkal amibe ezt implementálják. Ezt a dolgot megalkotni - bármennyire is tűnik nehéznek egy olyan ember számára aki tapasztalattal nem rendelkezik ezzel kapcsolatban - rendkívül egyszerű. Ez a módszer viszont a valódi fejlődés lemodellezése szempontjából teljesen téves, hisz valójában az a katona sohasem fog elkezdeni önálló, előre nem leprogramozott taktikát összeállítani, új parancsokat kitalálni és bevezetni a társainak, kiiktatni magából azt a "bugot" hogy a füstgránáton nem lát át, megnövelni a saját sebességét ilyen-olyan előre nem beleprogramozott trükkökkel. És itt látszik hogy mi is a probléma ezzel, és hogy ez a módszer miért lehetetlen a fejlődés valódi modellezésére. A baj ott kezdődik hogy az emberek szinte kivétel nélkül ebből a módszerből kiindulva szerették volna a fejlődést lemodellezni. Érthető hogy ők kivétel nélkül kudarcot vallottak. Ehhez a módszerhez azok a kutatóintézetek ragaszkodnak görcsösen, akik egy ilyen modellből már több megányi forráskódot megalkottak. Nem szeretnék tudomásul venni hogy ugyanott vannak, mint mikor a forráskód még csak 10 kbyte volt és beleöltek sok milliót a semmibe. Persze ez így nem igaz, hisz azt a fajta mesterséges intelligenciát remekül alkalmazhatják majd számítógépes játékokban, csak az általuk kinézett célt nem fogják elérni.
A módszer amelyet bemutatni fogok, nem mesterséges intelligencia. Játékokban és egyéb alkalmazásokban, ahol a szokványos mesterséges intelligenciát kell alkalmazni, önmagában teljesen használhatatlan lenne, nemcsak jelenlegi formában, hanem jelentős átalakítás után is. Ismét csak nem a fejlesztési idő vagy a belefektetett energia lenne a gond, de senki sem szeretne mondjuk egy játék indulásánál napokat várni arra, hogy az ő teljesen egyénileg kialakított embereit megkapja (vagy mégis?... ;)). Hogy mi is történik pontosan, mi a módszerben az igazán rendkívüli, azt igazából magatoknak kell felismerni, hisz nem lehet 1 vagy 2 mondattal leírni.
Most pedig vizsgáljuk meg, hogy a mi kis mini-élőlényeink mégis mi alapján működnek. Számítógépekről van szó. Mi más lehetne az "élőlény" mint egy futó program? Mi más lehetne a környezet mint az operációs rendszer? Mi más lehetne a szaporodás feltétele, mint a megfelelő sebességgel történő szaporodás, a megfelelő mennyiségű folyamat megszülése, és a processzoridőhöz jutás? Fentebb már ismertettem, hogy mi az az elv, ami kerülendő. Természetesen én magam már megvalósítottam az ebből a szempontból kerülendő elven is bizonyos ezzel kapcsolatos szimulációkat, és mivel ez az egyetlen használható, és valóban működő elv, ennek a speciális megoldásnak a bemutatása mellett döntöttem. Az elv ütközik a fent ismertetett dogmával, így a kísérlet(sorozat) egyik folyománya és bizonyítéka nem más, mint az, hogy az adott dogmát kénytelenek leszünk törölni, hisz bizonyíték fog keletkezni annak hamisságára. Tehát a élőlényeink kis mini-folyamatok lesznek, amelyek amellett, hogy önmagukat reprodukálják, a gyermekeik kódját szabadon kialakított szabályzataik alapján tetszőleges módon állíthatják össze. A dolgot kicsit ha megnézzük a dogma oldaláról, rájövünk hogy logikus a dogma, hisz gondoljunk csak bele, ahhoz hogy valódi fejlődést érjünk el nem elég pár random utasítást belevakarni bárhova is, hisz a program nem fog semmilyen értelmes dolgot csinálni. Nos, igen. Csakhogy nem "ész" nélkül kell azokat az utasításokat belevakarni. A dogma nem számol a "tudatossággal".
A vizsgálódást a nagyon
egyszerű alap-algoritmusnak a megírásával kezdtem (az eljárás kitalálása és
leprogramozása 1 napomba telt). Kicsire vettem a mutálódás esélyét, hisz a
mutáns program túlélési esélye kicsi, a gépi kódú utasítások módosulása a
program lefagyását okozhatja, tehát az adott folyamat nem lesz képes a "génjeit"
(kódját) továbbörökíteni az utódjainak. A hibás program éppen ezért nem indul
el, nem szaporodhat tovább, elpusztul. De mi van azokkal a programokkal, melyek
sikeresen örökítik és módosítják az utód kódját? Majd meglátjuk.
Nézzük az első kísérletet:
Az
algoritmus bármit módosíthat magában, rémisztő belegondolni, hogy egy ilyen,
többmillió generáción át tenyésztett szaporulat mivé válna. Egy estére hagytam
ott a gépet a kolóniával, bár egy nagyon régi, 400-as gépen néztem ráadásul
vmware alatt, tehát ez egy modern, virtualizáció nélküli modern gépen kb. pár
órának felel meg. Az előálló mintákat másnap elemeztem. A végeredmény döbbenetes
volt számomra.
Az ábra alapján EB és az EP-GM törzsek továbbfejlődése, a többi törzs lassú elhalása a legvalószínűbb.
További érdekes dolgok: Ezt a tenyészetet másfajta megvilágításban vizsgáltam. Célom a dogma cáfolására az egyértelmű bizonyíték megtalálása volt. A második kísérletbe a lefordított minta méretileg 15 kbyte volt, mert másik rendszer alatt végeztem, és a kódot is felfejlesztettem valamilyen szinten. A második kísérletben előállt egy alfaj, aminek mérete több mint 2 kbyte-tal kevesebb volt mint az eredeti programnak, és még mindig rendeltetésszerűen működött (tehát szaporodott és az utódjai is szaporodtak) ezért javulás állt be. Mivel a program méretének csökkenése a program működése szempontjából nem volt káros, ezért a program fejlődött. A dogma kimondja, hogy fejlődés nem állhat be, de mivel a bizonyíték itt van a kezünkben, ezért ezennel a dogmát megsemmisítem.
Hogy mindenki kipróbálhassa a saját
szemével, ITT
van maga a kitárgyalt program, illetve az első
kísérletben szereplő eredeti program. Futtatása linuxot igényel, ajánlott hogy
NE legyen virtuális memória bekapcsolva a rendszerben. SMP kernel, legalább 1
gbyte RAM, 3 ghz-s ikermagos processzor, és 100 gbyte-os szabad hellyel
rendelkező merevlemez használata ajánlott. Futtatása:
|
|