06 · Sieci · 3 min czytania · aktualizacja
Czym jest early stopping i kiedy przerwać trening sieci?
W skrócie
Early stopping kończy trening, gdy strata walidacyjna przestaje spadać, i wraca do najlepszych wag. Działa jak regularyzacja, ale wymaga cierpliwości.
Co to jest
Early stopping (wczesne zatrzymanie) to reguła treningu: po każdej epoce mierz stratę lub metrykę na zbiorze walidacyjnym i zatrzymaj się, gdy przez zadaną liczbę epok (patience) nie ma poprawy; zachowaj wagi z najlepszej epoki.
To najprostsza i najczęściej używana forma regularyzacji w sieciach neuronowych. W boostingu drzew pełni tę samą rolę jako early_stopping_rounds, gdzie zamiast epok liczy się kolejne drzewa.
Mechanizm — dlaczego tak działa
Na początku treningu sieć uczy się najsilniejszych regularności — tych, które są wspólne dla treningu i walidacji — więc obie straty spadają. Z czasem gradient zaczyna dopasowywać wagi do szczegółów pojedynczych przykładów treningowych, w tym do błędnych etykiet i przypadkowych zbieżności. Te szczegóły nie powtarzają się w walidacji: strata treningowa spada dalej, a walidacyjna przestaje spadać i zaczyna rosnąć. Dołek krzywej walidacyjnej to moment, w którym model wie najwięcej o regułach, a najmniej o szumie.
Dlaczego to regularyzacja? Liczba kroków razy learning rate ogranicza, jak daleko wagi mogą odejść od punktu startowego. Dla modelu liniowego ze stratą kwadratową przerwanie treningu po τ krokach jest w przybliżeniu równoważne karze L2 o sile rzędu 1/(η·τ) (Goodfellow i in. 2016). Wczesne zatrzymanie to więc ukryty weight decay, którego siłę dobiera walidacja.
Problem: wynik walidacji to średnia z próbki, obarczona błędem standardowym proporcjonalnym do 1/√n. Krzywa walidacyjna skacze z epoki na epokę także wtedy, gdy model niewiele się zmienia. Dlatego stosuje się patience (czekanie kilku–kilkunastu epok), minimalny próg poprawy, a przy małych danych — walidację krzyżową zamiast jednego podziału.
Strata i trafność nie zawsze idą razem. Strata walidacyjna może rosnąć, bo model staje się coraz pewniejszy siebie na nielicznych błędnych przykładach, podczas gdy trafność stoi w miejscu. To sygnał pogarszającej się kalibracji, nie zawsze gorszych decyzji.
Zastrzeżenie: early stopping wybiera moment na walidacji, więc raportowany wynik walidacyjny jest lekko zawyżony — ostateczną ocenę robi osobny zbiór testowy.
Na przykładzie
Zbiór Digits: 300 obrazów treningowych, 500 walidacyjnych, reszta (997) jako test; sieć MLPClassifier z 256 neuronami, bez regularyzacji, minibatche po 32 (random_state=0). W wersji z szumem w 20% losowo wybranych przykładów treningowych etykietę zastąpiliśmy losową cyfrą (zmieniło to 54 etykiety). Strata walidacyjna była najniższa w 5. epoce (0,48), a trafność testowa wynosiła wtedy 89,8%. Po 200 epokach sieć miała 100% trafności na treningu — zapamiętała także błędne etykiety — strata walidacyjna wzrosła do 0,89, a trafność testowa spadła do 82,0%.
Przy czystych etykietach dołek wypadł w 13. epoce (0,18), a po 200 epokach strata walidacyjna wzrosła tylko do 0,25, przy praktycznie niezmienionej trafności testowej (93,6% i 93,7%). Szum pomiaru: przy trafności 0,9 błąd standardowy na 50 przykładach walidacyjnych to 4,2 punktu, a na 500 — 1,3 punktu.
Dane: Digits (ręcznie pisane cyfry 8×8)
W praktyce
- scikit-learn:
MLPClassifier(early_stopping=True, validation_fraction=0.1, n_iter_no_change=10);HistGradientBoostingClassifier(early_stopping=True). - PyTorch: pętla z zapisem najlepszego
state_dicti licznikiem patience; w LightningEarlyStopping(monitor="val_loss", patience=10). - XGBoost/LightGBM:
early_stopping_rounds=50zeval_set, a do predykcji najlepsza iteracja (best_iteration). - Monitoruj stratę (gładsza niż trafność), chyba że metryka zadania wyraźnie rozjeżdża się ze stratą.
- Typowy błąd: patience = 1 na małej walidacji — trening przerywa pierwszy przypadkowy skok w górę.
Najczęstsze pytania
- Kiedy zatrzymać trening sieci neuronowej?
- Gdy strata walidacyjna nie poprawiła się przez kilka–kilkanaście epok, a wtedy wróć do wag z najlepszej epoki. Nie zatrzymuj po pierwszym wzroście — przy małej walidacji to zwykle szum, nie przeuczenie.
- Czy early stopping to regularyzacja?
- Tak. Ogranicza odległość, jaką wagi pokonują od startu, co dla modeli liniowych jest w przybliżeniu równoważne karze L2. Zaletą jest to, że siłę regularyzacji dobiera walidacja. Często łączy się go z weight decay lub dropoutem.
- Dlaczego krzywa walidacji skacze z epoki na epokę?
- Bo wynik walidacji to średnia z ograniczonej próbki, a jej błąd maleje jak 1/√n. Przy kilkudziesięciu przykładach rzadkiej klasy pojedyncza pomyłka zmienia metrykę o kilka punktów. Pomaga większa walidacja, walidacja krzyżowa albo wygładzenie krzywej.
Źródła
- Prechelt, L. (1998). "Early stopping — but when?". W: Neural Networks: Tricks of the Trade, LNCS 1524, Springer, 55–69.
- Goodfellow, I., Bengio, Y., Courville, A. (2016). Deep Learning, MIT Press, rozdz. 7.8 "Early stopping". https://www.deeplearningbook.org/contents/regularization.html
- Bishop, C. M. (2006). Pattern Recognition and Machine Learning, Springer, rozdz. 5.5.2 "Early stopping".
- Hastie, T., Tibshirani, R., Friedman, J. (2009). The Elements of Statistical Learning, 2nd ed., Springer, rozdz. 11.5.2 "Overfitting".