Esercizio - Gradient descent, batch GD, SGD e minibatch SGD (esempio d'esame 2)
Teoria: Apprendimento automatico nell'IA - supervisionato, SVM e valutazioneQuadro del machine learning nel corso di IA. Tre forme di apprendimento: supervisionato (coppie ingresso-uscita, classificazione se l'uscita è discreta e regressione se è un numero), non supervisionato (pattern senza feedback, per esempio clustering) e per rinforzo (ricompense). Un'ipotesi h approssima la funzione vera f e si valuta sul test set, non sul training set: un modello troppo semplice ha bias alto (underfitting), uno troppo complesso varianza alta (overfitting). Servono training, validation e test set; con pochi dati si usa la k-fold cross-validation. Alberi di decisione: si sceglie l'attributo con massimo guadagno d'informazione Gain = B(p/(p+n)) - somma (Nk/N) B(pk/Nk), si pota con il test del chi quadro (Delta > Delta*), si riduce la varianza con bagging e random forest. Perdita L1 e L2, regressione lineare e discesa del gradiente w <- w - alpha dL/dw. SVM: separatore a margine massimo, vettori di supporto, kernel trick con K(xj,xk). Pipeline scikit-learn del laboratorio 10: load_digits, train_test_split, SVC(C, kernel, gamma), fit, predict, classification_report, confusion_matrix, cross_val_score.Apprendimento automatico nell'IA - supervisionato, SVM e valutazione → (sezione 5), LASSO e discesa del gradienteIl LASSO è la regressione regolarizzata con penalità $L_1$: minimizza $\sum_i(y_i-x_i^T\beta)^2+\lambda\sum_{j\ge1}|\beta_j|$. A differenza della ridge, porta alcuni coefficienti esattamente a zero (soluzione sparsa, selezione delle feature): geometricamente le curve di livello dell'errore toccano il vincolo $\sum|\beta_j|\le s$ (un rombo) in uno spigolo. Non ha formula chiusa, quindi si minimizza con la discesa del gradiente $W\leftarrow W-\eta,\nabla J(W)$, usando il subgradiente $\operatorname{sign}(\beta_j)$ per il valore assoluto (nel punto 0 qualunque valore in $[-1,1]$). Il passo $\eta$ è critico: per l'errore quadratico converge se $\eta<1/\mu_{\max}(X^TX)$; si può usare $\eta_t=\eta_0/(1+\gamma t)$. L'Elastic Net combina le penalità $L_1$ e $L_2$ con $\lambda_1=\alpha\lambda$, $\lambda_2=(1-\alpha)\lambda$.LASSO e discesa del gradiente → e 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 →. Domanda 2 del quiz da 9 CFU e domanda 1 di quello da 6 CFU: testo identico.
Testo (risposta aperta). Con riferimento ad algoritmi per machine learning, si spieghi brevemente cosa sono e quali sono le principali differenze tra Gradient Descent (GD), batch GD, Stochastic Gradient Descent (SGD) e minibatch SGD.
Risposta modello
Addestrare un modello vuol dire minimizzare una perdita , somma degli errori sugli esempi del training set, rispetto ai pesi . Il gradient descent è il metodo iterativo che, partendo da pesi iniziali, li aggiorna a ogni passo nella direzione opposta al gradiente (la direzione di massima discesa): con passo di apprendimento (learning rate). Con perdita convessa converge al minimo globale se non è troppo grande; se lo è, il passo supera il minimo e la perdita cresce. Le varianti differiscono per quanti esempi si usano per stimare il gradiente a ogni aggiornamento.
- Batch GD (il GD "classico"): il gradiente è calcolato su tutti gli esempi, , e si fa un aggiornamento per epoca (un'epoca è un passaggio completo sui dati). Gradiente esatto, traiettoria regolare e deterministica; ma ogni passo costa ed è lento o non entra in memoria con dataset grandi.
- SGD (stochastic): a ogni aggiornamento si usa un solo esempio scelto a caso. Si fanno aggiornamenti per epoca, ciascuno economico; il gradiente è una stima rumorosa ma non distorta di quello vero, quindi la perdita oscilla (il rumore aiuta a uscire da minimi locali e zone piatte) e, con costante, si assesta intorno al minimo senza raggiungerlo; per convergere si fa decrescere .
- Minibatch SGD: si usano esempi (tipicamente 32, 64, 128 o 256) scelti a caso. Compromesso: rumore ridotto di un fattore circa rispetto all'SGD puro, calcolo vettorizzato efficiente su GPU, memoria limitata. È la variante usata in pratica, e quando nelle librerie (Keras) si parla di SGD si intende di solito questa.
Il caso limite è il batch GD e è l'SGD puro: si distinguono solo per .
Esempio numerico
Dati , , , ipotesi , perdita , partenza , . Con l'errore è . Per ogni esempio e .
| variante | esempi usati | dopo il primo passo | dopo il primo passo |
|---|---|---|---|
| batch | tutti e 3 | ||
| SGD | solo | ||
| minibatch () | e |
Il minimo esatto è , : il passo batch è il più grande e preciso, l'SGD fa passi piccoli e rumorosi ma ne fa tre per epoca. Con esempi e si fanno aggiornamenti per epoca (31 minibatch completi e uno da 8), contro del batch e dell'SGD.
Errori tipici nella risposta: dire che SGD usa "un sottoinsieme" (è un solo esempio) o che il batch GD è stocastico; non spiegare che cosa cambia (quanti esempi per aggiornamento, rumore, costo); dimenticare il learning rate.
Versione ripasso
Teoria: Apprendimento automatico nell'IA - supervisionato, SVM e valutazioneQuadro del machine learning nel corso di IA. Tre forme di apprendimento: supervisionato (coppie ingresso-uscita, classificazione se l'uscita è discreta e regressione se è un numero), non supervisionato (pattern senza feedback, per esempio clustering) e per rinforzo (ricompense). Un'ipotesi h approssima la funzione vera f e si valuta sul test set, non sul training set: un modello troppo semplice ha bias alto (underfitting), uno troppo complesso varianza alta (overfitting). Servono training, validation e test set; con pochi dati si usa la k-fold cross-validation. Alberi di decisione: si sceglie l'attributo con massimo guadagno d'informazione Gain = B(p/(p+n)) - somma (Nk/N) B(pk/Nk), si pota con il test del chi quadro (Delta > Delta*), si riduce la varianza con bagging e random forest. Perdita L1 e L2, regressione lineare e discesa del gradiente w <- w - alpha dL/dw. SVM: separatore a margine massimo, vettori di supporto, kernel trick con K(xj,xk). Pipeline scikit-learn del laboratorio 10: load_digits, train_test_split, SVC(C, kernel, gamma), fit, predict, classification_report, confusion_matrix, cross_val_score.Apprendimento automatico nell'IA - supervisionato, SVM e valutazione →, LASSO e discesa del gradienteIl LASSO è la regressione regolarizzata con penalità $L_1$: minimizza $\sum_i(y_i-x_i^T\beta)^2+\lambda\sum_{j\ge1}|\beta_j|$. A differenza della ridge, porta alcuni coefficienti esattamente a zero (soluzione sparsa, selezione delle feature): geometricamente le curve di livello dell'errore toccano il vincolo $\sum|\beta_j|\le s$ (un rombo) in uno spigolo. Non ha formula chiusa, quindi si minimizza con la discesa del gradiente $W\leftarrow W-\eta,\nabla J(W)$, usando il subgradiente $\operatorname{sign}(\beta_j)$ per il valore assoluto (nel punto 0 qualunque valore in $[-1,1]$). Il passo $\eta$ è critico: per l'errore quadratico converge se $\eta<1/\mu_{\max}(X^TX)$; si può usare $\eta_t=\eta_0/(1+\gamma t)$. L'Elastic Net combina le penalità $L_1$ e $L_2$ con $\lambda_1=\alpha\lambda$, $\lambda_2=(1-\alpha)\lambda$.LASSO e discesa del gradiente →.
- GD: minimizza con (passo ; troppo grande: diverge). Le varianti cambiano quanti esempi stimano il gradiente.
- Batch GD: tutti gli esempi, 1 aggiornamento per epoca; gradiente esatto, passo costoso.
- SGD: 1 esempio a caso, aggiornamenti per epoca; rumoroso (aiuta a uscire dai minimi locali), serve decrescente.
- Minibatch SGD: esempi (32-256): compromesso, vettorizzato su GPU; è il batch, l'SGD.
- Esempio: , : 32 aggiornamenti per epoca. Primo passo con , : batch , SGD .
Errori tipici: SGD con un sottoinsieme; batch detto stocastico; dimenticare .