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 (backprop) er prosessen der man beregner hvordan tapfunksjonen endres med hensyn til hver parameter i nettverket. Målet er å oppdatere parameterne i retning som reduserer tapet.

For å oppnå dette bruker vi gradient descent-algoritmen og beregner derivater av tapet med hensyn til hvert lags pre-aktiveringsverdier (rå utgangsverdier før aktiveringsfunksjonen anvendes) og sprer dem bakover.

Hvert lag bidrar til den endelige prediksjonen, så gradientene må beregnes på en strukturert måte:

  1. Utfør fremoverpropagasjon;
  2. Beregn derivatet av tapet med hensyn til utgangens pre-aktivering;
  3. Propager dette derivatet bakover gjennom lagene ved hjelp av kjerneregelen;
  4. Beregn gradienter for vekter og bias for å oppdatere dem.
Note
Merk

Gradienter representerer endringsraten til en funksjon med hensyn til dens input, altså dens derivater. De viser 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 tilbakepropagering matematisk, introduserer vi 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 beregner vi først gradienten av tapet med hensyn til aktiveringene i utgangslaget, danda^n. Deretter, ved å bruke kjerneregelen, beregner vi gradienten av tapet med hensyn til utgangslagets pre-aktiveringer:

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

Symbolet \odot representerer elementvis multiplikasjon. Siden vi arbeider med vektorer og matriser, representerer det vanlige multiplikasjonssymbolet \cdot skalarproduktet i stedet. fnf'^n er derivert av aktiveringsfunksjonen i utgangslaget.

Denne størrelsen angir hvor følsom tapfunksjonen er for endringer i utgangslagets pre-aktivering.

Når vi har dzn\text d z^n, beregner vi gradientene for vektene og biasene:

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

hvor (an1)T(a^{n-1})^T er den transponerte vektoren av aktivering fra forrige lag. Gitt at den opprinnelige vektoren er en nneurons×1n_{neurons} \times 1 vektor, er den transponerte vektoren 1×nneurons1 \times n_{neurons}.

For å propagere dette bakover, beregner vi den deriverte av tapet med hensyn til aktiveringene i forrige lag:

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

Propagere 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 pre-aktiveringene;
  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}

Dette trinnet gjentas til vi når inndatalaget.

Oppdatering av vekter og bias

Når vi har beregnet gradientene for alle lag, oppdaterer vi vektene og bias ved hjelp av gradient descent:

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

der α\alpha er læringsraten, som styrer hvor mye vi justerer parameterne.

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

Awesome!

Completion rate improved to 4

bookBakoverpropagasjon

Sveip for å vise menyen

Bakoverpropagasjon (backprop) er prosessen der man beregner hvordan tapfunksjonen endres med hensyn til hver parameter i nettverket. Målet er å oppdatere parameterne i retning som reduserer tapet.

For å oppnå dette bruker vi gradient descent-algoritmen og beregner derivater av tapet med hensyn til hvert lags pre-aktiveringsverdier (rå utgangsverdier før aktiveringsfunksjonen anvendes) og sprer dem bakover.

Hvert lag bidrar til den endelige prediksjonen, så gradientene må beregnes på en strukturert måte:

  1. Utfør fremoverpropagasjon;
  2. Beregn derivatet av tapet med hensyn til utgangens pre-aktivering;
  3. Propager dette derivatet bakover gjennom lagene ved hjelp av kjerneregelen;
  4. Beregn gradienter for vekter og bias for å oppdatere dem.
Note
Merk

Gradienter representerer endringsraten til en funksjon med hensyn til dens input, altså dens derivater. De viser 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 tilbakepropagering matematisk, introduserer vi 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 beregner vi først gradienten av tapet med hensyn til aktiveringene i utgangslaget, danda^n. Deretter, ved å bruke kjerneregelen, beregner vi gradienten av tapet med hensyn til utgangslagets pre-aktiveringer:

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

Symbolet \odot representerer elementvis multiplikasjon. Siden vi arbeider med vektorer og matriser, representerer det vanlige multiplikasjonssymbolet \cdot skalarproduktet i stedet. fnf'^n er derivert av aktiveringsfunksjonen i utgangslaget.

Denne størrelsen angir hvor følsom tapfunksjonen er for endringer i utgangslagets pre-aktivering.

Når vi har dzn\text d z^n, beregner vi gradientene for vektene og biasene:

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

hvor (an1)T(a^{n-1})^T er den transponerte vektoren av aktivering fra forrige lag. Gitt at den opprinnelige vektoren er en nneurons×1n_{neurons} \times 1 vektor, er den transponerte vektoren 1×nneurons1 \times n_{neurons}.

For å propagere dette bakover, beregner vi den deriverte av tapet med hensyn til aktiveringene i forrige lag:

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

Propagere 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 pre-aktiveringene;
  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}

Dette trinnet gjentas til vi når inndatalaget.

Oppdatering av vekter og bias

Når vi har beregnet gradientene for alle lag, oppdaterer vi vektene og bias ved hjelp av gradient descent:

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

der α\alpha er læringsraten, som styrer hvor mye vi justerer parameterne.

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