(English)


Neurális Hálózati Kísérletek (M4XY5T)


Mostanában kutatómunkába fogtam a Neurális Topológiákkal, Neurális Hálózat - szimulációkkal és a Tanulási és Evolúciós Algoritmusokkal kapcsolatban. Ennek eredménye egy (még fejlesztés alatt álló) program lett, ami ha elkészül, képes lesz teljes neurális hálózati topológiát 'tervezni' evolúciós alapokon, melynek eredménye sokkal gazdaságosabb megvalósítást eredményezhet, mint a tipikus réteges felépítéső mesterséges neurális hálózatok, melyeknél minden réteg minden neuronja egyöntetűen össze van kötve a következő réteg neuronjaival.
Ez hasonlatos lesz a NEAT , NeatJS algoritmusokhoz. A programom lényegében egy sokkal egyszerűbb gyors probléma-specifikus megoldás lesz C-nyelven megírva. Amit ezek az algoritmusok alapvetően tesznek, az kiindulás csupasz be- és kimenetekből, és mutáció új szinapszisok és/vagy idegsejtek hozzáadásával sztochasztikus/determinisztikus módon minden új generációnál. Minden egyes generációból kiválasztunk egy 'bajnokot' ('champion'), aki a legmagasabb rátermettségi ('fitness') pontszámot érte el egy környezet-szimulációban, és ezeket a bajnokokat használjuk szülőként a következő generációhoz. (Ha sikerül megfelelő fizikai szimulációs motort készítenem a programomhoz, lehetséges, hogy az első generációt szó szerint a semmiből indítom, még ki- és bemeneteket sem definiálok, és még az új bemeneti érzékelők és kimeneti izmok hozzáadásánál is a szoftverre hagyatkozom...) A topológiai evolúció mellett természetesen az egyedek szinapszisainak súlyozásai is be lesznek tanítva nem felügyelt Hebbian-tanulási vagy akár felügyelt ún. 'back-propagation' tanítási módszerrel, amikor egy-egy újabb topológia megjelenik.
Többféle választható neurális hálózat - szimuláció és tanulási típus lesz a programban, főleg hardver-megvalósítási célokra, mint pl. mikrokontrolleren való futás korlátait figyelembe vevő, vagy akár tranzisztorokból, mint neuronokból felépített analóg áramköröket tervező algoritmusok. (Kivitelezhetőnek tartom, tranzisztorok a bázisukon lévő ellenállásokkal, mint 'súlyozásokkal', nemlineáris karakterisztikájukkal kézenfekvő delikvensnek tűnnek alacsony komplexitású neurális áramkörök neuronjainak megvalósításához.) Az ilyen hardveres neurális hálózatoknak rengeteg felhasználási területe lehet az alakfelismeréstől akár teljes mozgáskoordinációval rendelkező robotig.
A programnak csak a C 'standard library' és a grafikához és vezérléshez szükséges SDL-library a függősége. Jelenleg akármilyen szinapszis-listát be képes fogadni (jelenleg csak forráskódban, fordítást megelőzően), amit feldolgoz (redundanciák eltávolítása, visszacsatolások és gap-junction-ok kiszűrése, topológiai rendezés, rétegek alkotása, stb.), hogy megtalálja és megjelenítse a be- és kimeneteket, valamint a neuronokat és azok kapcsolatait. Már néhány manipulációs lehetőség is adott, mint pl. a bemeneti stimulációk kézi beállítása a szimuláció számára, és csak kiválasztott neuronok és útvonalak megjelenítése, hogy könnyebb legyen széttagolni és elemezni a hálózatot.

Mivel neuronok topológiájáról beszélünk, a program fentebb említett megjelenítési képességeit tesztelendő, az egyetlen már teljesen feltérképezett idegrendszerrel bíró élőlény összeköttetéseit ('connectome') választottam, ez a Caenorhabditis Elegans nevű gerinctelen. Körülbelül 300 idegsejttel rendelkezik, és kb. 4000 összeköttetése van, melyek lehetnek kémiai serkentők (pl. glutamát) és gátlók (pl. GABA), vagy gyenge elektromosak (kétirányú, sejtek közötti rés-csomópont 'gap-junction'). Szimulációs szemszögből tekintve mindegyiket ugyanúgy kezeljük, azaz neuronok súlyozott bemeneteiként. Ami kissé komplikálja a szimulációt a program által végzett topológiai függőségek sorbarendezésének ellenére, hogy ez a természet által tervezett ideghálózat eléggé rekurrens, rengeteg visszacsatolással rendelkezik a magasabb (kimenetekhez közelebbi) rétegbeli neuronoktól az alacsonyabb (bemenetekhez közelebbi) rétegbeli neuronok irányába. A 'gap-junction' kapcsolatok is részben egyféle közös visszacsatolásként is működnek. Szerencsére az autapszisok (önmagukba visszacsatoló neuronok) minden bizonnyal hiányoznak a C. Elegans-ból.

A programnak mind a Linux-on és Windows-on futó lefordított verziói elérhetők itt a zip fájlban. Az SDL-1.2 library szükséges a futásukhoz, ezért a biztonság kedvéért az SDL.dll fájlt bemásoltam a zip-be tömörített mappába a Windows verzió számára. A forráskód még nem túl letisztult, ezért a nyílt forráskódú felfogásom ellenére nem osztom még meg a honlapon, hogy elkerüljem a kritikákat, melyek jellemzően várhatók, ha az emberek sűrű C-kódot látnak. Aki szeretne belepillantani, az felveheti velem a kapcsolatot a címen, és megbeszélhetjük... (Az idegháló adatait és néhány ötletet ebből az érdekes alapszintű szimulációból vettem: Celegans-simulation)

Különböző színek jelzik az előre mutató szinapszisokat (a zöld és piros árnyalatai súlyozásuk és előjelük függvényében) és a visszacsatolásokat (a kék/lila árnyalatai) és a 'gap-junction'-okat (szürkés). A bemenetek, neuronok és kimeneti vezetékek a zöld/piros árnyalatait kapják az aktuális kimeneti értékeik függvényében.
A használható billentyűket leíró rövid 'súgó' a kép tetején látható. A SPACE megnyomása kiválasztható neuronok szinapszisait jeleníti meg, az ENTER megnyomásával az útvonal-megjelenítési mód hívható meg, mely a függőségi fa bejárásával le tudja követni az összes összekapcsolódó szinapszist a bemenet ('I' billentyű) felől, visszafelé a kimenet ('O' billentyű) felől, vagy be- és kimenetek közti útvonalakon ('P' megnyomásával). A kiválasztott szinapszisok komplexitása drasztikusan változik, ha a visszacsatolásokat is megjelenítjük ('F' gombbal váltható mód), és valamelyest változik, ha a 'gap-junction'-megjelenítését ki-/bekapcsolását végezzük ('G' billentyű).
A csomópontok (neuronok vagy be-/kimenetek) kiválasztását a kurzornyilakkal és az Insert/Delete billentyűkkel tehetjük meg. Neuron-választó módban a SHIFT-billentyű lenntartása mellett a kurzor-gombokkal választhatók ki szinapszisok az Insert-billentyűvel való kiemelésre (szélesítésre). Az 'S'-billentyű megynomásával a kiválasztott neuronok, be- és kimenetek és kiemelt szinapszisok egy 'selections.sel'-nevű fáljban kerülnek mentésre a futtatható program mappájában. Ezek a fájlok átnevezhetők és parancssorban újratölthetők a 'Celegans' futtatható fájl után argumentumként megadva. Készítettem néhány (a képernyőmentésekhez használt) példát '.sel' fájlokra, ezek a zip-tömörítésű programcsomagban találhatók.
A bemeneti jelek manipulációja (a 0..9, F1..F9 gombokkal) véget vet az induláskor jelenlévő egyensúlyi helyzetnek, zajt visz a rendszerbe, és a szimuláció életre kel. Ettől a pillanattól kezdve a visszacsatolások akkor is aktívan tartják a hálózatot, ha a bemeneti stimuláció megszűnik. A pragram jelenlegi verziójában kötötten a 'tüzelő' neurális hálózati szimulációt valósítottam meg, amely a valódi neuronok membránján jelentkező hirtelen csúcsokat generáló fiziológiai ún. 'Action Potential' jelzésrendszert utánozza. A későbbiekben a fizikai környezet és féregtest jóval szofisztikáltabb szimulációi következnek majd.

Habár a C. Elegans ideghálózata ismert, még mindig intenzív kutatás témáját alkotja, hogy mely/milyen al-áramkörök / modulok felelősek az állat különböző viselkedési formáiért. Fizikai tesztekkel tudósok képesek voltak elkülöníteni bizonyos funkciókhoz tartozó neuronokat a féregben, de sok egyéb neuron jobb megértése még hátra van. A topológia néhány részletét viszont már megfejtették, például tudjuk, (és ez a programomban is megfigyelhető), hogy a hálózat összességében egy enkóder/dekóder-elven alapuló homokóra-jellegű topológiát képvisel, melyben a belső (rejtett) neuron-rétegek szűkebbek, mint a be- és kimeneti rétegek. A bemenetek már az alacsonyabb rétegekben feldolgozásra kerülnek, kisebb/egyszerűbb dimenziókba kódolódnak át. Persze több kivétel is van, ahol a bemeneti neuronok magasabb rétegekbe is bekapcsolódnak, valószínűleg a túlélést veszélyeztető tényezőkre jellemző bemeneti kombinációkra való gyorsabb válaszreakciók érdekében (pl. visszahúzódás akadályoktól).
A hálózat ún. 'rich-club' neuronjai is könnyen azonosíthatók a kimenetekhez közeli magasabb rétegekben. Ilyenek pl. a C. Elegans egyezményes elnevezési sémája szerinti címkével ellátott AVAL,AVAR neuoronok. A négyzetes törvény is egy általános szabályként figyelhető meg a neurális hálózatokban: a neuronok többsége csak a szomszédjaihoz és egyéb viszonylagos közelségben lévő neuronokhoz csatlakozik, míg a neuronok csak kis százaléka alkot sokkal több és távoli költséges de hasznos összeköttetést. A 'rich-club' neuronok már az első neuronok között megjelennek magzati fejlődés közben, ami elég logikus megoldás, mivel így a hosszú összeköttetéseik az idegrendszer egészével együtt képesek növekedni.
A másik tényező, ami tisztán látható a programomban, hogy az izmokat vezérlő (pl. az MDL20 megnevezésű) kimeneti motorikus neuronok serkentő (zöld) és gátló (piros) eredetű bemenetekkel/dendritekkel is rendelkeznek, tehát ellentétes hatású neuronok által vannak afféle differenciál/ellenütemű módon meghajtva. A motorikus funkciók egészen átfogó leírása lelhető fel ezekben a dokumentumokban: A circuit for navigation in C. Elegans , Locomotion of C. Elegans
A C. Elegans viselkedési és közösségi/feromonális aspektusait is alaposan tanulmányozzák. Néhány értékes dokumentum ebben a témában: Neuronal microcircuits for decision making in C Elegans , Hub-and-spoke Pheromone and Social behaviour in C Elegans
(Az ún. neuropeptid-ek, melyek a neuronok működését modulálják, szintén nagy szerepet játszanak az állat viselkedésében, ezért egy szigorúan vett szinaptikus szimuláció valószínűleg nem elégséges a féreg meglepően komplex alkalmazkodási képességének teljes szimulálásához. Az OpenWorm projekt a valódi sejt-alapú szimulációt vette célba, mely erre a kérdésre is választ adhat.)
Egyéb értékes olvasmány is fellelhető PDF formátumban tudományos kutatási weboldalakon az ideghálózati topológia és a viselkedés összefüggésével, kémiai és elektromos ingerjelekkel és egyéb témákkal kapcsolatban... Mindemellett remélem, hogy ez a program is segítséget nyújt néhány kutató elme számára a C. Elegans idegrendszerével kapcsolatban, és közelebb hoz minket a természet neuron-összekötési módszereinek, vagy akár a komplexebb (mint amilyen a mi agyunk is) idegrendszerek megértéséhez.
Ahogyan a program fejlődik, frissíteni fogom ezt az oldalt a friss eredményekkel... De egyelőre lássunk néhány képernyőmentést a program szinapszis-kiválasztó/kiemelő módszereinek köszönhető észrevételeimből:

A teljes C. Elegans homokóra-szerű idegösszeköttetés, ahogy a programom megjeleníti. Nehezen átlátható, túl sok kapcsolódás...



Részlet a fentebb linkelt PDF-ből, amely a döntéshozatali mikroáramköröket tárgyalja
Igyekszem a programom segítségével lekövetni és értelmezni az útvonalakat a bemenetektől kimenetekig.



Részlet a féreg mozgásáról ('locomotion') szóló fentebb linkelt PDF-ből
Ez a mozgás-vezérlés utolsó szintje (mozgatást elővezérlő és mozgató neuronok).



Alább következnek a döntéshozásról ('decision making') szóló PDF-cikkben említett fázisok/szintek által bevont neuronokról és be-/kimenetekről készített képernyőmentések. Ezek a képek adhatnak egy általános képet a neuronok topológiai elhelyezkedéséről és a különböző rétegek/szintek egymáshoz képesti függéseiről. Később az egyes bemenettől-kimenetig tartó útvonalak is elkülönülnek, hogy jobban elmerülhessünk bizonyos részletekben... De először is tudnunk kell, melyek az ideghálózat egyes, a vizsgálódás céljából kiemelendő részei, mielőtt továbbmennénk az ezekhez nem tartozó részek kizárásával.
Tipp: Az alábbi képernyőmentések az ideghálózat megtekintésének nem a leghatékonyabb formái, mivel nem mozognak. A programban mozgatok minden csomópontot Lisajjous-görbék mentén, így a véletlenül éppen egymást fedő vonalak nem állandósulnak, és jobban megfigyelhetők a részletek. Ezért inkább a programhoz mellékelt '.sel' fájlok parancssori argumentumként való használatát javallom a képernyőmentéseken látható kiválasztások behívásához, és a kapcsolati diagram programból való vizsgálatához. Így a kiválasztások módosíthatók/egyszerűsíthetők is lesznek...

1. szint, a C. Elegans kijelölt érzékelő neuronjainak kapcsolai (a visszacsatolásokat és 'gap-junction'-okat is beleértve)
Elsőtől az utolsó képig: Mechanikai/nyomás-érzékelők, Oxigén és Szén-dioxid érzékelők, Hőmérséklet-érzékelők, Szaglóérzékelők



A bemeneti útvonalak (a visszacsatolások kivételével) a fentebb említett érzékelőktől (ugyanazon sorrendben) az összes befolyásolt kimenetre
Az egyes kapcsolatokat még mindig nehéz követni ezeken a képeken, de éreztethetik a kimeneti hatásviszonyokat.



2. szint, Az ideggyűrű központi ('hub') neuronjai, Futás és Irányváltás/Fordulás belső neuronjai, melyek közvetlen/indirekt módon dolgozzák fel a szenzorok jeleit.
Elsőtől az utolsó képig: 'Hub'/Gyűjtő-neuronok, 'Futás' érzékelés-feldolgozó belső neuronok, 'Fordulás' érzékelés-feldolgozó belső neuronjai



3. szint, A premotorikus belső parancs-neuronok (AVB:előre, AVA:hátra), melyek az utolsó szint serkentő/gátló motor-neuronjait vezérlik
A PVC,RIM és DVA főleg pre-szinaptikus a többihez képest. A parancs-neuronok többsége egyúttal része a 'rich-club'-nak is.



4. szint, a serkentő/gátló motor-neuronok, melyek az izmokat hajtják meg a neuromotor-csomópontokon ('M'-kezdetű nevek) keresztül
Ahogy tisztán látható, a DD és VD neuronok GABA-neurotranszmitteres gátló (piros) kimenetei ellensúlyozzák a DA,DB,VA,VB hatását.



Utolsó szint: Példák néhány neuromotor-csomópont összes bemenettől kimenetig tartó útvonalára (visszacsatolások kivételével)
Elsőtől utolsóig: MDL16 bal-háti, MVL14 bal-hasi, MR09 jobb-háti, MVR12 jobb-hasi mozgatók, és végül néhány kézileg kiemelt/szélesített PVCL/MVR/MVL/stb. csatlakozás (SHIFT-billentyű lenntartva plusz CURSOR/Insert billentyűk)




Egyelőre ennyit. Amikor több idő adódik további kutatásra, frissítem az oldalt az új képmentésekkel és kifejtésekkel, melyek főleg a futás/fordulás, az előre/hátra mozgás és egyéb viselkedések különálló kiemelt útvonalait fogják átfedni. Ha bárki kipróbálja ezt a programot és rátalál az idegrendszer néhány érdekes aspektusára, bátorítom az információ velem (a honlapba illesztés céljából) és másokkal (fórumon) való megosztására.

2020 M4XY5T ,