Wat is Gradiëntafdaling (gradient descent)?
Een optimalisatiemethode die de gradiënt van de verliesfunctie (de partiële afgeleide naar elke parameter) berekent en de parameters herhaaldelijk een klein stukje tegen de gradiënt in verplaatst, op zoek naar parameters die het verlies klein maken. De update wordt geschreven als w ← w − η∇L, waarbij η de leersnelheid heet. Stochastische gradiëntafdaling (SGD), die gradiënten gebruikt die op een deel van de gegevens (een minibatch) zijn berekend, en verfijningen daarvan zoals momentum en Adam worden veel gebruikt om neurale netwerken te trainen.
Japanse benaming: 勾配降下法
“Gradiëntafdaling (gradient descent)” komt voor in 1 oefenvragen uit 1 onderwerpen, bijv. Basis van machine learning.
Vakgebied: Basis van machine learning
De updateregel en de leersnelheid
Als het verlies L wordt gezien als functie van een gewicht w, geeft de gradiënt ∂L/∂w de richting en de grootte van de toename van L als w een beetje wordt verhoogd. Daarom wordt w tegen de gradiënt in verplaatst: w ← w − η × ∂L/∂w. Met bijvoorbeeld L = (w − 3)² en een start bij w = 0 is de gradiënt 2 × (0 − 3) = −6, dus met η = 0,1 gaat het gewicht naar 0,6. In dit voorbeeld krimpt bij η = 0,1 de resterende afstand tot het minimum bij w = 3 bij elke update met een factor 0,8, terwijl bij η = 1,1 het minimum telkens wordt overschreden en de afstand met een factor 1,2 groeit, zodat de iteratie divergeert.
Verbeterde methoden
Gewone SGD vordert langzaam bij een verlies in de vorm van een lang, smal dal, omdat ze heen en weer over het dal stuitert. Momentum neemt de richting van eerdere updates als een soort traagheid mee en dempt die oscillatie. Adam en RMSProp passen de stapgrootte van elke parameter automatisch aan op basis van de geschiedenis van de grootte van zijn gradiënten. Warm-up, die de leersnelheid aan het begin van de training geleidelijk verhoogt, en schema's die de leersnelheid tijdens de training verlagen, zijn ook gebruikelijk.
Veelgestelde vragen
Wat is het verschil tussen gradiëntafdaling en backpropagatie?
Backpropagatie is een methode om de gradiënt van het verlies naar elk gewicht van een neuraal netwerk efficiënt te berekenen. Gradiëntafdaling is een methode die die gradiënten gebruikt om de gewichten bij te werken. Bij het trainen wordt steeds de cyclus herhaald van het verlies berekenen met voorwaartse propagatie, de gradiënten berekenen met backpropagatie en de gewichten bijwerken met gradiëntafdaling.
Vindt gradiëntafdaling de beste oplossing?
Als de verliesfunctie convex is (maar één dal heeft), brengt een goed gekozen leersnelheid haar dicht bij het minimum. Het verlies van een neuraal netwerk is niet convex, dus wat wordt gevonden is vaak een lokale oplossing, maar de ervaring leert dat netwerken met veel parameters toch vaak prestaties halen die in de praktijk goed genoeg zijn.