Współczynnik uczenia

Hiperparametr określający wielkość kroku przy aktualizacji parametrów podczas optymalizacji. Zbyt duży grozi przeskoczeniem minimum, zbyt mały spowalnia naukę.

Współczynnik uczenia (ang. learning rate, w kodzie zwykle lr) to hiperparametr, który decyduje, jak duży krok robi algorytm optymalizacji przy każdej aktualizacji wag modelu. Mówiąc obrazowo: optymalizator widzi, w którą stronę „schodzić” po funkcji straty (to mówi gradient), a learning rate ustala, jak długi jest pojedynczy krok w tę stronę. To jedna z tych liczb, którą ustawiasz przed treningiem, a nie taka, której model uczy się sam.

Jak to działa

W metodzie spadku gradientu nowa wartość wagi powstaje ze wzoru w = w - lr * gradient. Im większy lr, tym mocniej każda iteracja przesuwa wagi. Brzmi jak „więcej znaczy szybciej”, ale to pułapka. Zbyt duży współczynnik sprawia, że model przeskakuje minimum funkcji straty i odbija się od ścian doliny zamiast do niej zejść. W skrajnym przypadku strata rośnie zamiast maleć albo wybucha do NaN. Zbyt mały lr jest bezpieczny, ale trening pełznie i potrafisz czekać godziny na coś, co powinno zająć minuty, a do tego łatwiej utknąć w byle płytkim minimum lokalnym.

Dlatego rzadko trzyma się jednej stałej wartości. Stosuje się schedulery, czyli harmonogramy zmieniające lr w trakcie: warmup (powolny start), a potem stopniowe wygaszanie (decay), np. cosine albo step decay.

Przykład z praktyki

W PyTorch zwykle zaczynasz od optymalizatora Adam: optimizer = torch.optim.Adam(model.parameters(), lr=1e-3). Wartość 1e-3 (czyli 0.001) to klasyczny punkt startowy dla Adama; dla zwykłego SGD często bierze się większe, rzędu 1e-2. Jeśli loss skacze albo rośnie, zmniejsz lr dziesięciokrotnie. Jeśli trening jest mrówczo wolny, spróbuj go zwiększyć. Możesz też podpiąć scheduler, np. torch.optim.lr_scheduler.CosineAnnealingLR, i wywoływać scheduler.step() po każdej epoce.

Częste błędy i mity

  • „Większy lr = szybsze uczenie” — tylko do pewnego progu. Powyżej niego trening się rozsypuje.
  • Niezmienianie lr po podmianie optymalizatora albo wielkości batcha — to powiązane ustawienia, większy batch często znosi większy lr.
  • Strojenie na ślepo — zamiast zgadywać, użyj learning rate finder (np. z biblioteki fastai), który testuje zakres wartości i pokazuje, gdzie loss spada najszybciej.

Pojęcia powiązane

Gradient descent, hiperparametr, optymalizator (Adam, SGD), funkcja straty, batch size, scheduler, warmup, gradient.