Reti neurali artificiali e deep learning: Tecniche di addestramento
L’ottimizzazione, la regolarizzazione e la stabilizzazione numerica sono pilastri fondamentali nel training delle reti neurali profonde. Questa sezione esplora gli strumenti più avanzati per migliorare convergenza, stabilità e capacità di generalizzazione, fornendo indicazioni pratiche su ottimizzatori, schedulers, normalizzazioni e tecniche di mixed precision.
- Quali ottimizzatori si usano (SGD, Momentum, Nesterov, RMSProp, Adam, AdamW)?
- Come scegliere il learning rate e utilizzare learning rate schedulers (step decay, cosine annealing, warm restarts)?
- Cosa sono batch normalization, layer normalization e group normalization?
- Quando usare dropout, dropout varianti e altre regolarizzazioni (weight decay)?
- Come applicare gradient clipping e loss scaling in mixed precision?
Quali ottimizzatori si usano (SGD, Momentum, Nesterov, RMSProp, Adam, AdamW)?
Gli ottimizzatori definiscono la regola di aggiornamento dei pesi basata sui gradienti del loss. La loro scelta e configurazione incidono su velocità di addestramento, stabilità e capacità di evitare minimi locali.
SGD (Stochastic Gradient Descent): aggiorna i pesi in base al gradiente calcolato su un singolo esempio o mini-batch. Pur essendo semplice e con pochissimi iperparametri, può richiedere learning rate molto piccoli per evitare instabilità e converge lentamente nei casi di superfici di loss complesse.
Momentum: aggiunge un termine di “moto” che accumula esponenzialmente i gradienti passati. Questo fa sì che la direzione di aggiornamento segua la media dei gradienti recenti, accelerando lungo direzioni stabili e smorzando oscillazioni trasversali.
Nesterov Accelerated Gradient: simile al momentum tradizionale, ma calcola il gradiente nel punto proiettato con il termine di momento. Questo anticipa la direzione di aggiornamento e migliora la stabilità, specialmente in prossimità di minimi affilati.
RMSProp: mantiene una media esponenziale dei quadrati dei gradienti per ogni parametro, adattando localmente il learning rate in base alla magnitudine delle variazioni. È particolarmente efficace in presenza di dati rumorosi o in contesti di training online.
Adam: unisce momentum e RMSProp attraverso stime dei primi momenti (media) e dei secondi momenti (varianza) dei gradienti, con fattori di correzione del bias nelle fasi iniziali. Grazie alla sua adattività e robustezza, è diventato uno standard nel deep learning.
AdamW: variante di Adam che separa il weight decay dalla regolarizzazione implicita di Adam, applicando la penalizzazione L2 in modo decoupled. Questo assicura una vera regolarizzazione dei pesi e riduce il sovra-adattamento, soprattutto in modelli di grandi dimensioni.
Come scegliere il learning rate e utilizzare learning rate schedulers (step decay, cosine annealing, warm restarts)?
Il learning rate determina l’ampiezza degli spostamenti nello spazio dei parametri. Un’impostazione ottimale bilancia velocità di convergenza e stabilità numerica.
Step decay: riduce il learning rate di un fattore prefissato ogni N epoch. Semplice da implementare, ma può introdurre brusche oscillazioni nella traiettoria di training.
Cosine annealing: modula il learning rate seguendo la forma di una curva coseno tra un valore massimo e minimo, garantendo una decrescita graduale e morbida verso zero. Favorisce una più dolce esplorazione degli spazi di parametri.
Warm restarts: combina fasi di annealing con periodici “reset” del learning rate a un valore più alto. Questo permette al training di uscire da minimi locali e di esplorare nuove regioni della funzione di loss.
OneCycleLR: strategia moderna che alterna una rapida salita del learning rate fino a un picco, seguita da una discesa più lenta. Favorisce un addestramento rapido e una migliore generalizzazione limitando troppo basse i learning rate nelle fasi centrali.
Cosa sono batch normalization, layer normalization e group normalization?
Le tecniche di normalizzazione modulano le attivazioni interne delle reti, riducendo lo spostamento di covariate e migliorando la stabilità numerica.
Batch Normalization: normalizza le attivazioni all’interno di ogni mini-batch per media e varianza, seguiti da uno shift e uno scale appresi. Allevia il problema del covariate shift interno, permette learning rate più grandi e accelera la convergenza.
Layer Normalization: calcola media e varianza lungo le feature di ciascun esempio anziché sul batch, risultando indipendente dalla dimensione del mini-batch. Risulta particolarmente efficace in architetture sequenziali come RNN e Transformer.
Group Normalization: suddivide le feature in gruppi e normalizza all’interno di ciascun gruppo. Conserva i vantaggi di batch normalization anche quando i batch sono molto piccoli o quando si lavora con immagini ad alta risoluzione.
Quando usare dropout, dropout varianti e altre regolarizzazioni (weight decay)?
Le tecniche di regolarizzazione limitano la complessità del modello per evitare l’overfitting e migliorare la sua capacità di generalizzare su dati non visti.
Dropout: durante il training disattiva casualmente una percentuale di neuroni. Questo impedisce ai nodi di co-adattarsi e costringe la rete a sviluppare rappresentazioni più robuste.
Varianti di Dropout:
DropConnect: applica il dropout ai pesi anziché alle attivazioni.
SpatialDropout: disattiva intere feature map nelle CNN, preservando la struttura spaziale.
DropPath (Stochastic Depth): disattiva interi blocchi o percorsi di rete, utile in architetture molto profonde.
Weight decay (L2 regularization): penalizza pesi di grande entità aggiungendo una componente proporzionale al quadrato dei pesi alla funzione di loss. In AdamW, questa penalizzazione è separata dagli aggiornamenti adattivi, garantendo una regolarizzazione più efficace.
Combinare più tecniche di regolarizzazione, come weight decay con dropout o varianti, può migliorare significativamente la generalizzazione in modelli di grandi dimensioni.
Come applicare gradient clipping e loss scaling in mixed precision?
Nelle sessioni di training in mixed precision (FP16/FP32) o in reti molto profonde, è essenziale controllare la scala dei gradienti e la precisione numerica per mantenere stabilità e accuratezza.
Gradient clipping: limita la norma (o i singoli valori) dei gradienti a una soglia predefinita. Previene esplosioni dei gradienti in reti profonde o in ottimizzatori adattivi, migliorando la stabilità delle fasi di backward pass.
Loss scaling: tipicamente in mixed precision si moltiplica la loss per un fattore elevato prima del calcolo dei gradienti in FP16, evitando underflow. Dopo il calcolo, i gradienti vengono riportati alla scala originale prima dell’aggiornamento dei pesi.
Integrare gradient clipping e loss scaling con ottimizzatori adattivi avanzati e schedulers permette di addestrare modelli di grandi dimensioni con batch estremamente ampi, senza perdere stabilità numerica.
Faq
Qual è la differenza principale tra SGD e Adam?
SGD aggiorna i pesi solo in base al gradiente corrente, mentre Adam combina momentum e adattamento del learning rate per ogni parametro, risultando più robusto e veloce nella convergenza.
Quando conviene usare Nesterov rispetto al Momentum classico?
Nesterov calcola il gradiente nel punto anticipato dal momento accumulato, migliorando la stabilità vicino ai minimi e accelerando la convergenza rispetto al momentum tradizionale.
Come scegliere il learning rate iniziale?
Si parte spesso da valori moderati testati su un piccolo subset di dati; strategie come learning rate finder possono identificare il range ottimale prima del training completo.
Quali vantaggi offrono schedulers come cosine annealing o warm restarts?
Permettono una decrescita graduale del learning rate evitando bruschi cambiamenti, aiutando a uscire da minimi locali e migliorando la generalizzazione del modello.
Perché usare Batch Normalization nei layer profondi?
Riduce il covariate shift interno, permette learning rate più grandi, accelera la convergenza e spesso migliora la performance finale del modello.
Quando preferire Layer o Group Normalization rispetto a Batch Normalization?
Quando si hanno batch piccoli o architetture sequenziali come RNN/Transformer; queste normalizzazioni sono indipendenti dalla dimensione del batch e più stabili in tali contesti.
Come scegliere tra Dropout, DropConnect e DropPath?
Dropout è generico e adatto a layer fully connected; DropConnect è efficace sui pesi; DropPath disattiva blocchi interi, utile in architetture molto profonde per migliorare la generalizzazione.
Qual è il ruolo del weight decay in AdamW?
Separando la penalizzazione L2 dagli aggiornamenti adattivi, AdamW garantisce una regolarizzazione efficace dei pesi senza interferire con l’adattamento dei learning rate.
Perché serve il gradient clipping nelle reti profonde?
Previene l’esplosione dei gradienti durante il backward pass, mantenendo stabili gli aggiornamenti e assicurando un training più robusto su modelli molto profondi.
Come funziona il loss scaling in mixed precision?
Moltiplica la loss per un fattore elevato prima del calcolo dei gradienti in FP16 per evitare underflow; i gradienti vengono poi riportati alla scala originale prima dell’aggiornamento dei pesi.