Tehisnärvivõrk

**Tehisnärvivõrk** on bioloogilise aju eeskujul ehitatud arvutuslik arhitektuur. Närvivõrgud koosnevad omavahel ühendatud elementidest, mida kutsutakse sõlmedeks (vahel ka neuroniteks (tehisneuron)). Närvivõrkudel puudub selge esitlus nendes olevatest teadmistest, selle asemel on teadmised kujutatud mustritena, mis omavahel mõjutavad võrgu komponente. Kõige tuntum versioon tehisnärvivõrgust on pärilevivõrk, milles kõik ühendused sõlmede vahel liiguvad sisenditest väljundite suunas. Tehisnärvivõrkude üks suur eelis on, et neile ei pea suuri ja keerulisi protsesse kirjeldama konkreetses matemaatilises formaadis. Närvivõrku saab vaadelda kui universaalset musta kasti, mis suudab leida peaaegu iga süsteemi jaoks ligikaudse lahenduse või ennustuse. Erinevad tehisintellekti programmid kasutavad tehisnärvivõrke.

## Närvivõrgu mudel
Tehisnärvivõrgu struktuur koosneb tavaliselt omavahel ühendatud kihtidest. Kõige tähtsamad kihid närvivõrgus on sisendkiht, varjatud kiht ja väljundkiht. Iga kiht sisaldab sõlmesid oma sisendite ja väljunditega, millel on aktivatsioonifunktsioonid. Kihtides olevate sõlmede ja varjatud kihtide arv sõltuvad närvivõrgu lahendatavast probleemist. Klassikalisel närvivõrgul on lisaks sisend-, väljund- ja varjatud sõlmedele ka vabaliikme sõlmed, mis jooksevad väljund- ja peidetud kihtidesse. Üksikute sõlmede vahelistel ühendustel on kaalud ja need määravad, kui suur osa ühe sõlme väljundist jõuab teise sõlme sisendisse.

### Sisendkiht
Sisendkiht koosneb ühest või enamast sisendsõlmest. Sisendkihi sõlmed väljastavad normaliseeritud arvväärtused järgnevatele kihtidele. Väljundi normaliseerimiseks rakendatakse tavaliselt sama aktivatsioonifunktsiooni kui varjatud kihtidel.

### Varjatud kihid
Varjatud kiht võib sisaldada üht või enamat varjatud sõlme, mis võtavad sisse endast kõrgemal asuvate sõlmede ja vabaliikme sõlmede väljundi korrutatuna läbi ühenduse kaaluga. Sõltuvalt närvivõrgust võib varjatud kiht närvivõrgust puududa. Klassikaliselt ühe varjatud kihi sõlme väljund leitakse valemiga

 \sigma \left(\sum_{j = 1}^{N} V_{ij} x_j+T_i^{hid} \right),

kus *σ*() kutsutakse aktivatsioonifunktsiooniks, *N* on sisendsõlmede arv, *V<sub>ij</sub>* on kaalud, *x<sub>j</sub>* on sisendid sisendsõlmedele ja *T<sub>i</sub><sup>hid</sup>* on vabaliige, mis määrab varjatud sõlme lävendi .
Aktivatsioonifunktsiooni eesmärk on piirata sõlme väljundit ette määratud vahemikku, et selle väljund ei üleküllastaks järgnevaid sõlmi. Tihti rakendatakse käivitusfunktsioonina kas lineaarseid, sigmoid või Gaussi jaotusel põhinevaid funktsioone.
Kaalud määravad, kui suur mõju on igal sisendil sõlme lõppväljundi arvutamisel. Närvivõrgu treenimise käigus muudetakse ainult kaalude väärtuseid.

### Väljundkiht
Väljundkiht koosneb ühest või enamast väljundsõlmest, mille tulem ei pea olema normaliseeritud. Väljundkihis olevate sõlmede tulemid loetakse närvivõrgu vastusteks. Sõltuvalt rakendusest võib üks väljundsõlm määrata kuuluvusklassi või on selle asemel mitu sõlme, mis kõik määravad oma klassi kuuluvuse tõenäosust.

### Vabaliikmed
Vabaliikmeid kutsutakse ka negatiivseks lävendiks. Vabaliikmed saadavad oma väärtuse peidetud sõlmede ja väljundsõlmede sisenditesse konstantidena. Vabaliikmed hoiavad endas numbrilist väärtust (vaikimisi 1), mis ei muutu õppimisprotsessi käigus, aga selle kaal võib muutuda. Vabaliikmed suurendavad närvivõrgu võimekust, kuna nad toovad sisse konstandid, mis ei sõltu sisendist.

## Õppimine
Tehisnärvivõrkude üks erilisemaid omadusi võrreldes teiste arvutuslike arhitektuuridega on selle õppimisvõime. Kui närvivõrgule on määratud kindel ülesanne, funktsioonide hulk, mida ta rakendab ja vaatluste hulk oodatud tulemustest, siis suudab närvivõrk leida kaalud, mille puhul on võimalik teha ennustusi mingi veaga.

### Juhendamata õpe
Juhendamata õppe käigus ei anta tehisnärvivõrgule tahetud lõppvastuseid treeningu ajal, selle asemel moodustuvad süsteemid, mis kategoriseerivad peamisi mustreid sisendandmetes. Juhendamiseta õppimismeetodit rakendatakse tihti andmete klasterdamiseks, servade eristamiseks, sarnasuste tuvastamiseks ja olukordades, kus ei ole ette määratud, mis omaduste järgi andmed peaksid jagatud olema.

### Juhendatud õpe
Juhendatud õppe käigus on olemas sisendandmete kõrval ka väljundandmed ning lisaks kontrollmaterjalid sarnases formaadis. Tehisnärvivõrk töötleb sisendit ja toodab oma pakutud väljundi, mida võrreldakse soovitud väljundiga. Iga võrdluse käigus leitud viga saadetakse närvivõrgule tagasi ja toimub kaalude uuendamine. Juhendamisega õpet kasutatakse enamasti mustrite tuvastamiseks ja regressioonis, kus klassikaliste meetodite rakendamine on liiga kulukas või keeruline. Kolm kõige tuntumat meetodit, mida rakendatakse juhendamisega õppel, on tagasilevi, simuleeritud lõõmutamine ja geneetilised algoritmid.

#### Vea arvutus
Närvivõrgu genereeritud väljundit võrreldakse soovitud väljundiga ja arvutatakse viga valemiga

 E= \sum_P\sum_p(y_i-t_i)^2,

kus *t<sub>i</sub>* on soovitud väljundi väärtus, *y<sub>i</sub>* on närvivõrgu genereeritud väljund, *p* on väljundsõlmede arv ja *P* on treeningpunktide arv. Iga iteratsiooniga liigub viga närvivõrgus tagurpidi tagasi ja selle abil muudetakse kaalude väärtuseid.

#### Tagasilevi

Tagasilevi algoritmi rakendatakse pärilevivõrkude treeningul. Tagasilevi algoritm kasutab igal iteratsioonil leitud viga ja liigub närvivõrgus tagurpidi üles. Iga sõlme läbimisel leitakse kaalude muudatused ning kihtide kaupa leitakse ka uued vead järgnevate sõlmede kaalude muudatuste jaoks. Seda korratakse kuni närvivõrk on tagurpidi läbitud ja kaalud muudetud. Iga sõlme raskuse muudatus leitakse, kui

 \Delta_{w_{ij_m}}  = \epsilon\delta_{j_p} \alpha_{i_q} 
\begin{cases}
\delta_{j_p} = \alpha_{j_q} (1 - \alpha_{j_q} )( t_{j_q } - \alpha_{j_q} )  \text{ kui on väljundneuron} \\
\delta_{j_p} = \alpha_{j_q} (1 - \alpha_{j_q} )\sum_{x=0}^{n} \delta_{k_x} w_{jk_x}  \text{ kui on peidetud neuron}
\end{cases},


kus *i* on eelnev sõlm, *j* on järgnev sõlm, *k* on kihtide arv, mis järgnevad sõlmele *j*; *ij* on kaal sõlmede *i* ja *j* vahel, *jk* on kaal sõlmede *j* ja *k* vahel, *w* on kaalud, *α* on sõlmede aktivatsioonid ja *ε* on õpisamm. Kuna tagasilevi parandab kaalusid lähtudes gradiendist, siis see on väga tundlik lokaalsete miinimumide suhtes ja ei lähene alati globaalsele miinimumile.

#### Simuleeritud lõõmutamine

Simuleeritud lõõmutamine on analoogne lõõmutamisele, mis on füüsikaline protsess, kus teras kuumutatakse üle kriitilise punkti ja siis aeglaselt jahutamise käigus moodustub kristalne struktuur. Simuleeritud lõõmutamise käigus algoritm alustab tegevust kõrgel temperatuuril (*T*) ja iga iteratsiooniga *T* langeb ette määratud miinimumini. Iga *T* juures määratakse uued suvalised kaalud ja parimad tulemused jäetakse alles. Alternatiivina seotakse *T* juhusliku sammu pikkusega ja algoritm astub järjest väiksema sammuga juhuslikus suunas. Lokaalsete miinimumide vältimiseks valib simuleeritud lõõmutamise algoritm ette määratud tõenäosusega ka halvemaid juhtumeid, kuid seni läbitud juhtumite seast parimad jäetakse ikkagi alles. Simuleeritud lõõmutamise suur eelis teiste otsingumeetodite ees on selle suur juhuslik otsinguruum, mille tõttu jääb see palju harvem lokaalsete miinimumide taha kinni.

#### Geneetiline algoritm

Geneetiline algoritm on globaalne otsingumeetod, mis otsib seoseid ühest punktide populatsioonist teiseni. Kuna see algoritm valib pidevalt parameetrite ruumist uusi punkte, siis selle otsing on alati suunatud parimatele tulemustele. Kõigepealt luuakse punktidest algne populatsioon ja arvutatakse iga punkti jaoks tema viga. Sõltuvalt vigadest luuakse uus populatsioon, kus vanast populatsioonist parimatel punktidel on suurem tõenäosus sattuda uude populatsiooni. Uue populatsiooni punktid paaritakse suvaliselt ja iga punkti puhul leitakse nende kombineeritud järglased koos mutatsioonidega. See tulem täidab uue populatsiooni ning tsüklit korratakse, kuni jõutakse optimaalseima lahenduseni või määratud iteratsioonide arv saab täis. Korduvalt on väidetud, et geneetiline algoritm on tõhusam kui muud traditsioonilised otsingumeetodid, kuna see ei jää lokaalsete miinimumide taha kinni nagu tagurpidi levik ja on rohkem suunatud kui simuleeritud lõõmutamine.

### Stiimulõpe
Stiimulõpe eeldab, et agendid toimivad keskkonnas, tunnetavad oma olukorda, keskkonna olukorda ja valivad oma tegevused vastavalt vastastikusele mõjule. Tähtis element stiimulõppes on agentide eesmärk, mis tavaliselt on tasusignaali maksimeerimine. Keskkonnas otsuste tegemine mõjutab tasusignaali ja seega ka eesmärki. Stiimulõppes jagatakse probleem metoodikaks, tasufunktsiooniks, väärtusfunktsiooniks ja keskkonnamudeliks.
## Vaata ka
*Konvolutsiooniline närvivõrk

## Viited