Perché è importante includere un termine di correzione della distorsione per l'ottimizzatore Adam per Deep Learning?


15

Stavo leggendo dell'ottimizzatore Adam per Deep Learning e mi sono imbattuto nella frase seguente nel nuovo libro Deep Learning di Begnio, Goodfellow e Courtville:

Adam include correzioni di bias alle stime sia dei momenti del primo ordine (il termine momentum) sia dei momenti (non centrati) del secondo ordine per tenere conto della loro inizializzazione all'origine.

sembra che il motivo principale per includere questi termini di correzione del bias è che in qualche modo rimuove il bias dell'inizializzazione di e .mt=0vt=0

  • Non sono sicuro al 100% cosa significhi, ma mi sembra che probabilmente significhi che il primo e il secondo momento iniziano da zero e in qualche modo avviandolo da zero inclina i valori più vicini allo zero in un modo sleale (o utile) per l'allenamento ?
  • Anche se mi piacerebbe sapere cosa significa un po 'più precisamente e in che modo danneggia l'apprendimento. In particolare, quali vantaggi ha l'ottimizzazione dell'ottimizzatore in termini di ottimizzazione?
  • In che modo aiuta a formare modelli di apprendimento profondo?
  • Inoltre, cosa significa quando è imparziale? Conosco bene cosa significa deviazione standard imparziale, ma non mi è chiaro cosa significhi in questo contesto.
  • La correzione del bias è davvero un grosso problema o è qualcosa di sovrascritto nel documento sull'ottimizzatore Adam?

Proprio per questo la gente sa che ho fatto davvero del mio meglio per capire il documento originale, ma ho ottenuto ben poco dalla lettura e dalla rilettura del documento originale. Presumo che ad alcune di queste domande possa essere data risposta ma non riesco ad analizzare le risposte.


2
Link: arxiv.org/pdf/1412.6980v8.pdf Le stime del gradiente del 1o e 2o momento vengono aggiornate tramite media mobile e iniziate con entrambe le stime pari a zero, quindi quei valori iniziali per i quali il valore reale non è zero, influenzerebbero i risultati , perché le stime iniziali di zero si estinguono solo gradualmente. Quello che non capisco è il motivo per cui il gradiente al punto iniziale non viene utilizzato per i valori iniziali di queste cose e quindi il primo aggiornamento dei parametri. Quindi non vi sarebbero contaminazioni da parte dei valori zero iniziali, che devono essere annullati, quindi non sarebbe necessaria la correzione del bias.
Mark L. Stone,

1
Quindi sembra che invece di avere un codice speciale per l'iterazione iniziale, gli autori hanno deciso di fare una cosa matematicamente equivalente introducendo quello che sarebbe un pregiudizio e quindi annullandolo. Ciò aggiunge calcoli non necessari, anche se rapidi, su tutte le iterazioni. A parte questo, hanno mantenuto una purezza di codice simile a tutte le iterazioni. Avrei appena iniziato con la prima valutazione gradiente, e la formula di aggiornamento del momento gradiente inizia solo nella seconda iterazione.
Mark L. Stone,

@ MarkL.Stone gli autori sottolineano così tanto la correzione del bias che mi è sembrato che fosse ciò che era nuovo o importante nel loro articolo. Quindi non avrebbero potuto "correggere il bias" e avere lo stesso algoritmo? Se questo è vero, non riesco a capire perché Adam sia un ottimizzatore così importante o quale sia il grosso problema. Ho sempre pensato che fosse la correzione del bias.
Charlie Parker,

4
Introducono un pregiudizio e poi lo correggono, senza una buona ragione per me evidente. È come moltiplicare per 2 (oh mio, il risultato è distorto), e poi dividere per 2 per "correggerlo". Il tutto con l'introduzione e la rimozione dei pregiudizi sembra un evento secondario non necessario. Forse il documento non è stato abbastanza lungo senza farlo, quindi hanno aggiunto questo spiel per allungarlo :) Adam potrebbe avere i suoi meriti, ma sarebbero stati gli stessi facendolo nel modo che ho proposto. Mi piacerebbe che gli autori venissero qui e lo spiegassero però. Forse mi manca qualche punto sottile o incomprendo qualcosa.
Mark L. Stone,

Risposte:


16

Il problema di NON correggere la distorsione
Secondo il documento

In caso di gradienti sparsi, per una stima attendibile del secondo momento è necessario fare una media su molti gradienti scegliendo un piccolo valore di β2; tuttavia è esattamente questo caso del piccolo β2 in cui una mancanza di correzione del bias di inizializzazione porterebbe a fasi iniziali molto più grandi.

inserisci qui la descrizione dell'immagine

β2β1β2=0.999β1=0.91β2=0.0011β1=0.1

m1=0.1gtv1=0.001gt2m1/(v1+ϵ)

m1^=g1v1^=g12mt^/(vt^+ϵ)β1β2


m0mt=βmt1+(1β)gtm0

m1=βm0+(1β)gtβm0m1(1β)m1^=(m1βm0)/(1β)m0=0mt^=mt/(1βt)


Come ha commentato Mark L. Stone

È come moltiplicare per 2 (oh mio, il risultato è distorto), e poi dividere per 2 per "correggerlo".

In qualche modo questo non è esattamente equivalente a

il gradiente nel punto iniziale viene utilizzato per i valori iniziali di queste cose, quindi il primo aggiornamento dei parametri

(ovviamente può essere trasformato nella stessa forma cambiando la regola di aggiornamento (vedi l'aggiornamento della risposta), e credo che questa linea abbia principalmente lo scopo di mostrare la necessità di introdurre il bias, ma forse vale la pena notare la differenza)

Ad esempio, il primo momento corretto al momento 2

m2^=β(1β)g1+(1β)g21β2=βg1+g2β+1

g1

m2=βg1+(1β)g2
g1

La correzione del bias è davvero un grosso problema
Dal momento che riguarda solo i primi passi dell'allenamento, non sembra un grosso problema, in molti framework popolari (ad esempio keras , caffe ) viene implementata solo la stima distorta.

ϵ


m^t

m^t=βt1g1+βt2g2+...+gtβt1+βt2+...+1

m1g1

mtβmt+gt
m^t(1β)mt1βt

Pertanto, può essere eventualmente eseguito senza introdurre un termine di pregiudizio e correggerlo. Penso che il documento lo abbia inserito nel modulo di correzione del bias per la comodità di confrontarlo con altri algoritmi (ad esempio RmsProp).


1
Sei d'accordo con il mio secondo commento sulla domanda? Per me, questa è la linea di fondo. La cosa sulla moltiplicazione e la divisione per 2 doveva solo essere un'analogia "più facile da capire", non la matematica usata nella questione in questione. se ci fossero altri documenti, che non ho esaminato, che hanno introdotto un pregiudizio con lo stesso meccanismo, che nel caso di ADAM sembra del tutto evitabile, ma non lo ha corretto, allora è totalmente STUPID (a meno che in qualche modo il pregiudizio ha aiutato le prestazioni dell'algoritmo).
Mark L. Stone,

@ MarkL.Stone yes! in realtà l'ho votato, mi dispiace per il mio inglese. e penso che l'algoritmo che non ha corretto il bias sia rmsprop, ma a differenza di adam rmsprop funziona bene con il bias.
Dontloo,

@dontloo la tua risposta è indirizzata al commento di Mark L. Stone sul perché la correzione del bias sembra superflua? (Penso che sia abbastanza importante, forse anche più che parafrasare ciò che dice il documento originale).
Charlie Parker,

@CharlieParker intendi perché la correzione del bias è superflua o perché l'autore la rende superflua?
dontloo,

@dontloo Non credo che gli autori lo rendano superfluo. Pensavo che ne avessero davvero bisogno (date le loro condizioni specifiche). Tuttavia, ho pensato che non fosse necessario dato il suggerimento di Mark. Immagino che la mia domanda nella sezione commenti in questo momento sia se hanno davvero bisogno del termine di correzione.
Charlie Parker,
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.