Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Taaksepäin Suuntautuva Eteneminen | Neuroverkon Rakentaminen Alusta Alkaen
Johdatus neuroverkkoihin

bookTaaksepäin Suuntautuva Eteneminen

Takaisinlevitys eli backpropagation on prosessi, jossa määritetään, miten häviöfunktio muuttuu suhteessa jokaiseen neuroverkon parametriin. Tavoitteena on säätää näitä parametreja siten, että kokonaishäviö pienenee.

Tämä prosessi perustuu gradienttien laskentaan eli gradienttimenetelmään, jossa käytetään häviön derivaattoja suhteessa jokaisen kerroksen pre-aktivaatioarvoihin (raaka-arvot ennen aktivointifunktion soveltamista) ja propagoi ne taaksepäin verkossa.

Koska jokainen kerros vaikuttaa lopulliseen ennusteeseen, gradientit lasketaan vaiheittain:

  1. Suoritetaan eteenpäinlevitys tulosten saamiseksi;
  2. Lasketaan häviön derivaatta suhteessa ulostulon pre-aktivaatioon;
  3. Propagoidaan tämä derivaatta taaksepäin kerrosten läpi käyttäen ketjusääntöä;
  4. Lasketaan ja käytetään gradientteja painojen ja biasien päivittämiseen koulutuksen aikana.
Note
Huomio

Gradientit kuvaavat funktion muutosnopeutta suhteessa sen syötteisiin, eli ne ovat sen derivaattoja. Ne osoittavat, kuinka paljon pieni muutos painoissa, biaseissa tai aktivaatioissa vaikuttaa häviöfunktioon, ohjaten mallin oppimisprosessia gradienttimenetelmän avulla.

Notaatio

Selkeyden vuoksi käytetään seuraavaa notaatiota:

  • WlW^l on kerroksen ll painomatriisi;
  • blb^l on kerroksen ll bias-vektori;
  • zlz^l on kerroksen ll pre-aktivaatioiden vektori;
  • ala^l on kerroksen ll aktivaatioiden vektori;

Kun asetetaan a0a^0 arvoksi xx (syötteet), eteenpäinlevitys perceptronissa, jossa on n kerrosta, voidaan kuvata seuraavalla operaatioketjulla:

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}

Takapropagoinnin matemaattista kuvausta varten otetaan käyttöön seuraavat merkinnät:

  • dalda^l: tappion derivaatta suhteessa aktivaatioihin kerroksessa ll;
  • dzldz^l: tappion derivaatta suhteessa pre-aktivaatioihin kerroksessa ll (ennen aktivointifunktion soveltamista);
  • dWldW^l: tappion derivaatta suhteessa painoihin kerroksessa ll;
  • dbldb^l: tappion derivaatta suhteessa bias-termeihin kerroksessa ll.

Gradienttien laskeminen ulostulokerrokselle

Viimeisessä kerroksessa nn ensimmäinen vaihe on laskea tappion gradientti suhteessa ulostulokerroksen aktivaatioihin, merkittynä danda^n.

Tämän jälkeen, käyttäen ketjusääntöä, tappion gradientti suhteessa ulostulokerroksen pre-aktivaatioihin lasketaan seuraavasti:

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

Tässä fn(zn)f'^n(z^n) tarkoittaa aktivointifunktion derivaattaa kerroksessa nn, ja symboli \odot tarkoittaa alkiokohtaista kertolaskua.

Note
Huomio

Symboli \odot tarkoittaa alkiokohtaista kertolaskua, eli jokainen vektorin alkio kerrotaan vastaavan toisen vektorin alkion kanssa. Sen sijaan symboli \cdot edustaa pistetuloa, jota käytetään tavanomaisessa matriisi- tai vektorikertolaskussa. Termi fnf'^n viittaa aktivointifunktion derivaattaan ulostulokerroksessa.

Tämä arvo ilmaisee, kuinka herkkä häviöfunktio on ulostulokerroksen esiaktivointiarvojen muutoksille.

Kun dzndz^n on laskettu, seuraava vaihe on laskea gradientit painoille ja siirtotermeille:

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

Nämä gradientit kuvaavat, kuinka paljon kutakin painoa ja siirtotermiä ulostulokerroksessa tulisi säätää häviön pienentämiseksi.

Tässä (an1)T(a^{n-1})^T on edellisen kerroksen transponoitu aktivointivektori. Jos alkuperäisen vektorin muoto on nneurons×1n_{\text{neurons}} \times 1, sen transpoosiolla on muoto 1×nneurons1 \times n_{\text{neurons}}.

Takaisinlevityksen jatkamiseksi lasketaan derivaatta häviöstä suhteessa edellisen kerroksen aktivointeihin seuraavasti:

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

Tämä lauseke mahdollistaa virhesignaalin siirtämisen taaksepäin verkossa, mahdollistaen aiempien kerrosten säätämisen koulutuksen aikana.

Gradienttien levittäminen piilokerroksiin

Jokaiselle piilokerrokselle ll menettely on sama. Kun dalda^l on annettu:

  1. Laske derivaatta häviöstä suhteessa esiaktivointeihin;
  2. Laske gradientit painoille ja siirtotermeille;
  3. Laske dal1da^{l-1} derivaatan levittämiseksi taaksepäin.
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}

Tätä prosessia toistetaan jokaiselle edeltävälle kerrokselle vaihe vaiheelta, kunnes saavutetaan syötekerros.

Painojen ja biasien päivittäminen

Kun gradientit on laskettu kaikille kerroksille, painot ja biasit päivitetään käyttämällä gradienttivähenemä-algoritmia:

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}

Tässä α\alpha tarkoittaa oppimisnopeutta, joka määrittää kuinka paljon parametreja säädetään jokaisella koulutusaskeleella.

Tässä α\alpha on oppimisnopeus, hyperparametri, joka määrittää painoihin ja biaseihin kunkin päivitysvaiheen aikana tehtävän säädön suuruuden.

question mark

Takaisinkuljetuksen aikana, miten neuroverkko päivittää painonsa ja bias-arvonsa minimoidakseen tappiofunktion?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 7

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

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

bookTaaksepäin Suuntautuva Eteneminen

Pyyhkäise näyttääksesi valikon

Takaisinlevitys eli backpropagation on prosessi, jossa määritetään, miten häviöfunktio muuttuu suhteessa jokaiseen neuroverkon parametriin. Tavoitteena on säätää näitä parametreja siten, että kokonaishäviö pienenee.

Tämä prosessi perustuu gradienttien laskentaan eli gradienttimenetelmään, jossa käytetään häviön derivaattoja suhteessa jokaisen kerroksen pre-aktivaatioarvoihin (raaka-arvot ennen aktivointifunktion soveltamista) ja propagoi ne taaksepäin verkossa.

Koska jokainen kerros vaikuttaa lopulliseen ennusteeseen, gradientit lasketaan vaiheittain:

  1. Suoritetaan eteenpäinlevitys tulosten saamiseksi;
  2. Lasketaan häviön derivaatta suhteessa ulostulon pre-aktivaatioon;
  3. Propagoidaan tämä derivaatta taaksepäin kerrosten läpi käyttäen ketjusääntöä;
  4. Lasketaan ja käytetään gradientteja painojen ja biasien päivittämiseen koulutuksen aikana.
Note
Huomio

Gradientit kuvaavat funktion muutosnopeutta suhteessa sen syötteisiin, eli ne ovat sen derivaattoja. Ne osoittavat, kuinka paljon pieni muutos painoissa, biaseissa tai aktivaatioissa vaikuttaa häviöfunktioon, ohjaten mallin oppimisprosessia gradienttimenetelmän avulla.

Notaatio

Selkeyden vuoksi käytetään seuraavaa notaatiota:

  • WlW^l on kerroksen ll painomatriisi;
  • blb^l on kerroksen ll bias-vektori;
  • zlz^l on kerroksen ll pre-aktivaatioiden vektori;
  • ala^l on kerroksen ll aktivaatioiden vektori;

Kun asetetaan a0a^0 arvoksi xx (syötteet), eteenpäinlevitys perceptronissa, jossa on n kerrosta, voidaan kuvata seuraavalla operaatioketjulla:

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}

Takapropagoinnin matemaattista kuvausta varten otetaan käyttöön seuraavat merkinnät:

  • dalda^l: tappion derivaatta suhteessa aktivaatioihin kerroksessa ll;
  • dzldz^l: tappion derivaatta suhteessa pre-aktivaatioihin kerroksessa ll (ennen aktivointifunktion soveltamista);
  • dWldW^l: tappion derivaatta suhteessa painoihin kerroksessa ll;
  • dbldb^l: tappion derivaatta suhteessa bias-termeihin kerroksessa ll.

Gradienttien laskeminen ulostulokerrokselle

Viimeisessä kerroksessa nn ensimmäinen vaihe on laskea tappion gradientti suhteessa ulostulokerroksen aktivaatioihin, merkittynä danda^n.

Tämän jälkeen, käyttäen ketjusääntöä, tappion gradientti suhteessa ulostulokerroksen pre-aktivaatioihin lasketaan seuraavasti:

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

Tässä fn(zn)f'^n(z^n) tarkoittaa aktivointifunktion derivaattaa kerroksessa nn, ja symboli \odot tarkoittaa alkiokohtaista kertolaskua.

Note
Huomio

Symboli \odot tarkoittaa alkiokohtaista kertolaskua, eli jokainen vektorin alkio kerrotaan vastaavan toisen vektorin alkion kanssa. Sen sijaan symboli \cdot edustaa pistetuloa, jota käytetään tavanomaisessa matriisi- tai vektorikertolaskussa. Termi fnf'^n viittaa aktivointifunktion derivaattaan ulostulokerroksessa.

Tämä arvo ilmaisee, kuinka herkkä häviöfunktio on ulostulokerroksen esiaktivointiarvojen muutoksille.

Kun dzndz^n on laskettu, seuraava vaihe on laskea gradientit painoille ja siirtotermeille:

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

Nämä gradientit kuvaavat, kuinka paljon kutakin painoa ja siirtotermiä ulostulokerroksessa tulisi säätää häviön pienentämiseksi.

Tässä (an1)T(a^{n-1})^T on edellisen kerroksen transponoitu aktivointivektori. Jos alkuperäisen vektorin muoto on nneurons×1n_{\text{neurons}} \times 1, sen transpoosiolla on muoto 1×nneurons1 \times n_{\text{neurons}}.

Takaisinlevityksen jatkamiseksi lasketaan derivaatta häviöstä suhteessa edellisen kerroksen aktivointeihin seuraavasti:

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

Tämä lauseke mahdollistaa virhesignaalin siirtämisen taaksepäin verkossa, mahdollistaen aiempien kerrosten säätämisen koulutuksen aikana.

Gradienttien levittäminen piilokerroksiin

Jokaiselle piilokerrokselle ll menettely on sama. Kun dalda^l on annettu:

  1. Laske derivaatta häviöstä suhteessa esiaktivointeihin;
  2. Laske gradientit painoille ja siirtotermeille;
  3. Laske dal1da^{l-1} derivaatan levittämiseksi taaksepäin.
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}

Tätä prosessia toistetaan jokaiselle edeltävälle kerrokselle vaihe vaiheelta, kunnes saavutetaan syötekerros.

Painojen ja biasien päivittäminen

Kun gradientit on laskettu kaikille kerroksille, painot ja biasit päivitetään käyttämällä gradienttivähenemä-algoritmia:

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}

Tässä α\alpha tarkoittaa oppimisnopeutta, joka määrittää kuinka paljon parametreja säädetään jokaisella koulutusaskeleella.

Tässä α\alpha on oppimisnopeus, hyperparametri, joka määrittää painoihin ja biaseihin kunkin päivitysvaiheen aikana tehtävän säädön suuruuden.

question mark

Takaisinkuljetuksen aikana, miten neuroverkko päivittää painonsa ja bias-arvonsa minimoidakseen tappiofunktion?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 7
some-alt