Definizioni
Ogni modello di machine learning sta in equilibrio fra due modi di sbagliare, e la parte difficile del mestiere è stare in mezzo:
Punti chiave
- Underfitting: modello troppo semplice, sbaglia anche sui dati già visti (alto bias).
- Overfitting: modello troppo complesso, memorizza il rumore e non generalizza (alta varianza).
- Il bias-variance tradeoff è la cornice teorica per capire e bilanciare i due fenomeni.
- Le difese principali: regolarizzazione L1/L2, dropout, cross-validation, early stopping e data augmentation.
- Il punto di partenza resta sempre la qualità e la quantità dei dati.
- Underfitting: il modello è troppo semplice per catturare i pattern presenti nei dati. Sbaglia sia sui dati di training che su quelli nuovi. È come uno studente che non ha studiato abbastanza: non capisce nemmeno gli esercizi già visti.
- Overfitting: il modello è troppo complesso e memorizza il rumore e le particolarità dei dati di training, perdendo la capacità di generalizzare su dati nuovi. È come uno studente che impara le risposte a memoria senza capire i concetti: perfetto sugli esercizi noti, fallimentare su quelli nuovi.
Come riconoscerli
Underfitting: training loss alta + validation loss alta.
Overfitting: training loss bassa + validation loss alta (gap crescente).
Fit corretto: training loss bassa + validation loss bassa (gap minimo).
Bias-variance tradeoff
Il compromesso fra bias e varianza è la cornice teorica che spiega tutti e due i problemi. L'errore totale si scompone in tre pezzi:
Errore totale = Bias^2 + Varianza + Rumore irriducibile
- Bias: errore sistematico dovuto ad assunzioni semplificative del modello. Un modello lineare applicato a dati non lineari ha alto bias (underfitting).
- Varianza: sensibilità del modello ai dati di training specifici. Un modello troppo complesso cambia drasticamente predizioni se cambia il training set (overfitting).
- Rumore irriducibile: errore intrinseco nei dati, non eliminabile da nessun modello.
Aumentare la complessità del modello riduce il bias ma aumenta la varianza. L'obiettivo è trovare il punto di equilibrio che minimizza l'errore totale sui dati non visti.
In pratica, questo si traduce nella scelta della giusta complessità: il numero di layer e neuroni nelle reti neurali, la profondità in un decision tree, il grado di un polinomio nella regressione. Un sintomo classico di varianza eccessiva è un modello che ottiene un'accuratezza quasi perfetta in training ma crolla in produzione: è il segnale che ha imparato il dataset, non il problema.
Regolarizzazione L1 e L2
La regolarizzazione aggiunge una penalità alla funzione di costo per scoraggiare pesi troppo grandi, quindi limita quanto il modello può diventare contorto:
| Tipo | Penalita | Effetto | Uso tipico |
|---|---|---|---|
| L1 (Lasso) | lambda * sum(|w|) | Porta alcuni pesi esattamente a zero (feature selection) | Quando si sospettano molte feature irrilevanti |
| L2 (Ridge) | lambda * sum(w^2) | Riduce tutti i pesi uniformemente (shrinkage) | Caso generale, prevenzione overfitting |
| Elastic Net | alpha*L1 + (1-alpha)*L2 | Combinazione dei due effetti | Quando servono sia sparsità che stabilità |
Il parametro lambda (o alpha in Scikit-learn) controlla l'intensità della regolarizzazione: troppo basso e la regolarizzazione non ha effetto; troppo alto e il modello diventa troppo semplice (underfitting). Si sceglie tipicamente tramite cross-validation, provando una griglia di valori su scala logaritmica (per esempio 0.001, 0.01, 0.1, 1) e scegliendo quello con la migliore validation loss media.
Dropout
Il dropout è la tecnica di regolarizzazione più usata nelle reti neurali. Durante l'addestramento, a ogni iterazione si "spengono" casualmente una percentuale di neuroni (tipicamente 20-50%), azzerando il loro output.
Il risultato è che la rete non può appoggiarsi a pochi neuroni e deve distribuire quello che sa. È un po' come addestrare tante sotto-reti e poi metterle insieme: la varianza scende, e in pratica funziona meglio di quanto la spiegazione faccia sospettare.
Dropout in pratica
Training: ogni neurone viene disattivato con probabilità p ad ogni forward pass.
Inference: tutti i neuroni sono attivi, ma i pesi vengono scalati per compensare (moltiplicati per 1-p).
Valori tipici: p = 0.2 per l'input layer, p = 0.5 per gli hidden layer.
Cross-validation
La validazione incrociata è il modo standard per stimare quanto un modello funzionerà su dati nuovi e per scegliere gli iperparametri. La versione più usata è la k-fold:
- Si divide il dataset in k parti (fold) di dimensione uguale (tipicamente k = 5 o 10).
- Si addestra il modello k volte, ogni volta usando k-1 fold come training set e 1 fold come validation set.
- Si calcola la media e la deviazione standard delle metriche sui k validation set.
Varianti importanti includono la stratified k-fold (mantiene le proporzioni delle classi in ogni fold, essenziale per dataset sbilanciati) e la leave-one-out (k = numero di campioni, costosa ma utile con dataset piccoli). Per i dati temporali esiste la time series split, che valida sempre su dati successivi a quelli di training per evitare di "guardare nel futuro".
La cross-validation fornisce una stima più affidabile di un singolo split train/validation, perché riduce la dipendenza dal particolare partizionamento dei dati. Le metriche da monitorare sono quelle discusse nell'articolo sulla matrice di confusione.
Early stopping
L'early stopping monitora la validation loss durante l'addestramento e interrompe il training quando la loss smette di diminuire (o inizia a crescere), segno che il modello sta iniziando a fare overfitting.
In pratica si definisce un parametro di patience: il numero di epoch consecutive in cui la validation loss può non migliorare prima di fermare il training. Si salva il modello con la migliore validation loss e si usa quello per l'inferenza. È una tecnica semplice ma estremamente efficace, specialmente nel fine-tuning dei LLM, dove pochissime epoch bastano a ottenere risultati ottimi e proseguire oltre rischia solo di degradare la generalizzazione.
Data augmentation
La data augmentation è una strategia per combattere l'overfitting aumentando artificialmente la quantità e la variabilità dei dati di training, senza raccogliere nuovi campioni.
Nella Computer Vision:
- Rotazione, flip orizzontale/verticale, crop casuale
- Variazioni di luminosita, contrasto, saturazione
- Cutout (rimuovere porzioni casuali dell'immagine)
- MixUp / CutMix (combinare due immagini)
Nel NLP:
- Sinonimi e parafrasi
- Back-translation (tradurre in un'altra lingua e ritradurre)
- Random insertion, deletion, swap di parole
- Generazione di dati sintetici con LLM
All'overfitting non si risponde con una tecnica sola: si mettono insieme regolarizzazione, dropout, validazione incrociata, early stopping, aumento dei dati. E la leva più forte resta la meno tecnologica, cioè avere più dati e migliori. Sugli errori tipici nella gestione dei dati c'è Errori comuni nell'AI.
Vuoi imparare ad applicarlo davvero?
Scopri i corsi e la formazione di Federico Boggia su AI, dati e digitale.