Quali sono le differenze tra 'epoch', 'batch' e 'minibatch'?


38

Per quanto ne so, quando adotto la Discendenza gradiente stocastica come algoritmo di apprendimento, qualcuno usa "epoca" per il set di dati completo e "batch" per i dati utilizzati in una singola fase di aggiornamento, mentre un altro usa rispettivamente "batch" e "minibatch" e gli altri usano "epoca" e "minibatch". Questo porta molta confusione durante la discussione.

Quindi qual è il detto corretto? O sono solo dialetti accettabili?

Risposte:


25
  • Epoca significa un passaggio sull'intero set di allenamento
  • Batch significa che usi tutti i tuoi dati per calcolare il gradiente durante una iterazione.
  • Mini-batch significa che prendi un sottoinsieme di tutti i tuoi dati durante una iterazione.

15

Un'epoca in genere indica che l'algoritmo vede una volta ogni istanza di allenamento. Supponendo ora di avere istanze di allenamento:n

Se si esegue l'aggiornamento batch, ogni aggiornamento dei parametri richiede che l'algoritmo visualizzi ciascuna delle istanze di training esattamente una volta, ovvero ogni epoca in cui i parametri vengono aggiornati una volta.n

Se si esegue l'aggiornamento mini-batch con dimensione batch = , ogni aggiornamento dei parametri richiede che l'algoritmo veda b di n istanze di training, ovvero ogni epoca in cui i parametri vengono aggiornati circa n / b volte.BBnn/B

nn


4

"Epoca" di solito significa esporre un algoritmo di apprendimento all'intero insieme di dati di allenamento. Questo non ha sempre senso in quanto a volte generiamo dati.

"Batch" e "Minibatch" possono essere fonte di confusione.

Gli esempi di addestramento a volte devono essere "raggruppati" perché non tutti i dati possono necessariamente essere esposti all'algoritmo in una sola volta (a causa di vincoli di memoria di solito).

Nel contesto di SGD, "Minibatch" significa che il gradiente viene calcolato su tutto il batch prima di aggiornare i pesi. Se non si utilizza un "minibatch", ogni esempio di allenamento in un "batch" aggiorna i parametri dell'algoritmo di apprendimento in modo indipendente.


Sei sicuro dell'ultimo paragrafo? Ho pensato che SGD "in batch" utilizza tutti i dati in un'epoca per calcolare lentamente un gradiente molto preciso. La tua ultima frase sembra un mini-lotto di dimensioni 1.
Matt Krause

Inoltre, benvenuto in Cross Validated!
Matt Krause,

Sì, SGD originale ha un mini-batch di dimensioni 1. Penso che alla fine dipenda dall'interpretazione dell'autore del software. Molto spesso batch == mini-batch, senza che la documentazione abbia mai menzionato "mini-batch".
ferrouswheel

Err, suppongo di voler dire che GD in batch utilizza tutti i dati. Di solito uso batch e minibatch in modo intercambiabile, ma "mini-batch" quando voglio sottolineare che è davvero piccolo ...
Matt Krause,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.