Linee guida per la selezione di un ottimizzatore per l'addestramento delle reti neurali


18

Uso reti neurali da un po 'di tempo. Tuttavia, una cosa con cui continuo a lottare è la selezione di un ottimizzatore per allenare la rete (usando backprop). Quello che faccio di solito è solo iniziare con uno (ad esempio SGD standard) e poi provare altri altri in modo quasi casuale. Mi chiedevo se esiste un approccio migliore (e meno casuale) per trovare un buon ottimizzatore, ad esempio da questo elenco:

  • SGD (con o senza slancio)
  • AdaDelta
  • AdaGrad
  • RMSProp
  • Adamo

In particolare, mi interessa se esiste una giustificazione teorica per sceglierne uno rispetto all'altro, dato che i dati di addestramento hanno alcune proprietà, ad esempio essendo scarsi. Immagino anche che alcuni ottimizzatori funzionino meglio di altri in domini specifici, ad esempio durante la formazione di reti convoluzionali contro reti feed-forward o di classificazione contro regressione.

Se qualcuno di voi ha sviluppato una strategia e / o un'intuizione su come scegliere gli ottimizzatori, sarei molto interessato a sentirlo. Inoltre, se c'è qualche lavoro che fornisce una giustificazione teorica per sceglierne uno sopra l'altro, sarebbe ancora meglio.

Risposte:


3

1) AdaGrad penalizza il tasso di apprendimento troppo duramente per i parametri che vengono aggiornati frequentemente e dà più velocità di apprendimento ai parametri sparsi, parametri che non vengono aggiornati con frequenza. In numerosi problemi spesso nei dati sono presenti le informazioni più critiche che non sono così frequenti ma sparse. Quindi, se il problema su cui stai lavorando riguarda dati sparsi come tf-idf, ecc. Adagrad può essere utile.

2) AdaDelta, RMSProp funziona quasi su linee simili con l'unica differenza in Adadelta per cui non è necessaria una costante del tasso di apprendimento iniziale.

3) Adam combina le buone proprietà di Adadelta e RMSprop e quindi tende a fare meglio per la maggior parte dei problemi.

4) La discesa gradiente stocastica è molto semplice e ora è raramente utilizzata. Un problema è con il tasso di apprendimento globale associato allo stesso. Quindi non funziona bene quando i parametri sono su scale diverse poiché un basso tasso di apprendimento rallenterà l'apprendimento mentre un grande tasso di apprendimento potrebbe causare oscillazioni. Anche la discesa del gradiente stocastico generalmente fa fatica a sfuggire ai punti della sella. Adagrad, Adadelta, RMSprop e ADAM generalmente gestiscono meglio i punti di sella. La SGD con slancio rende un po 'più veloce l'ottimizzazione e aiuta anche a sfuggire meglio ai minimi locali.


2

Il mio approccio personale è quello di scegliere l'ottimizzatore più recente (ovvero il più recente pubblicato in una rivista peer-reviewed), perché di solito riportano i risultati su set di dati standard o battono lo stato dell'arte o entrambi. Quando uso Caffe per esempio, utilizzo sempre Adam ( http://arxiv.org/abs/1412.6980 ).


0
Nadam(lr=0.002, beta_1=0.9, beta_2=0.999, epsilon=None, schedule_decay=0.004)

Proprio come Adamè essenzialmente RMSpropcon lo slancio, Nadamè Adamo RMSpropcon lo slancio di Nesterov.

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.