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.
| Optimizer | Bellek (parametre başı ek durum) | Tipik kullanım |
|---|---|---|
| SGD + momentum | 1 | CNN, görüntü sınıflandırma |
| Adam | 2 | Genel amaçlı |
| AdamW | 2 | Transformer, 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.
İlgili Derin Öğrenme soruları
- NumPy ile sayısal olarak kararlı (numerically stable) softmax ve cross-entropy loss yazın. Logit'lere göre gradyanı nedir?
- PyTorch ile bir sınıflandırma modeli için eksiksiz bir training loop yazın. Hangi adımlar sık unutulur?
- Transfer learning nedir? Önceden eğitilmiş bir modeli küçük bir veri setine nasıl fine-tune edersiniz?
- Embedding nedir? One-hot encoding'e göre avantajı nedir ve nerelerde kullanılır?
- Transformer mimarisini anlatın. Encoder-only, decoder-only ve encoder-decoder modeller arasındaki fark nedir?
- 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.
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.