13 March, 2025

Linear neural network models

Keď som sa prvýkrát dozvedel o umelých neurónových sieťach nevedel som si predstaviť ako to celé vôbec môže fungovať. Grafové algoritmy, graf ako matematická štrukúra, ma zaujali. Hneď som v nich videl veľký potenciál a bolo zrejmé, že úzko súvisia s neurónovými sieťami. Ako som hlbšie prenikal do tajov umelých neurónových sietí a čiastočne aj umelej inteligencie ako takej, stále viac som v nich videl pomerne komplikovanú matematiku, avšak v celej jej kráse, teda umelé neurónové siete zasahujú do širokej časti matematiky nielen do problematiky grafov. Ľudia zaoberajúci sa umelými neurónovými sieťami alebo všeobecne umelou inteligenciou fascinuje namjä tajuplnosť až záhadnosť prepojenia biologicky orientovaných neurónových sietí s umelými. Nedá sa povedať, že by štúdium umelých neurónových sietí bolo výhradne pre matematikov, ale na druhej strane táto oblasť je s òou veľmi úzko prepojená, ostatne tak ako skoro všetko, a bohužiaľ alebo chválabohu, jej možnosti sú ňou determinované. Na jednej strane sa môžte inšpirovať biológiou, teda v podstate fyzikou, na druhej strane ste plne obmedzení možnosťami matematiky. Čo nie je možné matematicky popísať, to nie je možné prakticky realizovať na počítači. Lineárne neurónové siete sú najjednoduchšie umelé neurónové siete. Základom je formálny neurón s lineárnou aktivačnou funkciou f. Máme niekoľko vstupných kanálov, ktoré označíme vektorom vec{x}:
Tieto vstupné kanály budú váhované pomocou váhového vektora w:
Váhový vektor priraïuje od každého vstupu po výstup určitú hodnotu, podobne ako pri grafoch. Potom výstupná aktivita lineárneho neurónu bude:
Symbol xi je prah aktivácie a najčastejšie je aktivačná funkcia identická, takže je zanedbateľná. Tu už je priamo paralela s biológiou, teda, biologický neurón obsahuje tzv. dendrity, čo predstavuje vstup impulzov do tela neurónu (soma), a napokon obsahuje tzv. axóny, výstup impulzov. Tieto zložky sa v celku nazývajú ako neurón. Samozrejme v mozgu prebiehanjú zložité biochemické deje, ktoré sú ale matematicky pomerne silne idealizované. Podobnosť s umelým neurónom je teda v impulzoch, ktoré spracovávame po technickej stránke ako digitalizované signály, aby ich bolo možné realizovať matematicky, na počítači. Takýto technický neurón predstavuje obyčajnú funkciu, ktorá má nejaké vstupy a nejaké výstupy. Jednotlivé vstupy/výstupy nemusia byť lineárne, ale môžu predstavovať celú škálu matematických funkcií, v závislosti od toho, čo chceme modelovať. Celá veda v tomto smere spočíva v tom, že jednotlivé neuróny môžu spolu navzájom interagovať prostredníctvom tzv. synapsy (analógia z biológie). Je to miesto stretu neurónov, čo v preklade signálov bude znamenať, že jednotlivé výstupné charakteristiky daných neurónov sa v tomto mieste budú prekrývať, lepšie povedané meniť v závislosti od charakteru synapsy. Mieru zmeny signálu od jednotlivých neurónov reprezentujeme váhou, ktorá už bola spomenutá. Takže zatia¾ máme nejaké vstupy, nejaký výstup a ováhované vstupy. Celý vtip spočíva vo váhovej matici, ktorá je zložená práve z ováhovaného vstupného vektora. Váhová matica je matica, ktorá jednoducho popisuje vzťahy medzi vstupmi a výstupmi, ktorým priraïuje určitú hodnotu. Vzťah i-tého a j-tého neurónu označíme ako W_{ij} a celá váhová matica bude mať tvar:
 

Ak na vstup priložíme vektor vec{x} dostaneme výstu y = (y_1, y_2, ..., y_m), kde y_1, y_2,..., y_m sú aktivácie výstupných neurónov. Úlohou je nájsť váhovú maticu W. Táto matica bude uchovávať jednotlivé vzory. V procese jej vznikania (iteráciách) sa postupne menia tzv. synaptické váhy medzi neurónmi. Zmenu týchto váh považujeme za "učenie". Ak sa v neurónovej sieti nemenia hodnoty týchto váh, sieť je "naučená". Pri nejakom vstupe získame nejaký výstup, ktorý bude mapovať váhová matica. To znamená, že pri rovnakom vstupe by sme mali získať výstup prislúchajúci danému vstupu. Danú váhovú maticu potrebujeme natrénovať, aby takto reagovala. To sa vykoná tzv. trénovacou množinou. Trénovacia množina je usporiadaná množina čísel, ktorou testujeme danú neurónovú sieť. Obsahuje vstupy a im prislúchajúce výstupy, ale charakter tejto množiny závisí na type neurónovej siete. V našom prípade budeme mať nasledujúcu trénovaciu množinu:


Ide o usporiadanú dvojicu čísel, vstupu a výstupu. Jednotlivé prvky môžu obsahovať ľubovoľné reálne čísla, aj záporné. Dané označenie horných indexov vo vzorci trénovacej množiny neznamená mocninu čísla, ale označenie poradia. Lineárnu neurónovú sieť je možné vidieť na nasledujúcom obrázku.
 

Neurónová sieť bude fungovať, ak nájdeme k trénovacej množine T, váhovú maticu W podľa vzťahu:
 

Matematicky, nech x je matica X, ktorej ståpce tvoria trénovacie vstupy x(1), x(2),..., x(n) a y je matica Y, ktorej stĺpce budú požadovať výstupy y(1), y(2), ..., y(n). Potom môžme predchádzajúci vzorec prepísať do maticového tvaru:

Za predpokladu, že matica X je regulárna, je možné spočítať jej inverznú maticu a jednoducho získať požadované váhové prepojenia:
 

Lenže, čo to znamená, že matica X je regulárna ? To znamená, že je štvorcová a jej determinant je rôzny od nuly. Ale, ak je matica štvorcová, tak počet vzoriek v trénovacej množine je rovný dimenzii vstupných vzorov. Čiže to by znamenalo, že ak máme dimenziu vstupu 4, tak aj počet trénovacích vzoriek by musel byť 4. Dostali by sme tak maticu 4x4, čo je štvorcová matica a boli by sme schopní pri determinante rôznom od nuly spočítať inverznú maticu a nájsť váhovú maticu prepojení. Nejde o to, že by takýto prípad nemohol nikdy nastať, ale v praxi sa často nevyskytuje. Práve preto je potrebné modifikovať maticu X tak, aby bolo možné nájsť váhovú maticu W. V takomto prípade sa v pôvodnom vzorci X, modifikuje na tvar X^{+}:
kde

Toto platí, ak počet riadkov matice [latex]X[/latex] je menší ako počet ståpcov, čiže počet trénovacích vzoriek je väčší ako dimenzia vstupov (a hodnosť matice X je rovná n). Presne toto sme potrebovali. Matica X^{+} sa nazýva pseudoinverzná matica matice X a platí:
Budeme uvažovať príklad, keï máme nájsť váhovú maticu prepojení W lineárneho autoasociátora, ktoré majú za úlohu zapamätať si určité vzory. Trénovacia množina bude mať tvar:
 

Autoasociácia zjednodušene znamená, že to, čo dáme na vstup, chceme dostať na výstupe. Ak dáme na vstup vektor vec{x}^{(1)}, ten istý vektor musíme dostať na výstupe. Čiže musíme nájsť takú váhovú maticu W, ktorá bude umožňovať tento prepočet. A tomuto hovoríme, že neurónová sieť sa "naučí" rozpoznávať vzory. Takže pre autoasociátor bude matica požadovaných výstupov Y = X. Z pôvodného vzťahu pre váhovú maticu W dostaneme nasledovný vzťah:
 

Ďalej budeme mať nasledovné 2 vstupy, vzory:
 


Zároveň sme vyšetrili, či sú dané vstupy(vektory), lineárne nezávislé, keï usudzujeme hodnosť h = 2, vektory sú teda lineárne nezávislé. Najskôr spočítame pseudoinverznú maticu X^{+}:
 






Poznámka: Jednotlivé vzorce obsahujú vektor vstupov X v pôvodnom znení a niekde v transponovanom tvare. Záleží od toho ako zapíšeme vstupné vektory. Je to len vec zápisu. Keď už máme spočítanú pseudoinverznú maticu, výsledná váhová matica vznikne súčinom pôvodných vstupov a pseudoinverznej matice:
 


Teraz, keï už máme váhovú maticu môžeme otestovať výstupy pre rôzne vstupy. Neurónová sieť je naučená na dané vstupy vec{x}^{(1)} a vec{x}^{(2)}. Keďže sa jedná o autoasociačnú neurónovú sieť, tak to znamená, že ak zadáme na vstup vec{x}^{(1)}, na výstupe musíme dostať ten istý vstup. Ale ak zadáme akýkoľvek iný vstup, nedostaneme na výstupe ten istý vstup, ale nejaký náhodný vektor, resp. vektor, ktorý sa blíži tým dvom vstupným vektorom, na ktorú sme sieť naučili rozpoznávať.
 




Ak sa pokúsime zadať vektor blízky vektoru vec{x}^{(1)}, sieť nám vráti podobný vektor k tomuto vektoru:

V podstate sa jedná všeobecne o aproximáciu. Ak nenájdeme presný vzor, hľadáme približný. To je jedna z vlastností aj biologicky orientovaných systémov. A zároveò to je najzákladnejšia vlastnosť umelej neurónovej siete. Takže ako je možné vidieť umelá neurónová sieť typu lineárneho autoasociátora sa "naučila" rozpoznávať vzory. Konkrétne dva vzory vec{x}^{(1)} a vec{x}^{(2)}. Ak by sme chceli ïalšie vzory, museli by sme prepočítať váhovú maticu W s pridaným vzorom. Zaujímavou vlastnosťou je šum. Sieť nám pri nesprávnom vzore nenájde presný vzor, ale tzv. zašumený vzor v podobe vektora, ktorý sa blíži vektoru jedného z naučených vstupov - jedná sa o aproximáciu. To je jedna z vlastností aj biologicky orientovaných systémov. A zároveò to je najzákladnejšia vlastnosť umelej neurónovej siete. Samozrejme v reálnej praxi sa autoasociátor často používa na rozpoznávanie vzorov, obrázkov, a preto by vstupné vektory neobsahovali matice rozmerov 4x1, ale matice podstatne väčších rozmerov. Ako je možné vidieť umelé neurónové siete sú z praktického hľadiska záležitosťou matematiky. V tomto prípade sme si vystačili so základmi lineárnej algebry, ale na dôkladné pochopenie podstaty "učiaceho" procesu (teda dôvodu prečo to funguje) by boli potrebné jej hlbšie znalosti. Ostatné umelé neurónové siete používajú okrem lineárnej algebry aj matematickú analýzu a diferenciálne rovnice, čo je už podstatne ťažšie na pochopenie. Ale v princípe uvedený postup vystihuje hlavnú podstatu umelých neurónových sietí. 

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