Neuronhálók újratöltve: A mátrix memória
Az örvényféregnél megtanultuk, hogyan képes egy egyszerű hálózat a szinaptikus súlyokban (táblázat=súlymátrix) hordozott memóriája segítségével dönteni. A kutyánál, majd a tengeri nyúlnál és a csikóhalnál megtanultuk hogyan tanulnak az idegsejtek. Most úgy csinálunk, mint a barkácsoló evolúció és megtöltjük az idegsejt hálózatokat tanulós szinapszisokkal, majd megnézzük mi történik.
Ezt játszotta el a szigorú tekintetű Teuvo Kohonen a nyolcvanas években a Helsinki Technikai Egyetemen matematikai idegsejtekkel, és egy könnyen befogadható leírását adta, hogyan lehet egy hálózatban információt tárolni. Ráadásul oly módon, hogy a választ ne kelljen keresgélni, hanem a beküldött mintázat (kérdés) gyorsan, magától előhívja azt, amit korábban hozzá párosítottak (válasz). Asszociatív, elosztott mátrix memóriának hívják az eljárást, mely nemcsak a mesterséges idegsejthálózatok fejlődéséhez, de az idegrendszer megértéséhez is jelentősen hozzájárultak. A ChatGPT és egyéb Nagy Nyelvi Modellek (LLM) praktikusan ilyen hatalmas táblázatokból keresik meg a hosszú mintázat vektorokban feltett kérdésekre a választ.
Miért hívják ezt a táblázatot asszociatív, elosztott mátrix memóriának? A matematikában a táblázatokat mátrixoknak, a sorba vagy oszlopba rendezett számokat pedig vektoroknak hívják. A táblázat egy-egy eleme egy kapcsolatnak felel meg a beleírt szám pedig a sorok és oszlopok közötti kapcsolat erősségének fele meg.
És mitől elosztott? Attól, hogy az információ a kapcsolati súlyokban van szétszórva, nem köthető pontosan egyetlen táblázat elemhez sem a tárolás. Hasonlít egy hologramra, ahol a 3Ds kép egy 2Ds fotólemez teljes felszínén elkenve tárolódik. A hologram sem romlik el, ha a lemez sérül, hanem a sérülés mértékével arányosan csökken a visszanyert kép (információ) élessége. Hasonló történik a mátrix memória esetében, ahogy egyre több hiba halmozódik úgy romlik lassan az előhívás pontossága.
A következőképpen működik. Vegyünk egy táblázatot, melynek sorai és oszlopai vannak (jó, ha ugyanannyi sor, mint oszlop, de nem kötelező). A táblázatot kezdetben töltsük fel 0-kkal.
Vegyünk ezek után két 0-t és 1-et tartalmazó számsort. Ez lesz a két minta, amit egymáshoz akarunk párosítani.
A táblázat mellé egy oszlopba írjuk be az egyik mintát, fölé egy sorba a másikat. Ezek után menjünk végig a táblázat összes elemén és ahol a sor és az oszlopvég is 1-et mutat ott a 0-át írjuk át 1-re, vagy ha már 1 van akkor hagyjuk ott.
De mi köze mindennek az agyhoz? Az örvényféregnél ugye már használtunk hasonló táblázatot. Itt a függőlegesen álló dendritű idegsejtek dendritjeire merőlegesen futó axonok alkotnak egy szinapszis rácsot, táblázatot, mátrixot. Az is ismerős lehet, hogy az az elem fordul 0-ból 1-be, ahol az axon és a dendrit is aktív, ez az az asszociatív Hebb szabály. Ha hálózatként képzeljük el a Kohonen mátrixot, a sejtek két helyről kapnak inputokat az oszlopok mentén (X) minden egyes sejt egy erős (detonátor, a sejtet mindenképpen kisütő) szinapszistól, illetve a bemeneti axonoktól, melyek a sorok mentén futnak (Y). Egy adott a sorokra és oszlopokra érkező bemeneti mintázat esetében azok a szinapszisok kapcsolnak 0-ról 1-re (a Hebb szabály szerint), amelyeknél a sejt és rá érkező axon is aktív.
De mire jó ez? Nézzük meg mi történik, ha a sorok mentén beérkezik az eredeti vektor-pár egyike (Y1). Az ingerek beterjednek és összeadódnak. A gyengén szürkített dobozokban az egyes oszlopokban keletkezett serkentések értéke látható. Ebből egy kimenetet kell előállítani, ami 0/1 lehet. Kohonen azt találta, ki, hogy ezt az összeget (sejtre érkező serkentésnek felel meg) el kell osztani az aktív bemenetek számával, jelenleg 2, és azokban az oszlopokban lesz a kimenet 1, akiknél ez az érték nagyobb vagy egyenlő, mint 1.
Ha ezt lefuttatjuk a táblázaton akkor az Y1 bementre megjelenő mintázat (a sötétszürke dobozokban) az X1 vektor lesz. Szuper, helyesen előhívtunk!
Próbáljunk meg egy másik mintázat vektor párt tanítani: X2 és Y2. Ezzel újabb szinapszisok billennek át 0-ból 1-be (vastagon szedett 1-esek).
Ha beadjuk aY1 vagy Y2 vektort a hálózat helyesen hívja elő a hozzá tartozó X1 vagy X2 vektort. Itt látszik, hogy a helyes előhíváshoz szükség van az osztásra (gátlásra), hiszen 0, 1 és 2 kettő is előfordul oszlopösszegenként (serkentésként).
És itt látszik mire való az osztás hókuszpókusz: hogy helyesen tudjunk előhívni akkor is, amikor már több vektorpárt megtanult a mátrixunk. Az idegsejtes megközelítésben a beérkező serkentéssel arányos gátlásnak kell érkeznie a sejttestre, így csak az a sejt sül csak ki, akire megfelelően erős serkentés érkezett. Az örvényféreg döntése esetében a sejtek kimenetével arányos visszacsatot gátlást adott egy gátlósejt, hogy csak egy kimeneti sejt lehessen aktív. Itt egy másik gátlósejt elrendezésre van szükség, az előrecsatolt gátlósejtre, aki a serkentő bemenetekkel arányos gátlást küld vissza a kimenő sejtekre és ezáltal biztosítja a helyes előhívást.
Ezt a tanítást addig lehet folytatni, amíg a mátrixnak túl sok eleme nem lesz aktív.
Egy idő után még ennek a fenti ravasz (osztás / előrecsatolt gátlás) megoldásnak ellenére sem lehet a tanítást tovább folytatni. Ugyanis a memória telítődik, bármely bemenet túl sok kimenetet fog aktiválni, azaz hibás vektorok jelennek meg a kimeneten.
Azt, hogy hány mintázat (vektor)-párt tudunk társítani függ attól, hogy a vektorok elemei közül mennyi aktív. Minél kevesebb elem 1-es, minél ritkásabb, kevésbé telített a bemeneti vektor, annál több párt tudunk társítani. Azaz, ha egy idegsejt háló jól akar tanulni akkor a mintázatok kódolására egy ritka (angolul sparse) kódolást kell használnia. Mint azt majd később bemutatjuk az agykéreg asszociációs területei ilyen kódolást használnak (az egyidőben aktív idegsejtek aránya jóval 10% alatt van).
A MM-ek további ügyes dolgairól a következő bejegyzésben.
Szerző: Gulyás Attila