Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Bakåtriktad Spridning | Neuronnätverk Från Grunden
Introduktion till neurala nätverk

bookBakåtriktad Spridning

Bakåtriktad propagiering, eller backpropagation, är processen att bestämma hur förlustfunktionen förändras med avseende på varje parameter i det neurala nätverket. Målet är att justera dessa parametrar på ett sätt som minskar den totala förlusten.

Denna process bygger på gradientnedstigning-algoritmen, som använder derivator av förlusten med avseende på varje lags pre-aktiveringsvärden (de råa utdata innan aktiveringsfunktionen tillämpas) och propagerar dem bakåt genom nätverket.

Eftersom varje lager bidrar till den slutliga prediktionen beräknas gradienterna steg för steg:

  1. Utför framåtriktad propagiering för att erhålla utdata;
  2. Beräkna derivatan av förlusten med avseende på utdata pre-aktivering;
  3. Propagera denna derivata bakåt genom lagren med hjälp av kedjeregeln;
  4. Beräkna och använd gradienterna för vikter och biaser för att uppdatera dem under träningen.
Note
Notering

Gradienter representerar ändringshastigheten för en funktion med avseende på dess indata, vilket innebär att de är dess derivator. De visar hur mycket en liten förändring i vikter, biaser eller aktiveringar påverkar förlustfunktionen, och vägleder modellens inlärningsprocess genom gradientnedstigning.

Notation

För att göra förklaringen tydligare används följande notation:

  • WlW^l är viktmatrisen för lager ll;
  • blb^l är vektorn av biaser för lager ll;
  • zlz^l är vektorn av pre-aktiveringar för lager ll;
  • ala^l är vektorn av aktiveringar för lager ll;

Genom att sätta a0a^0 till xx (indata), kan framåtriktad propagiering i en perceptron med n lager beskrivas som följande sekvens av 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}

För att beskriva backpropagation matematiskt introduceras följande notationer:

  • dalda^l: derivatan av förlusten med avseende på aktiveringar i lager ll;
  • dzldz^l: derivatan av förlusten med avseende på pre-aktiveringar i lager ll (innan aktiveringsfunktionen appliceras);
  • dWldW^l: derivatan av förlusten med avseende på vikterna i lager ll;
  • dbldb^l: derivatan av förlusten med avseende på bias i lager ll.

Beräkning av gradienter för utgångslagret

I det sista lagret nn är det första steget att beräkna gradienten av förlusten med avseende på aktiveringar i utgångslagret, betecknat som danda^n.

Därefter, med hjälp av kedjeregeln, beräknas gradienten av förlusten med avseende på pre-aktiveringar i utgångslagret som:

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

Här representerar fn(zn)f'^n(z^n) derivatan av aktiveringsfunktionen i lager nn, och symbolen \odot betecknar elementvis multiplikation.

Note
Notering

Symbolen \odot betecknar elementvis multiplikation, vilket innebär att varje element i en vektor multipliceras med motsvarande element i en annan vektor. Däremot representerar symbolen \cdot skalärprodukt, som används för vanlig matris- eller vektormultiplikation. Termen fnf'^n avser derivatan av aktiveringsfunktionen i utgångslagret.

Detta värde indikerar hur känslig förlustfunktionen är för förändringar i pre-aktiveringsvärdena i utgångslagret.

Efter att ha beräknat dzndz^n är nästa steg att räkna ut gradienterna för vikterna och biaserna:

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

Dessa gradienter beskriver hur mycket varje vikt och bias i utgångslagret bör justeras för att minska förlusten.

Här är (an1)T(a^{n-1})^T den transponerade aktiveringsvektorn från föregående lager. Om den ursprungliga vektorn har formen nneurons×1n_{\text{neurons}} \times 1, har dess transponat formen 1×nneurons1 \times n_{\text{neurons}}.

För att fortsätta bakåtspridningen beräknas derivatan av förlusten med avseende på aktiveringarna i föregående lager som:

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

Detta uttryck möjliggör att felssignalen kan föras bakåt genom nätverket, vilket möjliggör justering av tidigare lager under träningen.

Propagering av gradienter till de dolda lagren

För varje dolt lager ll är proceduren densamma. Givet dalda^l:

  1. Beräkna derivatan av förlusten med avseende på pre-aktiveringar;
  2. Beräkna gradienterna för vikterna och biaserna;
  3. Beräkna dal1da^{l-1} för att föra derivatan bakåt.
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}

Denna process upprepas för varje föregående lager, steg för steg, tills inmatningslagret nås.

Uppdatering av vikter och bias

Efter att ha beräknat gradienterna för alla lager uppdateras vikterna och bias med hjälp av gradientnedstigning:

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}

Här representerar α\alpha inlärningshastigheten, som styr hur mycket parametrarna justeras vid varje träningssteg.

Här är α\alpha inlärningshastigheten, en hyperparameter som avgör storleken på justeringen som tillämpas på vikter och bias vid varje uppdateringssteg.

question mark

Under backpropagation, hur uppdaterar ett neuralt nätverk sina vikter och biaser för att minimera förlustfunktionen?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 7

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Awesome!

Completion rate improved to 4

bookBakåtriktad Spridning

Svep för att visa menyn

Bakåtriktad propagiering, eller backpropagation, är processen att bestämma hur förlustfunktionen förändras med avseende på varje parameter i det neurala nätverket. Målet är att justera dessa parametrar på ett sätt som minskar den totala förlusten.

Denna process bygger på gradientnedstigning-algoritmen, som använder derivator av förlusten med avseende på varje lags pre-aktiveringsvärden (de råa utdata innan aktiveringsfunktionen tillämpas) och propagerar dem bakåt genom nätverket.

Eftersom varje lager bidrar till den slutliga prediktionen beräknas gradienterna steg för steg:

  1. Utför framåtriktad propagiering för att erhålla utdata;
  2. Beräkna derivatan av förlusten med avseende på utdata pre-aktivering;
  3. Propagera denna derivata bakåt genom lagren med hjälp av kedjeregeln;
  4. Beräkna och använd gradienterna för vikter och biaser för att uppdatera dem under träningen.
Note
Notering

Gradienter representerar ändringshastigheten för en funktion med avseende på dess indata, vilket innebär att de är dess derivator. De visar hur mycket en liten förändring i vikter, biaser eller aktiveringar påverkar förlustfunktionen, och vägleder modellens inlärningsprocess genom gradientnedstigning.

Notation

För att göra förklaringen tydligare används följande notation:

  • WlW^l är viktmatrisen för lager ll;
  • blb^l är vektorn av biaser för lager ll;
  • zlz^l är vektorn av pre-aktiveringar för lager ll;
  • ala^l är vektorn av aktiveringar för lager ll;

Genom att sätta a0a^0 till xx (indata), kan framåtriktad propagiering i en perceptron med n lager beskrivas som följande sekvens av 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}

För att beskriva backpropagation matematiskt introduceras följande notationer:

  • dalda^l: derivatan av förlusten med avseende på aktiveringar i lager ll;
  • dzldz^l: derivatan av förlusten med avseende på pre-aktiveringar i lager ll (innan aktiveringsfunktionen appliceras);
  • dWldW^l: derivatan av förlusten med avseende på vikterna i lager ll;
  • dbldb^l: derivatan av förlusten med avseende på bias i lager ll.

Beräkning av gradienter för utgångslagret

I det sista lagret nn är det första steget att beräkna gradienten av förlusten med avseende på aktiveringar i utgångslagret, betecknat som danda^n.

Därefter, med hjälp av kedjeregeln, beräknas gradienten av förlusten med avseende på pre-aktiveringar i utgångslagret som:

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

Här representerar fn(zn)f'^n(z^n) derivatan av aktiveringsfunktionen i lager nn, och symbolen \odot betecknar elementvis multiplikation.

Note
Notering

Symbolen \odot betecknar elementvis multiplikation, vilket innebär att varje element i en vektor multipliceras med motsvarande element i en annan vektor. Däremot representerar symbolen \cdot skalärprodukt, som används för vanlig matris- eller vektormultiplikation. Termen fnf'^n avser derivatan av aktiveringsfunktionen i utgångslagret.

Detta värde indikerar hur känslig förlustfunktionen är för förändringar i pre-aktiveringsvärdena i utgångslagret.

Efter att ha beräknat dzndz^n är nästa steg att räkna ut gradienterna för vikterna och biaserna:

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

Dessa gradienter beskriver hur mycket varje vikt och bias i utgångslagret bör justeras för att minska förlusten.

Här är (an1)T(a^{n-1})^T den transponerade aktiveringsvektorn från föregående lager. Om den ursprungliga vektorn har formen nneurons×1n_{\text{neurons}} \times 1, har dess transponat formen 1×nneurons1 \times n_{\text{neurons}}.

För att fortsätta bakåtspridningen beräknas derivatan av förlusten med avseende på aktiveringarna i föregående lager som:

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

Detta uttryck möjliggör att felssignalen kan föras bakåt genom nätverket, vilket möjliggör justering av tidigare lager under träningen.

Propagering av gradienter till de dolda lagren

För varje dolt lager ll är proceduren densamma. Givet dalda^l:

  1. Beräkna derivatan av förlusten med avseende på pre-aktiveringar;
  2. Beräkna gradienterna för vikterna och biaserna;
  3. Beräkna dal1da^{l-1} för att föra derivatan bakåt.
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}

Denna process upprepas för varje föregående lager, steg för steg, tills inmatningslagret nås.

Uppdatering av vikter och bias

Efter att ha beräknat gradienterna för alla lager uppdateras vikterna och bias med hjälp av gradientnedstigning:

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}

Här representerar α\alpha inlärningshastigheten, som styr hur mycket parametrarna justeras vid varje träningssteg.

Här är α\alpha inlärningshastigheten, en hyperparameter som avgör storleken på justeringen som tillämpas på vikter och bias vid varje uppdateringssteg.

question mark

Under backpropagation, hur uppdaterar ett neuralt nätverk sina vikter och biaser för att minimera förlustfunktionen?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 7
some-alt