encyklopedia.run.place

adam_(algorytm)

Adam (ang. Adaptive Moment Estimation) jest szeroko stosowanym algorytmem optymalizacji w uczeniu maszynowym, szczególnie w treningu sieci neuronowych. Został zaproponowany w 2014 roku w pracy „Adam: A Method for Stochastic Optimization” autorstwa Diederik Kingma i Jimmy Ba. Algorytm łączy zalety metod opartych na pierwszym (gradient) i drugim (wariancja gradienu) momencie, umożliwiając szybką i stabilną konwergencję przy minimalnym strojenia hiperparametrów.

Historia

Prace nad adaptacyjnymi metodami optymalizacji sięgają początków lat 2000, kiedy to powstały algorytmy takie jak AdaGrad i RMSprop. Adam powstał jako ich połączenie, wprowadzając jednocześnie bias‑correction (korektę odchylenia zerowego) w estymacji momentów. Pierwsza wersja algorytmu ukazała się w arXiv:1412.6980 w 2014 roku, a szybko stała się domyślnym optymalizatorem w wielu bibliotekach, m.in. TensorFlow i PyTorch.

Formuła matematyczna

Niech θ będą parametrami modelu, a g_t = ∇_θ J(θ_t) – gradient funkcji kosztu J w iteracji t. Adam utrzymuje dwa eksponencjalnie ważone średnie:

  • m_t – średnia pierwszego momentu (średni gradient):
    m_t = β_1·m_{t-1} + (1-β_1)·g_t
  • v_t – średnia drugiego momentu (średnia kwadratu gradientu):
    v_t = β_2·v_{t-1} + (1-β_2)·g_t²

Po korekcie odchylenia zerowego uzyskuje się:

  • m̂_t = m_t / (1-β_1^t)
  • v̂_t = v_t / (1-β_2^t)

Ostateczna aktualizacja parametrów:

θ_{t+1} = θ_t - α· m̂_t / (√{v̂_t} + ε)

gdzie:

  • α – współczynnik uczenia (learning rate), zwykle 0,001,
  • β_1, β_2 – współczynniki wygładzania (z reguły 0,9 i 0,999),
  • ε – mała stała zapobiegająca dzieleniu przez zero (np. 10⁻⁸).

Charakterystyka

Adam posiada kilka istotnych właściwości:

  • Adaptacyjne skalowanie kroków dzięki v_t wyrównuje różnice w skali poszczególnych parametrów.
  • Korekta odchylenia zerowego m̂_t, v̂_t sprawia, że algorytm działa stabilnie już od pierwszych iteracji.
  • Wymaga jedynie niewielkiej liczby hiperparametrów do strojenia, co czyni go przyjaznym dla praktyków.
  • Jest efektywny obliczeniowo – wymaga jedynie dwóch dodatkowych wektorów pamięci (m i v) o rozmiarze równym liczbie parametrów.

Porównanie z innymi metodami

W praktyce Adam konkurował z klasycznym SGD oraz jego wariantami (NAG, Momentum). Główne różnice:

Algorytm Adaptacyjne skalowanie Wymagane hiperparametry Typowe zastosowania
SGD Nie Learning rate, Momentum (opcjonalnie) Proste modele, duże zbiory danych
RMSprop Tak (drugi moment) Learning rate, decay Rekurencyjne sieci neuronowe
Adam Tak (pierwszy i drugi moment) Learning rate, β₁, β₂, ε Głębokie sieci konwolucyjne, modele transformerowe

Warianty i modyfikacje

Od momentu publikacji algorytmu powstało wiele jego odmian, które starają się poprawić stabilność lub ogólną wydajność:

  • AdamW – wprowadza oddzielną dekompozycję regularizacji L2 (weight decay), co eliminuje niepożądane interakcje między gradientem a regularyzacją.
  • AMSGrad – modyfikacja zapewniająca monotonicznie niezmniejszający się maksymalny wariancję, co teoretycznie gwarantuje konwergencję w niektórych warunkach.
  • AdaBound – łączy zalety Adama i SGD, ograniczając granice współczynnika uczenia w miarę postępu treningu.
  • AdaFactor – redukuje zużycie pamięci poprzez aproksymację drugiego momentu.

Implementacje

Wszystkie popularne biblioteki uczenia maszynowego zawierają gotowe implementacje Adam:

Standardowe wartości domyślne (learning rate = 0,001, β₁ = 0,9, β₂ = 0,999, ε = 10⁻⁸) są zazwyczaj dobrym punktem wyjścia, jednak w niektórych zadaniach wymaga się ich dostosowania, np. w bardzo głębokich architekturach lub przy małych zbiorach treningowych.

Zalety i wady

Zalety

  • Szybka konwergencja w początkowych fazach treningu.
  • Mało wrażliwy na skalowanie danych wejściowych.
  • Intuicyjna obsługa przy ograniczonej liczbie hiperparametrów.

Wady

  • Może prowadzić do przeuczenia (overfitting) przy zbyt dużej liczbie epok.
  • W niektórych przypadkach generalizacja jest gorsza niż przy użyciu SGD z momentum.
  • Nie zawsze gwarantuje zbieżność do globalnego optimum w funkcjach nie‑wypukłych.

Praktyczne wskazówki

  1. Rozpocznij od domyślnych hiperparametrów; dopiero przy problemach specyficznych rozważ ich modyfikację.
  2. Stosuj harmonogramy zmiany learning rate (np. cosine annealing) w połączeniu z Adam, aby poprawić ogólną stabilność.
  3. W projektach wymagających silnej regularizacji wybierz AdamW zamiast klasycznego Adam.
  4. Monitoruj zarówno stratę treningową, jak i walidacyjną; jeśli widzisz szybkie zbliżanie się do minima treningowego przy jednoczesnym spadku jakości walidacji, rozważ przejście na SGD.

Bibliografia

  • Diederik P. Kingma, Jimmy Ba. Adam: A Method for Stochastic Optimization. 2014. arXiv:1412.6980.
  • L. Huang, J. Liu, et al. On the Convergence of Adam and Beyond. 2019.
  • Loshchilov, I., & Hutter, F. Decoupled Weight Decay Regularization. 2019 – opisuje AdamW.

Adam pozostaje jednym z najważniejszych algorytmów optymalizacji w nowoczesnym uczeniu głębokim, a jego liczne warianty i ciągłe badania naukowe świadczą o trwałym wpływie na rozwój sztucznej inteligencji.