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)?
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)?
Risposte:
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.
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 ).