
C’è una trappola nascosta in “rendi la loss la più piccola possibile”. Presa alla lettera, si può quasi sempre portare la loss a zero — basta rendere il modello abbastanza complesso, con abbastanza pesi, e sarà in grado di riprodurre esattamente un output del training set dato l’input. Nel nostro esempio semplificato con un solo input e un solo output, è come dire che al crescere del numero dei pesi esisterà sempre una funzione (il modello) che passerà esattamente per ogni singolo punto del training set.
Il problema è ciò che succede tra i punti.
Guarda di nuovo i dati età/reddito (qui sopra), stavolta fittati con un modello più complesso di una semplice retta. Passa perfettamente per ogni punto — loss di training pari a zero — ma per farlo oscilla su e giù in modo marcato nel mezzo. Chiedigli di predire il reddito di un cinquantenne, un valore su cui non è stato allenato, e produce qualcosa di assurdo. Ha memorizzato i dati invece di imparare lo schema. Questo è l’overfitting.
Ciò che vogliamo davvero è la generalizzazione: buone predizioni su dati che il modello non ha mai visto. È l’intero scopo di un predittore. La vera abilità sta nel trovare il giusto compromesso tra fittare i dati e generalizzare oltre di essi:
- Più dati di training hai, più il modello può permettersi di essere complesso — e più accuratamente può fittare.
- Ma loss minima non deve voler dire necessariamente loss pari a zero.
Come si valuta se il modello allenato è davvero capace di generalizzare? Si dividono i dati disponibili in un training set (80–90%) e un test set (10–20%). Si allena il modello sul training set, poi si misura la performance sul test set, che per il modello rappresenta un dato mai visto ma di cui noi conosciamo gli output osservati nel mondo reale. Se il modello predice in modo sufficientemente accurato il test set, ha generalizzato; se eccelle sui dati di training ma fallisce sul test set, siamo in una situazione di overfitting.
È anche per questo che un modello di machine learning ha due fasi distinte: una fase di training, in cui i pesi vengono appresi, e una fase d’uso (o inferenza), in cui il modello “congelato” fa predizioni su nuovi input.
