Esercizio - Discesa del gradiente, momento e Adam a mano
In questa pagina 6
Testo. Si minimizza partendo da .
- Discesa del gradiente con : i primi quattro passi. Per quali converge?
- SGD con momento (, ): i primi quattro passi.
- Adam (, , , ): i primi tre passi.
- RMSProp (decadimento , ) e AdaGrad (): il primo e il secondo passo.
- Quante iterazioni per epoca fa un mini-batch da su campioni?
Teoria usata: Addestramento delle reti neurali - backpropagation e ottimizzatoriAddestrare una rete significa minimizzare la loss empirica $J(W)=\frac1n\sum_i\mathcal L(f(x^{(i)};W),y^{(i)})$ con la discesa del gradiente $W\leftarrow W-\eta,\partial J/\partial W$; in pratica a mini-batch (SGD). Il gradiente di tutti i pesi si ottiene con la backpropagation, cioè la regola della catena applicata all'indietro: $\delta^{(L)}=\partial J/\partial a^{(L)}\odot g'(z^{(L)})$, $\delta^{(l)}=(W^{(l+1)\top}\delta^{(l+1)})\odot g'(z^{(l)})$, $\partial J/\partial W^{(l)}=\delta^{(l)}a^{(l-1)\top}$ (con sigmoide e cross-entropy $\delta=\hat y-y$). Per far funzionare reti profonde: attivazioni ReLU, inizializzazione di Xavier o He (varianza $2/(n_{in}+n_{out})$ e $2/n_{in}$), batch normalization, ottimizzatori con momento o adattivi (Momentum, AdaGrad, RMSProp, Adam con $\beta_1=0{,}9$, $\beta_2=0{,}999$, lr $10^{-3}$) e un learning rate che varia nel tempo (a gradini, coseno). Si addestra tenendo d'occhio la loss di training e di validazione.Addestramento delle reti neurali - backpropagation e ottimizzatori →, Gradiente e direzione di massima crescitaIl gradiente è il vettore delle derivate parziali ∇f(p) = (∂₁f(p), …, ∂ₙf(p)). Se f è C¹ (derivate parziali continue) vale la formula del gradiente D_u f(p) = ∇f(p)·u: tutte le derivate direzionali si ottengono dalle parziali e u ↦ D_u f(p) è lineare. Tra i versori, la crescita è massima lungo ∇f/|∇f| (pendenza |∇f|), minima lungo −∇f/|∇f| (pendenza −|∇f|), nulla lungo le direzioni ortogonali al gradiente. Utili: ∇|x| = x/|x|, ∇φ(|x|) = φ'(|x|) x/|x|.Gradiente e direzione di massima crescita →, Derivata - definizione e significatoLa derivata è il limite del rapporto incrementale; geometricamente è la pendenza della retta tangente. f è derivabile in x0 se e solo se f(x) = f(x0) + f'(x0)(x − x0) + o(x − x0); derivabile implica continua, non viceversa. Derivata destra e sinistra, punti angolosi, flessi a tangente verticale, cuspidi.Derivata - definizione e significato →.
Il gradiente è .
1. Discesa del gradiente
Regola: .
| passo | ||
|---|---|---|
La distanza dal minimo si moltiplica per a ogni passo: . Converge se , cioè ; per arriva al minimo in un passo; per la distanza cresce in modulo e il segno alterna (divergenza).
2. Momento
Regole: , , con .
| passo | gradiente | velocità | |
|---|---|---|---|
Il primo passo coincide con la discesa semplice (). Poi la velocità accumulata fa superare il minimo (): il momento accelera ma può oltrepassare; successivamente il gradiente cambia segno e la velocità si smorza. Nella discesa semplice : il momento è molto più avanti.
3. Adam
Regole: , , , , .
- Passo 1. : , ; , ; , quindi . Il primo passo ha ampiezza , qualunque sia la scala del gradiente.
- Passo 2. : , ; , , ; rapporto , .
- Passo 3. : dopo le correzioni , , rapporto , .
Adam avanza circa per passo (il rapporto quando il gradiente ha segno costante), a prescindere dalla grandezza del gradiente. Con servono circa passi per arrivare a , più lento qui della discesa semplice (che lo fa in meno passi su questo problema comodo), ma robusto su problemi con scale di gradiente molto diverse tra i parametri.
4. RMSProp e AdaGrad
RMSProp. , .
- Passo 1: , , ; .
- Passo 2: ; , ; .
AdaGrad. , .
- Passo 1: , .
- Passo 2: , , ; .
AdaGrad accumula senza dimenticare: il passo si rimpicciolisce a ogni iterazione (), che a lungo andare lo ferma. RMSProp, con la media mobile, tiene limitato e passi più grandi.
5. Iterazioni per epoca
iterazioni (l'ultimo batch ha campioni). Con sarebbero .
Controllo con il codice
import numpy as np
g = lambda w: 2 * (w - 3)
w, m, v = 0., 0., 0.
for t in range(1, 4): # Adam
gr = g(w); m = .9*m + .1*gr; v = .999*v + .001*gr**2
w -= .1 * (m/(1-.9**t)) / (np.sqrt(v/(1-.999**t)) + 1e-8)
print(t, round(w, 4)) # 0.1 0.1999 0.2996Versione ripasso
Minimizzare da , con . Teoria: Addestramento delle reti neurali - backpropagation e ottimizzatoriAddestrare una rete significa minimizzare la loss empirica $J(W)=\frac1n\sum_i\mathcal L(f(x^{(i)};W),y^{(i)})$ con la discesa del gradiente $W\leftarrow W-\eta,\partial J/\partial W$; in pratica a mini-batch (SGD). Il gradiente di tutti i pesi si ottiene con la backpropagation, cioè la regola della catena applicata all'indietro: $\delta^{(L)}=\partial J/\partial a^{(L)}\odot g'(z^{(L)})$, $\delta^{(l)}=(W^{(l+1)\top}\delta^{(l+1)})\odot g'(z^{(l)})$, $\partial J/\partial W^{(l)}=\delta^{(l)}a^{(l-1)\top}$ (con sigmoide e cross-entropy $\delta=\hat y-y$). Per far funzionare reti profonde: attivazioni ReLU, inizializzazione di Xavier o He (varianza $2/(n_{in}+n_{out})$ e $2/n_{in}$), batch normalization, ottimizzatori con momento o adattivi (Momentum, AdaGrad, RMSProp, Adam con $\beta_1=0{,}9$, $\beta_2=0{,}999$, lr $10^{-3}$) e un learning rate che varia nel tempo (a gradini, coseno). Si addestra tenendo d'occhio la loss di training e di validazione.Addestramento delle reti neurali - backpropagation e ottimizzatori →, Gradiente e direzione di massima crescitaIl gradiente è il vettore delle derivate parziali ∇f(p) = (∂₁f(p), …, ∂ₙf(p)). Se f è C¹ (derivate parziali continue) vale la formula del gradiente D_u f(p) = ∇f(p)·u: tutte le derivate direzionali si ottengono dalle parziali e u ↦ D_u f(p) è lineare. Tra i versori, la crescita è massima lungo ∇f/|∇f| (pendenza |∇f|), minima lungo −∇f/|∇f| (pendenza −|∇f|), nulla lungo le direzioni ortogonali al gradiente. Utili: ∇|x| = x/|x|, ∇φ(|x|) = φ'(|x|) x/|x|.Gradiente e direzione di massima crescita →, Derivata - definizione e significatoLa derivata è il limite del rapporto incrementale; geometricamente è la pendenza della retta tangente. f è derivabile in x0 se e solo se f(x) = f(x0) + f'(x0)(x − x0) + o(x − x0); derivabile implica continua, non viceversa. Derivata destra e sinistra, punti angolosi, flessi a tangente verticale, cuspidi.Derivata - definizione e significato →.
Discesa del gradiente (): , con . Converge per .
Momento (, ): , . Valori di : . Supera il minimo, che è .
Adam (): al primo passo , quindi . Poi e : circa per passo.
RMSProp e AdaGrad: RMSProp dà e ; AdaGrad dà e . AdaGrad accumula senza dimenticare, quindi il passo si restringe.
Iterazioni per epoca: (l'ultimo batch ha campioni).
Errori tipici:
- applicare la condizione , valida per , a un problema con un'altra curvatura;
- dimenticare le correzioni di bias in Adam;
- contare un batch in meno: l'ultimo batch è più piccolo, ma conta come iterazione.