Early Stopping
L'arresto anticipato interrompe l'addestramento quando le prestazioni di validazione ristagnano, riducendo il calcolo superfluo e l'overfitting e conservando il checkpoint migliore del modello.
L'arresto anticipato è una tecnica di addestramento che interrompe un ciclo iterativo di machine learning quando una misura delle prestazioni monitorata smette di migliorare. Permette alle prestazioni di validazione di determinare la durata dell'apprendimento, riducendo i calcoli non necessari e limitando l'overfitting. In pratica, l'addestramento si interrompe quando ulteriore pratica non migliora più la capacità del modello di gestire esempi esclusi dall'addestramento. Al di fuori del machine learning, «fermarsi in anticipo» significa semplicemente interrompere un'attività prima del termine previsto.
Come funziona l'arresto anticipato#
Durante l'addestramento, un ottimizzatore aggiorna un modello usando i dati di addestramento. A intervalli regolari, il modello viene valutato su dati di validazione separati. La loss di addestramento può continuare a diminuire mentre le prestazioni di validazione peggiorano: è un segnale di overfitting, in cui il modello si adatta sempre più ai dettagli specifici degli esempi di addestramento. L'arresto anticipato limita questo processo selezionando il punto di interruzione in base alle prestazioni sui dati esclusi dall'addestramento.
Un'implementazione tipica monitora il miglior punteggio di validazione, salva i pesi del modello corrispondenti e conta le verifiche consecutive senza miglioramenti sufficienti. Un miglioramento azzera il contatore; al raggiungimento della pazienza configurata, l'addestramento termina. Ripristinare il checkpoint migliore conserva il miglior risultato di validazione osservato, che può essere stato ottenuto prima dell'ultimo passaggio di addestramento.
Nelson Morgan e Hervé Bourlard introdussero l'arresto basato sulla validazione per le reti neurali feedforward nel loro lavoro del 1989 sulla generalizzazione e sulla stima dei parametri. I loro esperimenti comprendevano la classificazione del parlato e dimostravano come determinare la durata dell'addestramento monitorando dati indipendenti.
Metriche, pazienza e pesi migliori#
La regola di arresto dipende da diverse impostazioni:
- Metrica monitorata: la loss di validazione misura l'errore di previsione e viene minimizzata; l'accuratezza di validazione misura le previsioni corrette e viene massimizzata.
- Pazienza e durata dell'addestramento: la pazienza specifica quanti controlli senza miglioramenti l'addestramento tollera. Un'epoca corrisponde a un passaggio completo attraverso il dataset di addestramento.
- Soglia di miglioramento: Keras la chiama
min_delta: è la variazione assoluta minima conteggiata come progresso. L'impostazionerestore_best_weights=Trueripristina i pesi associati al miglior valore monitorato. - Frequenza dei controlli di validazione: PyTorch Lightning conteggia la pazienza in base ai controlli di validazione. Effettuare un controllo ogni dieci epoche con una pazienza pari a tre consente tre controlli senza miglioramenti nell'arco di trenta epoche dopo il controllo che ha registrato il valore migliore.
La pazienza e le soglie di miglioramento sono iperparametri: impostazioni scelte al di fuori del processo di aggiornamento dei pesi. Una pazienza più bassa interrompe prima le sessioni di addestramento in stallo; una pazienza più alta consente plateau temporanei più lunghi. Un periodo di riscaldamento ritarda il monitoraggio mentre l'apprendimento iniziale si stabilizza. Queste impostazioni interagiscono con il tasso di apprendimento, che controlla l'entità degli aggiornamenti di ottimizzazione.
Applicazioni ed esempio eseguibile#
L'arresto anticipato si applica sia alle reti neurali sia agli alberi potenziati con gradiente. Nel gradient boosting con scikit-learn, ogni fase aggiunge un albero e l'arresto basato sulla validazione controlla il numero di fasi. L'esempio California Housing usa validation_fraction per riservare i dati e n_iter_no_change per interrompere l'addestramento quando i progressi in validazione ristagnano.
L'esempio seguente usa il dataset sul diabete incluso in scikit-learn e stampa il numero di fasi di boosting effettivamente addestrate:
from sklearn.datasets import load_diabetes
from sklearn.ensemble import GradientBoostingRegressor
X, y = load_diabetes(return_X_y=True)
# Reserve an internal validation split and monitor progress.
model = GradientBoostingRegressor(
n_estimators=1000,
validation_fraction=0.2,
n_iter_no_change=10,
random_state=42,
)
model.fit(X, y)
print(f"Boosting stages fitted: {model.n_estimators_}/1000")Il conteggio delle fasi addestrate mostra in quale punto il criterio di arresto ha interrotto la costruzione degli alberi rispetto al limite di 1.000 fasi.
Ultralytics YOLO applica l'arresto anticipato durante l'addestramento del modello, anche con YOLO26, tramite l'argomento patience, che conta le epoche senza miglioramenti nella fitness di validazione. Per il rilevamento, la fitness usa mAP50–95 e il trainer salva il checkpoint migliore come best.pt.
Arresto anticipato e concetti correlati#
L'arresto anticipato è una forma di regolarizzazione che controlla la durata dell'addestramento. Il weight decay penalizza i pesi elevati, mentre il dropout disattiva casualmente le unità durante l'addestramento. Questi meccanismi possono funzionare insieme. Interrompere l'addestramento troppo presto causa underfitting, lasciando che schemi utili non vengano appresi.
Il checkpointing salva gli stati del modello; l'arresto anticipato decide quando termina l'ottimizzazione. La convalida incrociata ruota le partizioni escluse dall'addestramento per valutare le scelte del modello, mentre i dati di test separati supportano la valutazione finale. Poiché la decisione di arresto seleziona un modello usando i risultati di validazione, il punteggio di validazione del checkpoint selezionato rientra nella selezione del modello.
In Keras, restore_best_weights ha come valore predefinito False, quindi abilitare solo l'arresto anticipato lascia nel modello i pesi dell'ultimo passaggio.










