Taaksepä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 käyttäen gradienttimenetelmää (gradient descent), jossa hyödynnetää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:
- Suoritetaan eteenpäinlevitys (forward propagation) tulosten saamiseksi;
- Lasketaan häviön derivaatta suhteessa ulostulon pre-aktivaatioon;
- Propagoidaan tämä derivaatta taaksepäin kerrosten läpi käyttäen ketjusääntöä;
- Lasketaan ja käytetään gradientteja painojen ja biasien päivittämiseen koulutuksen aikana.
Gradientit kuvaavat funktion muutosnopeutta suhteessa sen syötteisiin, eli ne ovat derivaattoja. Ne osoittavat, kuinka paljon pienet muutokset painoissa, biaseissa tai aktivaatioissa vaikuttavat häviöfunktioon, ohjaten mallin oppimisprosessia gradienttimenetelmän avulla.
Notaatio
Selkeyden vuoksi käytetään seuraavaa notaatiota:
- Wl on kerroksen l painomatriisi;
- bl on kerroksen l bias-vektori;
- zl on kerroksen l pre-aktivaatioiden vektori;
- al on kerroksen l aktivaatioiden vektori;
Kun asetetaan a0 arvoon x (syötteet), eteenpäinlevitys perceptronissa, jossa on n kerrosta, voidaan kuvata seuraavalla operaatioketjulla:
a0z1a1=x,=W1a0+b1,=f1(z1),...zlal...=Wlal−1+bl,=fl(zl),...znany^...=Wnan−1+bn,=fn(zn),=an.Takaisinkytkennän matemaattista kuvausta varten otetaan käyttöön seuraavat merkinnät:
- dal: tappion derivaatta suhteessa kerroksen l aktivaatioihin;
- dzl: tappion derivaatta suhteessa kerroksen l pre-aktivaatioihin (ennen aktivointifunktion soveltamista);
- dWl: tappion derivaatta suhteessa kerroksen l painoihin;
- dbl: tappion derivaatta suhteessa kerroksen l bias-termeihin.
Gradienttien laskeminen ulostulokerrokselle
Viimeisessä kerroksessa n ensimmäinen vaihe on laskea tappion gradientti suhteessa ulostulokerroksen aktivaatioihin, merkittynä dan.
Tämän jälkeen, käyttäen ketjusääntöä, tappion gradientti suhteessa ulostulokerroksen pre-aktivaatioihin lasketaan seuraavasti:
dzn=dan⊙f′n(zn)Tässä f′n(zn) tarkoittaa kerroksen n aktivointifunktion derivaattaa, ja symboli ⊙ tarkoittaa alkiokohtaista kertolaskua.
Symboli ⊙ tarkoittaa alkiokohtaista kertolaskua, eli jokainen yhden vektorin alkio kerrotaan toisen vektorin vastaavalla alkiolla. Sen sijaan symboli ⋅ edustaa pistetuloa, jota käytetään tavanomaisessa matriisi- tai vektorikertolaskussa. Termi f′n viittaa aktivointifunktion derivaattaan ulostulokerroksessa.
Tämä arvo ilmaisee, kuinka herkkä häviöfunktio on ulostulokerroksen esiaktivointiarvojen muutoksille.
Kun dzn on laskettu, seuraava vaihe on laskea gradientit painoille ja siirtotermeille:
dWndbn=dzn⋅(an−1)T,=dznNämä gradientit kuvaavat, kuinka paljon kutakin painoa ja siirtotermiä ulostulokerroksessa tulisi säätää häviön pienentämiseksi.
Tässä (an−1)T on edellisen kerroksen transponoitu aktivointivektori. Jos alkuperäisen vektorin muoto on nneurons×1, sen transpoosiolla on muoto 1×nneurons.
Takaisinlevityksen jatkamiseksi lasketaan derivaatta häviöstä suhteessa edellisen kerroksen aktivointeihin seuraavasti:
dan−1=(Wn)T⋅dznTämä lauseke mahdollistaa virhesignaalin siirtämisen taaksepäin verkossa, mikä mahdollistaa aiempien kerrosten säätämisen koulutuksen aikana.
Gradienttien levittäminen piilokerroksiin
Jokaiselle piilokerrokselle l menettely on sama. Kun dal on annettu:
- Laske derivaatta häviöstä suhteessa esiaktivointeihin;
- Laske gradientit painoille ja siirtotermeille;
- Laske dal−1 derivaatan levittämiseksi taaksepäin.
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:
Wlbl=Wl−α⋅dWl,=bl−α⋅dbl.Tässä α tarkoittaa oppimisnopeutta, joka määrittää, kuinka paljon parametreja säädetään jokaisella koulutusaskeleella.
Tässä α on oppimisnopeus, hyperparametri, joka määrittää painoihin ja biaseihin päivitysvaiheessa sovellettavan muutoksen suuruuden.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme