Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Bakoverpropagasjon | Nevralt Nettverk fra Bunnen Av
Introduksjon til nevrale nettverk

bookBakoverpropagasjon

Bakoverpropagasjon, eller backpropagation, er prosessen med å bestemme hvordan tapfunksjonen endres med hensyn til hver parameter i nevrale nettverk. Målet er å justere disse parameterne på en måte som reduserer det totale tapet.

Denne prosessen baserer seg på gradient descent-algoritmen, som bruker derivater av tapet med hensyn til hvert lags pre-aktiveringsverdier (de rå utgangene før aktiveringsfunksjonen anvendes) og sprer dem bakover gjennom nettverket.

Siden hvert lag bidrar til den endelige prediksjonen, beregnes gradientene steg for steg:

  1. Utfør fremoverpropagasjon for å få utgangene;
  2. Beregn derivaten av tapet med hensyn til utgangens pre-aktivering;
  3. Propager denne derivaten bakover gjennom lagene ved hjelp av kjerneregelen;
  4. Beregn og bruk gradientene for vekter og bias for å oppdatere dem under trening.
Note
Merk

Gradienter representerer endringsraten til en funksjon med hensyn til dens input, altså dens derivater. De indikerer hvor mye en liten endring i vekter, bias eller aktiveringer påvirker tapfunksjonen, og styrer modellens læringsprosess gjennom gradient descent.

Notasjon

For å gjøre forklaringen tydeligere, bruker vi følgende notasjon:

  • WlW^l er vektmatrisen til lag ll;
  • blb^l er bias-vektoren til lag ll;
  • zlz^l er pre-aktiveringsvektoren til lag ll;
  • ala^l er aktiveringsvektoren til lag ll;

Ved å sette a0a^0 til xx (inputene), kan fremoverpropagasjon i en perseptron med n lag beskrives som følgende sekvens av operasjoner:

a0=x,......z1=W1a0+b1,zl=Wlal1+bl,zn=Wnan1+bn,a1=f1(z1),al=fl(zl),an=fn(zn),......y^=an.\begin{aligned} a^0 &= x, & &... & &...\\ z^1 &= W^1 a^0 + b^1, & z^l &= W^l a^{l-1} + b^l, & z^n &= W^n a^{n-1} + b^n,\\ a^1 &= f^1(z^1), & a^l &= f^l(z^l), & a^n &= f^n(z^n),\\ &... & &... & \hat y &= a^n. \end{aligned}

For å beskrive tilbakepropagasjon matematisk, introduseres følgende notasjoner:

  • dalda^l: derivert av tapet med hensyn til aktiveringene i lag ll;
  • dzldz^l: derivert av tapet med hensyn til pre-aktiveringene i lag ll (før aktiveringsfunksjonen anvendes);
  • dWldW^l: derivert av tapet med hensyn til vektene i lag ll;
  • dbldb^l: derivert av tapet med hensyn til biasene i lag ll.

Beregning av gradienter for utgangslaget

I det siste laget nn er det første steget å beregne gradienten av tapet med hensyn til aktiveringene i utgangslaget, betegnet som danda^n.

Deretter, ved bruk av kjerneregelen, beregnes gradienten av tapet med hensyn til pre-aktiveringene i utgangslaget som:

dzn=danfn(zn)dz^n = da^n \odot f'^n(z^n)

Her representerer fn(zn)f'^n(z^n) den deriverte av aktiveringsfunksjonen i lag nn, og symbolet \odot angir elementvis multiplikasjon.

Note
Merk

Symbolet \odot angir elementvis multiplikasjon, som betyr at hvert element i én vektor multipliseres med det tilsvarende elementet i en annen vektor. Til sammenligning representerer symbolet \cdot skalarproduktet, brukt for vanlig matrise- eller vektormultiplikasjon. Begrepet fnf'^n refererer til den deriverte av aktiveringsfunksjonen i utgangslaget.

Denne verdien indikerer hvor sensitiv tapfunksjonen er for endringer i preaktiveringsverdiene til utgangslaget.

Etter å ha beregnet dzndz^n, er neste steg å kalkulere gradientene for vektene og biasene:

dWn=dzn(an1)T,dbn=dzn\begin{aligned} dW^n &= dz^n \cdot (a^{n-1})^T,\\ db^n &= dz^n \end{aligned}

Disse gradientene beskriver hvor mye hver vekt og bias i utgangslaget bør justeres for å redusere tapet.

Her er (an1)T(a^{n-1})^T den transponerte aktiveringsvektoren fra forrige lag. Hvis den opprinnelige vektoren har formen nneurons×1n_{\text{neurons}} \times 1, har dens transponerte form 1×nneurons1 \times n_{\text{neurons}}.

For å fortsette bakoverpropageringen, beregnes den deriverte av tapet med hensyn til aktiveringene i forrige lag som:

dan1=(Wn)Tdznda^{n-1} = (W^n)^T \cdot dz^n

Dette uttrykket gjør det mulig å sende feilsignalet bakover gjennom nettverket, slik at tidligere lag kan justeres under trening.

Propagering av gradienter til de skjulte lagene

For hvert skjult lag ll er prosedyren den samme. Gitt dalda^l:

  1. Beregn den deriverte av tapet med hensyn til preaktiveringene;
  2. Beregn gradientene for vektene og biasene;
  3. Beregn dal1da^{l-1} for å propagere den deriverte bakover.
dzl=dalfl(zl)dWl=dzl(al1)Tdbl=dzldal1=(Wl)Tdzl\begin{aligned} dz^l &= da^l \odot f'^l(z^l)\\ dW^l &= dz^l \cdot (a^{l-1})^T\\ db^l &= dz^l\\ da^{l-1} &= (W^l)^T \cdot dz^l \end{aligned}

Denne prosessen gjentas for hvert foregående lag, trinn for trinn, til input-laget er nådd.

Oppdatering av vekter og bias

Etter at gradientene for alle lag er beregnet, oppdateres vektene og bias ved hjelp av gradient descent-algoritmen:

Wl=WlαdWl,bl=blαdbl.\begin{aligned} W^l &= W^l - \alpha \cdot dW^l,\\ b^l &= b^l - \alpha \cdot db^l. \end{aligned}

Her representerer α\alpha læringsraten, som styrer hvor mye parameterne justeres i hvert treningssteg.

Her er α\alpha læringsraten, en hyperparameter som bestemmer størrelsen på justeringen som brukes på vektene og bias i hvert oppdateringssteg.

question mark

Under tilbakespredning, hvordan oppdaterer et nevralt nettverk vektene og biasene for å minimere tapfunksjonen?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 7

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Suggested prompts:

Can you explain how the chain rule is applied in backpropagation?

What is the difference between pre-activations and activations in a neural network?

Can you provide an example of calculating gradients for a simple neural network?

Awesome!

Completion rate improved to 4

bookBakoverpropagasjon

Sveip for å vise menyen

Bakoverpropagasjon, eller backpropagation, er prosessen med å bestemme hvordan tapfunksjonen endres med hensyn til hver parameter i nevrale nettverk. Målet er å justere disse parameterne på en måte som reduserer det totale tapet.

Denne prosessen baserer seg på gradient descent-algoritmen, som bruker derivater av tapet med hensyn til hvert lags pre-aktiveringsverdier (de rå utgangene før aktiveringsfunksjonen anvendes) og sprer dem bakover gjennom nettverket.

Siden hvert lag bidrar til den endelige prediksjonen, beregnes gradientene steg for steg:

  1. Utfør fremoverpropagasjon for å få utgangene;
  2. Beregn derivaten av tapet med hensyn til utgangens pre-aktivering;
  3. Propager denne derivaten bakover gjennom lagene ved hjelp av kjerneregelen;
  4. Beregn og bruk gradientene for vekter og bias for å oppdatere dem under trening.
Note
Merk

Gradienter representerer endringsraten til en funksjon med hensyn til dens input, altså dens derivater. De indikerer hvor mye en liten endring i vekter, bias eller aktiveringer påvirker tapfunksjonen, og styrer modellens læringsprosess gjennom gradient descent.

Notasjon

For å gjøre forklaringen tydeligere, bruker vi følgende notasjon:

  • WlW^l er vektmatrisen til lag ll;
  • blb^l er bias-vektoren til lag ll;
  • zlz^l er pre-aktiveringsvektoren til lag ll;
  • ala^l er aktiveringsvektoren til lag ll;

Ved å sette a0a^0 til xx (inputene), kan fremoverpropagasjon i en perseptron med n lag beskrives som følgende sekvens av operasjoner:

a0=x,......z1=W1a0+b1,zl=Wlal1+bl,zn=Wnan1+bn,a1=f1(z1),al=fl(zl),an=fn(zn),......y^=an.\begin{aligned} a^0 &= x, & &... & &...\\ z^1 &= W^1 a^0 + b^1, & z^l &= W^l a^{l-1} + b^l, & z^n &= W^n a^{n-1} + b^n,\\ a^1 &= f^1(z^1), & a^l &= f^l(z^l), & a^n &= f^n(z^n),\\ &... & &... & \hat y &= a^n. \end{aligned}

For å beskrive tilbakepropagasjon matematisk, introduseres følgende notasjoner:

  • dalda^l: derivert av tapet med hensyn til aktiveringene i lag ll;
  • dzldz^l: derivert av tapet med hensyn til pre-aktiveringene i lag ll (før aktiveringsfunksjonen anvendes);
  • dWldW^l: derivert av tapet med hensyn til vektene i lag ll;
  • dbldb^l: derivert av tapet med hensyn til biasene i lag ll.

Beregning av gradienter for utgangslaget

I det siste laget nn er det første steget å beregne gradienten av tapet med hensyn til aktiveringene i utgangslaget, betegnet som danda^n.

Deretter, ved bruk av kjerneregelen, beregnes gradienten av tapet med hensyn til pre-aktiveringene i utgangslaget som:

dzn=danfn(zn)dz^n = da^n \odot f'^n(z^n)

Her representerer fn(zn)f'^n(z^n) den deriverte av aktiveringsfunksjonen i lag nn, og symbolet \odot angir elementvis multiplikasjon.

Note
Merk

Symbolet \odot angir elementvis multiplikasjon, som betyr at hvert element i én vektor multipliseres med det tilsvarende elementet i en annen vektor. Til sammenligning representerer symbolet \cdot skalarproduktet, brukt for vanlig matrise- eller vektormultiplikasjon. Begrepet fnf'^n refererer til den deriverte av aktiveringsfunksjonen i utgangslaget.

Denne verdien indikerer hvor sensitiv tapfunksjonen er for endringer i preaktiveringsverdiene til utgangslaget.

Etter å ha beregnet dzndz^n, er neste steg å kalkulere gradientene for vektene og biasene:

dWn=dzn(an1)T,dbn=dzn\begin{aligned} dW^n &= dz^n \cdot (a^{n-1})^T,\\ db^n &= dz^n \end{aligned}

Disse gradientene beskriver hvor mye hver vekt og bias i utgangslaget bør justeres for å redusere tapet.

Her er (an1)T(a^{n-1})^T den transponerte aktiveringsvektoren fra forrige lag. Hvis den opprinnelige vektoren har formen nneurons×1n_{\text{neurons}} \times 1, har dens transponerte form 1×nneurons1 \times n_{\text{neurons}}.

For å fortsette bakoverpropageringen, beregnes den deriverte av tapet med hensyn til aktiveringene i forrige lag som:

dan1=(Wn)Tdznda^{n-1} = (W^n)^T \cdot dz^n

Dette uttrykket gjør det mulig å sende feilsignalet bakover gjennom nettverket, slik at tidligere lag kan justeres under trening.

Propagering av gradienter til de skjulte lagene

For hvert skjult lag ll er prosedyren den samme. Gitt dalda^l:

  1. Beregn den deriverte av tapet med hensyn til preaktiveringene;
  2. Beregn gradientene for vektene og biasene;
  3. Beregn dal1da^{l-1} for å propagere den deriverte bakover.
dzl=dalfl(zl)dWl=dzl(al1)Tdbl=dzldal1=(Wl)Tdzl\begin{aligned} dz^l &= da^l \odot f'^l(z^l)\\ dW^l &= dz^l \cdot (a^{l-1})^T\\ db^l &= dz^l\\ da^{l-1} &= (W^l)^T \cdot dz^l \end{aligned}

Denne prosessen gjentas for hvert foregående lag, trinn for trinn, til input-laget er nådd.

Oppdatering av vekter og bias

Etter at gradientene for alle lag er beregnet, oppdateres vektene og bias ved hjelp av gradient descent-algoritmen:

Wl=WlαdWl,bl=blαdbl.\begin{aligned} W^l &= W^l - \alpha \cdot dW^l,\\ b^l &= b^l - \alpha \cdot db^l. \end{aligned}

Her representerer α\alpha læringsraten, som styrer hvor mye parameterne justeres i hvert treningssteg.

Her er α\alpha læringsraten, en hyperparameter som bestemmer størrelsen på justeringen som brukes på vektene og bias i hvert oppdateringssteg.

question mark

Under tilbakespredning, hvordan oppdaterer et nevralt nettverk vektene og biasene for å minimere tapfunksjonen?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 7
some-alt