15 March, 2025

Associative memories

Asociačná pamäť neurónovej siete je sieť, v ktorej sú váhové hodnoty nastavené takým spôsobom, aby si bola schopná zapamätať množinu asociačných vzorov (vektorov). Ako bolo uvedené v predošlých článkoch o neurónových sieťach, jedná sa o váhovú maticu, ktorej vhodnými matematickými úpravami získami maticu, ktorá uchováva určitý počet vzorov. Je známe, že počet týchto vzorov je ohraničený, teda nie je možné uložiť do váhovej matice veľmi veľký počet vzorov. Atraktor je stav siete, ktorý sa opakuje, je to teda tzv. stacionárny stav siete. Stacionárny stav siete predstavujú pamäťové stavy siete. To, ktorý stav siete je atraktorom, čiže jej pamäťovým stavom, je dané váhovou maticou, v tomto prípade označené ako J (J-junction). Teda vo váhovej matici sú uložené atraktory, pamäťové stavy alebo stabilné stavy siete. Atraktory môžu byť pravdivé a falošné. Pravdivý atraktor je taký, ktorý skutočne existuje vo váhovej matici. Ak sa jedná o autoasociačnú neurónovú sieť, tak to, čo máme na vstupe sa musí objaviť na výstupe. Vstup sa môže nachádzať aj v zašumenej podobe, neúplnej, pretože to je podstata autoasociácie, kedy sieť nájde na základe neúplneho vzoru jej úplny vzor. Takže, ak dáme na vstup hoci aj neúplný vzor, sieť by mala poskytnúť pamäťový vzor, ktorý je skutočne uložený vo váhovej matici. Ak ho poskytne, ide o pravdivý atraktor, v opačnom prípade, ide o falošný (klamlivý) atraktor. Pri Hopfieldových sieťach bolo dôležité, že sa dajú navrhnúť tak, aby sme apriori poznali všetky pamäťové stavy siete. Vzorec na konštrukciu váhovej matice je nasledujúci:


Vektory \vec{\xi} predstavujú jednotlivé pamäťové stavy, pričom ich celkový počet je p. J_{ij} môže nadobudnúť 2p+1 rôznych hodnôt z intervalu \left \langle \frac{-p}{N}, \frac{+p}{N} \right \rangle. Tento predpis je vyjadrením jednej varianty tzv. Hebbovho pravidla pre zmenu synaptických váh. Hebbovo pravidlo hovorí, že váha synapsy rastie, ak oba neuróny spojené touto synapsou sú zároveň aktívne, a naopak váha synapsy klesá, ak je aktivita týchto dvoch neurónov nekorelovaná (nie je synchrónna). Ak máme sieť s tromi diskrétnymi neurónmi, sieť sa môže nachádzať v jednom z 8 stavov, vrcholoch kocky, tak ako je znázornené na obrázku nižšie (a ako už bolo uvedené pri Hopfieldovej neurónovej sieti).


Na to, aby sme vyšetrili všetky stabilné stavy siete potrebujeme mať najskôr vopred dané pamäťové vzory a odpovedajúcu váhovú maticu. Vzorec pre výpočet váhovej matice poznáme, takže pre 2 ľubovoľné pamäťové vzory bude váhová matica vyzerať nasledovne:
 






Vo vzorci pre váhovú maticu pribudol oproti pôvodnému vzorcu pre výpočet J určitý výraz v tvare \left ( -\frac{p}{N} \right )I. Do tohto výrazu dosadzujeme počet pamäťových vzorov (p) a celkový počet neurónov (N) (odtiaľ \frac{2}{3}). Tento pomer násobíme jednotkovou maticou I. Takto napokon získame konečnú váhovú maticu J s dvomi pamäťovými stavmi \vec{\xi}_{1} a \vec{\xi}_{2}. Túto váhovú maticu je možné nakresliť vo forme grafu nasledovne:

 


Na základe tejto váhovej matice môžme hľadať stabilné stavy siete - atraktory. Ak by nám niekto zadal len váhovú maticu a nepovedal by nám aké pamäťové vzory obsahuje, museli by sme vyšetrovať všetky stavy a nájsť stabilné stavy siete (v prípade, že by vôbec nejaké existovali). Všetky stavy siete pre N = 3 sú nasledovné:


Červeným štvorčekom sú vyznačené stabilné stavy siete, sú to pamäťové stavy \vec{\xi}_{1} a \vec{\xi}_{2}. O atraktoroch sa zvykne hovoriť, že priťahujú určité stavy. V tomto prípade, ak dáme vektor \vec{x}^{(0)} = (1, 1, -1), bude pritiahnutý atraktorom v smere modrej šípky k atraktoru (-1, 1, -1), čo je možné spočítať nasledovným spôsobom:




 





Poznámka: Pri vyhodnocovaní funkcie sign(x) treba uvažovať aj prípad, ak x = 0. V tomto prípade nevykonáme žiadnu zmenu, ponecháme pôvodný stav. 


Mohli sme začať s ľubovoľným vektorom. Zvolili sme si \vec{x}^{(0)} = (1,1,-1). V prvej iterácii sme sa dostali do stavu \vec{x}^{(1)} = (-1,1,-1). Vieme, že tento stav je atraktor, to znamená, že v ďalšej interácii by sa stav nemal zmeniť. Ako je možné vidieť stav \vec{x}^{(2)} = (-1,1,-1), teda naozaj sa nezmenil. Ak by sme si zvolili iný počiatočný vektor, stav, dostali by sme sa do iného stavu. Z každého stavu sa vieme dostať buď do iného stavu, alebo do toho istého stavu. Ak sa dostaneme po iterácii do toho istého stavu, môže ísť o klamlivý atraktor. Ale nie vždy. Pretože, ak vieme, že v nejakom stave je pamäťový stav a my začneme v tomto stave, tak sa dostaneme do toho istého stavu. Aj v našom prípade, ak by sme ako počiatočný stav zadali priamo jeden z atraktorov, dostaneme sa hneď v prvej iterácii do toho istého stavu, čo zodpovedá ozajstným atraktorom. Jedným zo spôsobov ako zistiť, či ide o skutočný atraktor je ten, že atraktor by mal priťahovať viac stavov, určite nie len jeden, alebo žiadny. Pri vyšetrovaní stavov sa teda môže stať, že z niektorého stavu sa nedostaneme do žiadného iného stavu - tzv. izolovaný stav. Ako pamäťový stav si je možné predstaviť nejaký vzor, obrázok. Na vstup prikladáme nejaké vzory, často neúplné, a sieť sa ich snaží rozpoznať. Akýkoľvek vzor bude pozostávať z vektorov, teda obrázok by pozostával z matice, kde každý bod (pixel) obrázku by predstavoval jeden neurón v neurónovej sieti. Je zrejmé, že obrázky obsahujú veľký počet bodov, takže výpočtová náročnosť takýchto neurónových sietí môže byť značná. Práve preto sa považujú umelé neurónové siete za jedny z výpočtovo najnáročnejších systémov. Konkrétna implementácia niektorých typov umelých neurónových sietí bude uvedená v nasledujúcich článkoch. 

Použitá inšpirácia: 
• Predmet: Matematické metódy pre neurónové siete a časové rady | I. Daňo | Košice 2011 
• Úvod do teórie neurónových sietí | V. Kvasnička et al. | IRIS | Bratislava 1997 
• Umelá neurónová sieť typu heteroasociačnej pamäte | M. Timko | Košice 2010
Share:

0 comments:

Post a Comment