Epoka (ang. epoch) to jedno pełne przejście algorytmu uczącego przez cały zbiór treningowy. Innymi słowy: model „obejrzał” każdy przykład z danych treningowych dokładnie raz. Trening sieci neuronowej prawie nigdy nie kończy się po jednej epoce — zwykle potrzeba ich kilkunastu, kilkudziesięciu, a czasem setek, żeby model nauczył się czegokolwiek sensownego.
Dlaczego więcej niż raz? Bo w jednym przejściu model dopiero zaczyna dostrajać swoje wagi. Przy każdej epoce algorytm (np. gradient descent) trochę poprawia parametry, błąd maleje, a model coraz lepiej trafia. Powtarzasz to tak długo, aż loss przestaje spadać albo zaczyna rosnąć metryka na zbiorze walidacyjnym.
Warto rozróżnić trzy pojęcia, które juniorzy często mieszają. Epoka to całe przejście przez dane. Batch to porcja przykładów przetwarzana naraz (bo cały zbiór zwykle nie mieści się w pamięci GPU). Iteracja (krok) to jedna aktualizacja wag, czyli jeden batch. Jeśli masz 10 000 przykładów i batch_size=100, to jedna epoka = 100 iteracji.
Przykład z praktyki
W Kerasie liczbę epok podajesz wprost przy treningu:
model.fit(x_train, y_train, epochs=50, batch_size=32, validation_data=(x_val, y_val))
W PyTorchu epoki ogarniasz ręcznie — piszesz pętlę for epoch in range(50): i w środku przelatujesz przez DataLoader. W obu przypadkach po każdej epoce zwykle sprawdzasz metryki na walidacji, żeby wiedzieć, kiedy przestać.
Częste błędy i mity
- „Więcej epok = lepszy model” — nieprawda. Za dużo epok prowadzi do overfittingu: model wkuwa zbiór treningowy na pamięć i głupieje na nowych danych. Tu ratuje early stopping, czyli zatrzymanie, gdy walidacja przestaje się poprawiać.
- Mylenie epoki z iteracją — przy dużym
batch_sizejedna epoka to mało kroków, przy małym dużo. Logując postęp, pilnuj, którą jednostką operujesz. - Stała liczba epok dla każdego problemu — magicznej liczby nie ma. Mały zbiór może potrzebować setek epok, ogromny — dosłownie jednej czy dwóch.
Pojęcia powiązane: batch i batch size, iteracja, learning rate, gradient descent, overfitting, early stopping, walidacja, loss.