# Az örvényféreg meséje I: hogyan készül egy modell állat?

Az első évadban megismerkedtünk a természetes szelekció darwini mechanizmusával, mely lehetővé teszi bonyolult biológiai szerkezetek kialakulását, a szerveződési szintek és az emergencia fogalmával, mely segít megérteni, hogyan épülnek fel bonyolult összetett rendszerek, valamint a homeosztázis fogalmával, melynek kapcsán megismerkedtünk azzal, hogy az egyre bonyolódó idegrendszerek milyen módon képesek segíteni az állatok túlélését a reflex, a döntés, a modell és gondolkodás képességével.

Első lépésként azt a szintlépést tettük meg, hogy a molekulából álló idegsejtek hogyan összegzik a rájuk érkező jeleket, majd továbbítják azokat. A következő lépéssel tovább emelkedünk a szerveződési szinteken és megvizsgáljuk, hogyan alakulnak ki az idegsejthálózatok az idegsejtek kölcsönhatásából, és ezek a hálózatok mire képesek.

Most is egy tanmesével kezdjük a hálózatokkal való ismerkedést. Egy személyes történettel, mely azt mutatja be, hogy egy egyszerű idegsejt hálózat hogyan képes egy összetett feladat leképzésére és megoldására, illetve, hogy az agy és a számítógép feladatmegoldási módja miben tér el.
A programozás korábbi szenvedélyem volt, mint az agykutatás. Már középiskolás koromban szert tettem egy Commodore 64-esre, aminek kemény 50valahány kByte BASIC-ben vagy Assembly-ben programozható memóriája volt. Később, amikor biológushallgatóként csatlakoztam a SOTE Anatómiai Intézetében a Szentágothai János vezette kutatólaboratóriumhoz első hivatalos projektem egy macska látókérgében elektrofiziológusok által megjelölt nagy-kosársejt (a gátlósejtek egyik fajtája) 3D rekonstrukciója volt. Igazi dinoszauruszt használtunk hozzá. Egy egész szobát elfoglaló PDP-11-es számítógépet (vagy valami olyasmit), melynek még monitora sem volt, hanem papírra nyomtatta a válaszokat. Másfél araszos floppy lemezekről boot-olt és fűtött, mint egy kazán.

Egyik első hobbi projektemben pedig, egy élőlény viselkedését próbáltam meg BASIC nyelven leprogramozni. Hozzáfértem egy akkor vadonatúj csúcstechnológiának, ma ősinek számító korai Macintos-hoz, 1984ből, ez súlyra század annyit nyomott, mint az öreg PDP és kb. annyit tudott. Ezen kezdtem el idegsejtekkel és élőlényekkel kapcsolatos programozási játékaimat. Ezek nem tartoztak szorosan a macska látókéreg idegsejtjeinek kutatásához, mely szakdolgozati témám volt, de sokat tanultam belőlük.
A kutatók modelleket alkotnak, hogy a valóságot egy viszonylag érthető, egyszerűbb (csökkentett számú változóval, paraméterrel leírható) rendszerben vizsgálják. Fontos egy modellnél tisztázni mit tart meg és mit vet el a valóságból, milyen kérdésekre kérdezhet és kérdez rá? Biológus révén tisztában voltam a feladat léptékével, ezért egy viszonylag egyszerű élőlény, a gyors folyású patakokban a kövek alatt élő, csinos, két fekete szemfoltot viselő örvényféreg (Planaria, a biológusok sokat vizsgált modell állata) viselkedését és döntéseit próbáltam meg egy egyszerű modellben megragadni.
Leszűkítettem az állatkát érő lehetséges külső és belső ingereket, és hasonlóan szűkítettem a lehetséges viselkedések körét. Virtuális jószágunk érzékelte a külvilág ingereit: fényt, hőmérsékletet, tápanyagot, ragadozó vagy szexuális partner jelenlétét, illetve saját belső állapotát: éhes vagy álmos-e? Viselkedésében választhatta azt, hogy aludjon, táplálkozzon, meneküljön vagy párosodjon.

Ezek után nekiláttam, hogy klasszikus számítógép kódolással modellezzem a döntéseit. A klasszikus programozási nyelvek csak egy szálon futnak, egymás után hajtva végre döntéseket és utasításokat. Egy döntés logikailag megfogalmazva valahogy így néz ki:
Ha A igaz akkor csináld EZT, ha nem akkor AZT
a modell féreg esetében pl egy döntés:

ha RAGADOZÓ akkor MENEKÜLÉS különben TÁPLÁLKOZÁS
programnyelven (itt most nem az ősi BASIC-et, hanem a modernebb, és általam legtöbbet használt PASCAL nyelvet használom):

if (RAGADOZÓ>0) then MENEKÜLÉS else TÁPLÁLKOZÁS;

Mindeddig nem is volt baj, hanem amikor egy többtényezős döntést próbáltam meg programozni, akkor elszabadult a kombinatorikai pokol. Például amikor hideg van és sötét akkor az állatka inkább táplálkozik vagy alszik, mintsem szaporodásba fogjon, ami amúgy, ha melege van, süt a nap és jóllakott abszolút elsőbbséget élvez. Egy ilyen döntést igen megrázó leprogramozni, valahogy így nézne ki:

if ((HŐMÉRSÉKLET<0) and (FÉNY<10)) then
ESZIK;
else if (PARTNER>0) then
PÁRZIK;
else if (RAGADOZO>0) then
MENEKUL;
else
ALSZIK;
else
ALSZIK;

De itt még nem gondoltunk arra, hogy mi van, ha meleg van, de sötét vagy fordítva és ha közben megéhezik, vagy álmos lesz?

Hát ezt újra végig kell gondolni. Hogy ezt elősegítsem készítettem egy táblázatot, amelynek soraiban az ingerek, oszlopaiban az egyes lehetséges viselkedések vannak.
Ezt a táblázatot kell kitölteni számokkal melyek mutatják, hogy az adott inger (sor) milyen hatással van a lehetséges válaszra (oszlop). Az első sor kitöltése egyszerű, ha jön a ragadozó akkor menekülés (nagy pozitív érték) és minden más viselkedés nem váltódik ki (értéke nulla)
Utána már kicsit nehezebb a helyzet, de viszonylag jól lehet rangsort adni az egyes ingerek viselkedésre gyakorolt hatásának. A végleges táblázat valahogy így nézne ki.

A legegyértelműbb, erős hatásokat kövérrel jelöltem, először ezeket írtam be a táblázatba, majd kitöltöttem a többi értéket. A 0 azt jelenti, hogy az adott inger nem befolyásolja az adott válaszreakciót.
Hogyan kell kiértékelni egy ilyen táblázatot? Azaz a döntés hogyan történik? Először, (a) Mindegyik ingerhez hozzárendelünk egy a környezet vagy a belső állapotnak megfelelő értékét, ez lehet 0/1 vagy 0-10, legyen itt most 0/1. Ezek után (b) minden táblázatelem értékét megszorozzuk az adott sorra beállított inger értékkel. Majd, (c) a kapott számokat oszloponként összeadjuk, végül (d) kiválasztjuk a legmagasabb összegű viselkedést és az állatka azt fogja csinálni.

Válasz ragadozó esetén

Válasz pár esetén
A táblázatot nézegetve hamar beláttam, hogy sokkal egyszerűbb az adott ingerek alapján kiértékelni melyik viselkedés mekkora értéket kap az adott helyzetben és ezt a viselkedést választani eredményke, semmint a többtényezős döntést logikai fával leírni, soronként végrehajtott programmal. Ez igen kényelmetlen és egy bizonyos bonyolultsági szint fölött lehetetlen megoldás.

Azt, hogy hogyan kell leprogramozni egy ilyen táblázat kiértékelését és hogy ennek mi köze az idegrendszerhez és a gondolkodáshoz a következő bejegyzésből tudjátok meg.

Szerző: Gulyás Attila

Az AGI, a tudatosság és a jövő Az örvényféreg meséje II: Hogyan dönt az idegrendszer?