Achterwaartse 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:
- Uitvoeren van voorwaartse propagatie om de uitgangen te verkrijgen;
- Berekenen van de afgeleide van het verlies ten opzichte van de pre-activatie van de uitgang;
- Terugpropageren van deze afgeleide door de lagen met behulp van de kettingregel;
- Berekenen en gebruiken van de gradiënten voor gewichten en biases om deze bij te werken tijdens het trainen.
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:
- Wl is de gewichtenmatrix van laag l;
- bl is de vector van biases van laag l;
- zl is de vector van pre-activaties van laag l;
- al is de vector van activaties van laag l;
Door a0 gelijk te stellen aan x (de invoer), kan voorwaartse propagatie in een perceptron met n lagen worden beschreven als de volgende reeks bewerkingen:
a0z1a1=x,=W1a0+b1,=f1(z1),...zlal...=Wlal−1+bl,=fl(zl),...znany^...=Wnan−1+bn,=fn(zn),=an.Om backpropagation wiskundig te beschrijven, worden de volgende notaties geïntroduceerd:
- dal: afgeleide van het verlies ten opzichte van de activaties op laag l;
- dzl: afgeleide van het verlies ten opzichte van de pre-activaties op laag l (voor het toepassen van de activatiefunctie);
- dWl: afgeleide van het verlies ten opzichte van de gewichten op laag l;
- dbl: afgeleide van het verlies ten opzichte van de biases op laag l.
Gradienten berekenen voor de outputlaag
Bij de laatste laag n is de eerste stap het berekenen van de gradiënt van het verlies ten opzichte van de activaties van de outputlaag, aangeduid als dan.
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=dan⊙f′n(zn)Hierbij stelt f′n(zn) de afgeleide van de activatiefunctie op laag n voor, en het symbool ⊙ geeft elementgewijze vermenigvuldiging aan.
Het symbool ⊙ 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 ⋅ het inwendig product voor, gebruikt voor standaard matrix- of vectorvermenigvuldiging. De term f′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 dzn, is de volgende stap het bepalen van de gradiënten voor de gewichten en biases:
dWndbn=dzn⋅(an−1)T,=dznDeze gradiënten beschrijven in welke mate elk gewicht en elke bias in de outputlaag moet worden aangepast om het verlies te verkleinen.
Hier is (an−1)T de getransponeerde activatievector van de vorige laag. Als de oorspronkelijke vector de vorm nneurons×1 heeft, dan heeft de getransponeerde de vorm 1×nneurons.
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:
dan−1=(Wn)T⋅dznDeze 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 l is de procedure hetzelfde. Gegeven dal:
- Bereken de afgeleide van het verlies ten opzichte van de pre-activaties;
- Bereken de gradiënten voor de gewichten en biases;
- Bereken dal−1 om de afgeleide terug te propageren.
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:
Wlbl=Wl−α⋅dWl,=bl−α⋅dbl.Hierbij staat α voor het leerpercentage, dat bepaalt hoeveel de parameters worden aangepast tijdens elke trainingsstap.
Hierbij is α het leerpercentage, een hyperparameter die de grootte bepaalt van de aanpassing die wordt toegepast op de gewichten en biases bij elke update-stap.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 4
Achterwaartse 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:
- Uitvoeren van voorwaartse propagatie om de uitgangen te verkrijgen;
- Berekenen van de afgeleide van het verlies ten opzichte van de pre-activatie van de uitgang;
- Terugpropageren van deze afgeleide door de lagen met behulp van de kettingregel;
- Berekenen en gebruiken van de gradiënten voor gewichten en biases om deze bij te werken tijdens het trainen.
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:
- Wl is de gewichtenmatrix van laag l;
- bl is de vector van biases van laag l;
- zl is de vector van pre-activaties van laag l;
- al is de vector van activaties van laag l;
Door a0 gelijk te stellen aan x (de invoer), kan voorwaartse propagatie in een perceptron met n lagen worden beschreven als de volgende reeks bewerkingen:
a0z1a1=x,=W1a0+b1,=f1(z1),...zlal...=Wlal−1+bl,=fl(zl),...znany^...=Wnan−1+bn,=fn(zn),=an.Om backpropagation wiskundig te beschrijven, worden de volgende notaties geïntroduceerd:
- dal: afgeleide van het verlies ten opzichte van de activaties op laag l;
- dzl: afgeleide van het verlies ten opzichte van de pre-activaties op laag l (voor het toepassen van de activatiefunctie);
- dWl: afgeleide van het verlies ten opzichte van de gewichten op laag l;
- dbl: afgeleide van het verlies ten opzichte van de biases op laag l.
Gradienten berekenen voor de outputlaag
Bij de laatste laag n is de eerste stap het berekenen van de gradiënt van het verlies ten opzichte van de activaties van de outputlaag, aangeduid als dan.
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=dan⊙f′n(zn)Hierbij stelt f′n(zn) de afgeleide van de activatiefunctie op laag n voor, en het symbool ⊙ geeft elementgewijze vermenigvuldiging aan.
Het symbool ⊙ 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 ⋅ het inwendig product voor, gebruikt voor standaard matrix- of vectorvermenigvuldiging. De term f′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 dzn, is de volgende stap het bepalen van de gradiënten voor de gewichten en biases:
dWndbn=dzn⋅(an−1)T,=dznDeze gradiënten beschrijven in welke mate elk gewicht en elke bias in de outputlaag moet worden aangepast om het verlies te verkleinen.
Hier is (an−1)T de getransponeerde activatievector van de vorige laag. Als de oorspronkelijke vector de vorm nneurons×1 heeft, dan heeft de getransponeerde de vorm 1×nneurons.
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:
dan−1=(Wn)T⋅dznDeze 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 l is de procedure hetzelfde. Gegeven dal:
- Bereken de afgeleide van het verlies ten opzichte van de pre-activaties;
- Bereken de gradiënten voor de gewichten en biases;
- Bereken dal−1 om de afgeleide terug te propageren.
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:
Wlbl=Wl−α⋅dWl,=bl−α⋅dbl.Hierbij staat α voor het leerpercentage, dat bepaalt hoeveel de parameters worden aangepast tijdens elke trainingsstap.
Hierbij is α het leerpercentage, een hyperparameter die de grootte bepaalt van de aanpassing die wordt toegepast op de gewichten en biases bij elke update-stap.
Bedankt voor je feedback!