Hálózatelmélet, neurális hálók és a 2024-es a fizikai Nobel-díj

Hálózatelmélet, neurális hálók és a 2024-es a fizikai Nobel-díj

Bevezetés

Az amerikai John J. Hopfieldnek és a kanadai Geoffrey E. Hintonnak ítélték oda 2024-ben a fizikai Nobel-díjat – jelentették be október elején Stockholmban a Svéd Királyi Akadémián. A két kutató úttörő eredményeivel jelentősen hozzájárult a gépi tanulás lehetővé tételéhez mesterséges neurális hálózatokkal.

Hopfield a 80-as évek elején hozta létre és vizsgálta a ma már Hopfield-hálózatnak nevezett matematikai modellt. Erről az elmúlt évtizedekben kiemelkedően sok tudományos publikáció született. Hopfield kiinduló cikkét mintegy tízezren idézik tudományos publikációkban, de a témával foglalkozó dolgozatok száma ennél sokkal több. A Hopfield-hálózatról már a nagy nyelvi modellek is tudnak ismertetőt írni, az alábbi például itt érhető el: 

AI generated definition based on: Quantum Inspired Computational Intelligence, 2017:

A Hopfield Network is a type of recurrent content-addressable memory in computer science. It is a fully autoassociative architecture with symmetric weights and binary threshold nodes. This network has the ability to transform itself through transitions to different states until it stabilizes. The weights between the nodes enforce constraints that influence the outputs of the network.

Az Olvasó a fordítást is elkészítheti valamelyik mesterséges intelligencia algoritmust alkalmazó nyelvi modellel. Bár a fordítás elkészítése után is megmaradhat a hiányérzetünk, valójában mi is a Hopfield-hálózat, tudjuk-e meglevő matematikai ismereteinkhez kötni valahogy. Jelen cikk megpróbál egy matematikán nevelődött, gondolkodó, és kis időt, energiát erre rászánó olvasónak ehhez némi szellemi muníciót adni.

Hálózatok és gráfok

A hálózat matematikai szakszóval egy gráf, amely csúcsokból és élekből áll, első példaként Euler königsbergi hidait szoktuk emlegetni. Ebben a példában a gráfot le tudjuk rajzolni, a csúcsokat pontok, az éleket ezeket összekötő vonalak jelzik. Nagy gráfoknál, mint az internet, vagy az agy, ez a reprezentáció kevéssé alkalmazható, de az elvont fogalom ott is működik: a gráf két halmaz megadását jelenti, az egyik a csúcsok halmaza, gyakran $V$ jelöli (angolul a csúcs=vertex) a másik pedig az élek $E$ halmaza (edge), amely $V\times V$ egy részhalmaza, azaz olyan csúcspárokból áll, amelyek össze vannak kötve. Nagy hálózatok esetében nem feltétlenül tartjuk számon, hogy egy csúcs pontosan mely másik csúcsokkal van összekötve, hanem valamilyen tulajdonságú véletlen gráfokkal reprezentáljuk a hálózatot. A véletlen gráfok vizsgálata Erdős Pál és Rényi Alfréd meghatározó dolgozatával kezdődött. 

A számítógépek felgyorsulása lehetőséget teremtett a nagy hálózatok kísérleti vizsgálatára is, ami a hálózatelmélet 2000-es évek eleji elterjedését tette lehetővé. Ennek gyakran idézett mérföldköve a Barabási−Albert-féle hálózati modell megalkotása volt. 

Folyamatok hálózatokon

A fentiekben a hálózat matematikai reprezentációját mutattuk be, most továbblépünk, a hálózaton végbemenő folyamat matematikai leírása felé.

A hálózatot adottnak tekintjük, de a csúcsai különböző állapotokban lehetnek. A gráfelméletben ezt a gráf csúcsai színezésének is nevezzük, de a különböző alkalmazások nem színeket használnak. Az egyik kézenfekvő alkalmazás a fertőzésterjedés modellezése, ekkor a gráf csúcsai például két állapotúak lehetnek: egészséges és fertőzött. (Komolyabb modelleknél a betegség több állapottal írható le, lehetnek gyógyultak, akik már nem fertőzhetők meg, vagy fertőzöttek, akik még a betegség szimptómáit nem mutatják.) Az információ vagy hírek terjedése esetében lehetnek olyan csúcsai a gráfnak, amelyek azokat reprezentálják, akik még nem tudják a hírt, lehetnek olyanok, akik tudják és terjesztik, illetve olyanok, akik tudják, de már nem terjesztik. Neuronok hálózatában lehetnek aktív és inaktív csúcsok. Általánosságban a gráf mellett adott egy dinamika, amely egyrészt azt adja meg, hogy melyek egy csúcs lehetséges állapotai, másrészt azt, hogy a különböző állapotok között milyen szabályok szerint változik egy csúcs állapota. Ismét a fertőzés terjedését használva példaként: egy egészséges csúcs beteggé válhat, ennek az átmenetnek a bekövetkezése a fertőzött szomszédok számától függ valamilyen képlet szerint, illetve egy beteg csúcs meggyógyulhat, ez rendszerint független a szomszédos csúcsok állapotától.

Közel vagyunk ahhoz, hogy a fentieket képletek formájában is leírjuk, azaz matematikai modellt mutassunk be. Még elég sok szabadságunk van (lenne) a konkrét formába öntéshez, de elköteleződünk egy olyan formalizmus mellett, amely elegendően általános ahhoz, hogy egy összetett jelenséget leírjon, és ezzel egyidejűleg elég egyszerű ahhoz, hogy kezelhető legyen. (A kezelhető nem csak arra vonatkozik, hogy ezen cikk olvasóját ne riassza el, hanem arra is, hogy a szakemberek sikeresen vizsgálni tudják a matematika általánosan ismert eszközeivel.) Ez a formalizmus azt feltételezi, hogy egy csúcs állapotát egyetlen számmal jellemezni tudjuk, ezt az egyes számú csúcs esetében $x_1$, a kettes csúcs esetében $x_2$, az $i$-edik csúcs esetében $x_i$ jelöli. Ráadásul ez a szám időben változhat, tehát valójában az $x_i(t)$ jelölés adja meg az $i$-edik csúcs állapotát a $t$ időpontban, azaz $x_i$ nem is egy szám, hanem egy számértékű függvény. Ismét a fertőzésterjedés példájára utalva, $x_i(t)$ jelölheti annak valószínűségét, hogy az $i$-edik csúcs a $t$ időpontban fertőzött. Neuronok esetében $x_i(t)$ jelölheti az $i$-edik neuron tüzelési rátáját a $t$ időpontban.

Hálózati folyamat differenciálegyenlete

Elérkeztünk a legkritikusabb pillanathoz, valamilyen törvényszerűséget kell felírnunk a fenti függvények megváltozásának leírására. (Ahogy az ismert filmből tudjuk: „a nemzetközi helyzet egyre fokozódik”.) Elővesszük a változások matematikai modellezésének ősi eszközét, a differenciálegyenletet. (Egy pillanatra megállva nem hagyhatjuk ki annak megemlítését, hogy bár az eszközt a 17. században fejlesztették ki, és azóta meghatározó szerepet játszott az emberiség technikai fejlődésében, a matematika érettségi küszöbén nem tört át, ezért kevesen tudnak a létezéséről. Ha esetleg felmerül az Olvasóban, hogy ezen cikk az áttörés érdekében végzett lobbitevékenység része, akkor szeretnénk biztosítani, hogy nem így van. Meggyőződésem szerint a differenciálegyenleteken 18-as karika van, az egyetemi tanulmányok során érik meg rá az ember, ahogy talán a középiskolai fizika, biológia, történelem tanulmányainkban előkerülő számos témára, nem is szólva az élettapasztalatot igénylő mély irodalmi művek megértéséről.)

A differenciálegyenlet egy függvény megváltozását jellemző mennyiségére, a deriváltjára ad képletet. A mi $x_i$ függvényünkre számos modell általánosításaként a következő írható fel:

$\displaystyle \dot x_i= F(x_i)+\sum_{j=1}^N w_{ij}G(x_i,x_j),
$

ahol a bal oldalon a függvény feletti pont a deriváltját jelöli, a jobb oldalon pedig a következő jelöléseket használtuk. Az $F$ függvény azt írja le, hogy egy csúcs állapota önmagában (a szomszédaitól függetlenül) hogyan változik. A $G$ függvény azt mutatja meg, hogy a $j$-edik csúcs állapota milyen hatással van az $i$-edik csúcs állapotára. A $W$ valójában egy mátrix (azaz egy táblázat), amelyben az $i$-edik sor $j$-edik eleme $w_{ij}$ adja meg, hogy az $i$-edik és $j$-edik csúcs össze van-e kötve, azaz ebben van kódolva a hálózat. Legegyszerűbb esetben ennek értéke 1, ha a csúcsok össze vannak kötve, vagy 0, ha nincsenek összekötve. De lehet más szám is, ha azt is jellemezni akarjuk, hogy mennyire erős a csúcsok közötti kapcsolat. Ez például neuronok hálózatában jelentős, innen származik a $w$ jelölés, ami az összekötés súlyára utal. Végül a jobb oldalon álló szumma jel azt fejezi ki, hogy az egyes csúcsokból jövő hatást összegezni kell, ebben a $j$ a futó index, azaz $j$ a hálózat összes csúcsán végigmegy.

Érdemes néhány konkrét modellt megnéznünk, amelyek alátámasztják a fenti általános egyenlet létjogosultságát.

Az első a járványterjedés (egyik lehetséges) modellje hálózaton. 

$\displaystyle \dot x_i= \tau \sum_{j=1}^N w_{ij}(1-x_i)x_j-\gamma x_i,$    

ebben a csúcsok állapotát megadó $x_i$ függvény az $i$-edik csúcs fertőzöttségének valószínűsége. A fenti általános modell $F$ függvénye $F(x) = -\gamma x$, ahol $\gamma$ jelöli az úgynevezett gyógyulási rátát, ami azt jellemzi, hogy átlagosan mennyi időt tölt valaki a fertőzött állapotban. A negatív előjel azt fejezi ki, hogy a fertőzöttek fokozatosan elhagyják ezt az állapotot, és visszatérnek az egészséges állapotba. Az általános modell $G$ függvénye $G(x_i,x_j)=\tau (1-x_i)x_j$, kifejezve azt, hogy az $x_j$ fertőzöttségi, és $1-x_i$ egészségességi valószínűség szorzata adja annak valószínűségét, hogy a $j$-edik csúcs megfertőzi az $i$-ediket, ebben a $\tau$ paraméter a fertőzési ráta a fertőzés erősségét jellemzi, de ebbe épül be például az is, ha a maszk viselése miatt kevésbé fertőzik egymást az egyedek.

Szintén belefér az általános modell kereteibe a a címben is említett Hopfield- vagy Cowan–Wilson-modell:

$\displaystyle \dot x_i= b_i-a_i x_i+\sum_{j=1}^N w_{ij} \sigma(x_j+\Theta_j).$ (1)

Ebben $x_i(t)$ az $i$-edik neuron aktivitását adja meg a $t$ időpontban. A fenti általános modell $F$ függvénye $F(x) = b-a x$, ahol $b$ a neuront érő külső (hálózaton kívüli) hatás, az $a$ paraméter pedig azt jellemzi, hogy milyen gyorsan tér vissza a neuron a gerjesztettből a nyugalmi állapotba (erre utal ismét a negatív előjel). A szumma jel ismét az egyes neuronok hatásának összegzését jelenti, mögötte pedig a modell $G$ függvénye van. Ebben a $\theta$ egy küszöbértéket jelöl, amelyet el kell érnie a neuronnak, hogy egy másikat aktiválni tudjon, a $\sigma\colon \mathbb{R} \to \mathbb{R}$ függvény pedig a hatás erősségét kifejező úgynevezett szigmoid függvény, amely növekedő, de végtelenben véges határértéke van. Ilyen függvények általában exponenciális növekedés után telítődést fejeznek ki, tipikusan megjelennek gazdasági vagy demográfiai modellekben is, kifejezve azt, hogy a kezdeti exponenciális növekedést mindig telítődést követi, azaz lelassul a növekedés, és egy konstans érték áll be („a fák nem nőnek az égig”, és a legújabb típusú okostelefon eladási számai is csak egy darabig növekednek exponenciálisan).

Különböző fajok populációinak együttélését írja le az általánosított Lotka–Volterra-modell. (Egy ragadozó és zsákmány faj kölcsönhatására fejlesztették ki eredetileg a 20. század elején a Lotka–Volterra-féle modellt, amely először írt le periodikus viselkedést egy biológiai rendszerben.) A modell szintén a fenti általános egyenlet formájába írható:

$\displaystyle \dot x_i= a_i x_i+\sum_{j=1}^N w_{ij} x_ix_j.
$

Ebben $x_i(t)$ az $i$-edik faj populációjának méretét jelöli. A $w_{ij}$ számok negatívak is lehetnek. Ha $w_{ij}$ és $w_{ji}$ is pozitív, akkor a két faj segíti egymást, szimbiózisban élnek, ha mindkettő negatív, akkor versengőnek nevezzük a fajokat, ha pedig az egyik pozitív, a másik negatív, akkor ragadozó–zsákmány viszony van köztük. Megjegyezzük, hogy ha reálisabb („a fák nem nőnek az égig” típusú) modellt szeretnénk, akkor az $F(x)=ax$ függvény helyett célszerű az $F(x)=ax(K-x)$ függvényt használni, amelyben a $K$ paramétert eltartó képességnek nevezik, ez határozza meg a populáció méretét, ha más fajok nincsenek jelen.

Érdekességképpen, illetve a modell általános alkalmazhatóságának illusztrálásra megemlítjük a Kuramoto-modellt is

$\displaystyle \dot x_i= \omega_i +\frac{K}{N}\sum_{j=1}^N w_{ij} \sin(x_j-x_i),
$

amely biológiában, kémiában és idegtudományban vizsgált oszcilláló rendszerek viselkedését modellezi. Ebben $x_i(t)$ az $i$-edik oszcillátor aktivitása a $t$ időpontban, $\omega_i$ ennek saját rezgését leíró paraméter, $K$ pedig az összekötés erősségét jellemző, meghatározó szerepet játszó paraméter. Kuramoto a 70-es, 80-as években teljesen összekötött hálózat esetében megmutatta, hogy a $K$ értékét növelve egy adott ponton hirtelen megjelenik az oszcillátorok szinkronizációja, ami később számos helyen feltűnt a tudomány különböző területein. Azóta a legegyszerűbb teljes gráf mellett számos más hálózat esetében vizsgálták a szinkronizáció létrejöttét.

Neurális hálók

Térjünk vissza a cikk elején említett neurális hálókra és azok tanítására. Hopfield meghatározó jelentőségű eredménye a fenti differenciálegyenlettel kapcsolatban annak igazolása, hogy szimmetrikus $W$ súlymátrix esetén a megoldások egyenensúlyi pontokhoz tartanak. A rendszernek számos egyensúlyi pontja lehet, amelyek megfelelhetnek a memóriában tárolt emlékeknek. Adott kezdeti feltételből indítva a megoldást, valamelyik egyensúlyi állapothoz tart, amit úgy is interpretálhatunk, hogy a neurális háló egy adott bemenetre felidézi valamelyik emlékképet. Ezen a ponton érdemes a differenciálegyenletekről áttérni az időben nem folytonosan, hanem lépésenként haladó (azaz időben diszkrét) egyenletekre, amelyekben az $\dot x(t)$ derivált helyett az $x(t+\Delta t) -x(t)$ különbség szerepel. (A $\Delta t$ nevezővel átszorzunk a jobb oldalra, és beépítjük az ott szereplő függvényekbe.) Ez lehetővé teszi, hogy az $x_i((k+1)\Delta t)$ értékét az egyenlet alapján kiszámítsuk az $x_j(k\Delta t)$ értékekből. Ha a $\Delta t$ értéket választjuk időegységnek, akkor az egyszerűbb $x_i(k+1)$ és $x_j(k)$ jelöléseket használjuk. Az egyszerűség kedvéért speciális $a_i$ és $b_i$ értékeket választva, az (1) egyenletből az

$\displaystyle x_i(k+1)= \sum_{j=1}^N w_{ij} \sigma(x_j(k)+\Theta_j)
$

diszkrét idejű egyenletet kapjuk. Bevezetve az $y_i=\sigma (x_i+\Theta_i)$ jelölést, az egyenlet az $y$ változókra így írható:

$\displaystyle y_i(k+1)= \sigma\left(\Theta_i + \sum_{j=1}^N w_{ij} y_j(k)\right).
$

A képlet még tömörebb formába hozható, ha vektoriális jelölést használunk, az $\mathbf{y}$ vektor koordinátái lesznek az $y_i$ számok, hasonlóképpen a $\boldsymbol{\Theta}$ jelenti a $\Theta_i$ értékekből álló vektort, és $W$ lesz a $w_{ij}$ súlyokból álló mátrix. Ekkor a Hopfield-modell jobban elterjedt alakjához jutunk:

$\displaystyle \mathbf{y}(k+1) = \sigma\left(\boldsymbol{\Theta} + W\mathbf{y}(k)\right).
$

Ebben a kontextusban a memóriából egy emlék előhívása azt jelenti, hogy kiindulunk egy $\mathbf{y}(0)$ vektorból, és a fenti iterációt addig folytatjuk, amíg az $\mathbf{y}(k)$ már nem változik, azaz valójában konvergál egy $\overline{\mathbf{y}}$ vektorhoz. Ez a vektor természetesen teljesíti az

$\displaystyle \overline{\mathbf{y}} = \sigma\left(\boldsymbol{\Theta} + W\overline{\mathbf{y}}\right)
$

egyenletet.

Az ilyen neurális hálókat rekurrensnek nevezik, mert elvileg soha nem ér véget az iteráció, csak konvergál(hat) egy értékhez. Befejezésül megmutatjuk a gyakrabban használt előremenő (feed-forward) hálókat, amelyeket a mélytanulás (deep-learning) során is használnak.

A feed-forward hálók kapnak egy bemenetet és véges sok lépésben (a fent említett rekurrens hálókkal ellentétben, amelyek „örökké” futnak) egy kimenetet adnak. Jelölje a bemenetet, ami egy vektor, $\mathbf{y}_0$. Először egy úgynevezett egy rétegű hálót mutatunk, ami lényegében egy speciális alakú függvény. A függvény megadásához három dolog szükséges: egy $A$ mátrix, egy $\mathbf{b}$ vektor és egy egyváltozós függvény, $f$. Az egyrétegű neurális háló az

$\displaystyle \mathbf{y}=f(A\mathbf{x}+\mathbf{b})
$

függvény, amelynek kimenete $y_1=f(y_0)$. A jelölés magában foglalja azt, hogy az egyváltozós $f$ függvényt az argumentumában álló vektorra koordinátánként alkalmazzuk. A függvény gyakran a fent említett szigmoid típusú függvény, de kiderült, és a mélyhálókban gyakran azt alkalmazzák, hogy az $f(x)= \max\{ x,0\} $, röviden $ReLu$ (rectified linear unit) is hatékonyan alkalmazható a gépi tanulás során. Megjegyezzük, hogyha ezt alkalmazzuk, akkor a kimenet szakaszonként lineáris függvénye a bemenetnek.

A gyakorlatban természetesen nem ennyire egyszerű függvényeket alkalmaznak, de nem is sokkal bonyolultabbakat, hanem nemes egyszerűséggel ilyenek kompozícióját. Tehát például egy két rétegű neurális háló két ilyen függvény kompozíciója, azaz az

$\displaystyle \mathbf{y}=f(A_2f(A_1\mathbf{x}+\mathbf{b}_1)+\mathbf{b}_2)
$

függvény, amelyben $\mathbf{b}_1$ és $\mathbf{b}_2$ vektorok (nem feltétlenül azonos dimenziósak), $A_1$ és $A_2$ mátrixok (nem feltétlenül azonos méretűek), $\mathbf{x}$ a bemenet, és $\mathbf{y}$ a kimenet. Amennyiben rétegekre bontjuk, akkor az első réteget az $\mathbf{y}_1=f(A_1\mathbf{y}_0+\mathbf{b}_1)$ függvénykapcsolat reprezentálja, a második réteget pedig az $\mathbf{y}_2=f(A_2\mathbf{y}_1+\mathbf{b}_2)$. A teljes háló ezután a kettő kompozíciója:

$\displaystyle \mathbf{y}_{k}= f(A_k \mathbf{y}_{k-1} + \mathbf{b}_k), \quad k=1,2.
$

A deep-learning elnevezést takaró mélyhálókban sok réteg lehet, egy $n$ rétegű háló a fenti képlet után már nagy meglepetést nem okoz:

$\displaystyle \mathbf{y}_{k}= f(A_k \mathbf{y}_{k-1} + \mathbf{b}_k), \quad k=1,2, \ldots , n.
$

Ezen a ponton a téma bemutatását lezárjuk, bár a történet igazán most kezdődik. Cikkünk célja csupán az volt, hogy bemutassuk azokat a matematikai kereteket, amelyek a címben szerepelő fogalmak mögött vannak. Egy következő cikk szólhat arról, hogy mit jelent a neurális háló tanítása, milyen matematikai eszközöket fejlesztettek ki erre, és ami talán mindenkit a legjobban érdekel, mit képesek a neurális hálók „megtanulni”, illetve mik lehetnek a korlátaik.

Simon L. Péter,
ELTE TTK Alkalmazott Analízis és Számításmatematikai Tanszék