Discesa Stocastica del Gradiente

L'algoritmo di discesa stocastica del gradiente (stochastic gradient descent SGD) è una semplificazione dell'algoritmo di discesa del gradiente. Invece che calcolare esattamente il gradiente di $S(\boldsymbol\beta)$, per ogni iterazione, viene usato il gradiente di uno dei campioni $\ell_i$ scelto casualmente
\begin{displaymath}
\boldsymbol\beta_{t+1} = \boldsymbol\beta_{t} - \gamma_t \nabla \ell_i(\boldsymbol\beta_t)
\end{displaymath} (3.38)

SGD può essere usato per ottimizzare una qualunque funzione convessa su dominio convesso.

L'eventuale discesa stocastica del gradiente del secondo ordine non porta normalmente a miglioramenti.

Dal punto di vista pratico spesso si esegue l'aggiornamento su un numero di campioni (batch size) piccolo ma maggiore di 1, per ridurre il rumore del singolo campione ma evitando di fornire contributi troppo mediati come nel caso di discesa del gradiente completo.

Infine, per simulare un'inerzia al cambiamento, viene aggiunto un termine $\alpha$ chiamato momentum:

\begin{displaymath}
\boldsymbol\delta_{t} = - \gamma_t \nabla S(\boldsymbol\beta_t) + \alpha \boldsymbol\delta_{t-1}
\end{displaymath} (3.39)

I valori di $\alpha$ sono normalmente piccoli (per esempio 0.05).

Il momentum è la modifica ad SGD più semplice che permette di risolvere alcuni problemi tipici delle ottimizzazioni in machine learning. Oltre a SGD+momentum, esistono tantissime varianti per accelerare la convergenza negli algoritmi tipo di discesa del gradiente. Una lista, non esaustiva, è

Paolo medici
2017-11-02