I metodi di ricerca di linea sono utilizzati nell'apprendimento profondo? Perchè no?


18

Molti tutorial online parlano della discesa del gradiente e quasi tutti usano un passo fisso (tasso di apprendimento ). Perché la ricerca della linea non viene utilizzata (come la ricerca della riga di backtracking o la ricerca della riga esatta)?α


5
"E quasi tutti usano un passo fisso" - sei sicuro? si suppone che i parametri iper "rate di apprendimento" adattino la dimensione del passo alle condizioni. Un algoritmo Adam molto popolare adatta la dimensione del passo
Aksakal

1
hmm, i metodi di gradiente di dimensione graduale effettivamente adattivi sono in circolazione da almeno il 2011 e sono persino citati nella pagina di discesa del gradiente stocastico di Wikipedia . Non è esattamente una notizia calda. Anche la SGD vanigliata viene quasi sempre utilizzata con un tasso di apprendimento che cambia con il numero di iterazioni ( programma ). Ora, una molto buona domanda sarebbe: perché, anche se ci sono tanti metodi di pendenza di discesa adattivi, SGD ancora domina il mondo Deep Learning? La domanda è molto meno banale di quanto possa sembrare.
DeltaIV

1
Backtracking line-search fissa una direzione e quindi cerca un modo per ridurre la funzione. Quindi, a meno che tu non abbia un modo intelligente di scegliere la direzione in cui cercare, sei in una noiosa ottimizzazione.
Alex R.

1
Non vedo che la ricerca di linee abbia senso per SGD (al contrario della discesa del gradiente [batch]) - quindi direi che è la ragione.
seanv507,

3
Ho il sospetto che il motivo per cui la ricerca di linee non sia molto popolare è il raggruppamento in discesa gradiente. Si ottiene un batch, quindi si calcola il gradiente. Non ha molto senso andare avanti e indietro sulla linea a causa del rumore nel gradiente. È meglio andare avanti con il lotto successivo mentre si può ricottura la dimensione del passo.
Aksakal,

Risposte:


14

La discesa del gradiente di vaniglia può essere resa più affidabile usando le ricerche di linea; Ho scritto algoritmi che lo fanno e lo rende un algoritmo molto stabile (anche se non necessariamente veloce).

Tuttavia, non ha quasi senso fare una ricerca di linee per i metodi del gradiente stocastico . Il motivo per cui dico questo è che se eseguiamo una ricerca in linea basata sulla riduzione al minimo della funzione di perdita completa, perdiamo immediatamente una delle principali motivazioni per fare metodi stocastici; ora dobbiamo calcolare la funzione di perdita completa per ogni aggiornamento, che in genere ha un costo computazionale paragonabile al calcolo del primo derivato completo. Dato che volevamo evitare di calcolare l'intero gradiente a causa dei costi computazionali, sembra molto improbabile che vogliamo essere d'accordo con il calcolo della funzione di perdita completa.

In alternativa, potresti pensare di fare qualcosa di simile a una ricerca di riga basata sul tuo punto dati campionato casualmente. Tuttavia, questa non è neanche una buona idea; questo non ti dirà se hai fatto un passo troppo avanti (che è il principale vantaggio delle ricerche di linea). Ad esempio, supponiamo di eseguire una regressione logistica. Quindi ogni risultato è semplicemente uno 0 o 1, e per ogni singolo campione, otteniamo banalmente una separazione perfetta, quindi la soluzione ottimale per i nostri parametri di regressione basata sul campione di 1 è banalmente o dall'effetto Hauck Donner. Questo non è buono.

MODIFICARE

@DeltaIV sottolinea che ciò vale anche per i mini-batch, non solo per i singoli campioni.


4
molto bello (+1), ma non sono sicuro del motivo per cui nell'ultimo esempio parli di un singolo campione. Concordo sul fatto che il calcolo della ricerca di linee basato su un mini-batch non ha senso, ma un mini-batch contiene ancora 512 campioni (di solito e quando si parla di ImageNet): ovviamente non esiste un valore fisso per il numero di campioni in un mini -batch, ma 1 mini-batch campione sembra un po 'estremo. Li hai usati solo per rendere più chiaro il tuo punto o mi sto perdendo qualcosa?
DeltaIV,

2
@DeltaIV: un singolo campione serve principalmente a chiarire quanto potrebbe essere grave un problema molto semplice. Se facessimo un mini-batch con 512 campioni sulla regressione logistica con oltre 512 covariate, vedremmo lo stesso problema.
Cliff AB,

10

I tutorial parlano presumibilmente della discesa del gradiente perché è uno degli algoritmi più semplici utilizzati per l'ottimizzazione, quindi è facile da spiegare. Poiché la maggior parte di questi tutorial sono piuttosto brevi, si concentrano su cose semplici. Esistono almeno diversi algoritmi di ottimizzazione popolari oltre alla semplice discesa del gradiente utilizzati per l'apprendimento profondo. In realtà le persone spesso usano algoritmi diversi quindi discesa gradiente poiché di solito convergono più velocemente. Alcuni di essi hanno un tasso di apprendimento non costante (ad es. Diminuendo nel tempo). Per la revisione di tali algoritmi è possibile consultare una panoramica degli algoritmi di ottimizzazione della discesa gradiente post di Sebastian Ruder (o il documento arXived ).


2
@DeltaIV: Tutti gli "altri" metodi elaborati sono costruiti su SGD. Il problema principale è che gli altri metodi sfruttano le conoscenze locali per fare salti più efficienti, piuttosto che semplicemente campionare casualmente punti su cui calcolare il gradiente. Ma SGD è così semplice e veloce, e non è completamente terribile da solo.
Alex R.

2
@AlexR. il punto è che SGD non è semplice e / o veloce. La semplicità non ha importanza, dal momento che tutte le librerie decenti implementano SGD, Adam, AdaGrad e RMSProp (e più, a volte). La velocità conta ancora meno, perché il tempo impiegato, ad esempio, da Adam, per calcolare gli aggiornamenti a livello di parametro è infinitesimale rispetto al tempo di allenamento complessivo di un modello come ResNet. L'unico punto è che, per qualche motivo che non comprendiamo appieno oggi, SGD generalizza meglio di loro. Quindi, fondamentalmente, se vuoi battere SOTA, sei spesso costretto a usarlo, o almeno a passare ad esso in seguito durante l'allenamento.
DeltaIV

3
@DeltaIV Molto interessante. Ho aperto il documento a cui hai collegato e fa riferimento alla preprint di Wilson et al 2017 per l'affermazione che SGD generalizza meglio di Adam ecc .; quindi quando dici che è "ben noto", intendi ben noto da circa sei mesi, giusto?
ameba dice di reintegrare Monica il

2
@DeltaIV Grazie. Non sto facendo molto del deep learning da solo, e non ne ero affatto consapevole. Già nel 2012, mentre guardavo le lezioni di Hinton sulla Coursera, sosteneva principalmente RMSprop e negli ultimi 1-2 anni la mia impressione è stata che tutti stiano usando Adam (che sostituisce RMSprop, secondo il documento di Adam). Quando stavo giocando con i codificatori automatici l'anno scorso, mi sono reso conto che Adam funziona molto più velocemente di SGD, e da allora ho appena ipotizzato che Adam sia una scelta predefinita al giorno d'oggi.
ameba dice di reintegrare Monica il

3
@CliffAB Sì, la relazione tra arresto anticipato e regolarizzazione può essere chiaramente vista per i minimi quadrati, dove la discesa del gradiente opera nella base degli autovalori e gli autovalori piccoli sono gli ultimi a convergere; mentre la penalità della cresta penalizza anche piccoli autovalori. Ora avevo solo una rapida occhiata a Wilson et al. collegati sopra, ma almeno nei loro minimi quadrati l'esempio SGD vs Adam diverso non è spiegato dall'arresto anticipato o ritardato. Sostengono di convergere verso soluzioni diverse.
ameba dice di reintegrare Monica il
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.