Sovradattamento (Overfitting)
Scopri come identificare, prevenire e affrontare l'overfitting nel machine learning. Scopri le tecniche per migliorare la generalizzazione del modello e le prestazioni nel mondo reale.
L'overfitting è un concetto fondamentale nel machine learning (ML) che si verifica quando un modello apprende i dettagli e il rumore nei dati di addestramento al punto da influire negativamente sulle prestazioni del modello su dati nuovi e non visti. In sostanza, il modello memorizza il set di addestramento invece di apprendere i modelli sottostanti. Ciò si traduce in un modello che raggiunge un'elevata precisione sui dati su cui è stato addestrato, ma non riesce a generalizzare ai dati del mondo reale, rendendolo inaffidabile per le applicazioni pratiche. Ottenere una buona generalizzazione è un obiettivo primario nello sviluppo dell'IA.
Come identificare l'overfitting
L'overfitting viene in genere identificato monitorando le prestazioni del modello sia sul set di dati di addestramento sia su un set di dati di validazione separato durante il processo di addestramento. Un segno comune di overfitting è quando il valore della funzione di perdita per il set di addestramento continua a diminuire, mentre la perdita per il set di validazione inizia ad aumentare. Allo stesso modo, se l'accuratezza dell'addestramento continua a migliorare, ma l'accuratezza della validazione si stabilizza o peggiora nel corso delle successive epoche, è probabile che il modello stia subendo overfitting. Strumenti come TensorBoard sono eccellenti per visualizzare queste metriche e diagnosticare precocemente tali problemi. Piattaforme come Ultralytics HUB possono anche aiutare a tenere traccia degli esperimenti e a valutare i modelli per rilevare l'overfitting.
Overfitting vs. Underfitting
L'overfitting e l'underfitting sono due problemi comuni nel machine learning che rappresentano l'incapacità di un modello di generalizzare. Sono essenzialmente problemi opposti.
- Overfitting: Il modello è troppo complesso per i dati (alta varianza). Cattura il rumore e le fluttuazioni casuali nei dati di training, portando a prestazioni eccellenti durante il training ma scarse prestazioni sui dati di test.
- Sottoadattamento (Underfitting): Il modello è troppo semplice per catturare la struttura sottostante dei dati (alto bias). Le sue prestazioni sono scarse sia sui dati di training che sui dati di test perché non riesce ad apprendere i pattern rilevanti.
La sfida nel deep learning è trovare il giusto equilibrio, un concetto spesso descritto dal compromesso bias-varianza.
Esempi reali di Overfitting
- Rilevamento oggetti per veicoli autonomi: Immagina di addestrare un modello Ultralytics YOLO per un veicolo autonomo utilizzando un set di dati contenente solo immagini in condizioni diurne e soleggiate. Il modello potrebbe diventare altamente specializzato nel rilevare pedoni e auto in condizioni di luce intensa, ma fallire drasticamente di notte o in caso di pioggia o nebbia. In questo caso si parla di overfitting, poiché il modello si è specializzato eccessivamente alle specifiche condizioni di illuminazione e meteorologiche dei dati di addestramento. L'utilizzo di set di dati diversificati come Argoverse può aiutare a prevenire questo problema.
- Analisi di immagini mediche: Un modello CNN viene addestrato per rilevare tumori da scansioni MRI provenienti da un singolo ospedale. Il modello potrebbe inavvertitamente imparare ad associare specifici artefatti o schemi di rumore provenienti dalla particolare macchina MRI di quell'ospedale con la presenza di un tumore. Se testato su scansioni provenienti da un ospedale diverso con una macchina diversa, le sue prestazioni potrebbero diminuire significativamente perché si è adattato eccessivamente al rumore del set di addestramento originale, non ai reali marcatori biologici dei tumori. Questo è un problema critico in settori come l'AI in ambito sanitario.
Come prevenire l'overfitting
È possibile impiegare diverse tecniche per combattere l'overfitting e costruire modelli più robusti.
- Ottieni più dati: Aumentare le dimensioni e la diversità del set di dati di addestramento è uno dei modi più efficaci per prevenire l'overfitting. Più dati aiutano il modello a imparare i veri modelli sottostanti piuttosto che il rumore. Puoi esplorare una varietà di set di dati Ultralytics per migliorare i tuoi progetti.
- Data Augmentation: Ciò comporta l'espansione artificiale del dataset di training creando copie modificate dei dati esistenti. Vengono applicate tecniche come rotazioni casuali, ridimensionamento, ritaglio e spostamenti di colore. Le tecniche di data augmentation Ultralytics YOLO sono integrate per migliorare la robustezza del modello.
- Semplificare l'architettura del modello: A volte, un modello è troppo complesso per il dataset dato. L'utilizzo di un'architettura più semplice con meno parametri può impedirgli di memorizzare i dati. Ad esempio, la scelta di una variante di modello più piccola come YOLOv8n rispetto a YOLOv8x può essere vantaggiosa per dataset più piccoli.
- Regolarizzazione: Questa tecnica aggiunge una penalità alla funzione di loss in base alla complessità del modello, scoraggiando pesi del modello elevati. I metodi comuni sono la regolarizzazione L1 e L2, di cui puoi leggere di più qui.
- Dropout: Una forma specifica di regolarizzazione in cui una frazione casuale di neuroni viene ignorata durante ogni fase di addestramento. Questo costringe la rete ad apprendere rappresentazioni ridondanti e impedisce a qualsiasi singolo neurone di diventare troppo influente. Il concetto di Dropout è spiegato in dettaglio qui.
- Early Stopping: Questo implica il monitoraggio delle prestazioni del modello su un set di validazione e l'interruzione del processo di addestramento non appena le prestazioni di validazione iniziano a diminuire, anche se le prestazioni di addestramento sono ancora in miglioramento. Puoi trovare una spiegazione dell'early stopping in Keras per maggiori dettagli.
- Cross-Validation: Utilizzando tecniche come la K-Fold cross-validation, i dati vengono suddivisi in più fold e il modello viene addestrato e validato su diversi sottoinsiemi. Ciò fornisce una stima più solida della capacità del modello di generalizzare.
- Pruning del modello: Questo processo comporta la rimozione di parametri o connessioni da una rete addestrata che hanno un impatto minimo sulle sue prestazioni, riducendo così la complessità. Aziende come Neural Magic offrono strumenti specializzati nel pruning di modelli per un'implementazione efficiente.