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.

Batch, minibatch en stochastische gradiëntafdaling

Vóór elke update de exacte gradiënt van het verlies over de hele trainingsset berekenen heet batch-gradiëntafdaling, maar met veel gegevens duurt elke update lang. Stochastische gradiëntafdaling herhaalt in plaats daarvan updates met gradiënten die op slechts een deel van de gegevens (een minibatch) zijn berekend. De gradiënt wordt dan ruizig, maar er kunnen veel meer updates worden gedaan, en de minibatch kan zo groot worden gekozen dat een GPU hem efficiënt parallel berekent. Eén volledige doorgang door de trainingsdata heet een epoch.

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.

Nu oefenen: vragen over Gradiëntafdaling (gradient descent)

Bij gradiëntafdaling is de gradiënt van het verlies ∂L/∂w bij het gewicht w = 2,0 gelijk aan 0,5 en is de leersnelheid 0,1. Wat is het gewicht na één update?

  1. A1,5
  2. B1,95
  3. C2,05
Antwoord en toelichting tonen

Antwoord: B. 1,95

Gradiëntafdaling verplaatst het gewicht in de richting waarin het verlies afneemt, dus tegen de gradiënt in, met de update w ← w − η × ∂L/∂w (η is de leersnelheid). Hier is w = 2,0 − 0,1 × 0,5 = 1,95. Is de leersnelheid te groot, dan schiet het gewicht over het dal van het verlies heen en gaat het oscilleren of divergeren; is ze te klein, dan vordert het trainen maar heel langzaam. In de praktijk worden stochastische gradiëntafdaling (SGD), die updates herhaalt met gradiënten die op een deel van de gegevens (een minibatch) zijn berekend, en verbeterde varianten zoals Adam gebruikt.

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.

“Gradiëntafdaling (gradient descent)” in de toelichting

Vragen met “Gradiëntafdaling (gradient descent)” (1)

  1. Bij gradiëntafdaling is de gradiënt van het verlies ∂L/∂w bij het gewicht w = 2,0 gelijk aan 0,5 en is de leersnelheid 0,1. Wat is het gewicht na één update?

Verwante termen

Activatiefunctie Convolutioneel neuraal netwerk (CNN) Gesuperviseerd leren (supervised learning) Hoofdcomponentenanalyse (PCA) k-means-clustering Kruisvalidatie (cross-validation) Ongesuperviseerd leren (unsupervised learning) Overfitting (overaanpassing) Precisie en recall (precision and recall) Recurrent neuraal netwerk (RNN)

Naar de woordenlijst