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 (backprop) on prosessi, jossa lasketaan, miten häviöfunktio muuttuu verkon jokaisen parametrin suhteen. Tavoitteena on päivittää parametreja suuntaan, joka vähentää häviötä.

Tämän saavuttamiseksi käytetään gradienttien laskeutumista (gradient descent) ja lasketaan häviön derivaatat jokaisen kerroksen pre-aktivaatioarvojen (raaka-arvot ennen aktivointifunktion soveltamista) suhteen ja levitetään ne taaksepäin.

Jokainen kerros vaikuttaa lopulliseen ennusteeseen, joten gradientit on laskettava rakenteellisesti:

  1. Suorita eteenpäinlevitys;
  2. Laske häviön derivaatta ulostulon pre-aktivaatioon nähden;
  3. Levitä tämä derivaatta taaksepäin kerrosten läpi käyttäen ketjusääntöä;
  4. Laske gradientit painoille ja siirtotermeille niiden päivittämiseksi.
Note
Huomio

Gradientit kuvaavat funktion muutosnopeutta syötteidensä suhteen, eli ne ovat sen derivaattoja. Ne osoittavat, kuinka paljon pieni muutos painoissa, siirtotermeissä tai aktivaatioissa vaikuttaa häviöfunktioon, ohjaten mallin oppimisprosessia gradienttien laskeutumisen avulla.

Notaatio

Selkeyden vuoksi käytetään seuraavaa notaatiota:

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

Asettamalla 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 lasketaan ensin tappion gradientti ulostulokerroksen aktivaatioiden suhteen, danda^n. Seuraavaksi, käyttäen ketjusääntöä, lasketaan tappion gradientti ulostulokerroksen pre-aktivaatioiden suhteen:

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

\odot-symboli tarkoittaa alkiokohtaista kertolaskua. Koska työskentelemme vektoreiden ja matriisien kanssa, tavallinen kertolaskusymboli \cdot tarkoittaa sen sijaan pistetuloa. fnf'^n on ulostulokerroksen aktivointifunktion derivaatta.

Tämä suure ilmaisee, kuinka herkkä häviöfunktio on muutoksille ulostulokerroksen esiaktivaatiossa.

Kun dzn\text d z^n on laskettu, lasketaan painojen ja biasien gradientit:

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

missä (an1)T(a^{n-1})^T on edellisen kerroksen aktivaatioiden transponoitu vektori. Koska alkuperäinen vektori on nneurons×1n_{neurons} \times 1 -vektori, transponoitu vektori on 1×nneurons1 \times n_{neurons}.

Takaisinpäin etenemistä varten lasketaan derivaatta häviöstä suhteessa edellisen kerroksen aktivaatioihin:

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

Gradienttien eteneminen piilokerroksiin

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

  1. Laske häviön derivaatta esiaktivaatioiden suhteen;
  2. Laske painojen ja biasien gradientit;
  3. Laske dal1da^{l-1} derivaatan etenemiseksi 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ä vaihetta toistetaan, 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ähennystä:

Wl=WlαdWlbl=blαdbl\begin{aligned} W^l &= W^l - \alpha \cdot dW^l\\ b^l &= b^l - \alpha \cdot db^l \end{aligned}

Missä α\alpha on oppimisnopeus, joka määrittää, kuinka paljon parametreja säädetään.

question mark

Takaisinkytkennän aikana, miten neuroverkko päivittää painonsa ja bias-arvonsa minimoidakseen häviöfunktion?

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

Awesome!

Completion rate improved to 4

bookTaaksepäin Suuntautuva Eteneminen

Pyyhkäise näyttääksesi valikon

Takaisinlevitys (backprop) on prosessi, jossa lasketaan, miten häviöfunktio muuttuu verkon jokaisen parametrin suhteen. Tavoitteena on päivittää parametreja suuntaan, joka vähentää häviötä.

Tämän saavuttamiseksi käytetään gradienttien laskeutumista (gradient descent) ja lasketaan häviön derivaatat jokaisen kerroksen pre-aktivaatioarvojen (raaka-arvot ennen aktivointifunktion soveltamista) suhteen ja levitetään ne taaksepäin.

Jokainen kerros vaikuttaa lopulliseen ennusteeseen, joten gradientit on laskettava rakenteellisesti:

  1. Suorita eteenpäinlevitys;
  2. Laske häviön derivaatta ulostulon pre-aktivaatioon nähden;
  3. Levitä tämä derivaatta taaksepäin kerrosten läpi käyttäen ketjusääntöä;
  4. Laske gradientit painoille ja siirtotermeille niiden päivittämiseksi.
Note
Huomio

Gradientit kuvaavat funktion muutosnopeutta syötteidensä suhteen, eli ne ovat sen derivaattoja. Ne osoittavat, kuinka paljon pieni muutos painoissa, siirtotermeissä tai aktivaatioissa vaikuttaa häviöfunktioon, ohjaten mallin oppimisprosessia gradienttien laskeutumisen avulla.

Notaatio

Selkeyden vuoksi käytetään seuraavaa notaatiota:

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

Asettamalla 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 lasketaan ensin tappion gradientti ulostulokerroksen aktivaatioiden suhteen, danda^n. Seuraavaksi, käyttäen ketjusääntöä, lasketaan tappion gradientti ulostulokerroksen pre-aktivaatioiden suhteen:

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

\odot-symboli tarkoittaa alkiokohtaista kertolaskua. Koska työskentelemme vektoreiden ja matriisien kanssa, tavallinen kertolaskusymboli \cdot tarkoittaa sen sijaan pistetuloa. fnf'^n on ulostulokerroksen aktivointifunktion derivaatta.

Tämä suure ilmaisee, kuinka herkkä häviöfunktio on muutoksille ulostulokerroksen esiaktivaatiossa.

Kun dzn\text d z^n on laskettu, lasketaan painojen ja biasien gradientit:

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

missä (an1)T(a^{n-1})^T on edellisen kerroksen aktivaatioiden transponoitu vektori. Koska alkuperäinen vektori on nneurons×1n_{neurons} \times 1 -vektori, transponoitu vektori on 1×nneurons1 \times n_{neurons}.

Takaisinpäin etenemistä varten lasketaan derivaatta häviöstä suhteessa edellisen kerroksen aktivaatioihin:

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

Gradienttien eteneminen piilokerroksiin

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

  1. Laske häviön derivaatta esiaktivaatioiden suhteen;
  2. Laske painojen ja biasien gradientit;
  3. Laske dal1da^{l-1} derivaatan etenemiseksi 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ä vaihetta toistetaan, 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ähennystä:

Wl=WlαdWlbl=blαdbl\begin{aligned} W^l &= W^l - \alpha \cdot dW^l\\ b^l &= b^l - \alpha \cdot db^l \end{aligned}

Missä α\alpha on oppimisnopeus, joka määrittää, kuinka paljon parametreja säädetään.

question mark

Takaisinkytkennän aikana, miten neuroverkko päivittää painonsa ja bias-arvonsa minimoidakseen häviöfunktion?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 7
some-alt