Bagudpropagering
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:
- 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 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:
- Wl er vægtmatricen for lag l;
- bl er vektoren af bias for lag l;
- zl er vektoren af præ-aktiveringer for lag l;
- al er vektoren af aktiveringer 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. Dernæst, ved brug af kædereglen, beregnes gradienten af tabet med hensyn til outputlagets præ-aktiveringer:
dzn=dan⊙f′n(zn)Symbolet ⊙ repræsenterer elementvis multiplikation. Da der arbejdes med vektorer og matricer, repræsenterer det sædvanlige multiplikationstegn ⋅ i stedet prikproduktet. f′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, 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 beregner vi den 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, opdateres 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
Bagudpropagering
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:
- 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 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:
- Wl er vægtmatricen for lag l;
- bl er vektoren af bias for lag l;
- zl er vektoren af præ-aktiveringer for lag l;
- al er vektoren af aktiveringer 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. Dernæst, ved brug af kædereglen, beregnes gradienten af tabet med hensyn til outputlagets præ-aktiveringer:
dzn=dan⊙f′n(zn)Symbolet ⊙ repræsenterer elementvis multiplikation. Da der arbejdes med vektorer og matricer, repræsenterer det sædvanlige multiplikationstegn ⋅ i stedet prikproduktet. f′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, 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 beregner vi den 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, opdateres 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!