Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Achterwaartse Propagatie | Neuraal Netwerk Vanaf Nul
Introductie tot Neurale Netwerken

bookAchterwaartse Propagatie

Achterwaartse propagatie, of backpropagation, is het proces waarbij wordt bepaald hoe de verliesfunctie verandert ten opzichte van elke parameter in het neuraal netwerk. Het doel is om deze parameters zo aan te passen dat het totale verlies wordt verminderd.

Dit proces is gebaseerd op het gradient descent-algoritme, dat gebruikmaakt van de afgeleiden van het verlies ten opzichte van de pre-activatiewaarden van elke laag (de ruwe uitgangen vóór het toepassen van de activatiefunctie) en deze achterwaarts door het netwerk verspreidt.

Aangezien elke laag bijdraagt aan de uiteindelijke voorspelling, worden de gradiënten stap voor stap berekend:

  1. Uitvoeren van voorwaartse propagatie om de uitgangen te verkrijgen;
  2. Berekenen van de afgeleide van het verlies ten opzichte van de pre-activatie van de uitgang;
  3. Terugpropageren van deze afgeleide door de lagen met behulp van de kettingregel;
  4. Berekenen en gebruiken van de gradiënten voor gewichten en biases om deze bij te werken tijdens het trainen.
Note
Opmerking

Gradiënten geven de veranderingssnelheid van een functie ten opzichte van zijn invoer weer, wat betekent dat het de afgeleiden zijn. Ze geven aan hoeveel een kleine wijziging in gewichten, biases of activaties de verliesfunctie beïnvloedt, en sturen het leerproces van het model via gradient descent.

Notatie

Om de uitleg duidelijker te maken, gebruiken we de volgende notatie:

  • WlW^l is de gewichtenmatrix van laag ll;
  • blb^l is de vector van biases van laag ll;
  • zlz^l is de vector van pre-activaties van laag ll;
  • ala^l is de vector van activaties van laag ll;

Door a0a^0 gelijk te stellen aan xx (de invoer), kan voorwaartse propagatie in een perceptron met n lagen worden beschreven als de volgende reeks bewerkingen:

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}

Om backpropagation wiskundig te beschrijven, worden de volgende notaties geïntroduceerd:

  • dalda^l: afgeleide van het verlies ten opzichte van de activaties op laag ll;
  • dzldz^l: afgeleide van het verlies ten opzichte van de pre-activaties op laag ll (voor het toepassen van de activatiefunctie);
  • dWldW^l: afgeleide van het verlies ten opzichte van de gewichten op laag ll;
  • dbldb^l: afgeleide van het verlies ten opzichte van de biases op laag ll.

Gradienten berekenen voor de outputlaag

Bij de laatste laag nn is de eerste stap het berekenen van de gradiënt van het verlies ten opzichte van de activaties van de outputlaag, aangeduid als danda^n.

Vervolgens wordt met behulp van de kettingregel de gradiënt van het verlies ten opzichte van de pre-activaties van de outputlaag berekend als:

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

Hierbij stelt fn(zn)f'^n(z^n) de afgeleide van de activatiefunctie op laag nn voor, en het symbool \odot geeft elementgewijze vermenigvuldiging aan.

Note
Opmerking

Het symbool \odot geeft elementgewijze vermenigvuldiging aan, wat betekent dat elk element van de ene vector wordt vermenigvuldigd met het overeenkomstige element van een andere vector. Daarentegen stelt het symbool \cdot het inwendig product voor, gebruikt voor standaard matrix- of vectorvermenigvuldiging. De term fnf'^n verwijst naar de afgeleide van de activatiefunctie op de outputlaag.

Deze waarde geeft aan hoe gevoelig de verliesfunctie is voor veranderingen in de pre-activatiewaarden van de outputlaag.

Na het berekenen van dzndz^n, is de volgende stap het bepalen van de gradiënten voor de gewichten en biases:

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

Deze gradiënten beschrijven in welke mate elk gewicht en elke bias in de outputlaag moet worden aangepast om het verlies te verkleinen.

Hier is (an1)T(a^{n-1})^T de getransponeerde activatievector van de vorige laag. Als de oorspronkelijke vector de vorm nneurons×1n_{\text{neurons}} \times 1 heeft, dan heeft de getransponeerde de vorm 1×nneurons1 \times n_{\text{neurons}}.

Om de backward propagatie voort te zetten, wordt de afgeleide van het verlies ten opzichte van de activaties van de vorige laag als volgt berekend:

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

Deze uitdrukking maakt het mogelijk om het foutsignaal terug te voeren door het netwerk, zodat eerdere lagen tijdens het trainen kunnen worden aangepast.

Gradiënten Propageren naar de Verborgen Lagen

Voor elke verborgen laag ll is de procedure hetzelfde. Gegeven dalda^l:

  1. Bereken de afgeleide van het verlies ten opzichte van de pre-activaties;
  2. Bereken de gradiënten voor de gewichten en biases;
  3. Bereken dal1da^{l-1} om de afgeleide terug te propageren.
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}

Dit proces wordt herhaald voor elke voorgaande laag, stap voor stap, totdat de inputlaag is bereikt.

Gewichten en biases bijwerken

Na het berekenen van de gradiënten voor alle lagen worden de gewichten en biases bijgewerkt met behulp van het gradient descent-algoritme:

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}

Hierbij staat α\alpha voor het leerpercentage, dat bepaalt hoeveel de parameters worden aangepast tijdens elke trainingsstap.

Hierbij is α\alpha het leerpercentage, een hyperparameter die de grootte bepaalt van de aanpassing die wordt toegepast op de gewichten en biases bij elke update-stap.

question mark

Hoe werkt het bij backpropagation dat een neuraal netwerk zijn gewichten en biases bijwerkt om de verliesfunctie te minimaliseren?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 7

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Awesome!

Completion rate improved to 4

bookAchterwaartse Propagatie

Veeg om het menu te tonen

Achterwaartse propagatie, of backpropagation, is het proces waarbij wordt bepaald hoe de verliesfunctie verandert ten opzichte van elke parameter in het neuraal netwerk. Het doel is om deze parameters zo aan te passen dat het totale verlies wordt verminderd.

Dit proces is gebaseerd op het gradient descent-algoritme, dat gebruikmaakt van de afgeleiden van het verlies ten opzichte van de pre-activatiewaarden van elke laag (de ruwe uitgangen vóór het toepassen van de activatiefunctie) en deze achterwaarts door het netwerk verspreidt.

Aangezien elke laag bijdraagt aan de uiteindelijke voorspelling, worden de gradiënten stap voor stap berekend:

  1. Uitvoeren van voorwaartse propagatie om de uitgangen te verkrijgen;
  2. Berekenen van de afgeleide van het verlies ten opzichte van de pre-activatie van de uitgang;
  3. Terugpropageren van deze afgeleide door de lagen met behulp van de kettingregel;
  4. Berekenen en gebruiken van de gradiënten voor gewichten en biases om deze bij te werken tijdens het trainen.
Note
Opmerking

Gradiënten geven de veranderingssnelheid van een functie ten opzichte van zijn invoer weer, wat betekent dat het de afgeleiden zijn. Ze geven aan hoeveel een kleine wijziging in gewichten, biases of activaties de verliesfunctie beïnvloedt, en sturen het leerproces van het model via gradient descent.

Notatie

Om de uitleg duidelijker te maken, gebruiken we de volgende notatie:

  • WlW^l is de gewichtenmatrix van laag ll;
  • blb^l is de vector van biases van laag ll;
  • zlz^l is de vector van pre-activaties van laag ll;
  • ala^l is de vector van activaties van laag ll;

Door a0a^0 gelijk te stellen aan xx (de invoer), kan voorwaartse propagatie in een perceptron met n lagen worden beschreven als de volgende reeks bewerkingen:

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}

Om backpropagation wiskundig te beschrijven, worden de volgende notaties geïntroduceerd:

  • dalda^l: afgeleide van het verlies ten opzichte van de activaties op laag ll;
  • dzldz^l: afgeleide van het verlies ten opzichte van de pre-activaties op laag ll (voor het toepassen van de activatiefunctie);
  • dWldW^l: afgeleide van het verlies ten opzichte van de gewichten op laag ll;
  • dbldb^l: afgeleide van het verlies ten opzichte van de biases op laag ll.

Gradienten berekenen voor de outputlaag

Bij de laatste laag nn is de eerste stap het berekenen van de gradiënt van het verlies ten opzichte van de activaties van de outputlaag, aangeduid als danda^n.

Vervolgens wordt met behulp van de kettingregel de gradiënt van het verlies ten opzichte van de pre-activaties van de outputlaag berekend als:

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

Hierbij stelt fn(zn)f'^n(z^n) de afgeleide van de activatiefunctie op laag nn voor, en het symbool \odot geeft elementgewijze vermenigvuldiging aan.

Note
Opmerking

Het symbool \odot geeft elementgewijze vermenigvuldiging aan, wat betekent dat elk element van de ene vector wordt vermenigvuldigd met het overeenkomstige element van een andere vector. Daarentegen stelt het symbool \cdot het inwendig product voor, gebruikt voor standaard matrix- of vectorvermenigvuldiging. De term fnf'^n verwijst naar de afgeleide van de activatiefunctie op de outputlaag.

Deze waarde geeft aan hoe gevoelig de verliesfunctie is voor veranderingen in de pre-activatiewaarden van de outputlaag.

Na het berekenen van dzndz^n, is de volgende stap het bepalen van de gradiënten voor de gewichten en biases:

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

Deze gradiënten beschrijven in welke mate elk gewicht en elke bias in de outputlaag moet worden aangepast om het verlies te verkleinen.

Hier is (an1)T(a^{n-1})^T de getransponeerde activatievector van de vorige laag. Als de oorspronkelijke vector de vorm nneurons×1n_{\text{neurons}} \times 1 heeft, dan heeft de getransponeerde de vorm 1×nneurons1 \times n_{\text{neurons}}.

Om de backward propagatie voort te zetten, wordt de afgeleide van het verlies ten opzichte van de activaties van de vorige laag als volgt berekend:

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

Deze uitdrukking maakt het mogelijk om het foutsignaal terug te voeren door het netwerk, zodat eerdere lagen tijdens het trainen kunnen worden aangepast.

Gradiënten Propageren naar de Verborgen Lagen

Voor elke verborgen laag ll is de procedure hetzelfde. Gegeven dalda^l:

  1. Bereken de afgeleide van het verlies ten opzichte van de pre-activaties;
  2. Bereken de gradiënten voor de gewichten en biases;
  3. Bereken dal1da^{l-1} om de afgeleide terug te propageren.
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}

Dit proces wordt herhaald voor elke voorgaande laag, stap voor stap, totdat de inputlaag is bereikt.

Gewichten en biases bijwerken

Na het berekenen van de gradiënten voor alle lagen worden de gewichten en biases bijgewerkt met behulp van het gradient descent-algoritme:

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}

Hierbij staat α\alpha voor het leerpercentage, dat bepaalt hoeveel de parameters worden aangepast tijdens elke trainingsstap.

Hierbij is α\alpha het leerpercentage, een hyperparameter die de grootte bepaalt van de aanpassing die wordt toegepast op de gewichten en biases bij elke update-stap.

question mark

Hoe werkt het bij backpropagation dat een neuraal netwerk zijn gewichten en biases bijwerkt om de verliesfunctie te minimaliseren?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 7
some-alt