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
Quizzes & Challenges
Quizzes
Challenges
/
Introductie tot Neurale Netwerken met Python

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 zodanig 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. Voorwaartse propagatie uitvoeren om de uitgangen te verkrijgen;
  2. De afgeleide van het verlies ten opzichte van de pre-activatie van de uitgang berekenen;
  3. Deze afgeleide achterwaarts door de lagen verspreiden met behulp van de kettingregel;
  4. De gradiënten voor gewichten en biases berekenen en gebruiken om deze tijdens de training bij te werken.
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 backpropagatie 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 duidt op elementgewijze vermenigvuldiging.

Note
Opmerking

Het symbool \odot duidt op elementgewijze vermenigvuldiging, wat betekent dat elk element van een 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 geven aan in welke mate elk gewicht en elke bias in de outputlaag moet worden aangepast om het verlies te verminderen.

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. Bepaal de afgeleide van het verlies ten opzichte van de pre-activaties;
  2. Bepaal de gradiënten voor de gewichten en biases;
  3. Bereken dal1da^{l-1} om de afgeleide verder terug te voeren.
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 stelt α\alpha de leersnelheid voor, die bepaalt hoeveel de parameters worden aangepast tijdens elke trainingsstap.

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

question mark

Hoe past een neuraal netwerk tijdens backpropagation zijn gewichten en biases aan 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.

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

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 zodanig 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. Voorwaartse propagatie uitvoeren om de uitgangen te verkrijgen;
  2. De afgeleide van het verlies ten opzichte van de pre-activatie van de uitgang berekenen;
  3. Deze afgeleide achterwaarts door de lagen verspreiden met behulp van de kettingregel;
  4. De gradiënten voor gewichten en biases berekenen en gebruiken om deze tijdens de training bij te werken.
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 backpropagatie 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 duidt op elementgewijze vermenigvuldiging.

Note
Opmerking

Het symbool \odot duidt op elementgewijze vermenigvuldiging, wat betekent dat elk element van een 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 geven aan in welke mate elk gewicht en elke bias in de outputlaag moet worden aangepast om het verlies te verminderen.

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. Bepaal de afgeleide van het verlies ten opzichte van de pre-activaties;
  2. Bepaal de gradiënten voor de gewichten en biases;
  3. Bereken dal1da^{l-1} om de afgeleide verder terug te voeren.
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 stelt α\alpha de leersnelheid voor, die bepaalt hoeveel de parameters worden aangepast tijdens elke trainingsstap.

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

question mark

Hoe past een neuraal netwerk tijdens backpropagation zijn gewichten en biases aan 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