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. 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