Algoritam za treniranje višeslojne neuronske mreže metodom povratnog širenja. Algoritam povratne propagacije

Za treniranje višeslojne mreže 1986. godine, Rummelhart i Hinton (Rummelhart D.E., Hinton G.E., Williams R.J., 1986.) predložili su algoritam povratne propagacije pogreške. Brojne publikacije o industrijskim primjenama višeslojnih mreža s ovim algoritmom učenja potvrdile su njegovu temeljnu učinkovitost u praksi.

Na početku se postavlja razumno pitanje - zašto se već poznato Rosenblattovo -pravilo ne može primijeniti za treniranje višeslojnog perceptrona (vidi predavanje 4)? Odgovor je da je za primjenu Rosenblattove metode potrebno znati ne samo trenutne neuronske izlaze y, već i potrebne ispraviti vrijednosti Y. U slučaju višeslojne mreže, ove točne vrijednosti dostupne su samo za neurone slobodan dan sloj. Potrebne izlazne vrijednosti za neurone skrivenog sloja su nepoznate, što ograničava primjenu -pravila.

Glavna ideja širenja unazad je kako dobiti procjenu pogreške za neurone skrivenog sloja. primijeti da poznati pogreške koje čine neuroni u izlaznom sloju nastaju zbog nepoznato dok greške neurona skrivenih slojeva. Što je veća vrijednost sinaptičke veze između neurona skrivenog sloja i izlaznog neurona, to jače pogreška prvog utječe na pogrešku drugog. Posljedično, procjena pogreške elemenata skrivenih slojeva može se dobiti kao ponderirani zbroj pogrešaka sljedećih slojeva. Tijekom obuke informacije se šire s nižih slojeva hijerarhije na više, a procjene grešaka koje napravi mreža distribuiraju se u suprotnom smjeru, što se odražava i u nazivu metode.

Prijeđimo na detaljno razmatranje ovog algoritma. Kako bismo pojednostavili zapis, ograničili smo se na situaciju kada mreža ima samo jedan skriveni sloj. Matricu težinskih koeficijenata od ulaza u skriveni sloj označit ćemo s W, a matricu težina koje povezuju skrivene i izlazne slojeve s V. Za indekse ćemo koristiti sljedeću oznaku: ulazi će biti numerirani samo indeksom i, elemente skrivenog sloja indeksom j, a izlaze indeksom k.

Neka je mreža uvježbana na uzorku (X,Y),=1..p. Aktivnosti neurona bit će označene malim slovima y s pripadajućim indeksom, a ukupni ponderirani inputi neurona - malim slovima x.

Opća struktura algoritma slična je onoj opisanoj u predavanju 4, sa složenijim formulama za prilagodbu težina.

Tablica 6.1. Algoritam povratnog širenja.

Početne vrijednosti težina svih neurona svih slojeva V(t=0) i W(t=0) postavljene su na slučajne brojeve.

Ulazna slika X prezentira se mreži, što rezultira formiranjem izlazne slike yY. U ovom slučaju neuroni rade sekvencijalno od sloja do sloja prema sljedećim formulama:

skriveni sloj

izlazni sloj

Ovdje je f(x) sigmoidna funkcija određena formulom (6.1)

Funkcional mrežne kvadratne pogreške za danu ulaznu sliku ima oblik:

Ova funkcionalnost mora biti minimizirana. Klasična metoda gradijentne optimizacije sastoji se od iterativnog preciziranja argumenta prema formuli:

Funkcija pogreške ne sadrži eksplicitno ovisnost o težini V jk , pa koristimo formule za implicitno diferenciranje složene funkcije:

Ovdje se uzima u obzir korisno svojstvo sigmoidalne funkcije f(x): njezina se derivacija izražava samo kroz vrijednost same funkcije, f’(x)=f(1-f). Time su dobivene sve potrebne veličine za podešavanje težina izlaznog sloja V.

Ovaj korak prilagođava težine skrivenog sloja. Metoda gradijenta i dalje daje:

Izračuni derivacija se izvode pomoću istih formula, s izuzetkom neke komplikacije formule za pogrešku  j.

Pri izračunavanju  j ovdje je primijenjeno načelo povratne propagacije pogreške: parcijalne derivacije se uzimaju samo u odnosu na varijable naknadni sloj. Pomoću dobivenih formula modificiraju se težine neurona skrivenog sloja. Ako neuronska mreža ima nekoliko skrivenih slojeva, postupak povratnog širenja primjenjuje se sekvencijalno na svaki od njih, počevši od sloja koji prethodi izlaznom sloju i nastavlja do sloja koji slijedi nakon ulaznog. U tom slučaju, formule zadržavaju svoj oblik s elementima izlaznog sloja zamijenjenim elementima odgovarajućeg skrivenog sloja.

Koraci 1-3 se ponavljaju za sve vektore obuke. Uvježbavanje završava kada se postigne mala ukupna pogreška ili najveći dopušteni broj ponavljanja, kao u Rosenblatt metodi uvježbavanja.

Kao što je vidljivo iz opisa koraka 2-3, obuka se svodi na rješavanje problema optimizacije funkcionala pogreške metodom gradijenta. Cijela poanta povratnog širenja pogreške je u tome što za procjenu za neurone u skrivenim slojevima možete uzeti ponderirani zbroj pogrešaka sljedećeg sloja.

Parametar h ima značenje brzine učenja i odabire se dovoljno malim za konvergenciju metode. Potrebno je dati nekoliko dodatnih napomena o konvergenciji. Prvo, praksa pokazuje da je konvergencija metode povratnog širenja vrlo spora. Niska stopa konvergencije je “genetska bolest” svih gradijentnih metoda, budući da se lokalni smjer gradijenta ne poklapa sa smjerom prema minimumu. Drugo, težine se prilagođavaju neovisno za svaki par slika u skupu za obuku. U ovom slučaju, poboljšanje funkcioniranja na određenom paru može, općenito govoreći, dovesti do pogoršanja performansi na prethodnim slikama. U tom smislu, Ne pouzdana (osim vrlo opsežne prakse korištenja metode) jamstva konvergencije.

Istraživanja pokazuju da je sve što je potrebno za predstavljanje proizvoljnog funkcionalnog preslikavanja određenog skupom za vježbanje dva sloja neuroni. Međutim, u praksi, u slučaju složenih funkcija, korištenje više od jednog skrivenog sloja može uštedjeti ukupan broj neurona.

Na kraju predavanja napravit ćemo napomenu o postavljanju pragova neurona. Lako je vidjeti da se prag neurona može učiniti ekvivalentnim dodatnoj težini povezanoj s lažnim ulazom od -1. Doista, odabirom W 0 =, x 0 =-1 i počevši zbrajanje od nule, možemo uzeti u obzir neuron s nultim pragom i jednim dodatnim ulazom:

Dodatni ulazi neurona koji odgovaraju pragovima prikazani su na slici. 6.1 s tamnim kvadratima. Uzimajući u obzir ovu napomenu, sve ulazne formule zbrajanja postavljene u algoritmu za širenje unatrag počinju s nultim indeksom.

Algoritam povratnog širenja jedna je od metoda za treniranje višeslojnih neuronskih mreža s unaprijednim prijenosom, koje se nazivaju i višeslojni perceptroni. Višeslojni perceptroni uspješno su korišteni za rješavanje mnogih složenih problema.

Obuka s algoritmom backpropagation uključuje dva prolaska kroz sve slojeve mreže: naprijed i natrag. U prolazu naprijed, ulazni vektor se dovodi do ulaznog sloja neuronske mreže, a zatim se širi kroz mrežu od sloja do sloja. Kao rezultat toga, generira se skup izlaznih signala, koji je stvarni odgovor mreže na danu ulaznu sliku. Tijekom prolaska naprijed sve sinaptičke težine mreže su fiksne. Tijekom prolaza unatrag, sve sinaptičke težine se prilagođavaju prema pravilu ispravljanja pogrešaka, naime: stvarni izlaz mreže oduzima se od željenog izlaza, što rezultira signalom pogreške. Taj se signal potom širi mrežom u smjeru suprotnom od smjera sinaptičkih veza. Otuda naziv - algoritam povratnog širenja. Sinaptičke težine se prilagođavaju kako bi mrežni izlaz bio što bliži željenom.

Razmotrimo detaljnije rad algoritma. Recimo da trebate uvježbati sljedeću neuronsku mrežu pomoću algoritma povratnog širenja:

Na slici se koriste sljedeći simboli:

Kao aktivacijska funkcija u višeslojnim perceptronima u pravilu se koristi sigmoidna aktivacijska funkcija, posebice logistička:

gdje je parametar nagiba sigmoidalne funkcije. Promjenom ovog parametra možete konstruirati funkcije s različitim nagibima. Napomenimo da ćemo za sve sljedeće argumente koristiti upravo funkciju logističke aktivacije, predstavljenu samo gornjom formulom.

Sigmoid sužava raspon varijacije tako da vrijednost leži između nule i jedan. Višeslojne neuronske mreže imaju veću moć predstavljanja od jednoslojnih neuronskih mreža samo uz prisutnost nelinearnosti. Funkcija kompresije osigurava traženu nelinearnost. U stvarnosti postoji mnogo funkcija koje se mogu koristiti. Algoritam širenja unazad zahtijeva samo da se funkcija svugdje može diferencirati. Sigmoid zadovoljava ovaj zahtjev. Ima dodatnu prednost automatske kontrole pojačanja. Za slabe signale (tj. kada su blizu nule) ulazno-izlazna krivulja ima jak nagib, što daje veliko pojačanje. Kako magnituda signala postaje veća, pojačanje opada. Na taj način, veliki signali su prihvaćeni od strane mreže bez zasićenja, a mali signali prolaze kroz mrežu bez pretjeranog prigušenja.

Svrha mrežnog treninga Algoritam povratnog širenja je prilagodba njegovih težina tako da primjena određenog skupa ulaza dovodi do potrebnog skupa izlaza. Radi sažetosti, ti skupovi ulaza i izlaza nazivat će se vektori. Tijekom obuke pretpostavlja se da za svaki ulazni vektor postoji ciljni vektor uparen s njim, koji specificira traženi izlaz. Zajedno se nazivaju trening parom. Mreža je uvježbana na mnogo parova.

Sljedeći:

  1. Inicijalizirajte sinaptičke težine s malim slučajnim vrijednostima.
  2. Odaberite sljedeći par za vježbanje iz skupa za vježbanje; predati ulazni vektor mrežnom ulazu.
  3. Izračunajte mrežni izlaz.
  4. Izračunajte razliku između izlaza mreže i traženog izlaza (ciljani vektor para za treniranje).
  5. Prilagodite težine mreže kako biste smanjili pogrešku (kao što je prikazano u nastavku).
  6. Ponovite korake 2 do 5 za svaki vektor skupa za vježbanje sve dok pogreška na cijelom skupu ne dosegne prihvatljivu razinu.

Operacije koje se izvode u koracima 2 i 3 slične su onima koje se izvode kada je mreža već obučena, tj. zadan je ulazni vektor i izračunava se rezultirajući izlaz. Izračuni se izvode sloj po sloj. Na sl. 1, prvo se izračunavaju izlazi neurona sloja (sloj je ulaz, što znači da se u njemu ne odvijaju izračuni), zatim se koriste kao ulazi sloja, izračunavaju se izlazi neurona sloja , koji čine izlazni vektor mreže. Koraci 2 i 3 čine takozvani "prolaz naprijed" dok se signal širi kroz mrežu od ulaza do izlaza.

Koraci 4 i 5 čine "backpass", gdje se izračunati signal pogreške širi natrag kroz mrežu i koristi za podešavanje težina.

Pogledajmo pobliže korak 5 - podešavanje mrežnih težina. Ovdje treba istaknuti dva slučaja opisana u nastavku.

Slučaj 1. Podešavanje sinaptičkih težina izlaznog sloja

Na primjer, za model neuronske mreže na Sl. 1, to će biti utezi sa sljedećim oznakama: i . Odlučimo da će indeks označavati neuron iz kojeg sinaptička težina izlazi i neuron u koji ulazi:

Uvedimo vrijednost , koja je jednaka razlici između potrebnih i stvarnih izlaza, pomnoženoj s derivacijom logističke aktivacijske funkcije (vidi gore formulu logističke aktivacijske funkcije):

Tada će težine izlaznog sloja nakon korekcije biti jednake:

Evo primjera izračuna sinaptičke težine:

Slučaj 2. Podešavanje sinaptičkih težina skrivenog sloja

Za model neuronske mreže na Sl. 1, to će biti težine koje odgovaraju slojevima i . Odlučimo da će indeks označavati neuron iz kojeg sinaptička težina izlazi i neuron u koji ulazi (obratite pažnju na pojavu nove varijable).

Strogo govoreći, metoda povratnog širenja je metoda za brzo izračunavanje gradijenta, temeljena na značajkama mrežne funkcije ponovnog izračuna koja smanjuje računsku složenost izračuna gradijenta. Metoda koristi pogrešku na mrežnom izlazu za izračunavanje parcijalnih derivacija u odnosu na težine posljednjeg sloja obučenih veza, zatim, koristeći težine posljednjeg sloja i mrežnu pogrešku, pogreška na izlazu pretposljednjeg sloja je utvrđuje se i postupak se ponavlja.

Opis algoritma

Širenje unazad primjenjuje se na višeslojne mreže čiji neuroni imaju nelinearnost s kontinuiranom derivacijom, kao što je ova:

Nelinearnost ovog tipa je pogodna zbog jednostavnosti izračuna derivacije:

Za treniranje mreže koristi se P parova vektora signala: ulazni vektor I i vektor koji treba dobiti na izlazu mreže D. Mreža se, u jednostavnom slučaju, sastoji od N slojeva, a svaki neuron sljedeći sloj povezan je sa svim neuronima prethodnog sloja vezama, s težinama w[n].

Kod izravnog širenja, za svaki sloj izračunava se (i pohranjuje) ukupni signal na izlazu sloja (S [n]) i signal na izlazu neurona. Dakle, signal na ulazu i-tog neurona n-tog sloja:

Ovdje su w (i,j) težine veza n-tog sloja. Izlazni signal neurona izračunava se primjenom nelinearnosti neurona na ukupni signal.

Signal izlaznog sloja x[N] smatra se izlaznim signalom mreže O.

Na temelju izlaznog signala mreže O i signala D, koji treba dobiti na izlazu mreže za zadani ulaz, izračunava se greška mreže. Obično se koristi prosječni kvadrat odstupanja nad svim vektorima skupa za obuku:

Za treniranje mreže koristi se gradijent funkcije pogreške preko mrežnih težina. Algoritam širenja unatrag uključuje izračunavanje gradijenta funkcije pogreške "povratnim širenjem signala" pogreške. Tada se parcijalni izvod pogreške s obzirom na težine veze izračunava pomoću formule:

Ovdje je d mrežni rezidual koji se za izlazni sloj izračunava pomoću funkcije pogreške:

A za skrivene slojeve - prema odstupanju prethodnog sloja:

Za slučaj sigmoidne nelinearnosti i srednjeg kvadratnog odstupanja kao funkcije pogreške:

Stvarno treniranje mreže sastoji se od pronalaženja takvih vrijednosti težine koje minimiziraju pogrešku na mrežnim izlazima. Postoje mnoge metode koje se temelje na gradijentu ili gradijentu za rješavanje ovog problema. U najjednostavnijem slučaju, mreža se trenira pomoću malih inkremenata težina veze u smjeru suprotnom od vektora gradijenta:

Ova metoda učenja naziva se "optimizacija gradijentnog spuštanja" i, u slučaju neuronskih mreža, često se smatra dijelom metode povratnog širenja.

Implementacija algoritma povratne propagacije pogreške na primjeru aproksimacije funkcije

Zadatak: Neka postoji tablica vrijednosti argumenata ( x ja ) i odgovarajuće vrijednosti funkcije ( f(x ja )) ( ova tablica je mogla nastati prilikom izračuna neke analitički određene funkcije prilikom provođenja eksperimenta za utvrđivanje ovisnosti struje o otporu u električnoj mreži, prilikom utvrđivanja odnosa između sunčeve aktivnosti i broja posjeta kardiološkom centru, između iznosa subvencija poljoprivrednicima i obujmu poljoprivredne proizvodnje itd. ).

U Matlab okruženju potrebno je izgraditi i uvježbati neuronsku mrežu za aproksimaciju tablično specificirane funkcije, i=1, 20. Razviti program koji implementira algoritam aproksimacije neuronske mreže i prikazuje rezultate aproksimacije u obliku grafikona.

Aproksimacija se sastoji u činjenici da, koristeći dostupne informacije o f (x), možemo razmotriti aproksimirajuću funkciju z (x) koja je u nekom smislu bliska f (x), što nam omogućuje da na njoj izvedemo odgovarajuće operacije i dobijemo procjena pogreške takve zamjene.

Aproksimacija obično znači opis neke, ponekad neeksplicitno navedene, ovisnosti ili skupa podataka koji je predstavljaju pomoću druge, obično jednostavnije ili ujednačenije ovisnosti. Podaci su često u obliku pojedinačnih sidrišnih točaka, čije su koordinate navedene u tablici podataka. Rezultat aproksimacije možda neće prolaziti kroz čvorne točke. Nasuprot tome, zadatak interpolacije je pronaći podatke u blizini čvornih točaka. U tu svrhu koriste se odgovarajuće funkcije čije se vrijednosti u čvornim točkama podudaraju s koordinatama tih točaka.

Zadatak. U Matlab okruženju potrebno je izgraditi i uvježbati neuronsku mrežu za aproksimaciju funkcije određene tablicom (vidi sliku 5).

Slika 5. Tablica vrijednosti funkcija U matematičkom okruženju Matlab u naredbenom prozoru upisujemo kod programa za izradu i obuku neuronske mreže.

Da bismo to riješili, koristit ćemo se funkcijom newff (.) - stvaranjem "klasične" višeslojne neuronske mreže s uvježbavanjem metodom povratnog širenja, tj. težine sinapsi se mijenjaju uzimajući u obzir funkciju pogreške, razlika između stvarnih i točnih odgovora neuronske mreže, određena na izlaznom sloju, širi se u suprotnom smjeru - prema toku signala. Mreža će imati dva skrivena sloja. Prvi sloj ima 5 neurona, drugi - 1. Aktivacijska funkcija prvog sloja je "tansig" (sigmoidna funkcija, vraća izlazne vektore s vrijednostima u rasponu od - 1 do 1), drugi - "purelin" (linearna aktivacijska funkcija, vraća izlazne vektore bez promjena). Bit će 100 epoha treninga. Funkcija obuke "trainlm" je funkcija koja trenira mrežu (koristi se prema zadanim postavkama jer pruža najbržu obuku, ali zahtijeva puno memorije).

Programski kod:

P = nule (1, 20);

za i = 1: 20% stvaranja polja P (i) = i*0,1; %ulaz (argument) kraj T= ; %ulaz (vrijednost funkcije) net = newff ([-1 2.09], ,("tansig" "purelin")); %stvaranje mreže neuronske mreže. trainParam. epohe = 100; %postavite broj epoha treninga net=train (net,P,T); %mrežna obuka y = sim(net,P); %obučena brojka ankete mreže(1);

plot(P,T,P,y,"o"),mreža; %crtanje grafa izvornih podataka i funkcije koju generira neuronska mreža.

Rezultat neuronske mreže.

Rezultat treninga (vidi sliku 2): grafikon prikazuje vrijeme treninga neuronske mreže i pogrešku treninga. U ovom primjeru, neuronska mreža je prošla kroz svih 100 epoha, postupno učeći i smanjujući pogreške, dosegnuvši 10 -2,35 (0,00455531).

Slika 2. Rezultat treninga neuronske mreže

Grafikon izvornih podataka i funkcije koju generira neuronska mreža (vidi sliku 3): kružići označavaju izvorne podatke, a linija označava funkciju koju generira neuronska mreža. Zatim, koristeći dobivene točke, možete izgraditi regresiju i dobiti aproksimacijsku jednadžbu (vidi sliku 8). Koristili smo kubičnu regresiju jer njezin graf najtočnije prolazi kroz dobivene točke. Rezultirajuća jednadžba izgleda ovako:

y=0,049x 3 +0,88x 2 -0,006x+2,1.

Dakle, vidimo da pomoću neuronske mreže možete brzo pronaći funkciju, znajući samo koordinate točaka kroz koje prolazi.

Slika 3. Grafikon izvornih podataka i funkcije generirane neuronskom mrežom


Slika 4. Graf aproksimacijske funkcije

Cilj osposobljavanja mreže je prilagoditi njezine težine tako da primjena određenog skupa ulaza dovede do potrebnog skupa izlaza. Radi sažetosti, ti skupovi ulaza i izlaza će se zvati vektori. Tijekom obuke pretpostavlja se da za svaki ulazni vektor postoji ciljni vektor uparen s njim, koji specificira traženi izlaz. Zajedno se nazivaju trening parom. Tipično, mreža je trenirana na mnogo parova.

Prije početka treninga, svim težinama moraju se dodijeliti male početne vrijednosti, odabrane nasumično. To osigurava da mreža ne postane zasićena velikim težinama i sprječava niz drugih patoloških slučajeva. Na primjer, ako se svim težinama daju iste početne vrijednosti, ali traženo funkcioniranje zahtijeva nejednake vrijednosti, tada mreža neće moći učiti.

Obuka mreže za širenje unazad zahtijeva

izvršite sljedeće radnje:

1. Odaberite sljedeći par za vježbanje iz skupa za vježbanje, pošaljite ulazni vektor mrežnom ulazu.

2. Izračunajte mrežni izlaz.

3. Izračunajte razliku između izlaza mreže i potrebnog izlaza (ciljani vektor para za treniranje)

4. Podesite težine mreže tako da smanjite pogrešku.

5. Ponovite korake 1 do 4 za svaki vektor skupa za vježbanje sve dok pogreška na cijelom skupu ne dosegne prihvatljivu razinu.

Operacije koje se izvode u koracima 1 i 2 slične su onima koje se izvode kada je mreža već obučena, tj. zadan je ulazni vektor i izračunava se rezultirajući izlaz. Izračuni se izvode sloj po sloj. Na slici 3 prvo se izračunavaju izlazi neurona sloja j, zatim se koriste kao ulazi sloja k, izračunavaju se izlazi neurona sloja k koji tvore izlazni vektor mreže.

U koraku 3, svaki mrežni izlaz, koji je označen kao OUT na slici 3, oduzima se od odgovarajuće komponente ciljnog vektora kako bi se dobila pogreška. Ova se pogreška koristi u koraku 4 za prilagodbu mrežnih težina, s predznakom i veličinom promjena u težinama koje određuje algoritam učenja (vidi dolje).

Nakon dovoljnog broja ponavljanja ova četiri koraka, razlika između stvarnih izlaza i ciljanih izlaza trebala bi se smanjiti na prihvatljivu vrijednost, a za mrežu se kaže da je naučila. Sada se mreža koristi za prepoznavanje i težine se ne mijenjaju.

Koraci 1 i 2 mogu se promatrati kao "prolaz naprijed" dok se signal širi kroz mrežu od ulaza do izlaza. Koraci 3, 4 čine "backpass", ovdje se izračunati signal pogreške širi natrag kroz mrežu i koristi za podešavanje težina. Ova dva prolaza sada će biti detaljizirana i izražena u više matematičkom obliku.

Prolaz naprijed. Koraci 1 i 2 mogu se izraziti u vektorskom obliku na sljedeći način: ulazni vektor x a izlaz je vektor Y. Vektorski par ulaz-cilj x I T uzima se iz skupa za obuku. Izračuni se provode na vektoru x da dobijemo izlazni vektor Y.

Kao što smo vidjeli, računanje u višeslojnim mrežama izvodi se sloj po sloj, počevši od sloja koji je najbliži ulazu. NETO vrijednost svakog neurona u prvom sloju izračunava se kao ponderirani zbroj ulaza neurona. Aktivacijska funkcija F zatim "komprimira" NET i proizvodi OUT vrijednost za svaki neuron u tom sloju. Kada se primi izlazni skup sloja, on postaje ulazni skup za sljedeći sloj. Proces se ponavlja sloj po sloj dok se ne dobije konačni skup mrežnih izlaza.

Ovaj se proces može izraziti u sažetom obliku koristeći vektorski zapis. Težine između neurona mogu se smatrati matricom W. Na primjer, težina od neurona 8 u sloju 2 do neurona 5 u sloju 3 označava se s w 8,5. Zatim NET vektor sloja N može se izraziti ne kao zbroj proizvoda, već kao proizvod x I W. U vektorskom zapisu N= XW. Komponentnom primjenom F funkcije na NET vektor N dobije se izlazni vektor OKO. Dakle, za dati sloj, proces izračunavanja opisan je sljedećim izrazom:

O=F( XW) (3)

Izlazni vektor jednog sloja je ulazni vektor za sljedeći.

Obrnuti prolaz. Podešavanje težine izlaznog sloja. Budući da je ciljana vrijednost određena za svaki neuron u izlaznom sloju, podešavanje težina se lako provodi pomoću modificiranog delta pravila. Unutarnji slojevi nazivaju se "skriveni slojevi" i njihovi izlazi nemaju ciljne vrijednosti za usporedbu. Stoga učenje postaje teže.

Obuka zadnjeg sloja Sl. 2.4

Na sl. Slika 2.4 prikazuje proces učenja za jedan uteg iz neurona p. u skrivenom sloju j do neurona q u izlaznom sloju k. Izlaz neurona sloja k, oduzet od ciljne vrijednosti (Target), daje signal pogreške. To se množi s derivatom funkcije kontrakcije izračunate za taj neuron sloja 6, čime se dobiva vrijednost d.

d = OUT(1 - OUT)(cilj - OUT). (2.4)

Zatim se d množi s OUT vrijednošću neurona j, iz čega dolazi dotična težina. Taj se umnožak množi s faktorom brzine učenja h (obično između 0,01 i 1,0) i rezultat se dodaje težini. Isti se postupak provodi za svaku težinu od neurona u skrivenom sloju do neurona u izlaznom sloju.

Sljedeće jednadžbe ilustriraju ovaj izračun:

Dw pq, k = hd q, k OUT p, j (2.5)

w pq,k (n+1) = w pq, k (n) + Dw pq, k (2.6)

gdje je w pq, k (n) vrijednost težine od neurona h u skrivenom sloju do neurona q u izlaznom sloju u koraku n (prije korekcije), imajte na umu da se indeks k odnosi na sloj u kojem ova težina završava , tj. prema konvenciji usvojenoj u ovoj knjizi, s kojom je sjedinjena; w pq, k (n+1) - vrijednost težine u koraku n+1 (nakon korekcije), d q, k - d vrijednost za neuron u izlaznom sloju k, OUT p, j - OUT vrijednost za neuron p u skriveni sloj j.

Podešavanje težine skrivenih slojeva. Razmotrimo jedan neuron u skrivenom sloju koji prethodi izlaznom sloju. Dok prolazi naprijed, ovaj neuron prenosi svoj izlazni signal neuronima u izlaznom sloju preko utega koji ih povezuje. Tijekom treninga, ove težine rade obrnutim redoslijedom, prosljeđujući vrijednost d iz izlaznog sloja natrag u skriveni sloj. Svaki od ovih utega se množi s d vrijednošću neurona na koji je povezan u izlaznom sloju. Vrijednost d potrebna za neuron skrivenog sloja dobiva se zbrajanjem svih takvih umnožaka i množenjem s derivatom funkcije kompresije:

(vidi sliku 5.) Nakon što se dobije vrijednost d, težine koje unose prvi skriveni sloj mogu se prilagoditi pomoću jednadžbi (5) i (6), gdje se indeksi modificiraju prema sloju.

Trening unutarnjeg sloja Sl. 2.5

Za svaki neuron u određenom skrivenom sloju, d se mora izračunati i sve težine povezane s ovim slojem moraju se prilagoditi. Ovaj se postupak ponavlja sloj po sloj prema ulazu dok se ne prilagode sve težine.

Koristeći vektorsku notaciju, operacija povratnog širenja pogreške može se napisati mnogo kompaktnije. Označimo skup vrijednosti d izlaznog sloja kao D k, a skup težina izlaznog sloja kao niz W k. Za dobivanje Dj, d-vektora izlaznog sloja, dovoljne su sljedeće dvije operacije:

1. Pomnožite d-vektor izlaznog sloja D k s transponiranom matricom težine W k koja povezuje skriveni sloj s izlaznim slojem.

2. Pomnožite svaku komponentu dobivenog umnoška s derivatom funkcije kompresije odgovarajućeg neurona u skrivenom sloju.

U simboličkom zapisu:

,

gdje operator $ označava komponentni produkt vektora. O j je izlazni vektor sloja j, a I je vektor čije su sve komponente jednake 1.

Paraliza mreže. Tijekom procesa mrežnog treninga, vrijednosti težine mogu postati vrlo velike kao rezultat korekcije. To može dovesti do toga da svi ili većina neurona rade na vrlo velikim OUT vrijednostima, u području gdje je derivat funkcije kontrakcije vrlo malen. Budući da je pogreška koja se vraća tijekom procesa učenja proporcionalna ovoj derivaciji, proces učenja se može praktički zamrznuti. Iz teorijske perspektive, ovaj problem je slabo shvaćen. To se obično izbjegava smanjenjem veličine koraka n, ali to povećava vrijeme vježbanja. Razne heuristike korištene su za sprječavanje ili oporavak od paralize, ali za sada se mogu smatrati samo eksperimentalnima.

Lokalni minimumi.Širenje unazad koristi varijaciju gradijentnog spuštanja, tj. pomiče niz površinu pogreške, neprestano prilagođavajući težine prema minimumu. Površina pogreške složene mreže vrlo je neravna i sastoji se od brda, dolina, nabora i gudura u visokodimenzionalnom prostoru. Mreža može pasti u lokalni minimum (plitku dolinu) kada postoji mnogo dublji minimum u blizini. U lokalnoj minimalnoj točki, svi smjerovi pokazuju prema gore i mreža ne može pobjeći od nje. Statističke metode učenja mogu pomoći u izbjegavanju ove zamke, ali su spore. Predložena je metoda koja kombinira statističke metode Kasha stroja s gradijentnim spuštanjem povratnog širenja i dovodi do sustava koji pronalazi globalni minimum uz održavanje visoke brzine povratnog širenja. O tome se raspravlja u pogl. 5.

Veličina koraka. Pažljivo ispitivanje dokaza konvergencije pokazuje da se pretpostavlja da su korekcije težine infinitezimalne. Jasno je da to nije izvedivo u praksi, jer vodi do beskrajne krivulje učenja. Veličinu koraka treba uzeti kao konačnu, au ovom se pitanju treba oslanjati samo na iskustvo. Ako je veličina koraka vrlo mala, tada je konvergencija prespora, ali ako je jako velika, tada može doći do paralize ili stalne nestabilnosti.

Privremena nestabilnost. Ako mreža nauči prepoznavati slova, onda nema smisla učiti B ako je zaboravljeno A. Proces učenja treba biti takav da se mreža trenira na cijelom treningu bez preskakanja onoga što je već naučeno. U dokazu konvergencije ovaj uvjet je ispunjen, ali je također potrebno da mreža bude predstavljena sa svim vektorima skupa za treniranje prije podešavanja težina. Potrebne promjene u težinama moraju se izračunati na cijelom skupu, a to zahtijeva dodatnu memoriju; Nakon niza takvih ciklusa treninga, težine će se približiti minimalnoj pogrešci. Ova metoda može biti beskorisna ako je mreža u vanjskom okruženju koje se stalno mijenja, tako da se isti vektor ne može ponoviti drugi put. U ovom slučaju, proces učenja možda nikada neće konvergirati, besciljno lutajući ili divlje oscilirajući. U tom smislu, povratno širenje nije slično biološkim sustavima.

U višeslojnim neuronskim mrežama optimalne izlazne vrijednosti neurona svih slojeva osim posljednjeg u pravilu su nepoznate; troslojni ili višeslojni perceptron više se ne može trenirati, vođen samo vrijednostima pogreške na mrežnim izlazima

Jedna od opcija za rješavanje ovog problema je razvijanje skupova izlaznih signala koji odgovaraju ulaznim signalima za svaki sloj neuronske mreže, što je, naravno, vrlo naporna operacija i nije uvijek izvedivo.Druga opcija je za dinamičku prilagodbu težinskih koeficijenata sinapsi, pri čemu se u pravilu najslabije veze mijenjaju za malu količinu u jednom ili drugom smjeru, a spremaju se samo one promjene koje dovode do smanjenja pogreške na izlazu cijelu mrežu. Očito, ova metoda, unatoč

prividna jednostavnost, zahtijeva glomazne rutinske izračune. I konačno, treća, prihvatljivija opcija je širenje signala pogreške od izlaza neuronske mreže do njezinih ulaza, u smjeru suprotnom od izravnog širenja signala u normalnom radu. Ovo učenje algoritam se naziva postupak povratnog širenja (pogreška povratnog širenja) On je taj koji se raspravlja u nastavku

Algoritam povratnog širenja je iterativni algoritam gradijentnog učenja koji se koristi za minimiziranje standardne devijacije struje od potrebnih izlaza višeslojnih neuronskih mreža sa serijskim vezama

Prema metodi najmanjih kvadrata, ciljna funkcija pogreške neuronske mreže koju treba minimizirati je vrijednost

gdje je stvarno izlazno stanje neurona na izlaznom sloju neuronske mreže kada se slika dovodi na njegove ulaze, potrebno izlazno stanje ovog neurona

Zbrajanje se provodi na svim neuronima izlaznog sloja i na svim slikama koje mreža obrađuje. Minimizacija pomoću metode gradijentnog spuštanja osigurava prilagodbu težinskih koeficijenata kako slijedi

gdje je težinski koeficijent sinaptičke veze koja povezuje slojni neuron s slojnim neuronom - koeficijent brzine učenja,

U skladu s pravilom razlikovanja složenih funkcija

gdje je ponderirani zbroj ulaznih signala neurona, argument aktivacijske funkcije. Budući da se derivacija aktivacijske funkcije mora odrediti na cijeloj x-osi, funkcija jediničnog skoka i druge aktivacijske funkcije s nehomogenostima nisu prikladne za neuronske mreže koje se razmatraju. One koriste glatke funkcije kao što su hiperbolička tangensa ili klasična sigmoida s eksponencijalnom (vidi tablicu 1 1) Na primjer, u slučaju hiperboličke tangense

Treći množitelj jednak je izlazu neurona prethodnog sloja

Što se tiče prvog faktora u (1.11), on se lako može proširiti na sljedeći način:

Ovdje se zbrajanje provodi među neuronima sloja uvođenjem nove varijable:

dobivamo rekurzivnu formulu za izračunavanje vrijednosti sloja iz vrijednosti starijeg sloja

Za izlazni sloj:

Sada možemo napisati (1.10) u proširenom obliku:

Ponekad, kako bi se procesu korekcije težine dala neka inercija, izglađujući oštre skokove pri kretanju duž površine ciljne funkcije, (1.17) se nadopunjuje vrijednošću promjene težine u prethodnoj iteraciji.

gdje je koeficijent tromosti; trenutni broj iteracije.

Dakle, potpuni algoritam za treniranje neuronske mreže korištenjem postupka povratnog širenja konstruiran je na sljedeći način.

KORAK 1. Primijenite jednu od mogućih slika na mrežne ulaze i, u načinu normalnog rada neuronske mreže, kada se signali šire od ulaza do izlaza, izračunajte vrijednosti potonjih. Podsjetimo da:

gdje je broj neurona u sloju, uzimajući u obzir neuron s konstantnim izlaznim stanjem koji postavlja pristranost; ulaz neurona u sloj

gdje je sigmoid,

gdje je vektorska komponenta ulazne slike.

KORAK 4. Podesite sve težine u neuronskoj mreži:

KORAK 5. Ako je mrežna pogreška značajna, idite na korak 1. U suprotnom, završite.

U Koraku 1, mreža se prikazuje naizmjenično nasumičnim redoslijedom sa svim slikama obuke tako da mreža, figurativno govoreći, ne zaboravi neke dok pamti druge.

Iz izraza (1.17) slijedi da kada izlazna vrijednost teži nuli, učinkovitost učenja značajno opada. S binarnim ulaznim vektorima, u prosjeku, polovica težinskih koeficijenata neće biti prilagođena, stoga je preporučljivo pomaknuti raspon mogućih vrijednosti neuronskih izlaza unutar granica koje se mogu postići jednostavnim modifikacijama logističkih funkcija. Na primjer, sigmoid s eksponencijalom pretvara se u oblik:

Razmotrimo pitanje kapaciteta neuronske mreže, tj. broja slika predstavljenih njezinim ulazima koje ona može naučiti prepoznati. Za mreže s više od dva sloja ovo pitanje ostaje otvoreno. Za mreže s dva sloja, deterministički mrežni kapacitet procjenjuje se na sljedeći način:

gdje je broj podesivih težina, broj neurona u izlaznom sloju.

Ovaj izraz je dobiven uzimajući u obzir neka ograničenja. Prvo, broj ulaza i neurona u skrivenom sloju mora zadovoljiti nejednakost Drugo, međutim, gornja procjena napravljena je za mreže s pragom aktivacijskih funkcija neurona, a kapacitet mreža s glatkim aktivacijskim funkcijama, na primjer (1.23), obično je veća. Nadalje, pojam deterministički znači da je rezultirajuća procjena kapaciteta prikladna za sve ulazne obrasce koji se mogu predstaviti ulazima. U stvarnosti, distribucija ulaznih obrazaca ima tendenciju da ima određenu pravilnost, što omogućuje neuronskoj mreži da generalizira i tako poveća svoj stvarni kapacitet. Kako distribucija slika, u općem slučaju, nije unaprijed poznata, o stvarnom kapacitetu možemo govoriti samo okvirno, ali obično je on dvostruko veći od determinističkog kapaciteta.

Pitanje kapaciteta neuronske mreže usko je povezano s pitanjem potrebne snage izlaznog sloja mreže koji vrši konačnu klasifikaciju slika. Na primjer, da biste podijelili skup ulaznih slika u dvije klase, dovoljan je jedan izlazni neuron. U tom će slučaju svaka logička razina označavati zasebnu klasu. Na dva izlazna neurona s funkcijom aktivacije praga mogu se kodirati četiri klase. Kako bi se povećala pouzdanost klasifikacije, poželjno je uvesti redundanciju tako da se svakoj klasi dodijeli jedan neuron u izlaznom sloju ili, još bolje, nekoliko, od kojih je svaki osposobljen da odredi pripada li slika klasi s vlastitim stupnjem povjerenje, na primjer: visoko, srednje i nisko. Takve neuronske mreže omogućuju klasificiranje ulaznih slika kombiniranih u nejasne (mutne ili međusobno presijecajuće) skupove. Ovo svojstvo približava takve mreže stvarnim uvjetima rada bioloških neuronskih mreža.

Dotična neuronska mreža ima nekoliko uskih grla. Prvo, u procesu, velike pozitivne ili negativne vrijednosti utega mogu pomaknuti radnu točku na sigmoidima neurona u područje zasićenja. Male vrijednosti derivacije logističke funkcije dovest će, sukladno (1.15) i (1.16), do zaustavljanja učenja, što paralizira mrežu. Drugo, korištenje metode gradijentnog spuštanja ne jamči pronalaženje globalnog minimuma funkcije cilja. Ovo je usko povezano s pitanjem odabira stope učenja. Povećanja težine i, prema tome, stopa učenja za pronalaženje ekstrema moraju biti infinitezimalni, ali u ovom slučaju učenje će biti

događa nedopustivo sporo. S druge strane, prevelike prilagodbe utega mogu dovesti do trajne nestabilnosti u procesu učenja. Stoga se kao koeficijent brzine učenja 1] obično odabire broj manji od 1 (na primjer, 0,1), koji se postupno smanjuje tijekom procesa učenja. Osim toga, kako bi se isključili slučajni udarci mreže u lokalne minimume, ponekad, nakon stabilizacije vrijednosti težinskih koeficijenata, 7 se značajno povećava na kratko vrijeme kako bi se počelo spuštanje gradijenta od nove točke. Ako ponavljanje ovog postupka nekoliko puta dovede mrežu u isto stanje, možemo pretpostaviti da je pronađen globalni minimum.

Postoji još jedna metoda za uklanjanje lokalnih minimuma i paralize mreže, a to je korištenje stohastičkih neuronskih mreža.

Dajmo gore navedeno geometrijsko tumačenje.

U algoritmu povratnog širenja izračunava se vektor gradijenta površine pogreške. Ovaj vektor označava smjer najkraćeg spuštanja duž površine od trenutne točke, kretanje duž koje dovodi do smanjenja pogreške. Slijed opadajućih koraka dovest će do najmanje jedne ili druge vrste. Ovdje je poteškoća odabir duljine koraka.

S velikom veličinom koraka, konvergencija će biti brža, ali postoji opasnost od preskakanja rješenja ili, u slučaju složene površine pogreške, odlaska u pogrešnom smjeru, na primjer, kretanje duž uske klisure sa strmim padinama, skačući s jedne strane na drugu. Naprotiv, malim korakom i pravim smjerom bit će potrebno puno ponavljanja. U praksi se uzima da je veličina koraka proporcionalna strmini padine, tako da algoritam usporava blizu minimuma. Točan izbor brzine učenja ovisi o specifičnom zadatku i obično se provodi empirijski. Ova konstanta također može ovisiti o vremenu, smanjujući se kako algoritam napreduje.

Obično je ovaj algoritam modificiran tako da uključuje moment momenta (ili inercije). To potiče napredak u fiksnom smjeru, pa ako je nekoliko koraka poduzeto u istom smjeru, algoritam povećava brzinu, što vam ponekad omogućuje izbjegavanje lokalnog minimuma, kao i brži prolazak kroz ravna područja.

U svakom koraku algoritma, svi primjeri obuke se redom šalju na mrežni ulaz, stvarne izlazne vrijednosti mreže uspoređuju se s traženim vrijednostima i izračunava se pogreška. Vrijednost pogreške kao i gradijent površine pogreške

koristi se za podešavanje vaga, nakon čega se sve radnje ponavljaju. Proces učenja se zaustavlja ili kada prođe određeni broj epoha, ili kada pogreška dosegne određenu malu razinu, ili kada se pogreška prestane smanjivati.

Razmotrimo detaljnije probleme generalizacije i prekvalifikacije neuronske mreže. Generalizacija je sposobnost neuronske mreže da napravi točno predviđanje podataka koji ne pripadaju izvornom skupu za obuku. Overfitting je overfitting koji se događa kada algoritam za obuku traje predugo, a mreža je presložena za zadatak ili količinu dostupnih podataka.

Pokažimo probleme generalizacije i prekvalifikacije na primjeru aproksimacije određene ovisnosti ne neuronskom mrežom, već pomoću polinoma, a bit fenomena bit će potpuno ista.

Polinomski grafovi mogu imati različite oblike, a što je viši stupanj i broj članova, to ovaj oblik može biti složeniji. Za početni podatak možete odabrati polinomsku krivulju (model) i tako dobiti objašnjenje postojeće ovisnosti. Podaci mogu biti šumoviti, pa se ne može pretpostaviti da najbolji model točno prolazi kroz sve dostupne točke. Polinom nižeg reda može bolje objasniti odnos, ali možda neće biti dovoljno fleksibilan da odgovara podacima, dok polinom visokog reda može biti previše fleksibilan, ali će pomno pratiti podatke dok poprima zamršen oblik koji nema nikakve veze s prava veza..

Neuronske mreže suočavaju se s istim poteškoćama. Mreže s većim težinama modeliraju složenije funkcije i stoga su sklone prekomjernom prilagođavanju. Mreže s malim brojem težina možda neće biti dovoljno fleksibilne za modeliranje postojećih ovisnosti. Na primjer, mreža bez skrivenih slojeva samo modelira običnu linearnu funkciju.

Kako odabrati pravi stupanj složenosti mreže? Gotovo uvijek složenija mreža daje manju pogrešku, ali to ne mora značiti dobru kvalitetu modela, već pretreniranost mreže.

Rješenje je korištenje unakrsne provjere referentnih vrijednosti. U tu svrhu rezerviran je dio uzorka za uvježbavanje koji se ne koristi za uvježbavanje mreže korištenjem algoritma backpropagation, već za neovisnu kontrolu rezultata tijekom algoritma. Na početku rada dogodila se mrežna greška na treningu i

kontrolni skupovi će biti isti. Kako se mreža trenira, pogreška treniranja se smanjuje, kao i pogreška na kontrolnom skupu. Ako se kontrolna pogreška prestane smanjivati ​​ili čak počne rasti, to znači da je mreža počela previše približavati podatke (pretrenirana) i trening treba prekinuti. Ako se to dogodi, tada treba smanjiti broj skrivenih elemenata i/ili slojeva, jer je mreža presnažna za ovaj zadatak. Ako obje pogreške (obuka i unakrsna provjera) ne dosegnu dovoljno malu razinu, tada se ponovna obuka prirodno nije dogodila, a mreža, naprotiv, nije dovoljno moćna da modelira postojeću ovisnost.

Opisani problemi dovode do toga da pri radu s neuronskim mrežama u praksi morate eksperimentirati s velikim brojem različitih mreža, ponekad trenirajući svaku od njih više puta i uspoređujući dobivene rezultate. Glavni pokazatelj kvalitete rezultata je kontrolna pogreška. Istovremeno, u skladu sa sustavnim načelom, od dvije mreže s približno jednakim pogreškama upravljanja, ima smisla odabrati onu koja je jednostavnija.

Potreba za ponavljanjem eksperimenata dovodi do činjenice da kontrolni skup počinje igrati ključnu ulogu u odabiru modela i postaje dio procesa učenja. To slabi njegovu ulogu kao neovisnog kriterija kvalitete modela. Uz velik broj eksperimenata postoji velika vjerojatnost odabira uspješne mreže koja daje dobre rezultate na kontrolnom skupu. Međutim, kako bi konačnom modelu dali odgovarajuću pouzdanost, oni često (kada količina primjera za obuku to dopušta) čine sljedeće: rezerviraju testni skup primjera. Konačni model se testira na podacima iz ovog skupa kako bi se osiguralo da su rezultati postignuti na obuci i testnim skupovima primjera stvarni, a ne artefakti procesa učenja. Naravno, kako bi dobro odigrao svoju ulogu, ispitni skup treba se koristiti samo jednom: ako se ponovno koristi za prilagodbu procesa učenja, zapravo će postati kontrolni skup.

Kako bi se ubrzao proces mrežnog učenja, predložene su brojne modifikacije algoritma za povratnu propagaciju pogreške, povezane s korištenjem različitih funkcija pogreške, procedura za određivanje smjera i veličina koraka.

1) Funkcije pogreške:

Integralne funkcije pogreške preko cijelog skupa primjera obuke;

Funkcije pogrešaka cjelobrojnih i razlomljenih potencija

2) Postupci za određivanje veličine koraka pri svakoj iteraciji

Dihotomija;

Inercijski odnosi (vidi gore);

3) Postupci za određivanje smjera koraka.

Korištenje matrice derivacija drugog reda (Newtonova metoda);

Korištenje uputa u nekoliko koraka (partan metoda).