Baglæns Propagation
Baglæns propagation (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 propagere bagud.
Hvert lag bidrager til den endelige forudsigelse, så gradienterne skal beregnes på en struktureret måde:
- Udfør fremadpropagering;
- Beregn den afledte af tabet med hensyn til output præ-aktivering;
- Propager denne afledte bagud gennem lagene ved hjælp af kædereglen;
- Beregn gradienter for vægte og bias for at opdatere dem.
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:
- Wl er vægtmatricen for lag l;
- bl er bias-vektoren for lag l;
- zl er præ-aktiveringsvektoren for lag l;
- al er aktiveringsvektoren for lag l;
Ved at sætte a0 til x (input), kan fremadpropagering i en perceptron med n lag beskrives som følgende sekvens af operationer:
a0z1a1=x,=W1a0+b1,=f1(z1),...zlal...=Wlal−1+bl,=fl(zl),...znany^...=Wnan−1+bn,=fn(zn),=an.For at beskrive backpropagation matematisk introduceres følgende notationer:
- dal: afledt af tabet med hensyn til aktiveringerne i lag l;
- dzl: afledt af tabet med hensyn til præ-aktiveringerne i lag l (før aktiveringsfunktionen anvendes);
- dWl: afledt af tabet med hensyn til vægtene i lag l;
- dbl: afledt af tabet med hensyn til bias i lag l.
Beregning af gradienter for outputlaget
I det sidste lag n beregnes først gradienten af tabet med hensyn til aktiveringerne i outputlaget, dan. Derefter anvendes kædereglen til at beregne gradienten af tabet med hensyn til outputlagets præ-aktiveringer:
dzn=dan⊙f′n(zn)Symbolet ⊙ repræsenterer elementvis multiplikation. Da vi arbejder med vektorer og matricer, repræsenterer det sædvanlige multiplikationstegn ⋅ i stedet prikproduktet. f′n er afledt 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, beregner vi gradienter for vægte og bias:
dWndbn=dzn⋅(an−1)T=dznhvor (an−1)T er den transponerede vektor af aktivering fra det forrige lag. Da den oprindelige vektor er en nneurons×1 vektor, er den transponerede vektor 1×nneurons.
For at propagere dette bagud beregnes afledte af tabet med hensyn til aktiveringerne i det forrige lag:
dan−1=(Wn)T⋅dznPropagering af gradienter til de skjulte lag
For hvert skjult lag l er proceduren den samme. Givet dal:
- Beregn den afledte af tabet med hensyn til præ-aktiveringerne;
- Beregn gradienterne for vægte og bias;
- Beregn dal−1 for at propagere den afledte bagud.
Dette trin gentages, indtil vi når inputlaget.
Opdatering af vægte og bias
Når vi har beregnet gradienterne for alle lag, opdaterer vi vægte og bias ved hjælp af gradient descent:
Wlbl=Wl−α⋅dWl=bl−α⋅dblhvor α er læringsraten, som styrer, hvor meget vi justerer parametrene.
Tak for dine kommentarer!
Spørg AI
Spørg AI
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
Baglæns Propagation
Stryg for at vise menuen
Baglæns propagation (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 propagere bagud.
Hvert lag bidrager til den endelige forudsigelse, så gradienterne skal beregnes på en struktureret måde:
- Udfør fremadpropagering;
- Beregn den afledte af tabet med hensyn til output præ-aktivering;
- Propager denne afledte bagud gennem lagene ved hjælp af kædereglen;
- Beregn gradienter for vægte og bias for at opdatere dem.
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:
- Wl er vægtmatricen for lag l;
- bl er bias-vektoren for lag l;
- zl er præ-aktiveringsvektoren for lag l;
- al er aktiveringsvektoren for lag l;
Ved at sætte a0 til x (input), kan fremadpropagering i en perceptron med n lag beskrives som følgende sekvens af operationer:
a0z1a1=x,=W1a0+b1,=f1(z1),...zlal...=Wlal−1+bl,=fl(zl),...znany^...=Wnan−1+bn,=fn(zn),=an.For at beskrive backpropagation matematisk introduceres følgende notationer:
- dal: afledt af tabet med hensyn til aktiveringerne i lag l;
- dzl: afledt af tabet med hensyn til præ-aktiveringerne i lag l (før aktiveringsfunktionen anvendes);
- dWl: afledt af tabet med hensyn til vægtene i lag l;
- dbl: afledt af tabet med hensyn til bias i lag l.
Beregning af gradienter for outputlaget
I det sidste lag n beregnes først gradienten af tabet med hensyn til aktiveringerne i outputlaget, dan. Derefter anvendes kædereglen til at beregne gradienten af tabet med hensyn til outputlagets præ-aktiveringer:
dzn=dan⊙f′n(zn)Symbolet ⊙ repræsenterer elementvis multiplikation. Da vi arbejder med vektorer og matricer, repræsenterer det sædvanlige multiplikationstegn ⋅ i stedet prikproduktet. f′n er afledt 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, beregner vi gradienter for vægte og bias:
dWndbn=dzn⋅(an−1)T=dznhvor (an−1)T er den transponerede vektor af aktivering fra det forrige lag. Da den oprindelige vektor er en nneurons×1 vektor, er den transponerede vektor 1×nneurons.
For at propagere dette bagud beregnes afledte af tabet med hensyn til aktiveringerne i det forrige lag:
dan−1=(Wn)T⋅dznPropagering af gradienter til de skjulte lag
For hvert skjult lag l er proceduren den samme. Givet dal:
- Beregn den afledte af tabet med hensyn til præ-aktiveringerne;
- Beregn gradienterne for vægte og bias;
- Beregn dal−1 for at propagere den afledte bagud.
Dette trin gentages, indtil vi når inputlaget.
Opdatering af vægte og bias
Når vi har beregnet gradienterne for alle lag, opdaterer vi vægte og bias ved hjælp af gradient descent:
Wlbl=Wl−α⋅dWl=bl−α⋅dblhvor α er læringsraten, som styrer, hvor meget vi justerer parametrene.
Tak for dine kommentarer!