SGD with momentum, Adam ve AdamW optimizer'ları arasındaki fark nedir? AdamW neden ortaya çıktı?

Cevap

Hepsi gradyanı kullanarak parametreleri günceller, ama gradyan geçmişini farklı şekilde kullanırlar.

SGD + Momentum

Gradyanların üstel hareketli ortalamasını (hız) tutar: v = βv + g, w = w - lr·v. Tutarlı yönlerde hızlanır, osilasyonu azaltır. İyi ayarlandığında CNN'lerde (ResNet) çok iyi genelleme sağlar.

Adam

İki moment tutar:

m = β1·m + (1-β1)·g          # 1. moment: gradyan ortalaması (momentum)
v = β2·v + (1-β2)·g²         # 2. moment: gradyan karesi ortalaması
m̂ = m/(1-β1^t), v̂ = v/(1-β2^t)  # bias correction
w = w - lr · m̂ / (sqrt(v̂) + ε)

Her parametre için adaptif learning rate sağlar: gradyanı sürekli büyük olan parametreler daha küçük adım atar. Hiperparametre ayarına daha az duyarlıdır. Tipik değerler: β1=0.9, β2=0.999 (LLM'lerde genelde 0.95).

AdamW: decoupled weight decay

Klasik Adam'da L2 regularization gradyana eklenir (g + λw). Bu terim de sqrt(v̂)'ye bölündüğü için büyük gradyanlı parametreler daha az regularize edilir. Weight decay ile L2 aynı şey olmaktan çıkar. AdamW (Loshchilov & Hutter) weight decay'i doğrudan ağırlıklara uygular:

w = w - lr · ( m̂ / (sqrt(v̂) + ε) + λ·w )

Sonuç: daha iyi genelleme ve learning rate ile weight decay'in bağımsız ayarlanabilmesi. Transformer ve LLM eğitiminde standart optimizer'dır.

OptimizerBellek (parametre başı ek durum)Tipik kullanım
SGD + momentum1CNN, görüntü sınıflandırma
Adam2Genel amaçlı
AdamW2Transformer, LLM, fine-tuning
opt = torch.optim.AdamW(model.parameters(), lr=3e-4, betas=(0.9, 0.95), weight_decay=0.1)

Adam'ın 2 ek durumu, büyük modellerde optimizer state'in modelin kendisinden 2 kat fazla bellek tutması demektir. Bu yüzden 8-bit Adam, ZeRO/FSDP gibi teknikler kullanılır.

  1. NumPy ile sayısal olarak kararlı (numerically stable) softmax ve cross-entropy loss yazın. Logit'lere göre gradyanı nedir?ZorDerin ÖğrenmeYapay Zeka
  2. PyTorch ile bir sınıflandırma modeli için eksiksiz bir training loop yazın. Hangi adımlar sık unutulur?OrtaDerin ÖğrenmeYapay Zeka
  3. Transfer learning nedir? Önceden eğitilmiş bir modeli küçük bir veri setine nasıl fine-tune edersiniz?OrtaDerin ÖğrenmeYapay Zeka
  4. Embedding nedir? One-hot encoding'e göre avantajı nedir ve nerelerde kullanılır?KolayDerin ÖğrenmeYapay Zeka
  5. Transformer mimarisini anlatın. Encoder-only, decoder-only ve encoder-decoder modeller arasındaki fark nedir?ZorDerin ÖğrenmeYapay Zeka
  6. Self-attention nasıl çalışır? Scaled dot-product attention'ı NumPy ile yazın ve neden sqrt(d_k) ile bölündüğünü açıklayın.ZorDerin ÖğrenmeYapay Zeka

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle