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:
- TensorFlow:
tf.keras.optimizers.Adam - PyTorch:
torch.optim.Adam - Keras:
keras.optimizers.Adam - MXNet:
mxnet.optimizer.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
- Rozpocznij od domyślnych hiperparametrów; dopiero przy problemach specyficznych rozważ ich modyfikację.
- Stosuj harmonogramy zmiany learning rate (np. cosine annealing) w połączeniu z Adam, aby poprawić ogólną stabilność.
- W projektach wymagających silnej regularizacji wybierz AdamW zamiast klasycznego Adam.
- 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.