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
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
2Kilder
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)