Come abbiamo visto precedentemente il metodo della discesa del gradiente presenta alcune problematicità di efficienza nel caso di plateau e di disomogeneità rilevanti del gradiente nelle varie dimensioni.

Per rendere il metodo più efficiente vengono solitamente utilizzate delle versioni più evolute del metodo, in grado di accelerare la ricerca e contrastare i casi patologici.

Discesa del gradiente con momento

Un metodo particolarmente efficiente nello smorzare ampie oscillazioni nei passi dovute a disomogeneità forti del gradiente lungo diverse dimensioni, è quello di utilizzare al posto del gradiente \(\nabla f ({\bf x}^{(t-1)}) \) la media esponenziale \({\bf v}_t\) sui valori del gradiente stesso:

\(\begin{cases} {\bf v}_t=\beta {\bf v}_{t-1} + (1 -\beta)\nabla f({\bf x}^{(t-1)}) \quad , \quad {\bf v}_0=0 \\ {\bf x}^{(t)} = {\bf x}^{(t-1)}-\alpha {\bf v}_t \end{cases}\)

dove il coefficiente \(\beta <1\) indica il peso assegnato nella media ai gradienti precedenti. Generalmente viene utilizzato un \(\beta \approx 0.9\) e la media viene calcolata biased come presentato nella formula, ovvero senza correttivo per i primi  \({\bf v}_t\) che avranno modulo ridotto.

L'utilizzo del momento smorzerà le oscillazioni e contribuirà ad una discesa verso il minimo con meno passi.

RMSprop

Un'altra variante consiste nell'armonizzare i passi nelle varie dimensioni, smorzando o amplificando le varie componenti del gradiente in ragione della loro media.
In particolare prenderemo in considerazione la radice della media esponenziale biased dei quadrati:
\(\displaystyle \forall \ i \ \begin{cases} s_i^{(t)}=\beta s_i^{(t-1)}+(1-\beta) \left[ \frac{\partial f}{\partial x_i}({\bf x}^{(t-1)}) \right]^2 \ \ , \ \ s_i^{(0)}=0 \\ x_i^{(t)}=x_i^{(t-1)} - \alpha \frac{\frac{\partial f}{\partial x_i}({\bf x}^{(t-1)})}{\sqrt{s_i^{(t)}}+\varepsilon} \end{cases} \)

dove il coefficiente \(\beta <1\) indica il peso assegnato nella media ai coefficienti \(s_i \) precedenti. Generalmente viene utilizzato un \(\beta \approx 0.99\) e la media viene calcolata unbiased come presentato nella formula, ovvero senza correttivo per i primi  \(s_i\) che avranno modulo ridotto.
Viene anche introdotto un \(\varepsilon \approx 10^{-8}\) al denominatore per evitare errori dovuti a \(s_i\) prossimi a zero.

RMSprop da un lato armonizza lo sviluppo dei passi tra le dimensioni non omogenee del gradiente, smorzando quelle di modulo maggiore e amplificando quelle di modulo minore, dall'altro "accelera" la fuga da zone di plateau, dove le componenti del gradiente diventano prossime allo zero.

Adam

L' algoritmo Adam combina la discesa con Momento e RMSprop per integrare in modo efficace i benefici di entrambi gli algoritmi. 

A differenza degli algoritmi singoli, Adam utilizza generalmente le medie esponenziali unbiased ovvero normalizzate dividendole per un fattore \((1-\beta ^t)\) che riequilibri in particolare i primi valori della media.

Per ogni dimensione avremo quindi:

\(\displaystyle \forall \ i \ \begin{cases} v_i^{(t)}=\beta_1 v_i^{(t-1)}+(1-\beta_1) \left[ \frac{\partial f}{\partial x_i}({\bf x}^{(t-1)}) \right] \ \ , \ \ v_i^{(0)}=0 \\ s_i^{(t)}=\beta_2 s_i^{(t-1)}+(1-\beta_2) \left[ \frac{\partial f}{\partial x_i}({\bf x}^{(t-1)}) \right]^2 \ \ , \ \ s_i^{(0)}=0 \\ x_i^{(t)}=x_i^{(t-1)} - \alpha \frac{v_i^{(t)}}{(1-\beta_1^t)\sqrt{\frac{s_i^{(t)}}{(1-\beta_2^t)}}+\varepsilon} \end{cases} \)

Dove valori tipici dei parametri sono \(\beta_1=0.9 \ , \ \beta_2=0.99 \ , \ \varepsilon=10^{-8}\)

Adam è frequentemente utilizzato come algoritmo di discesa del gradiente in ambito di deep learning