Biografije Karakteristike Analiza

Algoritam povratnog širenja. Metoda povratnog širenja: matematika, primjeri, kod

U višeslojnim neuronskim mrežama optimalne izlazne vrijednosti neurona svih slojeva, osim posljednjeg, obično su nepoznate.

Jedan od načina da se riješi ovaj problem je razvoj skupova izlaznih signala koji odgovaraju ulaznim za svaki sloj. živčana mreža, što je, naravno, vrlo dugotrajna operacija i nije uvijek izvediva.Druga mogućnost je dinamičko podešavanje težinskih koeficijenata sinapsi, pri čemu se u pravilu slabe veze i malo se mijenjaju u jednom ili drugom smjeru, a spremaju se samo one promjene koje su dovele do smanjenja pogreške na izlazu cijele mreže. Očito je da ovu metodu, bez obzira na

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 širenja signala prema naprijed u normalnom radu. Ovo algoritam učenja naziva se procedura širenje unazad greške (pogreška povratnog širenja) On je taj koji se razmatra u nastavku

Širenje unazad je iterativni algoritam gradijentnog učenja koji se koristi za minimiziranje standardna devijacija struje od potrebnih izlaza višeslojnih neuronskih mreža sa serijskim vezama

Prema metodi najmanjih kvadrata, ciljna funkcija pogreške neuronske mreže koja se minimizira je vrijednost

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

Zbrajanje se provodi nad svim neuronima izlaznog sloja i nad svim slikama koje obrađuje mreža. Minimizacija metodom gradijentnog spuštanja omogućuje prilagodbu težinskih koeficijenata kako slijedi

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

U skladu s pravilom diferenciranja složene funkcije

gdje je ponderirani zbroj ulaznih signala neurona, argument aktivacijske funkcije. glatke funkcije, kao hiperbolička tangenta ili klasični sigmoid s eksponentom (vidi tablicu 1 1) Na primjer, u slučaju hiperboličke tangente

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 između neurona sloja. Uvođenje 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 po površini ciljna funkcija, (1.17) dopunjuje se vrijednošću promjene težine u prethodnoj iteraciji.

gdje je koeficijent tromosti; broj trenutne iteracije.

Stoga je kompletan algoritam za obuku neuronske mreže korištenjem postupka povratnog širenja konstruiran kako slijedi.

KORAK 1. Pošaljite 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 se da:

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

gdje je sigmoid,

gdje je komponenta vektora 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.

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

Iz izraza (1.17) slijedi da kada izlazna vrijednost teži nuli, učinkovitost učenja značajno opada. Kod binarnih ulaznih vektora u prosjeku polovica težinskih koeficijenata neće biti korigirana, pa je poželjno raspon mogućih vrijednosti izlaza neurona pomaknuti unutar granica, što se postiže jednostavnim modifikacijama logističkih funkcija. Na primjer, sigmoid s eksponentom 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 kapacitet mreže procjenjuje se na sljedeći način:

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

Ovaj se izraz dobiva uz određena 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ći. 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 slika, u pravilu, ima određenu pravilnost, što omogućuje neuronskoj mreži generalizaciju i, na taj način, povećanje stvarnog kapaciteta. Od distribucije slika, u opći slučaj, nije unaprijed poznat, o stvarnom kapacitetu se može govoriti samo pretpostavljeno, ali obično je on dva puta veći od determinističkog kapaciteta.

Pitanje kapaciteta neuronske mreže usko je povezano s pitanjem potrebnog kapaciteta 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. Istovremeno, svaki logička razina označavat će zasebnu klasu. Na dva izlazna neurona s funkcijom aktivacije praga već se mogu kodirati četiri klase. Kako bi se povećala pouzdanost klasifikacije, poželjno je uvesti redundanciju dodjeljivanjem jednog neurona svakoj klasi u izlaznom sloju ili, još bolje, nekoliko, od kojih je svaki osposobljen da odredi pripada li slika klasi s vlastitim stupnjem pouzdanosti. , na primjer: visoka, srednja i niska. Takve neuronske mreže omogućuju klasificiranje ulaznih slika kombiniranih u nejasne (nejasne ili križajuće) skupove. Ovo svojstvo približava takve mreže stvarnim uvjetima za funkcioniranje bioloških neuronskih mreža.

Razmatrana neuronska mreža ima nekoliko uskih grla. Prvo, u procesu velike pozitivne odn negativne vrijednosti težine mogu pomaknuti radnu točku na sigmoidima neurona u područje zasićenja. Male vrijednosti derivacije logističke funkcije dovest će, u skladu s (1.15) i (1.16), do prestanka učenja, što paralizira mrežu. Drugo, primjena 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 pondera i, prema tome, stopa učenja za pronalaženje ekstrema moraju biti infinitezimalni, međutim, u ovom slučaju, učenje će biti

biti nedopustivo spor. S druge strane, prevelike korekcije težine mogu dovesti do trajne nestabilnosti u procesu učenja. Stoga se obično bira broj manji od 1 (na primjer, 0,1) kao koeficijent brzine učenja 1], koji se postupno smanjuje tijekom procesa učenja. Osim toga, kako bi se isključilo slučajni pogoci mreže do lokalnih minimuma, ponekad se, nakon stabilizacije vrijednosti težinskih koeficijenata, 7 nakratko značajno poveća kako bi se počelo spuštanje gradijenta od nova točka. Ako ponavljanje ovog postupka nekoliko puta dovede mrežu u isto stanje, može se 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 gornju geometrijsku interpretaciju.

Algoritam povratnog širenja izračunava vektor gradijenta površine pogreške. Ovaj vektor označava smjer najkraćeg spuštanja na površini od trenutne točke, kretanje duž koje dovodi do smanjenja pogreške. Slijed opadajućih koraka dovest će do najmanje jedne ili druge vrste. Poteškoća ovdje je pitanje odabira duljine koraka.

Na velika veličina korak konvergencija će biti brža, ali postoji opasnost od preskakanja rješenja, ili u slučaju složenog oblika površine grešaka idu u pogrešnom smjeru, na primjer, krećući se duž uske klisure sa strmim padinama, skačući s jedne strane na drugu. Naprotiv, malim korakom i pravi smjer trebat će puno ponavljanja. U praksi se veličina koraka uzima proporcionalno strmini padine, tako da algoritam usporava blizu minimuma. Pravi izbor Stopa 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.

Tipično, ovaj algoritam je modificiran tako da uključuje zamah (ili inerciju). Ovo promiče kretanje u fiksnom smjeru, pa ako je nekoliko koraka poduzeto u istom smjeru, algoritam povećava brzinu, što ponekad izbjegava lokalni minimum, kao i brže prolaziti ravnim područjima.

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

služi 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 neku 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. S druge strane, overfitting je prekomjerno opremanje koje se događa kada algoritam učenja radi predugo, a mreža je presložena za zadatak ili za količinu dostupnih podataka.

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

Polinomski grafovi mogu imati drugačiji oblik, a što je viši stupanj i broj članova, to ovaj oblik može biti složeniji. Za polazne podatke moguće je odabrati polinomsku krivulju (model) i na taj način dobiti objašnjenje postojeće ovisnosti. Podaci mogu biti šumoviti, pa se to ne može pretpostaviti najbolji model prolazi točno kroz sve dostupne točke. Polinom nižeg reda može bolje objasniti postojeću ovisnost, međutim, nije dovoljno fleksibilan da odgovara podacima, dok polinom visokog reda može biti previše fleksibilan, ali će točno pratiti podatke, dok će poprimiti zamršen oblik koji nema nikakve veze sa stvarnom ovisnošću.

Neuronske mreže suočavaju se s istim poteškoćama. Mreže sa veliki broj težine model više složene funkcije i stoga sklona pretjeranom opremanju. 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 modelira samo 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 biti pokazatelj dobra kvaliteta modela, ali o prekvalificiranju mreže.

Izlaz je korištenje kontrolne unakrsne provjere. Da bi se to postiglo, rezerviran je dio uzorka za obuku, koji se ne koristi za treniranje mreže prema algoritmu povratne propagacije greške, već za neovisnu kontrolu rezultata tijekom algoritma. Na početku rada mrežna greška na treningu i

kontrolni skupovi će biti isti. Kako se mreža trenira, pogreška učenja se smanjuje, kao i pogreška na kontrolnom skupu. Ako se kontrolna pogreška prestala smanjivati ​​ili čak počela rasti, to znači da je mreža počela previše približavati podatke (ponovno uvježbana) i obuku 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, naravno, nije dogodila, a mreža, naprotiv, nije dovoljno moćna da modelira postojeću ovisnost.

Opisani problemi rezultiraju praktični rad S neuronskim mrežama morate eksperimentirati s velikim brojem različitih mreža, ponekad trenirajući svaku od njih nekoliko puta i uspoređujući rezultate. Glavni pokazatelj kvalitete rezultata je kontrolna pogreška. Istovremeno, u skladu sa sustavnim principom, od dvije mreže s približno jednake greške kontrola ima smisla odabrati onu koja je lakša.

Potreba za višestrukim eksperimentima dovodi do toga 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. Na veliki brojevi eksperimentima, postoji velika vjerojatnost odabira uspješne mreže koja daje dobar rezultat na kontrolnom skupu. Međutim, kako bi konačnom modelu dali dužnu pouzdanost, često se (kada to dopušta obujam primjera za obuku) postupa na sljedeći način: rezerviran je testni skup primjera. Konačni model se testira na podacima iz ovog skupa kako bi se osiguralo da su rezultati postignuti na obuci i kontrolnim skupovima primjera stvarni, a ne artefakti procesa obuke. Naravno, kako bi dobro odigrao svoju ulogu, ispitni set mora se koristiti samo jednom: ako se više puta koristi za ispravljanje procesa učenja, tada će zapravo postati kontrolni skup.

Kako bi se ubrzao proces učenja mreže, predlažu se 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 omjeri (vidi gore);

3) Postupci određivanja smjera koraka.

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

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

Prudnikov Ivan Aleksejevič
MIREA (MTU)

Tema neuronskih mreža već je obrađena u mnogim časopisima, ali danas bih želio čitatelje upoznati s algoritmom za obuku višeslojne neuronske mreže metodom povratnog širenja i pružiti implementaciju ove metode.

Odmah želim reći da nisam stručnjak u području neuronskih mreža, pa očekujem od čitatelja konstruktivna kritika, komentari i dodaci.

Teorijski dio

Ovaj materijal pretpostavlja upoznavanje s osnovama neuronskih mreža, međutim, smatram da je moguće uvesti čitatelja u temu bez nepotrebnih muka s teorijom neuronskih mreža. Dakle, za one koji prvi put čuju izraz "neuronska mreža", predlažem da neuronsku mrežu percipiraju kao težinski usmjereni graf, čiji su čvorovi (neuroni) raspoređeni u slojeve. Osim toga, čvor jednog sloja ima veze sa svim čvorovima prethodnog sloja. U našem slučaju, takav graf će imati ulazne i izlazne slojeve, čiji čvorovi djeluju kao ulazi odnosno izlazi. Svaki čvor (neuron) ima aktivacijsku funkciju – funkciju odgovornu za izračunavanje signala na izlazu iz čvora (neurona). Postoji i koncept pomaka, koji je čvor, na čijem se izlazu uvijek pojavljuje. U ovom ćemo članku razmotriti proces učenja neuronske mreže koji pretpostavlja prisutnost "učitelja", odnosno proces učenja u kojem se učenje odvija pružanjem mreži niza primjera obuke s točnim odgovorima.
Kao i kod većine neuronskih mreža, naš je cilj uvježbati mrežu na takav način da se postigne ravnoteža između sposobnosti mreže da da točan odgovor na ulazne podatke koji se koriste u procesu učenja (memoriranje) i sposobnosti da proizvede točni rezultati kao odgovor na ulazne podatke, slični, ali ne identični onima koji se koriste u obuci (načelo generalizacije). Uvježbavanje mreže metodom povratnog širenja pogreške uključuje tri faze: dostavljanje podataka na ulaz, nakon čega slijedi širenje podataka u smjeru izlaza, izračunavanje i povratno širenje odgovarajuće pogreške te podešavanje težina. Nakon uvježbavanja treba samo unijeti podatke na ulaz mreže i distribuirati ih u smjeru izlaza. U isto vrijeme, ako treniranje mreže može biti prilično dugotrajan proces, onda je izravni izračun rezultata od strane trenirane mreže vrlo brz. Osim toga, postoje brojne varijacije metode povratnog širenja dizajnirane za povećanje brzine procesa učenja.
Također je vrijedno napomenuti da je jednoslojna neuronska mreža značajno ograničena u tome koji obrasci ulaznih podataka podliježu učenju, dok višeslojna mreža (s jednim ili više skrivenih slojeva) nema takav nedostatak. Zatim će biti dan opis standardne neuronske mreže s povratnim širenjem.

Arhitektura

Slika 1 prikazuje višeslojnu neuronsku mrežu s jednim slojem skrivenih neurona (Z elementi).

Neuroni koji predstavljaju izlaze mreže (označeni s Y) i skriveni neuroni mogu biti pristrani (kao što je prikazano na slici). Pomak koji odgovara izlazu Y k označen je s w ok , skrivenim elementom od Z j-V oj . Ove pristranosti služe kao težine veza koje dolaze iz neurona, čiji se izlaz uvijek pojavljuje kao 1 (na slici 1 prikazani su, ali obično nisu eksplicitno prikazani, implicirani). Osim toga, strelice na slici 1 pokazuju kretanje informacija tijekom faze diseminacije podataka od ulaza do izlaza. Tijekom procesa učenja signali se šire u suprotnom smjeru.

Opis algoritma

Algoritam predstavljen u nastavku primjenjiv je na neuronsku mrežu s jednim skrivenim slojem, što je važeća i primjerena situacija za većinu aplikacija. Kao što je ranije spomenuto, obuka mreže uključuje tri faze: dostavljanje podataka o obuci na ulaze mreže, povratno širenje pogreške i podešavanje težina. Tijekom prve faze, svaki ulazni neuron X i prima signal i emitira ga svakom od skrivenih neurona Z 1 ,Z 2 ...,Z p . Svaki skriveni neuron tada izračunava rezultat svoje aktivacijske funkcije (mrežna funkcija) i emitira svoj signal Z j svim izlaznim neuronima. Svaki izlazni neuron Yk, zauzvrat, izračunava rezultat svoje aktivacijske funkcije Yk, koja nije ništa drugo nego izlazni signal ovog neurona za odgovarajuće ulazne podatke. Tijekom procesa učenja, svaki neuron na izlazu mreže uspoređuje izračunatu vrijednost Y k s t k (ciljanom vrijednošću) koju daje učitelj, određujući odgovarajuću vrijednost pogreške za dani ulazni obrazac. Na temelju ove pogreške izračunava se σ k (k = 1,2,...m). σ k se koristi kod propagiranja greške od Y k do svih mrežnih elemenata prethodnog sloja (skriveni neuroni spojeni na Y k), a također i kasnije kod promjene težina veza između izlaznih neurona i skrivenih. Slično, σj (j = 1,2,...p) se izračunava za svaki skriveni neuron Z j . Iako nema potrebe za širenjem pogreške na ulazni sloj, σj se koristi za promjenu težine veza između neurona u skrivenom sloju i ulaznih neurona. Nakon što su svi σ određeni, težine svih karika se istovremeno prilagođavaju.

Oznake:

U algoritmu mrežnog učenja koristi se sljedeća notacija:

X Vektor ulaznih podataka o obuci X = (X 1 , X 2 ,...,X i ,...,X n).
t Vektor ciljanih rezultata koje daje nastavnik t = (t 1 , t 2 ,...,t k ,...,t m)
σ k Komponenta prilagodbe težina veza w jk , koja odgovara pogrešci izlaznog neurona Y k ; također, informacija o pogrešci neurona Y k, koja se distribuira na one neurone skrivenog sloja koji su povezani s Y k.
σ j Komponenta prilagodbe težina veza v ij, koja odgovara informacijama o pogrešci koje se šire od izlaznog sloja do skrivenog neurona Z j.
a Stopa učenja.
X i Ulazni neuron s indeksom i. Za ulazne neurone ulazni i izlazni signali su isti - X i .
v oj Offset skrivenog neurona j.
Z j Skriveni neuron j; Ukupna vrijednost ulaz skrivenog elementa Z j označen je sa Z_in j: Z_in j = v oj +∑x i *v ij
Signal na izlazu Z j (rezultat primjene aktivacijske funkcije na Z_in j) označen je sa Z j: Z j = f (Z_in j)
w ok Output neuron offset.
Y k Izlazni neuron pod indeksom k; Ukupna vrijednost dovedena na ulaz izlaznog elementa Y k označena je s Y_in k: Y_in k = w ok + ∑ Z j *w jk . Izlazni signal Y k (rezultat primjene aktivacijske funkcije na Y_in k) označen je s Y k:

Aktivacijska funkcija

Aktivacijska funkcija u algoritmu povratnog širenja mora imati nekoliko važne karakteristike: neprekidnost, diferencijabilnost i biti monotono neopadajući. Štoviše, radi učinkovitosti računanja, poželjno je da se njegov izvod lako pronađe. Često je funkcija aktivacije također i funkcija zasićenja. Jedna od najčešće korištenih aktivacijskih funkcija je binarna sigmoidna funkcija s rasponom (0, 1) i definirana kao:

Druga široko korištena aktivacijska funkcija je bipolarna sigmoida s rasponom (-1, 1) i definirana kao:


Algoritam učenja

Algoritam učenja izgleda ovako:

Inicijalizacija težina (težine svih veza se inicijaliziraju s nasumičnim malim vrijednostima).

Sve dok je uvjet završetka algoritma netočan, izvode se koraci 2 - 9.

Za svaki par (podaci, ciljana vrijednost) izvode se koraci 3 do 8.

Širenje podataka od ulaza do izlaza:

3. korak
Svaki ulazni neuron (X i , i = 1,2,...,n) šalje primljeni signal X i svim neuronima u sljedećem (skrivenom) sloju.

Svaki skriveni neuron (Z j , j = 1,2,...,p) zbraja ponderirane dolazne signale: z_in j = v oj + ∑ x i *v ij i primjenjuje funkciju aktivacije: z j = f (z_in j) Zatim šalje rezultat svim elementima sljedećeg sloja (izlaz).

Svaki izlazni neuron (Y k , k = 1,2,...m) zbraja ponderirane ulazne signale: Y_in k = w ok + ∑ Z j *w jk i primjenjuje aktivacijsku funkciju, izračunavajući izlazni signal: Y k = f (Y_u k).

Širenje unazad:

Svaki izlazni neuron (Y k , k = 1,2,...m) prima ciljnu vrijednost - izlaznu vrijednost koja je točna za dani ulazni signal, i izračunava grešku: σ k = (t k - y k)*f " ( y_in k) također izračunava iznos za koji će se promijeniti težina veze w jk: Δw jk = a * σ k * z j Osim toga, izračunava vrijednost podešavanja pomaka: Δw ok = a*σ k i šalje σ k neuronima u prethodnom sloju.

Svaki skriveni neuron (z j, j = 1,2,...p) zbraja dolazne pogreške (od neurona u sljedećem sloju) σ_in j = ∑ σ k * w jk i izračunava vrijednost pogreške množenjem dobivene vrijednosti s izvedenica aktivacijske funkcije: σ j = σ_in j * f "(z_in j), također izračunava iznos za koji će se promijeniti težina veze vij: Δv ij = a * σ j * x i . Osim toga, izračunava iznos prilagodbe pomaka : v oj = a * σ j

Korak 8. Promijenite težine.

Svaki izlazni neuron (y k , k = 1,2,...,m) mijenja težinu svojih veza s elementom pristranosti i skrivenim neuronima: w jk (novo) = w jk (staro) + Δw jk
Svaki skriveni neuron (z j, j = 1,2,...p) mijenja težinu svojih veza s elementom pristranosti i izlaznim neuronima: v ij (novo) = v ij (staro) + Δv ij

Provjera uvjeta završetka algoritma.
Uvjet za prestanak rada algoritma može biti i postizanje ukupnog kvadratna greška rezultat na izlazu iz mreže unaprijed određenog minimuma tijekom procesa učenja, te izvođenje određenog broja ponavljanja algoritma. Algoritam se temelji na metodi koja se naziva gradijentni spuštanje. Ovisno o predznaku, gradijent funkcije (in ovaj slučaj vrijednost funkcije je pogreška, a parametri su težine veza u mreži) daje smjer u kojem se vrijednosti funkcije najbrže povećavaju (ili smanjuju).

Delta je pravilo koje se koristi pri treniranju perceptrona, koristeći vrijednost pogreške izlaznog sloja. Ako mreža ima dva ili više slojeva, tada ne postoji eksplicitna vrijednost pogreške za međuslojeve i ne može se koristiti delta pravilo.

Glavna ideja povratnog širenja je kako dobiti procjenu pogreške za neurone skrivenog sloja. primijeti da poznati pogreške koje čine neuroni u izlaznom sloju nastaju zbog nepoznato greške neurona u skrivenim slojevima. Kako više vrijednosti sinaptičke veze između neurona skrivenog sloja i izlaznog neurona, što jače pogreška prvog utječe na pogrešku drugog. Stoga se procjena pogreške elemenata skrivenih slojeva može dobiti kao ponderirani zbroj pogrešaka sljedećih slojeva.

Algoritam povratne propagacije (ABOR), koji je generalizacija delta-pravila, omogućuje vam treniranje ANN PR-a s bilo kojim brojem slojeva. Možemo reći da AOR zapravo koristi neku vrstu gradijentnog spuštanja, preuređujući težine u smjeru minimalne pogreške.

Kada se koristi AOR, pretpostavlja se da se sigmoidna funkcija koristi kao aktivacijska funkcija. Ova funkcija štedi troškove računanja jer ima jednostavnu derivaciju:

Sigmoidna funkcija ograničava jake signale na 1 i pojačava slabe signale.

Značenje algoritma povratne propagacije pogreške je da se tijekom treninga mreži prvo prezentira slika za koju se izračunava izlazna pogreška. Nadalje, ova se pogreška širi mrežom u suprotnom smjeru, mijenjajući težinu interneuronskih veza.

Algoritam uključuje isti slijed radnji kao i kod treniranja perceptrona. Najprije se dobiju težine međuneuronskih veza slučajne vrijednosti, tada se provode sljedeći koraci:

1) Odabran je par za obuku ( x , Z*), x poslužuje se na ulazu;

2) Izračunajte izlaz mreže Z = F(Y);

3) Izračunava se greška izlaza E;

4) Mrežne težine su prilagođene kako bi se pogreška svela na minimum;

Koraci 1 i 2 su prosljeđivanje preko mreže, dok su koraci 3 i 4 obrnuti.

Prije treninga potrebno je postojeće “input-output” parove podijeliti na dva dijela: trening i test.

Testni parovi koriste se za provjeru kvalitete treninga - NN je dobro treniran ako proizvodi izlaz blizak testnom za ulaz koji daje testni par.

Kod učenja je moguća situacija kada se pokaže NN dobri rezultati za podatke o obuci, ali loše za podatke o ispitivanju. Za to mogu postojati dva razloga:

1. Podaci s testa jako se razlikuju od podataka s treninga, tj. parovi za obuku nisu pokrili sva područja ulaznog prostora.


2. Pojavio se fenomen "prekvalifikacije" ( pretjerano opremanje), kada se pokaže da je ponašanje NN složenije od problema koji se rješava.

Zadnji slučaj jer je problem aproksimacije funkcije točkama ilustriran na sl. 3.3, gdje bijeli krugovi predstavljaju testne podatke, a tamni krugovi predstavljaju podatke o treningu.

Strogo govoreći, širenje unatrag brza je metoda izračuna gradijenta temeljena na značajkama funkcije mrežnog ponovnog izračuna, koja može smanjiti računsku složenost izračuna gradijenta. Metoda koristi pogrešku na mrežnom izlazu za izračunavanje parcijalnih derivacija po težinama posljednjeg sloja obučenih veza, zatim se pogreška na izlazu pretposljednjeg sloja određuje iz težina posljednjeg sloja i mrežne pogreške, a proces se ponavlja.

Opis algoritma

Širenje unatrag primjenjuje se na višeslojne mreže čiji neuroni imaju nelinearnosti s kontinuiranom derivacijom, kao što su:

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, u jednostavan slučaj, sastoji se od N slojeva, a svaki neuron sljedećeg sloja je vezama povezan sa svim neuronima prethodnog sloja, s težinama w [n].

S propagacijom naprijed, za svaki sloj se izračunava (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. Signal na izlazu neurona izračunava se primjenom nelinearnosti neurona na ukupni signal.

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

Na temelju mrežnog izlaznog signala O i signala D, koje treba dobiti na mrežnom izlazu za određeni ulaz, izračunava se mrežna pogreška. Uobičajeno korišten srednji trg odstupanja za sve vektore uzorka za obuku:

Za treniranje mreže koristi se gradijent funkcije pogreške po težinama mreže. Algoritam širenja unatrag uključuje izračunavanje gradijenta funkcije pogreške "širenjem unazad" signala pogreške. Tada se parcijalna derivacija pogreške s obzirom na težine veze izračunava formulom:

Ovdje je q rezidual mreže, koji se za izlazni sloj izračunava iz funkcije pogreške:

A za skrivene slojeve - prema ostatku prethodnog sloja:

Za slučaj sigmoidne nelinearnosti i srednje kvadratne devijacije kao funkcije pogreške:

Zapravo, obuka mreže sastoji se u pronalaženju takvih vrijednosti težina koje minimiziraju pogrešku na mrežnim izlazima. Postoje mnoge metode koje se temelje na ili koriste gradijent za rješavanje ovog problema. U najjednostavnijem slučaju, mrežno treniranje se provodi 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 povratnog širenja pogreške na primjeru aproksimacije funkcije

Zadatak: Neka postoji tablica vrijednosti argumenata ( x ja ) i odgovarajuće vrijednosti funkcije ( f(x ja )) ( ova je tablica mogla nastati u proračunu nekog analitičkog dana funkcija pri provođenju eksperimenta za utvrđivanje ovisnosti jakosti struje o otporu u električnoj mreži, pri identificiranju veze između sunčeva aktivnost te broj poziva u kardiološki centar, između iznosa potpora poljoprivrednicima i obujma poljoprivredne proizvodnje itd.).

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

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

Aproksimacija obično označava 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 vrućih točaka, čije su koordinate dane tablicom 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. Za to se koriste 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 zadane tablične funkcije (vidi sliku 5).

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

Za rješavanje koristimo funkciju newff (.) - stvaranje "klasične" višeslojne mreže s treniranjem metodom povratnog širenja, tj. promjena u težinama sinapsi odvija se 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 protoku signala. Mreža će imati dva skrivena sloja. U prvom sloju ima 5 neurona, u drugom 1. Aktivacijska funkcija prvog sloja je "tansig" (sigmoidna funkcija, vraća izlazne vektore s vrijednostima u rasponu od - 1 do 1), drugi je "purelin" ( linearna funkcija aktivacija, vraća izlazne vektore nepromijenjene). Bit će 100 epoha treninga. Funkcija obuke "trainlm" - funkcija koja trenira mrežu (koristi se prema zadanim postavkama, jer pruža najviše brzo učenje, ali zahtijeva puno memorije).

Programski kod:

P = nule (1, 20);

za i = 1: 20% stvaranja polja P (i) = i*0,1; %ulazni podaci (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); %poll trenirana mrežna slika (1);

plot(P,T,P,y,"o"),mreža; % crtanje grafa početnih podataka i funkcije koju oblikuje 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, te je dosegla 10 -2,35 (0,00455531).

Slika 2. Rezultat treninga neuronske mreže

Graf početnih podataka i funkcije koju generira neuronska mreža (vidi sl. 3): kružići označavaju početne podatke, a crta funkciju koju generira neuronska mreža. Nadalje, pomoću dobivenih točaka možete izgraditi regresiju i dobiti aproksimacijsku jednadžbu (vidi sliku 8). Koristili smo kubičnu regresiju, jer njen 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. Graf početnih podataka i funkcije koju oblikuje neuronska mreža


Slika 4. Graf aproksimacijske funkcije

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 se koriste za rješavanje mnogih složenih problema.

Obuka algoritmom povratnog širenja pogreške 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, nakon čega 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, što rezultira signalom pogreške. Ovaj signal se zatim širi kroz mrežu u smjeru obrnuti smjer sinaptičke veze. Otuda naziv - algoritam povratnog širenja. Sinaptičke težine podešene su kako bi mrežni izlaz bio što bliži željenom.

Razmotrimo detaljnije rad algoritma. Recimo da trebamo istrenirati sljedeću neuronsku mrežu koristeći algoritam povratnog širenja:

Na donjoj slici koriste se sljedeće konvencije:

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

gdje je parametar nagiba sigmoidalne funkcije. Promjenom ovog parametra moguće je konstruirati funkcije različite strmine. Napomenimo da će se za sva daljnja razmišljanja koristiti upravo funkcija logističke aktivacije, predstavljena samo gornjom formulom.

Sigmoid sužava raspon promjene tako da vrijednost leži između nule i jedan. Višeslojne neuronske mreže imaju veću moć predstavljanja od jednoslojnih samo uz prisustvo nelinearnosti. Funkcija kontrakcije osigurava traženu nelinearnost. Zapravo, postoje mnoge funkcije koje se mogu koristiti. Algoritam širenja unazad zahtijeva samo da je funkcija posvuda diferencijabilna. Sigmoida zadovoljava ovaj zahtjev. Njegovo dodatna prednost sastoji se od automatske kontrole pojačanja. Za slabe signale (tj. kada su blizu nule) ulazno-izlazna krivulja ima jak nagib, što daje veliko pojačanje. Kako signal postaje veći, pojačanje opada. Dakle, veliki signali se primaju u mrežu bez zasićenja, a slabi signali prolaze kroz mrežu bez pretjeranog prigušenja.

Cilj mrežnog treninga Algoritam povratnog širenja pogreške je takva prilagodba njegovih težina da primjena određenog skupa ulaza dovodi 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 upareni ciljni vektor 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; dovesti ulazni vektor na ulaz mreže.
  3. Izračunajte izlaz mreže.
  4. Izračunajte razliku između izlaza mreže i željenog izlaza (ciljni 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 tijekom rada već obučene mreže, tj. unosi se ulazni vektor i izračunava se rezultirajući izlaz. Proračuni se izvode u slojevima. Na sl. 1, prvo se izračunavaju izlazi neurona sloja (sloj je ulazni, što znači da se u njemu ne odvijaju proračuni), zatim se koriste kao ulazi sloja, izlazi neurona sloja su izračunati, koji čine izlazni vektor mreže . Koraci 2 i 3 tvore ono što je poznato kao prolaz naprijed dok signal putuje kroz mrežu od ulaza do izlaza.

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

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

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 . Definirajmo 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ženih 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 . Definirajmo da će indeks označavati neuron iz kojeg sinaptička težina izlazi, te neuron u koji ulazi (obratite pozornost na pojavu nove varijable).