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

bookBaglæns Propagation

Baglæns forplantning, eller backpropagation, er processen hvor man bestemmer, hvordan tabfunktionen ændrer sig i forhold til hver parameter i det neurale netværk. Målet er at justere disse parametre på en måde, der reducerer det samlede tab.

Denne proces er baseret på gradient descent-algoritmen, som anvender afledte af tabet i forhold til hvert lags præ-aktiveringsværdier (de rå output før aktiveringsfunktionen anvendes) og forplanter dem baglæns gennem netværket.

Da hvert lag bidrager til den endelige forudsigelse, beregnes gradienterne trin for trin:

  1. Udfør fremad forplantning for at opnå output;
  2. Beregn den afledte af tabet i forhold til output præ-aktivering;
  3. Forplant denne afledte baglæns gennem lagene ved hjælp af kædereglen;
  4. Beregn og anvend gradienterne for vægte og bias til at opdatere dem under træning.
Note
Bemærk

Gradienter repræsenterer ændringshastigheden af en funktion i forhold 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 fremad forplantning 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 er det første skridt at beregne gradienten af tabet med hensyn til aktiveringerne i outputlaget, betegnet som danda^n.

Derefter, ved brug af kædereglen, beregnes gradienten af tabet med hensyn til præ-aktiveringerne i outputlaget som:

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

Her repræsenterer fn(zn)f'^n(z^n) den afledte af aktiveringsfunktionen i lag nn, og symbolet \odot angiver elementvis multiplikation.

Note
Bemærk

Symbolet \odot angiver elementvis multiplikation, hvilket betyder, at hvert element i én vektor multipliceres med det tilsvarende element i en anden vektor. Til sammenligning repræsenterer symbolet \cdot prikproduktet, som bruges til standard matrix- eller vektormultiplikation. Udtrykket fnf'^n refererer til den afledte af aktiveringsfunktionen i outputlaget.

Denne værdi angiver, hvor følsom tab-funktionen er over for ændringer i præaktiveringsværdierne i outputlaget.

Efter beregning af dzndz^n er næste trin at udregne gradienterne for vægte og bias:

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

Disse gradienter beskriver, hvor meget hver vægt og bias i outputlaget skal justeres for at minimere tabet.

Her er (an1)T(a^{n-1})^T den transponerede aktiveringsvektor fra det forrige lag. Hvis den oprindelige vektor har formen nneurons×1n_{\text{neurons}} \times 1, har dens transponerede formen 1×nneurons1 \times n_{\text{neurons}}.

For at fortsætte baglænspropageringen beregnes den afledte af tabet med hensyn til aktiveringerne i det forrige lag som:

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

Dette udtryk muliggør, at fejlsignalet kan føres baglæns gennem netværket, hvilket gør det muligt at justere tidligere lag under træningen.

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 føre den afledte baglæns.
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 proces gentages for hvert forudgående lag, trin for trin, indtil inputlaget nås.

Opdatering af vægte og bias

Efter beregning af gradienterne for alle lag opdateres vægtene og bias ved hjælp af 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 repræsenterer α\alpha læringsraten, som styrer, hvor meget parametrene justeres under hvert træningsskridt.

Her er α\alpha læringsraten, en hyperparameter der bestemmer størrelsen af justeringen, der anvendes på vægte og bias under hver opdatering.

question mark

Under bagudpropagering, 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

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

bookBaglæns Propagation

Stryg for at vise menuen

Baglæns forplantning, eller backpropagation, er processen hvor man bestemmer, hvordan tabfunktionen ændrer sig i forhold til hver parameter i det neurale netværk. Målet er at justere disse parametre på en måde, der reducerer det samlede tab.

Denne proces er baseret på gradient descent-algoritmen, som anvender afledte af tabet i forhold til hvert lags præ-aktiveringsværdier (de rå output før aktiveringsfunktionen anvendes) og forplanter dem baglæns gennem netværket.

Da hvert lag bidrager til den endelige forudsigelse, beregnes gradienterne trin for trin:

  1. Udfør fremad forplantning for at opnå output;
  2. Beregn den afledte af tabet i forhold til output præ-aktivering;
  3. Forplant denne afledte baglæns gennem lagene ved hjælp af kædereglen;
  4. Beregn og anvend gradienterne for vægte og bias til at opdatere dem under træning.
Note
Bemærk

Gradienter repræsenterer ændringshastigheden af en funktion i forhold 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 fremad forplantning 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 er det første skridt at beregne gradienten af tabet med hensyn til aktiveringerne i outputlaget, betegnet som danda^n.

Derefter, ved brug af kædereglen, beregnes gradienten af tabet med hensyn til præ-aktiveringerne i outputlaget som:

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

Her repræsenterer fn(zn)f'^n(z^n) den afledte af aktiveringsfunktionen i lag nn, og symbolet \odot angiver elementvis multiplikation.

Note
Bemærk

Symbolet \odot angiver elementvis multiplikation, hvilket betyder, at hvert element i én vektor multipliceres med det tilsvarende element i en anden vektor. Til sammenligning repræsenterer symbolet \cdot prikproduktet, som bruges til standard matrix- eller vektormultiplikation. Udtrykket fnf'^n refererer til den afledte af aktiveringsfunktionen i outputlaget.

Denne værdi angiver, hvor følsom tab-funktionen er over for ændringer i præaktiveringsværdierne i outputlaget.

Efter beregning af dzndz^n er næste trin at udregne gradienterne for vægte og bias:

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

Disse gradienter beskriver, hvor meget hver vægt og bias i outputlaget skal justeres for at minimere tabet.

Her er (an1)T(a^{n-1})^T den transponerede aktiveringsvektor fra det forrige lag. Hvis den oprindelige vektor har formen nneurons×1n_{\text{neurons}} \times 1, har dens transponerede formen 1×nneurons1 \times n_{\text{neurons}}.

For at fortsætte baglænspropageringen beregnes den afledte af tabet med hensyn til aktiveringerne i det forrige lag som:

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

Dette udtryk muliggør, at fejlsignalet kan føres baglæns gennem netværket, hvilket gør det muligt at justere tidligere lag under træningen.

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 føre den afledte baglæns.
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 proces gentages for hvert forudgående lag, trin for trin, indtil inputlaget nås.

Opdatering af vægte og bias

Efter beregning af gradienterne for alle lag opdateres vægtene og bias ved hjælp af 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 repræsenterer α\alpha læringsraten, som styrer, hvor meget parametrene justeres under hvert træningsskridt.

Her er α\alpha læringsraten, en hyperparameter der bestemmer størrelsen af justeringen, der anvendes på vægte og bias under hver opdatering.

question mark

Under bagudpropagering, 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