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} (3.40)

SGD è garantito convergere su funzioni convexe 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} (3.41)

dove $\alpha$ è solitamente un valore piccolo (es. 0.05). 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
2025-10-02