L'overfitting è un problema comune nel machine learning, in cui un modello cattura il rumore casuale e i dettagli idiosyncratici dei dati di addestramento anziché le vere relazioni sottostanti. Di conseguenza, il modello sembra funzionare in modo estremamente efficace sui dati su cui è stato addestrato, ma fornisce previsioni scarse quando viene applicato a nuovi esempi. È il classico compromesso tra memorizzazione e apprendimento genuino.
Come funziona l'overfitting
Durante l'addestramento, un modello regola i propri parametri interni per minimizzare l'errore su un insieme di esempi. Se il modello ha troppi parametri rispetto alla dimensione o alla diversità del set di addestramento, oppure se viene addestrato troppo a lungo, inizia a trattare le fluttuazioni casuali nei dati come se fossero segnali significativi. Immagina di adattare una curva morbida a un grafico a dispersione: un polinomio di grado basso cattura l'andamento generale, mentre un polinomio di grado elevato può oscillare passando per ogni singolo punto, inclusi i valori anomali. Quella curva oscillante è in overfitting. Ha essenzialmente memorizzato i dati invece di apprendere l'andamento, quindi qualsiasi nuovo punto che cada fuori dall'oscillazione verrà previsto in modo errato.
Da un punto di vista della teoria dell'informazione, il modello utilizza più "capacità" di quanta i dati possano giustificare, adattando segnale più rumore anziché solo il segnale. Il divario tra l'errore di addestramento e l'errore di validazione è il sintomo più evidente: l'errore di addestramento continua a diminuire mentre l'errore di validazione si stabilizza o aumenta.
Perché è importante
L'overfitting è una delle ragioni più frequenti per cui i progetti di machine learning non riescono a generare valore in produzione. Un modello che ottiene il 99% di accuratezza su un benchmark può essere inutile su dati reali se ha fatto overfitting su quel benchmark. Rilevare e controllare l'overfitting è quindi una preoccupazione centrale nello sviluppo dei modelli, che riguarda ogni fase, dalla raccolta dei dati al deployment.
È particolarmente importante nei domini in cui la generalizzazione è critica: diagnosi medica, rilevamento delle frodi, guida autonoma e qualsiasi sistema che debba gestire input mai visti prima. Comprendere l'overfitting spiega anche perché più dati, modelli più semplici o una regolarizzazione più forte spesso battono l'idea di lanciare una rete neurale più grande su un problema.
Segnali chiave e soluzioni comuni
- Divario tra addestramento e validazione: l'accuratezza è elevata sui dati di addestramento ma nettamente inferiore su un set di validazione tenuto da parte.
- Cross-validation: utilizzare la k-fold cross-validation per verificare che il modello generalizzi su diverse porzioni di dati.
- Regolarizzazione: tecniche come L1, L2 (weight decay) o dropout penalizzano la complessità del modello e scoraggiano la memorizzazione.
- Più dati: ampliare il set di addestramento fornisce al modello più segnale da cui apprendere e meno incentivi a memorizzare.
- Data augmentation: ampliare artificialmente i dati di addestramento con variazioni realistiche (rotazioni, parafrasi, rumore) migliora la robustezza.
- Early stopping: interrompere l'addestramento quando l'errore di validazione inizia a salire impedisce al modello di adattarsi al rumore.
- Modelli più semplici: scegliere un modello con meno parametri rispetto ai dati riduce la capacità di andare in overfitting.
L'overfitting non è un bug occasionale da correggere, ma una tensione continua che ogni professionista deve gestire. L'obiettivo non è un modello perfetto sui dati di addestramento, ma un modello che fornisca previsioni affidabili sui dati che non ha ancora incontrato.