Achterwaartse Propagatie
Achterwaartse propagatie (backprop) is het proces waarbij wordt berekend hoe de verliesfunctie verandert ten opzichte van elke parameter in het netwerk. Het doel is om de parameters bij te werken in de richting die het verlies vermindert.
Om dit te bereiken, gebruiken we het gradient descent algoritme en berekenen we de afgeleiden van het verlies ten opzichte van de pre-activatiewaarden van elke laag (ruwe uitvoerwaarden vóór het toepassen van de activatiefunctie) en propageren we deze achterwaarts.
Elke laag draagt bij aan de uiteindelijke voorspelling, dus de gradiënten moeten op een gestructureerde manier worden berekend:
- Voer voorwaartse propagatie uit;
- Bereken de afgeleide van het verlies ten opzichte van de output pre-activatie;
- Propageren deze afgeleide achterwaarts door de lagen met behulp van de kettingregel;
- Bereken gradiënten voor gewichten en biases om deze bij te werken.
Gradiënten vertegenwoordigen de veranderingssnelheid van een functie ten opzichte van zijn invoer, 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, introduceren we de volgende notaties:
- dal: afgeleide van het verlies ten opzichte van de activaties in laag l;
- dzl: afgeleide van het verlies ten opzichte van de pre-activaties in laag l (voor het toepassen van de activatiefunctie);
- dWl: afgeleide van het verlies ten opzichte van de gewichten in laag l;
- dbl: afgeleide van het verlies ten opzichte van de biases in laag l.
Gradienten berekenen voor de outputlaag
Bij de laatste laag n berekenen we eerst de gradiënt van het verlies ten opzichte van de activaties van de outputlaag, dan. Vervolgens gebruiken we de kettingregel om de gradiënt van het verlies ten opzichte van de pre-activaties van de outputlaag te berekenen:
dzn=dan⊙f′n(zn)Het symbool ⊙ staat voor elementgewijze vermenigvuldiging. Omdat we werken met vectoren en matrices, staat het gebruikelijke vermenigvuldigingsteken ⋅ voor het dotproduct. f′n is de afgeleide van de activatiefunctie van de outputlaag.
Deze grootheid geeft aan hoe gevoelig de verliesfunctie is voor veranderingen in de pre-activatie van de outputlaag.
Zodra we dzn hebben, berekenen we de gradiënten voor de gewichten en biases:
dWndbn=dzn⋅(an−1)T=dznwaarbij (an−1)T de getransponeerde vector is van de activatie uit de vorige laag. Aangezien de oorspronkelijke vector een nneurons×1 vector is, is de getransponeerde vector 1×nneurons.
Om dit terug te propageren, berekenen we de afgeleide van het verlies ten opzichte van de activaties van de vorige laag:
dan−1=(Wn)T⋅dznGradië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.
Deze stap wordt herhaald totdat we de invoerlaag bereiken.
Bijwerken van gewichten en biases
Nadat de gradiënten voor alle lagen zijn berekend, worden de gewichten en biases bijgewerkt met behulp van gradient descent:
Wlbl=Wl−α⋅dWl=bl−α⋅dblwaarbij α de leersnelheid is, die bepaalt hoeveel we de parameters aanpassen.
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 (backprop) is het proces waarbij wordt berekend hoe de verliesfunctie verandert ten opzichte van elke parameter in het netwerk. Het doel is om de parameters bij te werken in de richting die het verlies vermindert.
Om dit te bereiken, gebruiken we het gradient descent algoritme en berekenen we de afgeleiden van het verlies ten opzichte van de pre-activatiewaarden van elke laag (ruwe uitvoerwaarden vóór het toepassen van de activatiefunctie) en propageren we deze achterwaarts.
Elke laag draagt bij aan de uiteindelijke voorspelling, dus de gradiënten moeten op een gestructureerde manier worden berekend:
- Voer voorwaartse propagatie uit;
- Bereken de afgeleide van het verlies ten opzichte van de output pre-activatie;
- Propageren deze afgeleide achterwaarts door de lagen met behulp van de kettingregel;
- Bereken gradiënten voor gewichten en biases om deze bij te werken.
Gradiënten vertegenwoordigen de veranderingssnelheid van een functie ten opzichte van zijn invoer, 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, introduceren we de volgende notaties:
- dal: afgeleide van het verlies ten opzichte van de activaties in laag l;
- dzl: afgeleide van het verlies ten opzichte van de pre-activaties in laag l (voor het toepassen van de activatiefunctie);
- dWl: afgeleide van het verlies ten opzichte van de gewichten in laag l;
- dbl: afgeleide van het verlies ten opzichte van de biases in laag l.
Gradienten berekenen voor de outputlaag
Bij de laatste laag n berekenen we eerst de gradiënt van het verlies ten opzichte van de activaties van de outputlaag, dan. Vervolgens gebruiken we de kettingregel om de gradiënt van het verlies ten opzichte van de pre-activaties van de outputlaag te berekenen:
dzn=dan⊙f′n(zn)Het symbool ⊙ staat voor elementgewijze vermenigvuldiging. Omdat we werken met vectoren en matrices, staat het gebruikelijke vermenigvuldigingsteken ⋅ voor het dotproduct. f′n is de afgeleide van de activatiefunctie van de outputlaag.
Deze grootheid geeft aan hoe gevoelig de verliesfunctie is voor veranderingen in de pre-activatie van de outputlaag.
Zodra we dzn hebben, berekenen we de gradiënten voor de gewichten en biases:
dWndbn=dzn⋅(an−1)T=dznwaarbij (an−1)T de getransponeerde vector is van de activatie uit de vorige laag. Aangezien de oorspronkelijke vector een nneurons×1 vector is, is de getransponeerde vector 1×nneurons.
Om dit terug te propageren, berekenen we de afgeleide van het verlies ten opzichte van de activaties van de vorige laag:
dan−1=(Wn)T⋅dznGradië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.
Deze stap wordt herhaald totdat we de invoerlaag bereiken.
Bijwerken van gewichten en biases
Nadat de gradiënten voor alle lagen zijn berekend, worden de gewichten en biases bijgewerkt met behulp van gradient descent:
Wlbl=Wl−α⋅dWl=bl−α⋅dblwaarbij α de leersnelheid is, die bepaalt hoeveel we de parameters aanpassen.
Bedankt voor je feedback!