Definizioni
Ogni modello di machine learning deve trovare un equilibrio tra due estremi opposti:
- Underfitting: il modello e troppo semplice per catturare i pattern presenti nei dati. Sbaglia sia sui dati di training che su quelli nuovi. E come uno studente che non ha studiato abbastanza: non capisce nemmeno gli esercizi gia visti.
- Overfitting: il modello e troppo complesso e memorizza il rumore e le particolarita dei dati di training, perdendo la capacita di generalizzare su dati nuovi. E 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 bias-variance tradeoff e il framework teorico che spiega overfitting e underfitting. L'errore totale di un modello si scompone in tre componenti:
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: sensibilita 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 complessita del modello riduce il bias ma aumenta la varianza. L'obiettivo e trovare il punto di equilibrio che minimizza l'errore totale sui dati non visti.
In pratica, questo si traduce nella scelta della giusta complessita: il numero di layer e neuroni nelle reti neurali, la profondita in un decision tree, il grado di un polinomio nella regressione.
Regolarizzazione L1 e L2
La regolarizzazione aggiunge un termine di penalita alla funzione di loss per scoraggiare pesi troppo grandi, limitando la complessita effettiva del modello:
| 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 sparsita che stabilita |
Il parametro lambda (o alpha in Scikit-learn) controlla l'intensita 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.
Dropout
Il dropout e la tecnica di regolarizzazione piu usata nelle reti neurali. Durante l'addestramento, a ogni iterazione si "spengono" casualmente una percentuale di neuroni (tipicamente 20-50%), azzerando il loro output.
Questo costringe la rete a non dipendere da singoli neuroni e a sviluppare rappresentazioni piu robuste e distribuite. E concettualmente simile al training di un ensemble di sotto-reti, con i benefici della varianza ridotta.
Dropout in pratica
Training: ogni neurone viene disattivato con probabilita 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 cross-validation e la tecnica standard per stimare le prestazioni reali di un modello e per scegliere gli hyperparameters. La variante piu comune e la k-fold cross-validation:
- 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).
La cross-validation fornisce una stima piu affidabile di un singolo split train/validation, perche 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 puo non migliorare prima di fermare il training. Si salva il modello con la migliore validation loss e si usa quello per l'inferenza. E una tecnica semplice ma estremamente efficace, specialmente nel fine-tuning dei LLM.
Data augmentation
La data augmentation e una strategia per combattere l'overfitting aumentando artificialmente la quantita e la variabilita 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
Non esiste una soluzione unica all'overfitting. Le migliori strategie combinano piu tecniche: regolarizzazione, dropout, cross-validation, early stopping e data augmentation. Il punto di partenza, tuttavia, e sempre la qualita e la quantita dei dati. Per approfondire gli errori piu comuni nella gestione dei dati, consulta Errori Comuni nell'AI.