Il documento di Adam afferma che "... molte funzioni oggettive sono composte da una somma di sottofunzioni valutate in diversi sottocampioni di dati; in questo caso l'ottimizzazione può essere resa più efficiente prendendo gradini rispetto a singole sottofunzioni ..." Qui, semplicemente significa che la funzione obiettivo è una somma di errori rispetto agli esempi di allenamento e che la formazione può essere eseguita su singoli esempi o minibatch. Questo è lo stesso della discesa gradiente stocastica (SGD), che è più efficiente per problemi su larga scala rispetto all'allenamento in batch poiché gli aggiornamenti dei parametri sono più frequenti.
Per quanto riguarda il motivo per cui Adam funziona, utilizza alcuni trucchi.
Uno di questi trucchi è lo slancio, che può dare una convergenza più rapida. Immagina una funzione oggettiva che ha la forma di un canyon lungo e stretto che degrada gradualmente verso il minimo. Supponiamo di voler ridurre al minimo questa funzione usando la discesa gradiente. Se partiamo da qualche punto sulla parete del canyon, il gradiente negativo punterà nella direzione della discesa più ripida, cioè principalmente verso il fondo del canyon. Questo perché le pareti del canyon sono molto più ripide della pendenza graduale del canyon verso il minimo. Se il tasso di apprendimento (cioè la dimensione del gradino) è piccolo, potremmo scendere al fondo del canyon, quindi seguirlo verso il minimo. Ma i progressi sarebbero lenti. Potremmo aumentare il tasso di apprendimento, ma ciò non cambierebbe la direzione dei passaggi. In questo caso, sorpasseremmo il pavimento del canyon e finiremmo sulla parete opposta. Vorremmo quindi ripetere questo schema, oscillando da una parete all'altra facendo progressi lenti verso il minimo. Il momento può aiutare in questa situazione.
Momentum significa semplicemente che una parte dell'aggiornamento precedente viene aggiunta all'aggiornamento corrente, in modo che gli aggiornamenti ripetuti in un particolare composto direzione; accumuliamo slancio, muovendoci sempre più velocemente in quella direzione. Nel caso del canyon, creeremmo slancio nella direzione del minimo, poiché tutti gli aggiornamenti hanno un componente in quella direzione. Al contrario, spostarsi avanti e indietro attraverso le pareti del canyon implica invertire costantemente la direzione, quindi lo slancio aiuterebbe a smorzare le oscillazioni in quelle direzioni.
Un altro trucco utilizzato da Adam è selezionare in modo adattivo una frequenza di apprendimento separata per ciascun parametro. I parametri che normalmente ricevono aggiornamenti più piccoli o meno frequenti ricevono aggiornamenti più grandi con Adam (è vero anche il contrario). Ciò accelera l'apprendimento nei casi in cui i tassi di apprendimento appropriati variano tra i parametri. Ad esempio, nelle reti profonde, i gradienti possono diventare piccoli agli strati iniziali e ha senso aumentare i tassi di apprendimento per i parametri corrispondenti. Un altro vantaggio di questo approccio è che, poiché i tassi di apprendimento vengono regolati automaticamente, la sintonizzazione manuale diventa meno importante. SGD standard richiede un'attenta messa a punto (e possibilmente regolazione online) dei tassi di apprendimento, ma questo è meno vero con Adam e i metodi correlati. È ancora necessario selezionare iperparametri,
Metodi correlati :
Il momento è spesso usato con SGD standard. Una versione migliorata si chiama momentum di Nesterov o gradiente accelerato di Nesterov. Altri metodi che utilizzano frequenze di apprendimento ottimizzate automaticamente per ciascun parametro includono: Adagrad, RMSprop e Adadelta. RMSprop e Adadelta risolvono un problema con Adagrad che potrebbe causare l'interruzione dell'apprendimento. Adam è simile a RMSprop con slancio. Nadam modifica Adam per usare lo slancio di Nesterov invece dello slancio classico.
Riferimenti :
Kingma and Ba (2014) . Adam: un metodo per l'ottimizzazione stocastica.
Goodfellow et al. (2016) . Apprendimento profondo, capitolo 8.
Diapositive dal corso di Geoff Hinton
Dozat (2016) . Incorporando Nesterov Momentum in Adam.