Biografier Kjennetegn Analyse

Neural nettverksfeilfunksjon. Nettverkstrening - backpropagation

Tilbakepropageringsalgoritmen er en av metodene for å trene flerlags feedforward nevrale nettverk, også kalt flerlags perseptroner. Flerlags perseptroner brukes med hell for å løse mange komplekse problemer.

Trening med feinvolverer to passeringer gjennom alle lag i nettverket: fremover og bakover. I foroverpasset mates inngangsvektoren til inngangslaget til det nevrale nettverket, hvoretter den forplanter seg gjennom nettverket fra lag til lag. Som et resultat genereres et sett med utgangssignaler, som er den faktiske responsen til nettverket på et gitt inngangsbilde. Under foroverpasseringen er alle synaptiske vekter av nettverket faste. Under bakoverpasseringen justeres alle synaptiske vekter i henhold til feilkorrigeringsregelen, nemlig: den faktiske utgangen fra nettverket trekkes fra den ønskede, noe som resulterer i et feilsignal. Dette signalet forplanter seg deretter gjennom nettverket i motsatt retning av synaptiske forbindelser. Derav navnet - tilbakepropageringsalgoritme. Synaptiske vekter er innstilt for å gjøre nettverksutgangen så nært som mulig til ønsket.

La oss vurdere driften av algoritmen mer detaljert. La oss si at vi trenger å trene følgende nevrale nettverk ved å bruke tilbakepropageringsalgoritmen:

I figuren nedenfor er følgende konvensjoner brukt:

Som en aktiveringsfunksjon i flerlags perseptroner brukes som regel en sigmoidal aktiveringsfunksjon, spesielt en logistisk:

hvor er helningsparameteren til den sigmoideale funksjonen. Ved å endre denne parameteren er det mulig å konstruere funksjoner med ulik bratthet. La oss ta forbehold om at for alle påfølgende resonnementer, vil den bli brukt nøyaktig den logistiske aktiveringsfunksjonen, representert bare av formelen ovenfor.

Sigmoiden begrenser endringsområdet slik at verdien ligger mellom null og én. Flerlags nevrale nettverk har større representasjonskraft enn enkeltlags bare i nærvær av ikke-linearitet. Sammentrekningsfunksjonen gir den nødvendige ikke-lineariteten. Faktisk er det mange funksjoner som kan brukes. Tilbakepropageringsalgoritmen krever bare at funksjonen kan differensieres overalt. Sigmoiden tilfredsstiller dette kravet. Dens ekstra fordel er automatisk forsterkningskontroll. For svake signaler (dvs. når de er nær null) har inngangs-utgangskurven en sterk helning, noe som gir en stor forsterkning. Når signalet blir større, synker forsterkningen. Dermed mottas store signaler av nettverket uten metning, og svake signaler passerer gjennom nettverket uten overdreven dempning.

Målet med nettverkstrening En er en slik justering av vektene at bruken av et visst sett med innganger fører til det nødvendige settet med utganger. For korthets skyld vil disse settene med innganger og utganger bli kalt vektorer. Under trening antas det at for hver inngangsvektor er det en paret målvektor som spesifiserer den nødvendige utgangen. Sammen kalles de treningsparet. Nettverket trenes på mange par.

Neste:

  1. Initialiser synaptiske vekter med små tilfeldige verdier.
  2. Velg neste treningspar fra treningssettet; mate inngangsvektoren til inngangen til nettverket.
  3. Beregn utgangen til nettverket.
  4. Beregn forskjellen mellom nettverksutgangen og ønsket utgang (treningsparmålvektor).
  5. Juster nettverksvektene for å minimere feil (som vist nedenfor).
  6. Gjenta trinn 2 til 5 for hver vektor i treningssettet til feilen på hele settet når et akseptabelt nivå.

Operasjonene utført av trinn 2 og 3 ligner på de som utføres under driften av et allerede trent nettverk, dvs. en inngangsvektor mates inn og den resulterende utgangen beregnes. Beregningene utføres i lag. På fig. 1, først beregnes utgangene til nevronene i laget (laget er input, noe som betyr at ingen beregninger finner sted i det), deretter brukes de som innganger til laget, utgangene fra nevronene i laget er beregnet, som danner utgangsvektoren til nettverket. Trinn 2 og 3 danner det som er kjent som et foroverpass når signalet går gjennom nettverket fra inngang til utgang.

Trinn 4 og 5 utgjør "tilbakepasseringen" hvor det beregnede feilsignalet forplanter seg tilbake gjennom nettverket og brukes til å justere vektene.

La oss se nærmere på trinn 5 – justering av nettverksvektene. Det er to tilfeller som skal fremheves her.

Tilfelle 1. Justering av utgangslags synaptiske vekter

For eksempel, for den nevrale nettverksmodellen i fig. 1, vil dette være vekter med følgende betegnelser: og . La oss definere at indeksen vil betegne nevronet som den synaptiske vekten kommer ut fra, og nevronet den kommer inn i:

La oss introdusere verdien , som er lik forskjellen mellom de nødvendige og reelle utgangene, multiplisert med den deriverte av den logistiske aktiveringsfunksjonen (se ovenfor for formelen for den logistiske aktiveringsfunksjonen):

Deretter vil vektene til utgangslaget etter korrigering være lik:

Her er et eksempel på beregninger for synaptisk vekt:

Tilfelle 2. Justering av de synaptiske vektene til det skjulte laget

For den nevrale nettverksmodellen i fig. 1, vil disse være vektene som tilsvarer lagene og . La oss definere at indeksen vil betegne nevronet som den synaptiske vekten kommer ut fra, og nevronet den kommer inn i (vær oppmerksom på utseendet til en ny variabel).

Prudnikov Ivan Alekseevich
MIREA(MTU)

Temaet nevrale nettverk har allerede blitt dekket i mange tidsskrifter, men i dag vil jeg introdusere leserne til algoritmen for å trene et flerlags nevralt nettverk ved hjelp av tilbakepropageringsmetoden og gi en implementering av denne metoden.

Jeg vil med en gang ta forbehold om at jeg ikke er ekspert på nevrale nettverk, så jeg forventer konstruktiv kritikk, kommentarer og tillegg fra leserne.

Teoretisk del

Dette materialet forutsetter en bekjentskap med det grunnleggende om nevrale nettverk, men jeg anser det som mulig å introdusere leseren til emnet uten unødvendige prøvelser på teorien om nevrale nettverk. Så, for de som hører uttrykket "nevralt nettverk" for første gang, foreslår jeg å oppfatte et nevralt nettverk som en vektet rettet graf, hvis noder (neuroner) er ordnet i lag. I tillegg har en node i ett lag lenker til alle noder i det forrige laget. I vårt tilfelle vil en slik graf ha input- og output-lag, hvis noder fungerer som henholdsvis innganger og utganger. Hver node (nevron) har en aktiveringsfunksjon - en funksjon som er ansvarlig for å beregne signalet ved utgangen til noden (nevron). Det er også konseptet forskyvning, som er en node, ved utgangen av hvilken en alltid vises. I denne artikkelen vil vi vurdere læringsprosessen til et nevralt nettverk som antar tilstedeværelsen av en "lærer", det vil si en læringsprosess der læring skjer ved å gi nettverket en sekvens av treningseksempler med korrekte svar.
Som med de fleste nevrale nettverk, er målet vårt å trene nettverket på en slik måte at det oppnås en balanse mellom nettverkets evne til å gi riktig respons på inputdata som brukes i læringsprosessen (memorisering) og evnen til å produsere de riktige resultatene som svar på inndataene, lignende, men ikke identiske med de som ble brukt i trening (generaliseringsprinsipp). Trening av nettverket ved hjelp av feiltilbakeforplantningsmetoden inkluderer tre trinn: tilførsel av data til inngangen, etterfulgt av datautbredelse i retning av utgangene, beregning og tilbakeføring av den tilsvarende feilen, og justering av vektene. Etter trening er det bare meningen å mate dataene til inngangen til nettverket og distribuere dem i retning av utgangene. På samme tid, hvis opplæringen av nettverket kan være en ganske langvarig prosess, er den direkte beregningen av resultatene av det trente nettverket veldig rask. I tillegg er det mange varianter av tilbakepropageringsmetoden designet for å øke hastigheten på læringsprosessen.
Det er også verdt å merke seg at et enkeltlags nevralt nettverk er betydelig begrenset i hvilke mønstre av inputdata det er gjenstand for læring, mens et flerlagsnettverk (med ett eller flere skjulte lag) ikke har en slik ulempe. Deretter vil det bli gitt en beskrivelse av et standard nevralt nettverk for tilbakepropagasjon.

Arkitektur

Figur 1 viser et flerlags nevralt nettverk med ett lag med skjulte nevroner (Z-elementer).

Nevronene som representerer utgangene til nettverket (angitt med Y) og de skjulte nevronene kan være partiske (som vist på bildet). Forskyvningen som tilsvarer utgangen Y k er betegnet med w ok , det skjulte elementet til Z j - V oj . Disse skjevhetene tjener som vekter på forbindelsene som kommer fra nevronene, hvis utgang alltid vises 1 (i figur 1 er de vist, men vanligvis ikke eksplisitt vist, underforstått). I tillegg viser piler i figur 1 bevegelsen av informasjon under dataspredningsfasen fra innganger til utganger. Under læringsprosessen forplanter signalene seg i motsatt retning.

Beskrivelse av algoritmen

Algoritmen som presenteres nedenfor, kan brukes på et nevralt nettverk med ett skjult lag, som er en gyldig og tilstrekkelig situasjon for de fleste applikasjoner. Som nevnt tidligere inkluderer nettverkstrening tre stadier: å levere treningsdata til inngangene til nettverket, tilbakespredning av feilen og justering av vektene. I løpet av det første trinnet mottar hvert inngangsnevron X i et signal og sender det til hver av de skjulte nevronene Z 1 , Z 2 ..., Z p . Hver skjult nevron beregner deretter resultatet av sin aktiveringsfunksjon (nettverksfunksjon) og sender signalet Z j til alle utgangsnevroner. Hvert utgangsnevron Yk beregner på sin side resultatet av sin aktiveringsfunksjon Yk, som ikke er noe mer enn utgangssignalet til dette nevronet for de tilsvarende inngangsdataene. I løpet av læringsprosessen sammenligner hvert nevron ved utgangen av nettverket den beregnede Yk-verdien med læreren levert tk (målverdi), og bestemmer den passende feilverdien for det gitte inngangsmønsteret. Basert på denne feilen beregnes σ k (k = 1,2,...m). σ k brukes når feilen spres fra Y k til alle nettverkselementer i det forrige laget (skjulte nevroner koblet til Y k), og også senere når du endrer vekten av forbindelser mellom utgangsneuroner og skjulte. Tilsvarende beregnes σj (j = 1,2,...p) for hver skjult nevron Z j . Selv om det ikke er behov for å spre feilen til inngangslaget, brukes σj til å endre vekten av forbindelser mellom nevroner i det skjulte laget og inngangsneuroner. Etter at alle σ er bestemt, justeres vektene til alle leddene samtidig.

Betegnelser:

Følgende notasjon brukes i nettverkslæringsalgoritmen:

X Input treningsdatavektor X = (X 1 , X 2 ,...,Xi ,...,X n).
t Vektor av lærerleverte målutganger t = (t 1 , t 2 ,...,t k ,...,t m)
σ k Komponent av justeringen av vekter av forbindelser w jk , tilsvarende feilen til utgangsneuronen Y k ; også informasjon om feilen til nevronet Y k , som er distribuert til de nevronene i det skjulte laget som er assosiert med Y k .
σ j Komponent av justeringen av vektene til forbindelser v ij, tilsvarende feilinformasjonen som forplantes fra utgangslaget til det skjulte nevronet Z j .
en læringsrate.
X i Inndataneuron med indeks i. For inngangsneuroner er inngangs- og utgangssignalene de samme - X i.
v oj Offset av skjult nevron j.
Z j Skjult nevron j; Den totale verdien som leveres til inngangen til det skjulte elementet Z j er angitt med Z_in j: Z_in j = v oj +∑x i *v ij
Signalet på utgangen Z j (resultatet av å bruke aktiveringsfunksjonen til Z_in j) er betegnet med Z j: Z j = f (Z_in j)
w ok Output neuron offset.
Y k Utgangsnevron under indeks k; Den totale verdien som tilføres inngangen til utgangselementet Yk er betegnet med Y_in k: Y_in k = w ok + ∑ Z j *w jk. Utgangssignalet Y k (resultatet av å bruke aktiveringsfunksjonen til Y_in k) er betegnet med Y k:

Aktiveringsfunksjon

Aktiveringsfunksjonen i tilbakepropageringsalgoritmen må ha flere viktige egenskaper: kontinuitet, differensierbarhet og være monotont ikke-avtagende. Av hensyn til beregningseffektiviteten er det dessuten ønskelig at dens deriverte er lett å finne. Ofte er aktiveringsfunksjonen også en metningsfunksjon. En av de mest brukte aktiveringsfunksjonene er den binære sigmoid-funksjonen med et område på (0, 1) og definert som:

En annen mye brukt aktiveringsfunksjon er den bipolare sigmoiden med rekkevidde (-1, 1) og definert som:


Læringsalgoritme

Læringsalgoritmen ser slik ut:

Initialisering av vekter (vekter av alle lenker initialiseres med tilfeldige små verdier).

Så lenge termineringsbetingelsen til algoritmen er falsk, utføres trinn 2 - 9.

For hvert par (data, målverdi) utføres trinn 3 - 8.

Utbredelse av data fra innganger til utganger:

Trinn 3
Hvert inngangsnevron (X i, i = 1,2,...,n) sender det mottatte signalet X i til alle nevroner i det neste (skjulte) laget.

Hver skjult nevron (Z j , j = 1,2,...,p) summerer de vektede innkommende signalene: z_in j = v oj + ∑ x i *v ij og bruker aktiveringsfunksjonen: z j = f (z_in j) Deretter sender resultatet til alle elementene i neste lag (utdata).

Hvert utgangsnevron (Y k , k = 1,2,...m) summerer de vektede inngangssignalene: Y_in k = w ok + ∑ Z j *w jk og bruker en aktiveringsfunksjon, beregner utgangssignalet: Y k = f (Y_in k).

Tilbakepropagering:

Hvert utgangsnevron (Y k , k = 1,2,...m) mottar målverdien - utgangsverdien som er korrekt for det gitte inngangssignalet, og beregner feilen: σ k = (t k - y k)*f " ( y_in k) beregner også hvor mye vekten av forbindelsen w jk vil endres med: Δw jk = a * σ k * z j I tillegg beregner den offsetjusteringsverdien: Δw ok = a*σ k og sender σ k til nevroner i forrige lag.

Hver skjult nevron (z j , j = 1,2,...p) summerer de innkommende feilene (fra nevroner i neste lag) σ_in j = ∑ σ k * w jk og beregner feilverdien ved å multiplisere den resulterende verdien med avledet av aktiveringsfunksjonen: σ j = σ_in j * f "(z_in j), beregner også hvor mye lenkevekten vij vil endre seg med: Δv ij = a * σ j * x i. I tillegg beregner forskyvningsjusteringsbeløpet : v oj = a * σ j

Trinn 8. Endre vektene.

Hvert utgangsnevron (y k , k = 1,2,...,m) endrer vekten av dets forbindelser med bias-elementet og skjulte nevroner: w jk (ny) = w jk (gammel) + Δw jk
Hvert skjulte nevron (z j , j = 1,2,...p) endrer vekten av dets forbindelser med bias-elementet og utgangsneuroner: v ij (ny) = v ij (gammel) + Δv ij

Sjekker termineringstilstanden til algoritmen.
Betingelsen for å avslutte driften av algoritmen kan enten være oppnåelse av en total kvadratisk feil av resultatet ved nettverksutgangen til et forhåndsinnstilt minimum under læringsprosessen, eller utførelsen av et visst antall iterasjoner av algoritmen. Algoritmen er basert på en metode som kalles gradient descent. Avhengig av tegnet, gir gradienten til funksjonen (i dette tilfellet er verdien av funksjonen feilen, og parametrene er vektene til lenker i nettverket) retningen som verdiene til funksjonen øker ( eller reduseres) raskest.

For å trene et flerlagsnettverk i 1986 foreslo Rummelhart og Hinton (Rummelhart D.E., Hinton G.E., Williams R.J., 1986) ene. Tallrike publikasjoner om industrielle anvendelser av flerlagsnettverk med denne læringsalgoritmen har bekreftet dens grunnleggende ytelse i praksis.

I begynnelsen dukker det opp et rimelig spørsmål - hvorfor det er umulig å bruke den allerede kjente Rosenblatt -regelen (se forelesning 4) for å trene en flerlags perceptron? Svaret er at for å bruke Rosenblatt-metoden, er det nødvendig å vite ikke bare de nåværende utgangene til nevronene y, men også de nødvendige riktig verdier Y. Når det gjelder et flerlagsnettverk, er disse riktige verdiene bare tilgjengelige for nevroner helg lag. De nødvendige utgangsverdiene for skjulte lagneuroner er ukjente, noe som begrenser anvendelsen av -regelen.

Hovedideen bak backpropagation er hvordan man får feilestimatet for skjulte lagneuroner. Legg merke til det berømt feil gjort av nevroner i utgangslaget oppstår pga ukjent inntil feilene til nevronene i de skjulte lagene. Jo større verdien av den synaptiske forbindelsen mellom nevronet i det skjulte laget og utgangsnevronet er, desto sterkere påvirker feilen til den første feilen til den andre. Derfor kan estimatet av feilen til elementene i de skjulte lagene oppnås som en vektet sum av feilene til påfølgende lag. Under trening distribueres informasjon fra de nedre lagene i hierarkiet til de høyere, og feilestimatene laget av nettverket er i motsatt retning, noe som gjenspeiles i navnet på metoden.

La oss se nærmere på denne algoritmen. For å forenkle notasjonen begrenser vi oss til situasjonen der nettverket bare har ett skjult lag. Vi betegner matrisen av vektkoeffisienter fra inngangene til det skjulte laget med W, og matrisen av vekter som forbinder de skjulte og utgående lagene som V. For indeksene vil vi bruke følgende notasjon: vi vil nummerere inngangene kun med indeks i, elementene i det skjulte laget ved indeksen j, og utgangene, henholdsvis ved indeksen k.

La nettverket trenes på prøven (X,Y),=1..p. Aktivitetene til nevroner vil bli merket med små bokstaver y med den tilsvarende indeksen, og de totale vektede inngangene til nevroner vil bli merket med små bokstaver x.

Den generelle strukturen til algoritmen er lik den som ble diskutert i forelesning 4, med komplikasjonen av vektjusteringsformler.

Tabell 6.1. Tilbakepropageringsalgoritme.

Startverdiene for vektene til alle nevroner i alle lag V(t=0) og W(t=0) antas å være tilfeldige tall.

Nettverket presenteres med et inngangsbilde X, som et resultat dannes et utgangsbilde yY. I dette tilfellet fungerer nevronene sekvensielt fra lag til lag i henhold til følgende formler:

skjult lag

utgangslag

Her er f(x) en sigmoidfunksjon definert av formel (6.1)

Funksjonen til den kvadratiske feilen til nettverket for et gitt inngangsbilde har formen:

Denne funksjonaliteten skal minimeres. Den klassiske gradientoptimaliseringsmetoden består i iterativ foredling av argumentet i henhold til formelen:

Feilfunksjonen er ikke eksplisitt avhengig av vekten V jk , så vi bruker formlene for implisitt differensiering av en kompleks funksjon:

Her tas en nyttig egenskap til sigmoidfunksjonen f(x) i betraktning: dens deriverte uttrykkes bare gjennom verdien av selve funksjonen, f'(x)=f(1-f). Dermed er alle nødvendige verdier for justering av vektene til utgangslaget V oppnådd.

Dette trinnet justerer vektene til det skjulte laget. Gradientmetoden gir fortsatt:

Derivatene beregnes ved å bruke de samme formlene, bortsett fra en komplikasjon av formelen for feilen  j .

Ved beregning av  j ble prinsippet om tilbakepropagasjon av feilen brukt her: partielle deriverte tas kun med hensyn til variabler senere lag. I henhold til de oppnådde formlene blir vekten av nevroner i det skjulte laget modifisert. Hvis det er flere skjulte lag i det nevrale nettverket, brukes tilbakepropageringsprosedyren sekvensielt for hvert av dem, med start fra laget som går foran utgangslaget og fortsetter til laget som følger inngangslaget. I dette tilfellet beholder formlene sin form ved å erstatte elementene i utdatalaget med elementene i det tilsvarende skjulte laget.

Trinn 1-3 gjentas for alle treningsvektorer. Treningen avsluttes når en liten total feil eller maksimalt tillatt antall iterasjoner er nådd, som i Rosenblatt-treningsmetoden.

Som det fremgår av beskrivelsen av trinn 2-3, reduseres læringen til å løse problemet med å optimalisere feilfunksjonen ved hjelp av gradientmetoden. Hele "saltet" av feiltilbakeforplantningen er at for estimering av nevronene i de skjulte lagene, kan du ta den vektede summen av feilene i det påfølgende laget.

Parameteren h har betydningen av læringshastigheten og er valgt liten nok til at metoden konvergerer. Noen få tilleggsbemerkninger må gjøres om konvergens. For det første viser praksis at konvergensen av tilbakepropageringsmetoden er veldig langsom. Den lave konvergenshastigheten er en "genetisk sykdom" av alle gradientmetoder, siden den lokale retningen til gradienten ikke i det hele tatt sammenfaller med retningen til minimum. For det andre utføres vektjustering uavhengig for hvert par med treningseksempelbilder. Samtidig kan forbedringen av ytelsen på et gitt par, generelt sett, føre til forringelse av ytelsen på tidligere bilder. I denne forstand, Nei pålitelige (bortsett fra en svært omfattende praksis med å bruke metoden) garantier for konvergens.

Studier viser at for å representere en vilkårlig funksjonell kartlegging gitt av treningssettet, er det nok å bare to lag nevroner. Men i praksis, når det gjelder komplekse funksjoner, kan bruk av mer enn ett skjult lag spare det totale antallet nevroner.

På slutten av forelesningen vil vi komme med en bemerkning angående justering av tersklene til nevroner. Det er lett å se at terskelen til et nevron kan gjøres ekvivalent med den ekstra vekten koblet til dummy-inngangen, lik -1. Faktisk, ved å velge W 0 =, x 0 =-1 og starte summeringen fra null, kan vi vurdere et nevron med en nullterskel og en ekstra inngang:

Ytterligere nevroninnganger som tilsvarer terskelene er vist i fig. 6.1 med mørke firkanter. Med denne bemerkningen i tankene starter all summering over inputformler presentert i tilbakepropageringsalgoritmen fra indeks null.

Algoritme for forplantning tilbake

Synonymer: BackProp Algorithm, Back Propagation Algorithm, BackProp

Loginom: Neuralt nettverk (klassifisering) (prosessor), Neuralt nettverk (regresjon) (prosessor)

Tilbakepropageringsalgoritmen er en populær algoritme for å trene flat-lags feed-forward nevrale nettverk (flerlags perseptroner). Refererer til veiledede læringsmetoder, så det krever at målverdier settes i treningseksempler. Det er også en av de mest kjente maskinlæringsalgoritmene.

Ideen til algoritmen er basert på bruken av nevrale nettverksutgangsfeil:

å beregne korreksjonsverdiene for vekten av nevroner i de skjulte lagene, hvor er antall utgangsneuroner i nettverket, er målverdien og er den faktiske utgangsverdien. Algoritmen er iterativ og bruker prinsippet om "trinn-for-trinn"-læring (on-line læring), når vektene til nettverksneuronene justeres etter at ett treningseksempel er matet til input.

Ved hver iterasjon er det to passeringer av nettverket - fremover og bakover. På den direkte linjen forplanter inngangsvektoren seg fra nettverksinngangene til utgangene og danner en utgangsvektor som tilsvarer den nåværende (faktiske) tilstanden til vektene. Deretter beregnes feilen til det nevrale nettverket som forskjellen mellom de faktiske verdiene og målverdiene. På omvendt pass forplanter denne feilen seg fra nettverksutgangen til inngangene, og nevronvektene korrigeres i samsvar med regelen:

hvor er vekten av den i-te forbindelsen til det j-te nevronet;

Tatt i betraktning at utgangssummen til det j-te nevronet er lik

det kan vises det

Det følger av det siste uttrykket at differensialen til aktiveringsfunksjonen til nettverksnevronene må eksistere og ikke være lik null på noe punkt, dvs. aktiveringsfunksjonen må være differensierbar på hele tallinjen. Derfor, for å bruke tilbakepropageringsmetoden, brukes sigmoide aktiveringsfunksjoner som logistisk eller hyperbolsk tangent.

Algoritmen bruker altså den såkalte stokastiske gradientnedstigningen, "beveger seg" i det flerdimensjonale vektrommet i retning av antigradienten for å oppnå et minimum av feilfunksjonen.

I praksis fortsetter treningen ikke før nettverket er finjustert til minimum av feilfunksjonen, men til en tilstrekkelig nøyaktig tilnærming av den er oppnådd. Dette vil på den ene siden redusere antall treningsiterasjoner, og på den andre siden unngå omskolering av nettverk.

For tiden er det utviklet mange modifikasjoner av tilbakepropageringsalgoritmen. Læring brukes for eksempel ikke "trinnvis", når utgangsfeilen beregnes og vektene korrigeres for hvert eksempel, men "etter epoker" i off-line-modus, når vektene endres etter alle eksempler på treningen sett mates til nettverksinngangen, og gjennomsnittet av feilen beregnes for alle eksemplene.

Epokebasert trening er mer robust mot uteliggere og uteliggere av målvariabelen ved å beregne gjennomsnittet av feilen over mange eksempler. Men samtidig øker sannsynligheten for at algoritmen setter seg fast i lokale minima. Det er mindre sannsynlig at dette skjer for trinnvis læring, siden bruken av individuelle eksempler skaper "støy" som "skyver" algoritmen ut av gropene i gradientterrenget.

Fordelene med tilbakepropageringsalgoritmen inkluderer enkel implementering og motstand mot anomalier og uteliggere i dataene. Ulempene inkluderer:

  • uendelig lang læringsprosess:
  • muligheten for "nettverkslammelse", når driftspunktet til aktiveringsfunksjonen ved store verdier er i metningsområdet til sigmoiden og derivatet i uttrykk (1) blir nær 0, og vektkorreksjonen praktisk talt ikke forekommer og læringsprosessen "fryser";
  • algoritmens sårbarhet for å falle inn i lokale minima for feilfunksjonen.

Algoritmen ble først beskrevet i 1974.

Den første delen dekket: struktur, topologi, aktiveringsfunksjoner og treningssett. I denne delen vil jeg prøve å forklare hvordan et konvolusjonelt nevralt nettverk trenes.

Trening av et konvolusjonelt nevralt nettverk

I det innledende stadiet er det nevrale nettverket utrent (uavstemt). I en generell forstand forstås trening som den sekvensielle presentasjonen av et bilde til inngangen til det nevrale nettverket, fra treningssettet, deretter sammenlignes det resulterende svaret med ønsket utgang, i vårt tilfelle er det 1 - bildet representerer en ansikt, minus 1 - bildet representerer en bakgrunn (ikke et ansikt), den resulterende forskjellen mellom forventet respons og mottatt er resultatet av feilfunksjonen (feildelta). Da må dette feildeltaet forplantes til alle tilkoblede nevroner i nettverket.

Dermed reduseres nevrale nettverkstrening til å minimere feilfunksjonen ved å justere vektkoeffisientene til synaptiske forbindelser mellom nevroner. Feilfunksjonen er forskjellen mellom det mottatte svaret og det ønskede. For eksempel var inngangen et ansiktsbilde, anta at utgangen til det nevrale nettverket var 0,73, og det ønskede resultatet er 1 (fordi ansiktsbildet), får vi at nettverksfeilen er forskjellen, det vil si 0,27. Deretter justeres vektene til utgangslaget av nevroner i henhold til feilen. For utgangslagneuroner er deres faktiske og ønskede utgangsverdier kjent. Derfor er det relativt enkelt å sette tilkoblingsvektene for slike nevroner. For nevronene i de foregående lagene er tuningen imidlertid ikke så åpenbar. I lang tid var det ingen kjent algoritme for feilutbredelse gjennom skjulte lag.

Tilbakepropageringsalgoritme

For å trene det beskrevne nevrale nettverket ble tilbakepropageringsalgoritmen brukt. Denne metoden for å trene et flerlags nevralt nettverk kalles den generaliserte deltaregelen. Metoden ble foreslått i 1986 av Rumelhart, McClelland og Williams. Dette markerte en gjenoppblomstring av interessen for nevrale nettverk, som begynte å falme på begynnelsen av 70-tallet. Denne algoritmen er den første og viktigste praktisk anvendelige for å trene flerlags nevrale nettverk.

For utdatalaget er justeringen av vektene intuitiv, men for de skjulte lagene var ikke algoritmen kjent på lenge. Vektene til et skjult nevron bør endres i direkte forhold til feilen til de nevronene som dette nevronet er assosiert med. Det er grunnen til at tilbakespredningen av disse feilene gjennom nettverket lar deg justere vekten av koblinger mellom alle lag riktig. I dette tilfellet synker verdien av feilfunksjonen og nettverket trenes.

Hovedkorrelasjonene til feiltilbakeforplantningsmetoden oppnås med følgende notasjon:

Feilverdien bestemmes av formelen 2.8 rotmiddelkvadratfeil:

Den inaktiverte tilstanden til hver nevron j for bildet p er skrevet som en vektet sum i henhold til formel 2.9:

Utgangen til hver nevron j er verdien av aktiveringsfunksjonen

Som setter nevronet i en aktivert tilstand. Enhver kontinuerlig differensierbar monoton funksjon kan brukes som en aktiveringsfunksjon. Den aktiverte tilstanden til nevronet beregnes ved formel 2.10:

Som en metode for å minimere feilen, brukes gradientnedstigningsmetoden, essensen av denne metoden er å finne minimum (eller maksimum) av funksjonen ved å bevege seg langs gradientvektoren. For å søke etter minimum, må bevegelsen utføres i retning av antigradienten. Gradientnedstigningsmetode i henhold til figur 2.7.

Tapsfunksjonsgradienten er en vektor av partielle derivater, beregnet ved formel 2.11:

Den deriverte av feilfunksjonen med hensyn til et spesifikt bilde kan skrives i henhold til kjederegelen, formel 2.12:

Feilen til et nevron skrives vanligvis som symbolet δ (delta). For utdatalaget er feilen eksplisitt definert, hvis vi tar den deriverte av formel 2.8, får vi t minus y, det vil si forskjellen mellom ønsket og oppnådd utgang. Men hvordan beregner man feilen for skjulte lag? For å løse dette problemet ble bare algoritmen for forplantning tilbake oppfunnet. Dens essens ligger i den sekvensielle beregningen av feilene til de skjulte lagene ved å bruke feilverdiene til utgangslaget, dvs. feilverdier forplanter seg gjennom nettverket i motsatt retning fra utgang til inngang.

Feilen δ for det skjulte laget beregnes ved å bruke formel 2.13:

Feilforplantningsalgoritmen reduseres til følgende trinn:

  • direkte distribusjon av signalet over nettverket, beregning av tilstanden til nevroner;
  • å beregne en feilverdi δ for utgangslaget;
  • backpropagation: sekvensielt fra slutten til begynnelsen for alle skjulte lag, vi beregner δ ved å bruke formel 2.13;
  • oppdatering av nettverksvektene til den tidligere beregnede feilen δ.
Fei en flerlagsperceptron er vist nedenfor:


Frem til dette punktet har tilfeller av feilutbredelse langs lagene av perceptronen, det vil si langs utgangen og skjult, blitt vurdert, men i tillegg til dem er det subsample og convolutional i det konvolusjonelle nevrale nettverket.

Beregner feilen på delprøvelaget

Beregningen av feilen på delprøvelaget presenteres på flere måter. Det første tilfellet, når delprøvelaget er foran det fullt tilkoblede laget, har det henholdsvis nevroner og forbindelser av samme type som i det fullt tilkoblede laget, beregningen av feil δ er ikke forskjellig fra beregningen av δ av det skjulte laget. Det andre tilfellet, når subsamplinglaget er foran konvolusjonslaget, skjer beregningen av δ ved invers konvolusjon. For å forstå omvendt konvolusjon, må du først forstå vanlig konvolusjon og det faktum at skyvevinduet på funksjonskartet (under signalforoverforplantning) kan tolkes som et normalt skjult lag med forbindelser mellom nevroner, men hovedforskjellen er at disse forbindelsene er separerbare, det vil si at flere par nevroner kan ha én forbindelse med en bestemt vektverdi, og ikke bare én. Tolkning av konvolusjonsoperasjonen i vanlig flerlagsform i samsvar med figur 2.8.


Figur 2.8 - Tolkning av konvolusjonsoperasjonen i en flerlagsvisning, der lenker med samme farge har samme vekt. Delprøvekartet er merket med blått, den synaptiske kjernen er flerfarget, og den resulterende konvolusjonen er oransje

Nå som konvolusjonsoperasjonen presenteres i den kjente lagdelte formen, kan man intuitivt forstå at beregningen av deltaer skjer på samme måte som i det skjulte laget i et fullstendig tilkoblet nettverk. Følgelig, etter å ha beregnet deltaene til konvolusjonslaget tidligere, er det mulig å beregne deltaene til delprøven, i samsvar med figur 2.9.


Figur 2.9 - Beregning av δ subsampling lag på grunn av δ konvolusjonslag og kjerne

Omvendt konvolusjon er den samme måten å beregne deltaer på, bare på en litt vanskelig måte, som består i å rotere kjernen 180 grader og skyve prosessen med å skanne konvolusjonskartet over deltaer med modifiserte kanteffekter. Med enkle ord må vi ta kjernen av konvolusjonskartet (følge delprøvelaget), rotere det 180 grader og lage en normal konvolusjon ved å bruke de tidligere beregnede deltaene til konvolusjonskartet, men slik at skannevinduet strekker seg utover kartet . Resultatet av dekonvolusjonsoperasjonen i samsvar med figur 2.10, i samsvar med figur 2.11.


Figur 2.10 - Resultatet av den inverse konvolusjonsoperasjonen


Figur 2.11 - Rotert kjerne 180 grader skanner konvolusjonskartet

Feilberegning på konvolusjonslaget

Vanligvis er det ledende laget etter konvolusjonslaget subsampling, så vår oppgave er å beregne deltaene til det nåværende laget (convolutional) på grunn av kunnskap om deltaene til subsamplinglaget. Faktisk blir ikke deltafeilen beregnet, men kopiert. Under foroverforplantning av signalet ble nevronene i delprøvelaget dannet på grunn av et ikke-overlappende skannevindu over konvolusjonslaget, hvor nevronene med maksimal verdi ble valgt, under tilbakeforplantning returnerer vi feildeltaet til tidligere valgt maksimalnevron, mens resten mottar et nullfeildelta.

Konklusjon

Ved å representere konvolusjonsoperasjonen i den vanlige flerlagsformen (Figur 2.8), kan man intuitivt forstå at beregningen av deltaer skjer på samme måte som i det skjulte laget av et fullstendig tilkoblet nettverk.