SGD med momentum

Optimeringsteknik der tilføjer en momentumterm til SGD for at accelerere konvergensen og dæmpe oscillationer.

Kort fortalt

SGD med momentum bruger et glidende gennemsnit af tidligere opdateringer til at gøre træningen hurtigere og mere stabil.

Kategori
træning
Niveau
øvet

Betydninger

1
  1. 1

    En variant af stokastisk gradient nedstigning, hvor en momentumterm akkumulerer en del af den tidligere opdatering for at udjævne skridt og fremskynde konvergens.

    • I træningen af en CNN anvendes SGD med momentum med μ=0.9 for at opnå hurtigere konvergens.
    • Uden momentum ville SGD oscillere i stejle dale, men momentum udjævner skridtene.

Hvornår bruges det

Anvendes i træning af dybe neurale netværk for at undgå lokale minima og opnå hurtigere indlæring. Typisk sættes momentumhastigheden til omkring 0.9.

Formel

v_{t+1} = μ·v_t + η·∇L(θ_t); θ_{t+1} = θ_t - v_{t+1}

Kodeeksempel

def sgd_momentum(params, grads, lr=0.01, momentum=0.9, velocity=None):
    if velocity is None:
        velocity = [0] * len(params)
    for i in range(len(params)):
        velocity[i] = momentum * velocity[i] - lr * grads[i]
        params[i] += velocity[i]

Simpel implementering af SGD med momentum i Python. Parametre og gradienter opdateres med en hastighedsakkumulator.

Oprindelse

Momentum er lånt fra fysik, hvor en genstand med momentum fortsætter i samme retning. Begrebet blev introduceret i optimering af Polyak i 1964.

Afledte ord

2

Kilder

2
  • Some methods of speeding up the convergence of iteration methods (Polyak, 1964)
  • On the importance of initialization and momentum in deep learning (Sutskever et al., 2013)