RMSProp e Adam vs SGD


12

Sto eseguendo esperimenti sul set di validazione EMNIST usando le reti con RMSProp, Adam e SGD. Sto ottenendo una precisione dell'87% con SGD (tasso di apprendimento di 0,1) e dropout (0.1 drop prob) e regolarizzazione L2 (penalità 1e-05). Quando collaudo la stessa configurazione esatta con RMSProp e Adam, nonché il tasso di apprendimento iniziale di 0,001, sto ottenendo una precisione dell'85% e una curva di allenamento significativamente meno regolare. Non so come spiegare questo comportamento. Quale può essere la ragione dietro la mancanza di fluidità nella curva di allenamento e la minore precisione e tassi di errore più elevati raggiunti?


Questo dipende dalla rete. Puoi mostrarci i dettagli sulla rete? Puoi fornire anche le curve di apprendimento?
Memming il

Questa è una rete con 5 livelli (Dropout, Affine, ELU in ogni strato), configurati come segue: 150 dimensioni nascoste, funzione di attivazione ELU utilizzata, frequenza di apprendimento 0,1 per SGD, velocità di apprendimento 0,001 per RMS e Adam, regolarizzazione L2 con 1e -05 di penalità, dropout con probabilità di esclusione 0.1.
Alk,

E quando dici "esattamente la stessa configurazione ... velocità di apprendimento iniziale di 0,001", intendi che hai usato una frequenza di apprendimento diversa o hai fatto due esperimenti: uno con la stessa velocità di apprendimento e uno con una diversa? Può dipendere dall'effettivo software in uso su quali parametri sono impostati su cosa.
Wayne,

Quindi ho usato 0.1 per SGD e 0.001 sia per Adam che per RMSProp. Questo perché quando ho eseguito Adam e RMSProp con un tasso di apprendimento di 0,1, entrambi hanno funzionato male con una precisione del 60%. Inoltre, 0,001 è il valore raccomandato nel documento su Adam.
Alk,

È necessario pubblicare le curve di apprendimento e se si misura l'errore sui dati di test o di allenamento.
Jakub Bartczuk,

Risposte:


4

Dopo aver cercato alcuni articoli online e la documentazione di Keras, si suggerisce che l'ottimizzatore RMSProp sia raccomandato per le reti neurali ricorrenti. https://github.com/keras-team/keras/blob/master/keras/optimizers.py#L209

Discesa gradiente stocastica sembra sfruttare la sua velocità di apprendimento e lo slancio tra ogni lotto per ottimizzare i pesi del modello in base alle informazioni della funzione di perdita nel mio caso è "categorical_crossentropy".

Suggerisco http://ruder.io/optimizing-gradient-descent/index.html per ulteriori informazioni sugli algoritmi di ottimizzazione.


Non sono sicuro di cosa intendi con "l'ottimizzatore RMSProp è raccomandato per le reti neurali ricorrenti". Il collegamento che hai inserito ora è interrotto e non è menzionato da nessuna parte che è raccomandato.
Harshal Parekh,
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.