In che modo la dimensione del lotto influenza la convergenza di SGD e perché?


18

Ho visto conclusioni simili da molte discussioni, che con l'aumentare delle dimensioni del minibatch la convergenza di SGD diventa effettivamente più difficile / peggio, ad esempio questo documento e questa risposta . Ho anche sentito parlare di persone che usano trucchi come piccoli tassi di apprendimento o dimensioni dei lotti nella fase iniziale per affrontare questa difficoltà con lotti di grandi dimensioni.

Tuttavia sembra controintuitivo in quanto la perdita media di un minibatch può essere considerata come un'approssimazione della perdita attesa sulla distribuzione dei dati,

1|X|ΣXXl(X,w)EX~pdun'tun'[l(X,w)]
maggiore è la dimensione del lotto, più precisa dovrebbe essere. Perché in pratica non è così?


Ecco alcuni dei miei pensieri (probabilmente sbagliati) che cercano di spiegare.

I parametri del modello dipendono fortemente l'uno dall'altro, quando il batch diventa troppo grande influenzerà troppi parametri contemporaneamente, in modo che sia difficile per i parametri raggiungere una dipendenza intrinseca stabile? (come il problema di spostamento della covariata interno menzionato nel documento di normalizzazione in lotti )

O quando quasi tutti i parametri sono responsabili in ogni iterazione tenderanno ad apprendere schemi impliciti ridondanti, riducendo così la capacità del modello? (Voglio dire, per problemi di classificazione delle cifre, alcuni motivi dovrebbero essere responsabili dei punti, altri dei bordi, ma quando ciò accade, ogni motivo cerca di essere responsabile di tutte le forme).

O è perché quando la dimensione dei lotti si avvicina alla scala del set di addestramento, i minibatch non possono più essere visti come iid dalla distribuzione dei dati, poiché ci sarà una grande probabilità di minibatch correlati?


Aggiornamento
Come sottolineato nella risposta di Benoit Sanchez, un motivo importante è che i minibatch di grandi dimensioni richiedono più calcoli per completare un aggiornamento e la maggior parte delle analisi utilizza una quantità fissa di epoche di addestramento per il confronto.

Tuttavia, questo documento (Wilson e Martinez, 2003) mostra che una dimensione del lotto più grande è ancora leggermente svantaggiosa, anche se viene fornita una quantità sufficiente di epoche di addestramento. È generalmente così? inserisci qui la descrizione dell'immagine

Risposte:


12

N

  • 27N
  • 8343×N200000.47N

Puoi vedere che con lotti più grandi hai bisogno di molti meno aggiornamenti per la stessa precisione.

Ma non può essere confrontato perché non sta elaborando la stessa quantità di dati. Sto citando il primo articolo:

KBj1jKBj

Qui si tratta dell'elaborazione della stessa quantità di dati e, sebbene ci sia un piccolo overhead per più mini-batch, questo richiede risorse di elaborazione comparabili.

Esistono diversi modi per capire perché diversi aggiornamenti sono migliori (per la stessa quantità di dati letti). È l'idea chiave della discesa gradiente stocastica rispetto alla discesa gradiente. Invece di leggere tutto e poi correggerti alla fine, correggi te stesso sulla strada, rendendo le letture successive più utili poiché ti correggi da un'ipotesi migliore. Dal punto di vista geometrico, diversi aggiornamenti sono migliori perché si stanno disegnando diversi segmenti, ciascuno nella direzione del gradiente (approssimativo) all'inizio di ciascun segmento. mentre un singolo grande aggiornamento è un singolo segmento sin dall'inizio nella direzione del gradiente (esatto). È meglio cambiare direzione più volte anche se la direzione è meno precisa.

La dimensione dei mini-batch è essenzialmente la frequenza degli aggiornamenti: più piccoli sono i minibatch, più aggiornamenti. Ad un estremo (minibatch = set di dati) si ha una discesa gradiente. All'altro estremo (minibatch = una riga) hai SGD pieno per riga. SGD per linea è comunque migliore, ma i minibatch più grandi sono adatti per una parallelizzazione più efficiente.

Alla fine del processo di convergenza, SGD diventa meno preciso di (batch) GD. Ma a questo punto, le cose diventano (di solito) una sorta di adattamento inutilmente preciso. Mentre hai una funzione di perdita leggermente più piccola sul set di allenamento, non ottieni un vero potere predittivo. Stai solo cercando l'ottimale molto preciso, ma non aiuta. Se la funzione di perdita è correttamente regolarizzata (il che impedisce un adattamento eccessivo) non si esegue esattamente "sovra-adattamento", si è semplicemente inutilmente "iper". Ciò indica una modifica non significativa dell'accuratezza sul set di test.


1
grazie, ha molto senso. Quindi, fondamentalmente, se si esegue la stessa quantità di aggiornamenti, la dimensione del batch più grande sarà altrettanto valida, giusto?
dontloo,

ti capita di conoscere qualche esperimento pubblicato al riguardo (confrontando diverse dimensioni di lotto con un numero fisso di aggiornamenti)?
dontloo,

Sì per lo stesso numero di aggiornamenti, i lotti più grandi sono sempre migliori. Non conosco una pubblicazione, se mai la trovo, la posterò.
Benoit Sanchez,

Ho letto il resto della tua domanda (la tabella). È interessante notare che mostra i risultati su un set di test mentre l'obiettivo del gradiente decente è quello di ottimizzare il set di allenamento. È possibile che piccoli lotti evitino un certo tipo di sovradimensionamento casuale randomizzando l'ottimale. È una cosa sottile di cui non ho una presa intuitiva.
Benoit Sanchez,

Secondo l'articolo la differenza di precisione non è significativa. Vogliono solo sottolineare che l'accuratezza è essenzialmente la stessa. Quello che vogliono principalmente sottolineare è che SGD con piccoli lotti è molto più veloce.
Benoit Sanchez,

4

Per aggiungere alla risposta di Curtis White (e aggiungere altri riferimenti):

Sì, SGD funziona come un tipo di regolarizzazione. Questo è importante perché, altrimenti, è difficile spiegare perché i DNN non si adattano sempre troppo, perché possono .

Il motivo, a quanto ho capito, è che SGD provoca un "salto" nello spazio dei parametri, quindi durante l'allenamento i parametri non possono rimanere in un minimo stretto, solo in (o vicino a) più ampi. E questi più ampi apparentemente [1] generalizzano meglio (aka, meno overfitting).

Più riferimenti:

  • Ecco [2] un altro documento che formalizza questo (o ci prova, non ho seguito tutto, controlla tu stesso!)
  • Questo documento [3] afferma che c'è una fase in "stochastic relaxation, or random diffusion"cui conduce la stocastica inerente a SGD"maximiz[ation of] the conditional entropy of the layer" .

Entrambi sostengono che SGD corrisponde a un termine di regolarizzazione dell'entropia.

Potrebbero esserci sicuramente altri modi in cui la dimensione del lotto influenza la convergenza; questo è quello che conosco.


[1] Esempio: "Una prospettiva bayesiana sulla generalizzazione e la discesa del gradiente stocastico", Smith, Le, 2018. Dall'abstract: "We propose that the noise introduced by small mini-batches drives the parameters towards minima whose evidence is large."

[2] "La discesa gradiente stocastica esegue inferenza variazionale, converge per limitare i cicli per reti profonde", Chaudhari, Soatto 2017

[3] "Apertura della scatola nera delle reti neurali profonde tramite informazione" Schwartz-Ziv, Tishby, 2017

[4] "La comprensione del deep learning richiede un ripensamento della generalizzazione", C. Zhang ecc. 2016


(+1) Buone referenze. a proposito, il primo autore di [4] è C. Zhang
user20160,

Oh, hai ragione! Modificato, grazie per la correzione.
dasWesen,

0

Una dimensione del lotto troppo grande può impedire la convergenza almeno quando si utilizza SGD e formazione MLP utilizzando Keras. Per quanto riguarda il motivo, non sono sicuro al 100% se abbia a che fare con la media dei gradienti o che aggiornamenti più piccoli forniscano una maggiore probabilità di sfuggire ai minimi locali.

Vedi qui .

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.