Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Bagudpropagering | Neuralt Netværk fra Bunden
Introduktion til neurale netværk

bookBagudpropagering

Baglæns propagering (backprop) er processen, hvor man beregner, hvordan tabfunktionen ændrer sig i forhold til hver parameter i netværket. Målet er at opdatere parametrene i den retning, der reducerer tabet.

For at opnå dette anvendes gradient descent-algoritmen, og der beregnes afledte af tabet med hensyn til hvert lags præ-aktiveringsværdier (rå outputværdier før aktiveringsfunktionen anvendes), som derefter propageres bagud.

Hvert lag bidrager til den endelige forudsigelse, så gradienterne skal beregnes på en struktureret måde:

  1. Udfør fremadpropagering;
  2. Beregn den afledte af tabet med hensyn til output præ-aktivering;
  3. Propager denne afledte bagud gennem lagene ved hjælp af kædereglen;
  4. Beregn gradienter for vægte og bias for at opdatere dem.
Note
Bemærk

Gradienter repræsenterer ændringshastigheden af en funktion med hensyn til dens input, hvilket betyder, at de er dens afledte. De angiver, hvor meget en lille ændring i vægte, bias eller aktiveringer påvirker tabfunktionen, og guider modellens læringsproces gennem gradient descent.

Notation

For at gøre forklaringen tydeligere anvendes følgende notation:

  • WlW^l er vægtmatricen for lag ll;
  • blb^l er vektoren af bias for lag ll;
  • zlz^l er vektoren af præ-aktiveringer for lag ll;
  • ala^l er vektoren af aktiveringer for lag ll;

Ved at sætte a0a^0 til xx (input), kan fremadpropagering i en perceptron med n lag beskrives som følgende sekvens af operationer:

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 at beskrive backpropagation matematisk, introduceres følgende notationer:

  • dalda^l: afledt af tabet med hensyn til aktiveringerne i lag ll;
  • dzldz^l: afledt af tabet med hensyn til præ-aktiveringerne i lag ll (før aktiveringsfunktionen anvendes);
  • dWldW^l: afledt af tabet med hensyn til vægtene i lag ll;
  • dbldb^l: afledt af tabet med hensyn til bias i lag ll.

Beregning af gradienter for outputlaget

I det sidste lag nn beregnes først gradienten af tabet med hensyn til aktiveringerne i outputlaget, danda^n. Dernæst, ved brug af kædereglen, beregnes gradienten af tabet med hensyn til outputlagets præ-aktiveringer:

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

Symbolet \odot repræsenterer elementvis multiplikation. Da der arbejdes med vektorer og matricer, repræsenterer det sædvanlige multiplikationstegn \cdot i stedet prikproduktet. fnf'^n er afledte af aktiveringsfunktionen for outputlaget.

Denne størrelse repræsenterer, hvor følsom tab-funktionen er over for ændringer i outputlagets præaktivering.

Når vi har dzn\text d z^n, beregner vi gradienter for vægte og bias:

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 transponerede vektor af aktivering fra det forrige lag. Da den oprindelige vektor er en nneurons×1n_{neurons} \times 1 vektor, er den transponerede vektor 1×nneurons1 \times n_{neurons}.

For at propagere dette bagud beregner vi den afledte af tabet med hensyn til aktiveringerne i det forrige lag:

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

Propagering af gradienter til de skjulte lag

For hvert skjult lag ll er proceduren den samme. Givet dalda^l:

  1. Beregn den afledte af tabet med hensyn til præaktiveringerne;
  2. Beregn gradienterne for vægte og bias;
  3. Beregn dal1da^{l-1} for at propagere den afledte bagud.
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 trin gentages, indtil vi når inputlaget.

Opdatering af vægte og bias

Når vi har beregnet gradienterne for alle lag, opdateres vægte og bias ved hjælp af 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}

hvor α\alpha er læringsraten, som styrer, hvor meget vi justerer parametrene.

question mark

Under bagpropagering, hvordan opdaterer et neuralt netværk sine vægte og bias for at minimere tabfunktionen?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 7

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Awesome!

Completion rate improved to 4

bookBagudpropagering

Stryg for at vise menuen

Baglæns propagering (backprop) er processen, hvor man beregner, hvordan tabfunktionen ændrer sig i forhold til hver parameter i netværket. Målet er at opdatere parametrene i den retning, der reducerer tabet.

For at opnå dette anvendes gradient descent-algoritmen, og der beregnes afledte af tabet med hensyn til hvert lags præ-aktiveringsværdier (rå outputværdier før aktiveringsfunktionen anvendes), som derefter propageres bagud.

Hvert lag bidrager til den endelige forudsigelse, så gradienterne skal beregnes på en struktureret måde:

  1. Udfør fremadpropagering;
  2. Beregn den afledte af tabet med hensyn til output præ-aktivering;
  3. Propager denne afledte bagud gennem lagene ved hjælp af kædereglen;
  4. Beregn gradienter for vægte og bias for at opdatere dem.
Note
Bemærk

Gradienter repræsenterer ændringshastigheden af en funktion med hensyn til dens input, hvilket betyder, at de er dens afledte. De angiver, hvor meget en lille ændring i vægte, bias eller aktiveringer påvirker tabfunktionen, og guider modellens læringsproces gennem gradient descent.

Notation

For at gøre forklaringen tydeligere anvendes følgende notation:

  • WlW^l er vægtmatricen for lag ll;
  • blb^l er vektoren af bias for lag ll;
  • zlz^l er vektoren af præ-aktiveringer for lag ll;
  • ala^l er vektoren af aktiveringer for lag ll;

Ved at sætte a0a^0 til xx (input), kan fremadpropagering i en perceptron med n lag beskrives som følgende sekvens af operationer:

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 at beskrive backpropagation matematisk, introduceres følgende notationer:

  • dalda^l: afledt af tabet med hensyn til aktiveringerne i lag ll;
  • dzldz^l: afledt af tabet med hensyn til præ-aktiveringerne i lag ll (før aktiveringsfunktionen anvendes);
  • dWldW^l: afledt af tabet med hensyn til vægtene i lag ll;
  • dbldb^l: afledt af tabet med hensyn til bias i lag ll.

Beregning af gradienter for outputlaget

I det sidste lag nn beregnes først gradienten af tabet med hensyn til aktiveringerne i outputlaget, danda^n. Dernæst, ved brug af kædereglen, beregnes gradienten af tabet med hensyn til outputlagets præ-aktiveringer:

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

Symbolet \odot repræsenterer elementvis multiplikation. Da der arbejdes med vektorer og matricer, repræsenterer det sædvanlige multiplikationstegn \cdot i stedet prikproduktet. fnf'^n er afledte af aktiveringsfunktionen for outputlaget.

Denne størrelse repræsenterer, hvor følsom tab-funktionen er over for ændringer i outputlagets præaktivering.

Når vi har dzn\text d z^n, beregner vi gradienter for vægte og bias:

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 transponerede vektor af aktivering fra det forrige lag. Da den oprindelige vektor er en nneurons×1n_{neurons} \times 1 vektor, er den transponerede vektor 1×nneurons1 \times n_{neurons}.

For at propagere dette bagud beregner vi den afledte af tabet med hensyn til aktiveringerne i det forrige lag:

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

Propagering af gradienter til de skjulte lag

For hvert skjult lag ll er proceduren den samme. Givet dalda^l:

  1. Beregn den afledte af tabet med hensyn til præaktiveringerne;
  2. Beregn gradienterne for vægte og bias;
  3. Beregn dal1da^{l-1} for at propagere den afledte bagud.
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 trin gentages, indtil vi når inputlaget.

Opdatering af vægte og bias

Når vi har beregnet gradienterne for alle lag, opdateres vægte og bias ved hjælp af 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}

hvor α\alpha er læringsraten, som styrer, hvor meget vi justerer parametrene.

question mark

Under bagpropagering, hvordan opdaterer et neuralt netværk sine vægte og bias for at minimere tabfunktionen?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 7
some-alt