Stochastic gradient descent

Stokastisk gradient descent (SGD) er en optimeringsalgoritme, der opdaterer modelparametre ved hjælp af gradienten beregnet på en enkelt eller et lille antal tilfældigt udvalgte træningseksempler.

Kort fortalt

En metode til at træne maskinlæringsmodeller ved at justere parametrene lidt ad gangen baseret på fejlen på enkeltstående eksempler i stedet for hele datasættet.

Kategori
teknik
Niveau
øvet
Udtale
/stəˈkæstɪk ˈɡreɪdiənt dɪˈsent/

Betydninger

1
  1. 1

    En iterativ optimeringsalgoritme, der tilnærmer gradienten af en objektivfunktion ved at beregne den på et tilfældigt udvalgt træningseksempel (eller en lille stikprøve) i stedet for hele datasættet, hvilket reducerer beregningsomkostningerne betydeligt.

    • Træning af et neuralt netværk med stochastic gradient descent konvergerer hurtigere for store datasæt end batch gradient descent.
    • Stochastic gradient descent med momentum kan undgå at sidde fast i lokale minima.

Hvornår bruges det

SGD bruges næsten universelt til træning af dybe neurale netværk på grund af dets effektivitet på store datasæt. Det er standardoptimeringsalgoritmen i mange deep learning-rammer som PyTorch og TensorFlow, ofte med varianter som momentum eller Adam.

Formel

θ ← θ - η · ∇_θ J(θ; x^(i), y^(i))

Kodeeksempel

def sgd_update(weights, gradient, learning_rate):
    return weights - learning_rate * gradient

En simpel Python-funktion der udfører ét SGD-trin: opdaterer vægtene i retning modsat gradienten.

Oprindelse

'Stochastic' kommer fra græsk 'stokhastikos' (tilfældig), 'gradient' refererer til hældningen af fejlfunktionen, og 'descent' betyder nedstigning. Kombinationen beskriver en metode, der bruger tilfældige udsnit til at finde det laveste punkt i en fejlfunktion.

Afledte ord

3

Kilder

2
  • Robbins, H., & Monro, S. (1951). A stochastic approximation method.
  • Bottou, L. (2010). Large-scale machine learning with stochastic gradient descent.