Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Bagudpropagering | Sektion
/
Grundlæggende Neurale Netværk

bookBagudpropagering

Stryg for at vise menuen

Baglænspropagering, 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 med hensyn til hvert lags præ-aktiveringsværdier (de rå output før aktiveringsfunktionen anvendes) og propagerer dem baglæns gennem netværket.

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

  1. Udfør fremadpropagering for at opnå output;
  2. Beregn den afledte af tabet med hensyn til output præ-aktivering;
  3. Propager denne afledte baglæns gennem lagene ved hjælp af kædereglen;
  4. Beregn og anvend gradienterne for vægte og biaser 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, biaser 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 biaser 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 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 reducere 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 fejl-signalet 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 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}

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 1. Kapitel 14

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

Sektion 1. Kapitel 14
some-alt