Biograafiad Omadused Analüüs

Närvivõrgu veafunktsioon. Võrgustikukoolitus – backpropagation

Tagasi levitamise algoritm on üks meetoditest mitmekihiliste edasisuunaliste närvivõrkude, mida nimetatakse ka mitmekihilisteks pertseptroniteks, treenimiseks. Mitmekihilisi pertseptroneid kasutatakse edukalt paljude keerukate probleemide lahendamiseks.

Treenimine vea tagasilevimise algoritmi järgi hõlmab kahte läbimist läbi võrgu kõigi kihtide: edasi ja tagasi. Edasikäigul suunatakse sisendvektor närvivõrgu sisendkihti, misjärel see levib läbi võrgu kihist kihti. Selle tulemusena genereeritakse väljundsignaalide komplekt, mis on võrgu tegelik reaktsioon antud sisendpildile. Edasipääsu ajal fikseeritakse kõik võrgu sünaptilised kaalud. Tagurpidi liikumise ajal reguleeritakse kõiki sünaptilisi kaalusid vastavalt veaparandusreeglile, nimelt: tegelik võrguväljund lahutatakse soovitud väljundist, mille tulemuseks on veasignaal. See signaal levib seejärel läbi võrgu sünaptiliste ühenduste suunas vastupidises suunas. Sellest ka nimi - tagasilevitamise algoritm. Sünaptilised kaalud on häälestatud nii, et võrguväljund oleks soovitud soovitud väljundile võimalikult lähedal.

Vaatleme algoritmi toimimist üksikasjalikumalt. Oletame, et peame treenima järgmist närvivõrku, kasutades tagasilevimise algoritmi:

Alloleval joonisel kasutatakse järgmisi kokkuleppeid:

Mitmekihilistes pertseptronides kasutatakse aktiveerimisfunktsioonina reeglina sigmoidset aktiveerimisfunktsiooni, eriti logistilist:

kus on sigmoidfunktsiooni kalde parameeter. Seda parameetrit muutes on võimalik konstrueerida erineva järsusega funktsioone. Teeme reservatsiooni, et kõigi järgnevate arutluste jaoks kasutatakse seda täpselt logistilise aktiveerimise funktsiooni, mida esindab ainult ülaltoodud valem.

Sigmoid ahendab muutuste vahemikku nii, et väärtus jääb nulli ja ühe vahele. Mitmekihilistel närvivõrkudel on suurem esitusvõime kui ühekihilistel ainult mittelineaarsuse korral. Kontraktsioonifunktsioon tagab vajaliku mittelineaarsuse. Tegelikult on palju funktsioone, mida saab kasutada. Tagasi levitamise algoritm nõuab ainult, et funktsioon oleks kõikjal diferentseeritav. Sigmoid vastab sellele nõudele. Selle lisaeelis on automaatne võimenduse juhtimine. Nõrkade signaalide puhul (st kui nullilähedane) on sisend-väljundkõveral tugev kalle, mis annab suure võimenduse. Kui signaal muutub suuremaks, väheneb võimendus. Seega võtab võrk vastu suuri signaale ilma küllastuseta ja nõrgad signaalid läbivad võrku ilma liigse sumbumiseta.

Võrgustreeningu eesmärk Vea tagasilevitamise algoritm on selle kaalude selline reguleerimine, et teatud sisendite komplekti rakendamine viib vajaliku väljundi komplekti. Lühiduse huvides nimetatakse neid sisendite ja väljundite komplekte vektoriteks. Treeningu käigus eeldatakse, et iga sisendvektori jaoks on paaris sihtvektor, mis määrab vajaliku väljundi. Koos kutsutakse neid treeningpaariks. Võrgustikku treenitakse paljudel paaridel.

Järgmine:

  1. Initsialiseerige sünaptilised kaalud väikeste juhuslike väärtustega.
  2. Vali treeningkomplektist järgmine treeningpaar; toidab sisendvektori võrgu sisendisse.
  3. Arvutage võrgu väljund.
  4. Arvutage erinevus võrguväljundi ja soovitud väljundi vahel (treeningpaari sihtvektor).
  5. Vigade minimeerimiseks reguleerige võrgu kaalu (nagu allpool näidatud).
  6. Korrake samme 2 kuni 5 iga treeningkomplekti vektori jaoks, kuni kogu komplekti viga jõuab vastuvõetava tasemeni.

Sammude 2 ja 3 toimingud on sarnased juba koolitatud võrgu töötamise ajal tehtavate toimingutega, st. sisestatakse sisendvektor ja arvutatakse välja saadud väljund. Arvutused tehakse kihtidena. Joonisel fig. 1, kõigepealt arvutatakse kihi neuronite väljundid (kiht on sisend, mis tähendab, et selles ei toimu arvutusi), seejärel kasutatakse neid kihi sisenditena , kihi neuronite väljundid on arvutatud, mis moodustavad võrgu väljundvektori . Sammud 2 ja 3 moodustavad nn edasipääsu, kui signaal liigub läbi võrgu sisendist väljundini.

Sammud 4 ja 5 moodustavad "tagasipääsu", kus arvutatud veasignaal levib võrgu kaudu tagasi ja seda kasutatakse kaalude reguleerimiseks.

Vaatame lähemalt 5. sammu – võrgu kaalude reguleerimist. Siin tuleb esile tõsta kahte juhtumit.

Juhtum 1. Väljundkihi sünaptiliste kaalude reguleerimine

Näiteks närvivõrgu mudeli jaoks joonisel fig. 1, on need kaalud, millel on järgmised tähised: ja . Määratleme, et indeks tähistab neuronit, millest sünaptiline kaal väljub, ja neuronit, millesse see siseneb:

Tutvustame väärtust , mis võrdub nõutava ja tegeliku väljundi vahega, korrutatuna logistilise aktiveerimise funktsiooni tuletisega (logistilise aktiveerimise funktsiooni valemit vt ülalt):

Seejärel on väljundkihi kaalud pärast korrigeerimist võrdsed:

Siin on näide sünaptilise kaalu arvutustest:

Juhtum 2. Peidetud kihi sünaptiliste kaalude reguleerimine

Närvivõrgu mudeli jaoks joonisel fig. 1, on need raskused, mis vastavad kihtidele ja . Määratleme, et indeks tähistab neuronit, millest sünaptiline kaal väljub, ja neuronit, millesse see siseneb (pöörake tähelepanu uue muutuja ilmumisele).

Prudnikov Ivan Aleksejevitš
MIREA (MTU)

Närvivõrkude teemat on käsitletud juba paljudes ajakirjades, kuid täna tahaksin tutvustada lugejatele mitmekihilise närvivõrgu treenimise algoritmi backpropagation meetodil ja pakkuda selle meetodi teostust.

Tahan kohe teha reservatsiooni, et ma ei ole närvivõrkude alal ekspert, seega ootan lugejatelt konstruktiivset kriitikat, kommentaare ja täiendusi.

Teoreetiline osa

See materjal eeldab närvivõrkude põhitõdedega tutvumist, kuid pean võimalikuks tutvustada lugejale teemat ilma tarbetute närvivõrkude teooria katsumusteta. Nii et neile, kes kuulevad fraasi "närvivõrk" esimest korda, teen ettepaneku tajuda närvivõrku kaalutud suunatud graafikuna, mille sõlmed (neuronid) on paigutatud kihtidena. Lisaks on ühe kihi sõlmel lingid kõigi eelmise kihi sõlmedega. Meie puhul on sellisel graafikul sisend- ja väljundkihid, mille sõlmed toimivad vastavalt sisendite ja väljundina. Igal sõlmel (neuronil) on aktiveerimisfunktsioon - funktsioon, mis vastutab signaali arvutamise eest sõlme (neuroni) väljundis. Samuti on nihke mõiste, mis on sõlm, mille väljundis üks alati ilmub. Selles artiklis käsitleme närvivõrgu õppeprotsessi, mis eeldab "õpetaja" olemasolu, st õppeprotsessi, milles õppimine toimub, pakkudes võrgule õigete vastustega koolitusnäidete jada.
Nagu enamiku närvivõrkude puhul, on ka meie eesmärk koolitada võrku selliselt, et saavutada tasakaal võrgu võime vahel anda õige reaktsioon õppeprotsessis kasutatavale sisendile (mälestamine) ja võime vahel toota korrektsed tulemused vastusena sisendile, sarnased, kuid mitte identsed koolitusel kasutatavatega (üldistuspõhimõte). Võrguõpe vea tagasilevitamise meetodil sisaldab kolme etappi: andmete sisestamine sisendisse, millele järgneb andmete levitamine väljundite suunas, vastava vea arvutamine ja tagasilevitamine ning kaalu korrigeerimine. Pärast koolitust peaks see andma ainult andmed võrgu sisendisse ja levitama neid väljundite suunas. Samas, kui võrgustiku väljaõpe võib olla üsna pikaajaline protsess, siis tulemuste otsene arvutamine koolitatud võrgustiku poolt on väga kiire. Lisaks on õppeprotsessi kiiruse suurendamiseks ette nähtud arvukalt variatsioone tagasilevitamise meetodil.
Samuti väärib märkimist, et ühekihilisel närvivõrgul on oluliselt piiratud see, milliste sisendandmete mustritega ta õpib, samas kui mitmekihilisel võrgul (ühe või mitme peidetud kihiga) sellist puudust ei ole. Järgmisena kirjeldatakse standardset tagasilevitavat närvivõrku.

Arhitektuur

Joonisel 1 on kujutatud mitmekihiline närvivõrk, millel on üks peidetud neuronite (Z-elementide) kiht.

Neuronid, mis esindavad võrgu väljundeid (tähistatakse Y-ga) ja peidetud neuroneid, võivad olla kallutatud (nagu on näidatud pildil). Väljundile Y k vastavat nihet tähistatakse w ok , Z j - V oj peidetud elemendiga . Need nihked toimivad kaaludena neuronitest tulevatele ühendustele, mille väljund on alati 1 (joonisel 1 on need näidatud, kuid tavaliselt ei kuvata otseselt, kaudselt). Lisaks näitavad joonisel 1 olevad nooled teabe liikumist andmete levitamise faasis sisenditest väljunditesse. Õppeprotsessi käigus levivad signaalid vastupidises suunas.

Algoritmi kirjeldus

Allpool esitatud algoritm on rakendatav ühe peidetud kihiga närvivõrgule, mis on enamiku rakenduste jaoks kehtiv ja piisav olukord. Nagu varem mainitud, sisaldab võrgutreening kolme etappi: koolitusandmete edastamine võrgu sisenditesse, vea tagasilevitamine ja kaalude reguleerimine. Esimeses etapis võtab iga sisendneuron X i vastu signaali ja saadab selle igale peidetud neuronile Z 1 , Z 2 ..., Z p . Seejärel arvutab iga peidetud neuron oma aktiveerimisfunktsiooni (võrgufunktsiooni) tulemuse ja edastab oma signaali Z j kõigile väljundneuronitele. Iga väljundneuron Y k arvutab omakorda välja oma aktiveerimisfunktsiooni Y k tulemuse, mis pole midagi muud kui selle neuroni väljundsignaal vastavate sisendandmete jaoks. Õppeprotsessi käigus võrdleb iga võrgu väljundis olev neuron arvutatud Y k väärtust õpetaja antud t k-ga (sihtväärtus), määrates antud sisendmustri jaoks sobiva veaväärtuse. Selle vea põhjal arvutatakse σ k (k = 1,2,...m). σ k kasutatakse vea levitamisel Y k-st kõigisse eelmise kihi võrguelementidesse (Y k-ga ühendatud peidetud neuronid), samuti hiljem väljundneuronite ja peidetud neuronite vaheliste ühenduste kaalu muutmisel. Samamoodi arvutatakse iga peidetud neuroni Z j jaoks σj (j = 1,2,...p). Kuigi pole vaja viga sisendkihti levitada, kasutatakse σj-d peidetud kihi neuronite ja sisendneuronite vaheliste ühenduste kaalu muutmiseks. Pärast kõigi σ määramist reguleeritakse samaaegselt kõigi linkide kaalu.

Nimetused:

Võrguõppe algoritmis kasutatakse järgmist tähistust:

X Treeningu andmete sisendvektor X = (X 1 , X 2 ,...,X i ,...,X n).
t Õpetaja poolt antud sihtväljundite vektor t = (t 1 , t 2 ,...,t k ,...,t m)
σ k Ühenduste kaalude reguleerimise komponent w jk , mis vastab väljundneuroni Y k veale; samuti info neuroni Y k vea kohta, mis jaotatakse nendele peidetud kihi neuronitele, mis on seotud Y k -ga.
σ j Ühenduste v ij kaalude reguleerimise komponent, mis vastab väljundkihist peidetud neuronile Z j levivale veateabele.
a õppimise määr.
X i Sisendneuron indeksiga i. Sisendneuronite puhul on sisend- ja väljundsignaalid samad – X i .
v oj Varjatud neuroni j nihe.
Z j Varjatud neuron j; Peidetud elemendi Z j sisendisse antud koguväärtus on tähistatud kui Z_in j: Z_in j = v oj +∑x i *v ij
Signaali väljundis Z j (aktiveerimisfunktsiooni Z_in j rakendamise tulemus) tähistatakse Z j: Z j = f (Z_in j)
w ok Väljundneuroni nihe.
Y k Väljundneuron indeksi k all; Väljundelemendi Y k sisendisse antud koguväärtust tähistatakse Y_in k: Y_in k = w ok + ∑ Z j *w jk . Väljundsignaal Y k (aktiveerimisfunktsiooni Y_in k rakendamise tulemus) on tähistatud Y k:

Aktiveerimisfunktsioon

Tagasi levitamise algoritmi aktiveerimisfunktsioon peab omama mitmeid olulisi omadusi: pidevus, diferentseeritavus ja olema monotoonselt mittekahanev. Veelgi enam, arvutusliku efektiivsuse huvides on soovitav, et selle tuletis oleks kergesti leitav. Sageli on aktiveerimisfunktsioon ka küllastusfunktsioon. Üks kõige sagedamini kasutatavaid aktiveerimisfunktsioone on binaarne sigmoidfunktsioon vahemikus (0, 1) ja defineeritud järgmiselt:

Teine laialdaselt kasutatav aktiveerimisfunktsioon on bipolaarne sigmoid vahemikuga (-1, 1) ja defineeritakse järgmiselt:


Õppimisalgoritm

Õppealgoritm näeb välja selline:

Kaalude lähtestamine (kõikide linkide kaalud lähtestatakse juhuslike väikeste väärtustega).

Kuni algoritmi lõpetamise tingimus on vale, viiakse läbi sammud 2–9.

Iga paari (andmed, sihtväärtus) jaoks viiakse läbi etapid 3–8.

Andmete levitamine sisenditest väljunditesse:

3. samm
Iga sisendneuron (X i , i = 1,2,...,n) saadab vastuvõetud signaali X i kõikidele järgmise kihi neuronitele (peidetud).

Iga peidetud neuron (Z j , j = 1,2,...,p) summeerib kaalutud sissetulevad signaalid: z_in j = v oj + ∑ x i *v ij ja rakendab aktiveerimisfunktsiooni: z j = f (z_in j) Seejärel saadab tulemuse kõikidele järgmise kihi (väljundi) elementidele.

Iga väljundneuron (Y k , k = 1,2,...m) summeerib kaalutud sisendsignaalid: Y_in k = w ok + ∑ Z j *w jk ja rakendab aktiveerimisfunktsiooni, arvutades väljundsignaali: Y k = f (Y_in k).

Tagasi paljundamine:

Iga väljundneuron (Y k , k = 1,2,...m) saab sihtväärtuse - antud sisendsignaali jaoks õige väljundväärtuse ja arvutab vea: σ k = (t k - y k)*f " ( y_in k) arvutab ka summa, mille võrra ühenduse w jk kaal muutub: Δw jk = a * σ k * z j Lisaks arvutab nihke korrigeerimise väärtuse: Δw ok = a*σ k ja saadab σ k eelmise kihi neuronitele .

Iga peidetud neuron (z j , j = 1,2,...p) liidab sissetulevad vead (järgmise kihi neuronitelt) σ_in j = ∑ σ k * w jk ja arvutab vea väärtuse, korrutades saadud väärtuse aktiveerimisfunktsiooni tuletis: σ j = σ_in j * f "(z_in j), arvutab ka summa, mille võrra lingi kaal vij muutub: Δv ij = a * σ j * x i. Lisaks arvutab nihke korrigeerimise summa : v oj = a * σ j

8. samm. Muutke raskusi.

Iga väljundneuron (y k , k = 1,2,...,m) muudab oma seoste kaalu kaldeelemendi ja peidetud neuronitega: w jk (uus) = w jk (vana) + Δw jk
Iga peidetud neuron (z j , j = 1,2,...p) muudab oma seoste kaalu nihkeelemendi ja väljundneuronitega: v ij (uus) = v ij (vana) + Δv ij

Algoritmi lõpetamise tingimuse kontrollimine.
Algoritmi töö lõpetamise tingimuseks võib olla kas tulemuse summaarse ruutvea saavutamine eelseadistatud miinimumi võrguväljundis õppeprotsessi ajal või teatud arvu algoritmi iteratsioonide sooritamine. Algoritm põhineb meetodil, mida nimetatakse gradiendi laskumiseks. Olenevalt märgist annab funktsiooni gradient (sel juhul funktsiooni väärtus on viga ja parameetrid võrgu linkide kaalud) suuna, milles funktsiooni väärtused suurenevad. (või väheneb) kõige kiiremini.

Mitmekihilise võrgu koolitamiseks 1986. aastal pakkusid Rummelhart ja Hinton (Rummelhart D.E., Hinton G.E., Williams R.J., 1986) välja vea tagasi levitamise algoritmi. Arvukad väljaanded selle õppealgoritmiga mitmekihiliste võrkude tööstuslike rakenduste kohta on kinnitanud selle põhilist jõudlust praktikas.

Alguses tekib mõistlik küsimus - miks on võimatu rakendada juba tuntud Rosenblatti -reeglit (vt loeng 4) mitmekihilise pertseptroni treenimiseks? Vastus on, et Rosenblatti meetodi rakendamiseks on vaja teada mitte ainult neuronite y vooluväljundeid, vaid ka vajalikku õige väärtused Y. Mitmekihilise võrgu puhul on need õiged väärtused saadaval ainult neuronite jaoks nädalavahetus kiht. Peidetud kihi neuronite nõutavad väljundväärtused on teadmata, mis piirab -reegli rakendamist.

Tagasi levitamise põhiidee seisneb selles, kuidas saada peidetud kihi neuronite veahinnang. Märka seda kuulus väljundkihis neuronite tehtud vead tekivad tänu teadmata kuni varjatud kihtide neuronite vigadeni. Mida suurem on sünaptilise ühenduse väärtus peidetud kihi neuroni ja väljundneuroni vahel, seda tugevamalt mõjutab esimese viga teise viga. Seetõttu saab peidetud kihtide elementide vea hinnangu saada järgnevate kihtide vigade kaalutud summana. Koolituse käigus jagatakse infot hierarhia madalamatelt kihtidelt kõrgematele ning võrgu poolt tehtud veahinnangud on vastupidises suunas, mis kajastub meetodi nimetuses.

Vaatame seda algoritmi lähemalt. Märke lihtsustamiseks piirdume olukorraga, kus võrgul on ainult üks peidetud kiht. Sisenditest peidetud kihi kaalukoefitsientide maatriksi tähistame W-ga ning peidetud ja väljundkihti ühendavate kaalude maatriksit V-ga. Indeksite jaoks kasutame järgmist tähistust: sisendid nummerdatakse ainult indeks i, peidetud kihi elemendid indeksi j järgi ja väljundid vastavalt indeksiga k.

Olgu võrk treenitud valimile (X,Y),=1..p. Neuronite tegevust tähistatakse vastava indeksiga väikeste tähtedega y ja neuronite kaalutud sisendite kogusummat tähistatakse väikeste tähtedega x.

Algoritmi üldstruktuur on sarnane 4. loengus käsitletuga, koos kaalu reguleerimise valemitega.

Tabel 6.1. Tagasi levitamise algoritm.

Eeldatakse, et kõikide kihtide V(t=0) ja W(t=0) neuronite kaalude algväärtused on juhuslikud arvud.

Võrku esitatakse sisendkujutis X, mille tulemusena moodustub väljundpilt yY. Sel juhul toimivad neuronid järjestikku kihist kihini vastavalt järgmistele valemitele:

peidetud kiht

väljundkiht

Siin on f(x) sigmoidfunktsioon, mis on defineeritud valemiga (6.1)

Võrgu ruutvea funktsionaalsus antud sisendpildi jaoks on järgmine:

Seda funktsiooni tuleb minimeerida. Klassikaline gradiendi optimeerimise meetod seisneb argumendi iteratiivses täpsustamises vastavalt valemile:

Veafunktsioon ei sõltu otseselt kaalust V jk , seega kasutame kompleksfunktsiooni kaudseks diferentseerimiseks valemeid:

Siin võetakse arvesse sigmoidfunktsiooni f(x) kasulikku omadust: selle tuletist väljendatakse ainult funktsiooni enda väärtuse kaudu f’(x)=f(1-f). Seega on saadud kõik vajalikud väärtused väljundkihi V kaalude reguleerimiseks.

See samm reguleerib peidetud kihi raskusi. Gradiendi meetod annab endiselt:

Tuletised arvutatakse samade valemite abil, välja arvatud vea  j valemi mõningane keerukus.

 j arvutamisel rakendati siin vea tagasilevi põhimõtet: osatuletised võetakse ainult muutujate suhtes. järgnev kiht. Saadud valemite järgi muudetakse peidetud kihis olevate neuronite raskusi. Kui närvivõrgus on mitu peidetud kihti, rakendatakse tagasilevitamise protseduuri järjestikku igaühe jaoks, alustades väljundkihile eelnevast kihist ja jätkates sisendkihile järgneva kihini. Sel juhul säilitavad valemid oma kuju, kui väljundkihi elemendid asendatakse vastava peidetud kihi elementidega.

Etappe 1-3 korratakse kõigi treeningvektorite puhul. Treening lõpeb, kui saavutatakse väike koguviga või maksimaalne lubatud iteratsioonide arv, nagu Rosenblatti treeningmeetodi puhul.

Nagu on näha sammude 2-3 kirjeldusest, taandub õppimine veafunktsiooni optimeerimise probleemi lahendamisele gradientmeetodi abil. Kogu vigade tagasilevitamise "sool" seisneb selles, et peidetud kihtide neuronite hindamiseks võite võtta järgmise kihi vigade kaalutud summa.

Parameetril h on õppimiskiiruse tähendus ja see valitakse piisavalt väikeseks, et meetod läheneks. Lähenemise kohta tuleb teha mõned lisamärkused. Esiteks näitab praktika, et tagasilevitamise meetodi lähenemine on väga aeglane. Madal konvergentsimäär on kõigi gradiendimeetodite "geneetiline haigus", kuna gradiendi kohalik suund ei kattu üldse minimaalse suunaga. Teiseks, kehakaalu reguleerimine toimub iga treeningu näidispiltide paari jaoks eraldi. Samal ajal võib mõne paari jõudluse paranemine üldiselt kaasa tuua varasemate piltide jõudluse halvenemise. Selles mõttes Ei usaldusväärsed (v.a. väga ulatuslik meetodi rakendamise praktika) konvergentsi tagatised.

Uuringud näitavad, et treeningkomplekti antud suvalise funktsionaalse kaardistuse esitamiseks piisab lihtsalt kaks kihti neuronid. Praktikas võib aga keerukate funktsioonide puhul rohkem kui ühe peidetud kihi kasutamine kokku hoida neuronite koguarvu.

Loengu lõpus teeme märkuse neuronite lävede reguleerimise kohta. On lihtne näha, et neuroni läve saab muuta samaväärseks näivsisendiga ühendatud lisaraskusega, mis on võrdne -1-ga. Tõepoolest, valides W 0 =, x 0 =-1 ja alustades summeerimist nullist, võime vaadelda nullläve ja ühe lisasisendiga neuronit:

Täiendavad läviväärtustele vastavad neuronite sisendid on näidatud joonisel fig. 6.1 tumedate ruutudega. Seda märkust silmas pidades algavad kõik tagasilevitamise algoritmis esitatud sisendvalemite summeerimine indeksist nullist.

Tagasi levimise algoritm

Sünonüümid: BackProp Algorithm, Back Propagation Algorithm, BackProp

Loginom: närvivõrk (klassifikatsioon) (protsessor), närvivõrk (regressioon) (protsessor)

Tagasilevimise algoritm on populaarne lamekihiliste edasisuunaliste närvivõrkude (mitmekihiliste pertseptronide) treenimise algoritm. Viitab juhendatud õppemeetoditele, nii et see nõuab sihtväärtuste seadmist koolitusnäidetes. See on ka üks kuulsamaid masinõppe algoritme.

Algoritmi idee põhineb närvivõrgu väljundvea kasutamisel:

selle peidetud kihtides olevate neuronite kaalude parandusväärtuste arvutamiseks, kus on võrgu väljundneuronite arv, sihtväärtus ja tegelik väljundväärtus. Algoritm on iteratiivne ja kasutab samm-sammult õppimise (on-line learning) põhimõtet, kui võrguneuronite raskusi reguleeritakse pärast seda, kui üks treeningnäide on sisestatud selle sisendisse.

Igal iteratsioonil on võrgu kaks läbimist - edasi ja tagasi. Otseliinil levib sisendvektor võrgu sisenditest oma väljunditesse ja moodustab mingi väljundvektori, mis vastab kaalude hetke(tegelikule) olekule. Seejärel arvutatakse närvivõrgu viga tegeliku ja sihtväärtuse vahena. Vastupidisel teel levib see viga võrgu väljundist selle sisenditesse ja neuronite kaalusid korrigeeritakse vastavalt reeglile:

kus on j-nda neuroni i-nda ühenduse kaal;

Arvestades, et j-nda neuroni väljundsumma on võrdne

seda saab näidata

Viimasest avaldisest järeldub, et võrguneuronite aktiveerimisfunktsiooni diferentsiaal peab eksisteerima ega tohi üheski punktis olla võrdne nulliga, s.t. aktiveerimisfunktsioon peab olema diferentseeruv täisarvureal. Seetõttu kasutatakse tagasilevimise meetodi rakendamiseks sigmoidseid aktiveerimisfunktsioone, nagu logistiline või hüperboolne puutuja.

Seega kasutab algoritm nn stohhastilist gradiendi laskumist, "liikudes" mitmemõõtmelises kaaluruumis antigradiendi suunas, et saavutada veafunktsiooni miinimum.

Praktikas ei jätkata koolitust mitte seni, kuni võrk on veafunktsiooni miinimumini viimistletud, vaid seni, kuni saavutatakse selle piisavalt täpne lähendus. See ühest küljest vähendab koolituste korduste arvu ja teisest küljest väldib võrgu ümberõpet.

Praegu on tagasilevimise algoritmi välja töötatud palju modifikatsioone. Näiteks õppimist ei kasutata mitte "sammude kaupa", kui arvutatakse välja väljundviga ja korrigeeritakse iga näite jaoks kaalusid, vaid "perioodide kaupa" off-line režiimis, kui raskusi muudetakse pärast kõiki treeningu näiteid. set söödetakse võrgusisendisse ja kõigi näidete puhul arvutatakse tõrge.

Epohhipõhine koolitus on sihtmuutuja kõrvalekallete ja kõrvalekallete suhtes tugevam, kuna paljude näidete põhjal arvutatakse vea keskmistamine. Kuid samal ajal suureneb tõenäosus, et algoritm lokaalsetes miinimumides kinni jääb. See on vähem tõenäoline samm-sammult õppimise puhul, kuna üksikute näidete kasutamine tekitab "müra", mis "tõukab" algoritmi gradientmaastiku aukudest välja.

Tagasi levitamise algoritmi eelised hõlmavad rakendamise lihtsust ning vastupidavust andmete anomaaliatele ja kõrvalekalletele. Puuduste hulka kuuluvad:

  • lõputult pikk õppeprotsess:
  • "võrgu halvatuse" võimalus, kui suurte väärtuste korral on aktiveerimisfunktsiooni tööpunkt sigmoidi küllastuspiirkonnas ja tuletis avaldises (1) muutub 0-le lähedale ja kaalu korrigeerimist praktiliselt ei toimu. ja õppeprotsess "külmub";
  • algoritmi haavatavus langeda veafunktsiooni kohalikesse miinimumidesse.

Algoritmi kirjeldati esmakordselt 1974. aastal.

Esimeses osas käsitleti struktuuri, topoloogiat, aktiveerimisfunktsioone ja treeningkomplekti. Selles osas püüan selgitada, kuidas treenitakse konvolutsioonilist närvivõrku.

Konvolutsioonilise närvivõrgu treenimine

Algstaadiumis on närvivõrk treenimata (häälestamata). Üldises mõttes mõistetakse õppimist kui pildi järjestikust esitamist närvivõrgu sisendisse treeningkomplektist, seejärel võrreldakse saadud vastust soovitud väljundiga, meie puhul on see 1 - pilt kujutab nägu, miinus 1 - pilt kujutab tausta (mitte nägu), sellest tulenev erinevus oodatava vastuse ja saadud vastuse vahel on veafunktsiooni (vea delta) tulemus. Seejärel tuleb see vea delta levitada kõigile võrguga ühendatud neuronitele.

Seega vähendatakse närvivõrgu koolitust veafunktsiooni minimeerimiseks, kohandades neuronite vaheliste sünaptiliste ühenduste kaalukoefitsiente. Veafunktsioon on saadud ja soovitud vastuse erinevus. Näiteks kui sisendiks oli näopilt, oletame, et närvivõrgu väljund on 0,73 ja soovitud tulemus on 1 (kuna näopilt), saame, et võrguviga on erinevus ehk 0,27. Seejärel reguleeritakse neuronite väljundkihi kaalud vastavalt veale. Väljundkihi neuronite puhul on teada nende tegelikud ja soovitud väljundväärtused. Seetõttu on selliste neuronite ühenduskaalude määramine suhteliselt lihtne. Eelmiste kihtide neuronite puhul pole häälestus aga nii ilmne. Pikka aega puudus tuntud algoritm vigade levimiseks läbi peidetud kihtide.

Tagasi levitamise algoritm

Kirjeldatud närvivõrgu treenimiseks kasutati backpropagation algoritmi. Seda mitmekihilise närvivõrgu treenimise meetodit nimetatakse üldistatud deltareegliks. Meetodi pakkusid välja 1986. aastal Rumelhart, McClelland ja Williams. See tähistas huvi taastumist närvivõrkude vastu, mis hakkas kaduma 70ndate alguses. See algoritm on esimene ja peamine praktiliselt rakendatav mitmekihiliste närvivõrkude koolitamiseks.

Väljundkihi puhul on kaalude reguleerimine intuitiivne, kuid peidetud kihtide puhul polnud algoritm pikka aega teada. Peidetud neuroni kaal peaks muutuma otseses proportsioonis nende neuronite veaga, millega see neuron on seotud. Sellepärast võimaldab nende vigade tagasilevi võrgu kaudu õigesti häälestada kõigi kihtide vaheliste linkide kaalu. Sel juhul veafunktsiooni väärtus väheneb ja võrk on koolitatud.

Vigade tagasilevitamise meetodi peamised korrelatsioonid saadakse järgmise tähistusega:

Vea väärtus määratakse valemiga 2.8 ruutkeskmise vea väärtus:

Iga neuroni j inaktiveeritud olek kujutise p jaoks kirjutatakse kaalutud summana valemi 2.9 järgi:

Iga neuroni j väljund on aktiveerimisfunktsiooni väärtus

Mis paneb neuroni aktiveeritud olekusse. Aktiveerimisfunktsioonina saab kasutada mis tahes pidevalt diferentseeruvat monotoonset funktsiooni. Neuroni aktiveeritud olek arvutatakse valemiga 2.10:

Vea minimeerimise meetodina kasutatakse gradiendi laskumise meetodit, selle meetodi põhiolemus on funktsiooni miinimumi (või maksimumi) leidmine mööda gradiendivektorit liikudes. Miinimumi otsimiseks tuleb liikumine läbi viia antigradiendi suunas. Gradiendi laskumise meetod vastavalt joonisele 2.7.

Kaofunktsiooni gradient on osatuletiste vektor, mis arvutatakse valemiga 2.11:

Veafunktsiooni tuletise konkreetse kujutise suhtes saab kirjutada ahelreegli, valemi 2.12 järgi:

Neuroni viga kirjutatakse tavaliselt sümbolina δ (delta). Väljundkihi jaoks on viga selgelt määratletud, kui võtame valemi 2.8 tuletise, saame t miinus y, see tähendab erinevust soovitud väljundi ja saadud väljundi vahel. Kuid kuidas arvutada peidetud kihtide viga? Selle probleemi lahendamiseks leiutati lihtsalt tagasilevimise algoritm. Selle olemus seisneb peidetud kihtide vigade järjestikuses arvutamises, kasutades väljundkihi veaväärtusi, st. veaväärtused levivad võrgu kaudu väljundist sisendisse vastupidises suunas.

Peidetud kihi viga δ arvutatakse valemi 2.13 abil:

Vea levimisalgoritm on taandatud järgmistele etappidele:

  • signaali otsejaotus üle võrgu, neuronite seisundi arvutamine;
  • väljundkihi veaväärtuse δ arvutamine;
  • tagasilevi: järjestikku lõpust alguseni kõigi peidetud kihtide puhul arvutame valemi 2.13 abil δ;
  • võrgu kaalude värskendamine varem arvutatud veale δ.
Vea tagasilevitamise algoritm mitmekihilises pertseptronis on näidatud allpool:


Siiani on vaadeldud vigade leviku juhtumeid mööda pertseptroni kihte ehk piki väljundit ja varjatud, kuid lisaks neile on konvolutsioonilises närvivõrgus veel alamvalim ja konvolutsiooniline.

Vea arvutamine alamvalimikihil

Alamvalimikihi vea arvutamine on esitatud mitmel viisil. Esimesel juhul, kui alamproovi kiht on täielikult ühendatud kihi ees, on sellel sama tüüpi neuronid ja ühendused, mis vastavalt täielikult ühendatud kihis, vea δ arvutamine ei erine δ arvutamisest. peidetud kiht. Teisel juhul, kui alamdiskreetimise kiht on konvolutsioonikihi ees, arvutatakse δ pöördkonvolutsiooni teel. Pöördkonvolutsiooni mõistmiseks peate esmalt mõistma tavakonvolutsiooni ja seda, et objektide kaardil olevat libisevat akent (signaali edasi levimise ajal) saab tõlgendada kui normaalset peidetud kihti, millel on neuronitevahelised ühendused, kuid peamine erinevus seisneb selles, et need ühendused on eraldatavad. see tähendab, et mitmel neuronipaaril võib olla üks ühendus konkreetse kaaluväärtusega, mitte ainult üks. Konvolutsioonitehte tõlgendamine tavalisel mitmekihilisel kujul vastavalt joonisele 2.8.


Joonis 2.8 – Konvolutsioonioperatsiooni tõlgendus mitmekihilises vaates, kus sama värvi linkidel on sama kaal. Alaproovi kaart on tähistatud sinisega, sünaptiline tuum on mitmevärviline ja saadud konvolutsioon on oranž

Nüüd, kui konvolutsioonitehing on esitatud tuttaval kihilisel kujul, võib intuitiivselt aru saada, et deltade arvutamine toimub samamoodi nagu täielikult ühendatud võrgu peidetud kihis. Seega, olles eelnevalt arvutanud konvolutsioonikihi deltad, on võimalik arvutada alamvalimi deltad vastavalt joonisele 2.9.


Joonis 2.9 – δ alamdiskreetimise kihi arvutamine δ konvolutsioonikihi ja tuuma tõttu

Pöördkonvolutsioon on sama deltade arvutamise viis, ainult veidi keerulisel viisil, mis seisneb tuuma 180 kraadi võrra pööramises ja deltakonvolutsioonikaardi skaneerimise protsessi libistamises muudetud servaefektidega. Lihtsamalt öeldes peame võtma konvolutsioonikaardi tuuma (alaproovi kihi kõrval), pöörama seda 180 kraadi ja tegema tavalise konvolutsiooni, kasutades eelnevalt arvutatud konvolutsioonikaardi deltasid, kuid nii, et skaneerimisaken ulatuks kaugemale. kaart. Dekonvolutsioonioperatsiooni tulemus vastavalt joonisele 2.10, dekonvolutsiooni läbimise tsükkel vastavalt joonisele 2.11.


Joonis 2.10 – pöördkonvolutsiooni operatsiooni tulemus


Joonis 2.11 – 180 kraadi pööratud südamik skaneerib konvolutsioonikaarti

Vea arvutamine konvolutsioonikihil

Tavaliselt on konvolutsioonikihi järel juhtiv kiht alamdiskreetimine, seega on meie ülesandeks arvutada praeguse kihi deltad (konvolutsiooniline) tänu teadmistele alamdiskreetimise kihi deltade kohta. Tegelikult delta viga ei arvutata, vaid kopeeritakse. Signaali edasilevimisel tekkisid alamproovi kihi neuronid mittekattuva skaneerimisakna tõttu konvolutsioonikihi kohal, mille käigus valiti maksimaalse väärtusega neuronid, tagasilevimisel tagastame vea delta varem valitud maksimaalne neuron, samas kui ülejäänud saavad nullvea delta.

Järeldus

Esitades konvolutsioonitehet tavalisel mitmekihilisel kujul (joonis 2.8), võib intuitiivselt aru saada, et deltade arvutamine toimub samamoodi nagu täielikult ühendatud võrgu peidetud kihis.