Discesa Stocastica del Gradiente

L'algoritmo di discesa stocastica del gradiente (Stochastic Gradient Descent, SGD) è una semplificazione della discesa del gradiente classica. Invece di calcolare il gradiente esatto della funzione obiettivo $S(\boldsymbol\beta)$, ad ogni iterazione si utilizza il gradiente di un singolo campione $\ell_i$ scelto casualmente:

\begin{displaymath}
\boldsymbol\beta_{t+1} = \boldsymbol\beta_{t} - \gamma_t \nabla \ell_i(\boldsymbol\beta_t)
\end{displaymath} (4.48)

SGD è garantito convergere sotto opportune ipotesi su funzioni convesse definite su domini convessi, ma viene comunemente utilizzato anche in contesti non convessi, come l'addestramento di reti neurali.

Una variante pratica consiste nell'utilizzare un piccolo gruppo di campioni (mini-batch) per ogni aggiornamento, riducendo il rumore rispetto al singolo campione ma mantenendo una buona efficienza computazionale.

Per simulare un'inerzia nel cambiamento dei parametri, si introduce un termine $\alpha$ detto momentum:

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

dove $\alpha$ è solitamente un valore compreso tra 0 e 1, scelto empiricamente in funzione del problema. Il momentum è una delle modifiche più semplici ed efficaci a SGD, utile per superare oscillazioni e rallentamenti in direzioni poco informative.

Oltre a SGD con momentum, esistono numerose varianti progettate per accelerare la convergenza e migliorare la stabilità dell'ottimizzazione. Una lista non esaustiva include:

Una panoramica comparativa di questi algoritmi è disponibile in (Rud16).

Paolo medici
2026-11-02