Perché i ricercatori delle reti neurali si preoccupano delle epoche?


69

Un'epoca nella discesa del gradiente stocastico è definita come un singolo passaggio attraverso i dati. Per ogni minibatch SGD, vengono estratti campioni, il gradiente calcolato e i parametri aggiornati. Nell'impostazione dell'epoca, i campioni vengono disegnati senza sostituzione.k

Ma questo sembra inutile. Perché non disegnare ogni minibatch SGD mentre disegna casualmente dall'intero set di dati ad ogni iterazione? Su un gran numero di epoche, le piccole deviazioni di cui si vedono i campioni più o meno spesso sembrano non essere importanti.k


1
+1 per la domanda, è interessante notare che avevo quasi la stessa domanda che stava per fare!
Haitao Du,

Prove aneddotiche, ma di recente ho inserito una rete neurale a uno strato usando SGD sui dati MNIST, che sono 50000 in dimensioni di addestramento. Dopo un run-through casuale l'accuratezza della classificazione non era molto superiore al 30-40% e la probabilità di log chiaramente non era convergente. Così ho ripetuto la procedura per altre 30 epoche con un'accuratezza superiore al 90%. Almeno per controesempio questo mi ha mostrato che possono essere necessari.
tomka,

6
@tomka Ciò sembra fornire la prova che sono necessari più passaggi sui dati, il che è coerente con il metodo qui proposto: continua a disegnare k campioni per iterazione di addestramento e nauseam.
Ripristina Monica il

1
Un'altra domanda interessante sarebbe: anche l'ordine dei mini lotti avrà un impatto sul sovradimensionamento?
Kh40tiK,

3
@Pinocchio La pratica SGD standard è il campionamento senza sostituzione (fino a quando il pool di campioni non si esaurisce, a quel punto ricomincia una nuova epoca con tutti i dati). La mia domanda è: perché non utilizza il campionamento con la sostituzione. Si scopre che una risposta è che il campionamento senza sostituzione migliora il tasso di convergenza per il modello.
Ripristina Monica il

Risposte:


60

Oltre alla risposta di Franck sugli aspetti pratici, e la risposta di David sull'esame di piccoli sottogruppi - entrambi i quali sono punti importanti - ci sono in effetti alcuni motivi teorici per preferire il campionamento senza sostituzione. Il motivo è forse legato al punto di David (che è essenzialmente il problema del collezionista di coupon ).

Nel 2009, Léon Bottou ha confrontato le prestazioni di convergenza su un particolare problema di classificazione del testo ( ).n=781,265

Bottou (2009). Convergenza curiosamente veloce di alcuni algoritmi di discesa con gradiente stocastico . Atti del simposio sull'apprendimento e la scienza dei dati. ( pdf dell'autore )

Ha addestrato una macchina vettoriale di supporto tramite SGD con tre approcci:

  • Casuale : disegna campioni casuali dall'insieme completo di dati ad ogni iterazione.
  • Ciclo : mescola il set di dati prima di iniziare il processo di apprendimento, quindi passaci sopra in sequenza, in modo che in ogni epoca vedi gli esempi nello stesso ordine.
  • Casuale : rimescola il set di dati prima di ogni epoca, in modo che ogni epoca vada in un ordine diverso.

C θ t tE[C(θt)minθC(θ)]Cθtt

  • Per Casuale, la convergenza era approssimativamente dell'ordine di (come previsto dalla teoria esistente a quel punto).t1
  • Il ciclo ha ottenuto la convergenza nell'ordine di (con ma variabile a seconda della permutazione, ad esempio per la sua Figura 1). α > 1 α 1.8tαα>1α1.8
  • Shuffle è stato più caotico, ma la linea più adatta ha dato , molto più veloce di Casuale.t2

Questa è la sua Figura 1 che illustra che: illustrazione della convergenza a determinati tassi

Ciò è stato successivamente teoricamente confermato dal documento:

Gürbüzbalaban, Ozdaglar e Parrilo (2015). Perché il rimpasto casuale batte la discesa gradiente stocastica . arXiv: 1510.08560 . ( video del discorso invitato al NIPS 2015 )

La loro prova si applica solo al caso in cui la funzione di perdita è fortemente convessa, cioè non alle reti neurali. È ragionevole aspettarsi, tuttavia, che ragionamenti simili potrebbero applicarsi al caso della rete neurale (che è molto più difficile da analizzare).


3
Questa è una risposta molto perspicace. Grazie mille per il tuo contributo.
Ripristina Monica il

1
scusate l'ignoranza, ma vi dispiace spiegare un po 'di più qual è la differenza tra i tre? In particolare sono confuso su Casuale, quando dici "campione", cosa intendi? So che questo non è ciò a cui ti riferisci, ma il mini batch SGD Neural Net standard di solito campiona i batch senza sostituzione ad ogni iterazione. È quello che fa Random? Se lo è, come è diverso da Shuffle?
Pinocchio,

1
Ora che rileggo tutti e tre sembrano lo stesso algoritmo, qual è la differenza se il set di dati viene mischiato o meno e con quale frequenza se i batch per SGD sono sempre casuali?
Pinocchio,

3
@Pinocchio Immagina un set di dati a quattro lamentele. Casuale potrebbe andare ACADBBCA; ogni voce è completamente casuale. Il ciclo potrebbe andare BDAC BDAC BDAC; sceglie un ordine per ogni epoca e quindi si ripete. Shuffle potrebbe essere BDAC ADCB CBAD; va in epoche, ma ognuna è casuale. Questa analisi non utilizza minibatch, ma solo SGD a un elemento alla volta.
Dougal,

Questa è un'ottima risposta Grazie a te!
DankMasterDan

24

È davvero inutile dal punto di vista delle prestazioni con un ampio set di allenamento, ma usare le epoche può essere conveniente, ad esempio:

  • fornisce una metrica piuttosto buona: "la rete neurale è stata addestrata per 10 epoche" è un'affermazione più chiara di "la rete neurale è stata addestrata per 18942 iterazioni" o "la rete neurale è stata addestrata su 303072 campioni".
  • ci sono abbastanza cose casuali che accadono durante la fase di allenamento: inizializzazione casuale del peso, mischia in mini lotti, abbandono, ecc.
  • è facile da implementare
  • evita di chiedersi se il set di allenamento sia abbastanza grande da non avere epoche

[1] fornisce un motivo in più, che non è molto rilevante data la configurazione del computer di oggi:

Come per qualsiasi metodo di discesa gradiente stocastico (incluso il caso mini-batch), è importante per l'efficienza dello stimatore che ogni esempio o minibatch sia campionato approssimativamente in modo indipendente. Poiché l'accesso casuale alla memoria (o peggio ancora al disco) è costoso, una buona approssimazione, chiamata gradiente incrementale (Bertsekas, 2010), consiste nel visitare gli esempi (o mini-batch) in un ordine fisso corrispondente al loro ordine in memoria o disco (ripetendo gli esempi nello stesso ordine in una seconda epoca, se non siamo nel puro caso online in cui ogni esempio viene visitato una sola volta).In questo contesto, è più sicuro se gli esempi oi mini-batch vengono prima messi in un ordine casuale (per assicurarsi che sia così, potrebbe essere utile rimescolare prima gli esempi). È stata osservata una convergenza più rapida se l'ordine in cui i mini-batch vengono visitati viene modificato per ogni epoca, il che può essere ragionevolmente efficace se il set di addestramento si mantiene nella memoria del computer.


[1] Bengio, Yoshua. " Consigli pratici per la formazione graduale di architetture profonde. " Reti neurali: trucchi del mestiere. Springer Berlin Heidelberg, 2012. 437-478.


1
k

1
@Sycorax Il campionamento senza sostituzione, sebbene ovviamente non sia indipendente, è "approssimativamente indipendente", nel senso che è scambiabile . Dal punto di vista della formazione di un classificatore che non si preoccupa troppo di alcun punto dati, questa scambiabilità è decisamente abbastanza vicina a "approssimativamente indipendente".
Dougal,

18

Non sono affatto d'accordo sul fatto che chiaramente non importerà. Diciamo che ci sono un milione di esempi di formazione e prendiamo dieci milioni di campioni.

In R, possiamo vedere rapidamente come appare la distribuzione

plot(dbinom(0:40, size = 10 * 1E6, prob = 1E-6), type = "h")

PMF binomiale

Alcuni esempi verranno visitati più di 20 volte, mentre l'1% di essi verrà visitato 3 o meno volte. Se il set di training è stato scelto con cura per rappresentare la distribuzione prevista di esempi in dati reali, ciò potrebbe avere un impatto reale in alcune aree del set di dati, specialmente quando si inizia a suddividere i dati in gruppi più piccoli.

Considera il recente caso in cui un elettore dell'Illinois ha effettivamente sovracampionato di 30 volte e ha drasticamente spostato le stime del modello per il suo gruppo demografico (e, in misura minore, per l'intera popolazione americana). Se accidentalmente sovracampioniamo immagini di "Ruffed Grouse" scattate su sfondi verdi in giorni nuvolosi con una ridotta profondità di campo e sottocampioniamo altri tipi di immagini di grouse, il modello potrebbe associare quelle caratteristiche irrilevanti all'etichetta della categoria. Più modi ci saranno di suddividere i dati, più ci saranno questi sottogruppi e maggiori saranno le opportunità per questo tipo di errore.


1
Non penso che farebbe una grande differenza nella pratica per un grande set di allenamento, ma sicuramente mi aspetto che lo farebbe con un set di allenamento più piccolo.
Franck Dernoncourt,

5
@FranckDernoncourt bene, il punto era che può importare grandi set di dati se inizi a guardare piccoli sottogruppi. Che non è una procedura insolita in grandi set di dati,
dimpol

abbastanza sicuro che avresti dovuto usare una distribuzione uniforme, non un binomio
lahwran il

2
107106samples = sample(1:1E6, size = 1E7, replace = TRUE)plot(table(table(samples)) / 1E7)

2
aha! Ho sbagliato, quindi.
Lahwran,
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.