Scelta delle dimensioni minibatch appropriate per la discesa gradiente stocastica (SGD)


13

C'è qualche letteratura che esamina la scelta della dimensione del minibatch quando si esegue la discesa gradiente stocastica? Nella mia esperienza, sembra essere una scelta empirica, di solito trovata attraverso la convalida incrociata o usando varie regole empiriche.

È una buona idea aumentare lentamente le dimensioni del minibatch man mano che diminuisce l'errore di convalida? Quali effetti avrebbe questo sull'errore di generalizzazione? Sto meglio usando un minibatch estremamente piccolo e aggiornando il mio modello centinaia di migliaia di volte? Starei meglio con un numero bilanciato a metà tra estremamente piccolo e batch?
Devo ridimensionare la dimensione del mio minibatch con la dimensione del set di dati o il numero previsto di funzionalità all'interno del set di dati?

Ovviamente ho molte domande sull'implementazione di schemi di apprendimento in minibatch. Sfortunatamente, la maggior parte degli articoli che leggo non specifica davvero come hanno scelto questo iperparametro. Ho avuto un certo successo da autori come Yann LeCun, in particolare dalla raccolta di articoli Tricks of the Trade. Tuttavia, non ho ancora visto queste domande completamente affrontate. Qualcuno ha qualche consiglio per documenti o consigli su quali criteri posso usare per determinare le dimensioni minibatch adeguate quando provo ad apprendere le funzionalità?


Sembra che non stia ottenendo molti successi su questo argomento. Esiste un sito di scambio di stack migliore in cui porre domande sull'apprendimento automatico o sul deep learning come questo?
Jason_L_Bens,

Risposte:


6

La teoria per l'efficacia di SGD è stata elaborata su singoli aggiornamenti di esempio (ad es. Dimensioni minibatch 1), quindi teoricamente non è necessario utilizzare minibatch più grandi. Ha due vantaggi pratici:

Uno , se il calcolo può essere vettorializzato, potresti essere in grado di calcolare i gradienti per un piccolo mini-lotto> 1 quasi altrettanto rapidamente, portando a significativi aumenti di velocità nell'allenamento.

In questo caso, la dimensione ottimale del minibatch è una funzione dell'hardware e dell'implementazione specifici con cui stai lavorando, quindi probabilmente è meglio sperimentare per trovare il punto giusto.

Due , calcolare il gradiente su dimensioni minibatch> 1 porterà a gradienti più precisi e passaggi più ottimali. Ma questo vantaggio arriverà e si stabilizzerà rapidamente una volta che la dimensione del minibatch è aumentata oltre 1, quindi puoi concentrarti principalmente sul primo obiettivo.

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.