La generalizzazione è la capacità di un modello di funzionare bene su dati che non ha mai visto. È l'unica cosa che conta davvero. Tutto il resto è strumento.
Un modello che ha 100% di accuracy sui dati di training ma 60% su dati nuovi non è un buon modello. È un modello che ha memorizzato. Vedi overfitting.
Idea base: i dati di training sono un campione del mondo. Il modello deve imparare la struttura del mondo, non i singoli esempi del campione. Se impara la struttura, generalizza. Se impara gli esempi, memorizza.
Come misurare generalizzazione:
- Train/validation/test split: dividi i dati in tre. Training per addestrare, validation per regolare iperparametri, test per valutazione finale onesta.
- Cross-validation: alterni quale fetta usi come validation. Più robusto su dataset piccoli.
- Out-of-distribution (OOD) testing: testi su dati strutturalmente diversi. Vero stress test.
Cosa aiuta la generalizzazione:
- Più dati: la cosa più importante. Più esempi, più struttura, meno memoria.
- Dati diversificati: data augmentation, multi-source, variazioni.
- Regolarizzazione: weight decay, dropout, early stopping.
- Modelli più semplici: a parità di dati, modelli più piccoli generalizzano meglio.
- Inductive bias: scelte architetturali che riflettono il problema (CNN per immagini, Transformer per sequenze).
Curiosità: gli LLM moderni sono enormi (centinaia di miliardi di parametri) ma generalizzano benissimo. Va contro l'intuizione classica del bias-variance tradeoff. Si chiama "double descent" e "grokking", fenomeni studiati ancora oggi. Insomma: più grande non è sempre peggio per la generalizzazione, in certe condizioni.