mini-batch SGD
forkortelse for mini-batch stochastic gradient descent
Mini-batch SGD er en optimeringsalgoritme, der opdaterer modelvægte baseret på en lille delmængde (mini-batch) af træningsdata i stedet for hele datasættet eller enkelte eksempler.
Kort fortalt
Kort fortalt: Mini-batch SGD finder en balance mellem støj og effektivitet ved at opdatere modellens vægte efter hver lille stak data.
- Kategori
- træning
- Niveau
- øvet
- Udtale
- ˈmɪni bætʃ ɛs dʒiː diː
Betydninger
1- 1
En optimeringsalgoritme, der opdaterer modelparametre ved at beregne gradienten over en lille, tilfældig delmængde af træningsdata.
- I træningen af neurale netværk anvendes typisk mini-batch SGD med batchstørrelse 32 eller 64 for at balancere hastighed og konvergens. — Deep Learning, Goodfellow et al., 2016
- Mini-batch SGD reducerer variansen i gradientestimaterne sammenlignet med ren SGD, hvilket fører til mere stabil træning. — Dokumentation, 2023
Hvornår bruges det
Bruges i stort set al deep learning-træning for at fremskynde konvergens og reducere hukommelsesforbrug i forhold til batch-gradient descent, samtidig med at støjen regulariserer modellen.
Formel
θ_{t+1} = θ_t - η * (1/|B|) * Σ_{x∈B} ∇_θ L(x, θ)Kodeeksempel
for epoch in range(num_epochs):
np.random.shuffle(data)
for i in range(0, len(data), batch_size):
batch = data[i:i+batch_size]
gradients = compute_gradient(batch, model)
model.weights -= learning_rate * gradients.mean(axis=0)Simpel mini-batch SGD-løkke, der opdaterer vægte efter hver mini-batch.
Oprindelse
Mini-batch SGD kombinerer mini-batch (lille stak) og SGD (stokastisk gradient descent), som oprindeligt blev introduceret som en effektiv måde at træne store modeller.
Kilder
2- Deep Learning, Goodfellow, Bengio, Courville, 2016
- Stochastic Gradient Descent Tricks, Bottou, 2012