React Flow mini map
Derin Öğrenmeorta12 dk

Optimizasyon Algoritmaları Karşılaştırması

SGD, Momentum, Adam, AdamW — hangisi ne zaman?

Bir dağın zirvesinden vadiye inmeye çalıştığını düşün. Gözlerin bağlı, sadece ayağının altındaki eğimi hissedebiliyorsun. Hangi adımları atmalısın ki en hızlı ve güvenli şekilde vadiye ulaşasın? İşte optimizasyon algoritmaları tam da bu soruya cevap veriyor — kayıp yüzeyinde en dik iniş yolunu bulmak için.

**Tek mini-batch** üzerinden gradyan hesaplar ve parametre günceller.…

Geçmiş gradyanların **üstel hareketli ortalamasını** mevcut güncellemeye ekler.…

vₜ = β·vₜ₋₁ + (1-β)·∇L θₜ = θₜ₋₁ - α·vₜ

v hız vektörü, β momentum katsayısı. Gradyanlar aynı yönü gösterirse hız birikir, zıt yönlerde ise frenlenir.

Her parametre için **ayrı öğrenme oranı** tutar.…

AdaGrad'ın **ölü öğrenme oranı** sorununu çözer.…

sₜ = ρ·sₜ₋₁ + (1-ρ)·(∇L)² θₜ = θₜ₋₁ - α·∇L / √(sₜ + ε)

ρ genelde 0.99. ε (1e-8) sıfıra bölmeyi önler. s biriken gradyan karesi — yakın geçmişe daha fazla ağırlık verir.

**Momentum + RMSProp** birleşimi.…

mₜ = β₁·mₜ₋₁ + (1-β₁)·∇L vₜ = β₂·vₜ₋₁ + (1-β₂)·(∇L)² m̂ₜ = mₜ/(1-β₁ᵗ), v̂ₜ = vₜ/(1-β₂ᵗ) θₜ = θₜ₋₁ - α·m̂ₜ/√(v̂ₜ + ε)

β₁=0.9, β₂=0.999 varsayılan. Bias correction (1-βᵗ) ilk adımlardaki düşük tahminleri düzeltir.

Adam'da L2 regularization gradyana eklenir — bu **yanlış** bir uygulama.…

💡Başlangıç için Adam veya AdamW kullan. Eğer model overfit yapıyorsa ve daha iyi genelleme istiyorsan, SGD + Momentum'a geç. Kaggle yarışmalarında son fine-tuning genelde SGD ile yapılır.

SGD + Momentum

  • ·Daha iyi genelleme potansiyeli
  • ·Hiperparametre ayarı zor
  • ·Yavaş yakınsama
  • ·Görüntü sınıflandırmada popüler

Adam / AdamW

  • ·Hızlı ve stabil yakınsama
  • ·Varsayılan hiperparametreler çoğunlukla yeterli
  • ·Bellek kullanımı 2x (m ve v)
  • ·NLP ve Transformer'larda standart

PyTorch optimizör karşılaştırması

Python
1import torch
2import torch.nn as nn
3import torch.optim as optim
4
5model = nn.Linear(10, 1)
6criterion = nn.MSELoss()
7
8# Farklı optimizörler
9opt_sgd = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
10opt_adam = optim.Adam(model.parameters(), lr=0.001, betas=(0.9, 0.999))
11opt_adamw = optim.AdamW(model.parameters(), lr=0.001, weight_decay=0.01)
12
13# Eğitim döngüsü (örnek)
14optimizer = opt_adamw # tercihini seç
15for epoch in range(100):
16 x = torch.randn(32, 10)
17 y = torch.randn(32, 1)
18
19 optimizer.zero_grad()
20 loss = criterion(model(x), y)
21 loss.backward()
22 optimizer.step()

⚠️Adam'ın β₂ değerini değiştirmeden önce iki kez düşün. 0.999'dan küçük değerler (örn. 0.99) bazı durumlarda eğitimi bozabilir. Transformer'larda warm-up + cosine annealing scheduler kullanmak genelde daha etkili.

⛷️Kayak Pisti Analojisi

SGD: Gözleri bağlı kayakçı, her adımda sadece ayağının altını hisseder. Momentum: Kayakçı hız kazanır, virajlarda savrulmaz. Adam: Kayakçının hem pusulası (momentum) hem altimetre (adaptif LR) var — her koşula uyum sağlar.

✦ Quiz

AdaGrad'ın ana dezavantajı nedir?

✦ Quiz

AdamW'nin Adam'dan temel farkı nedir?

🚀 Tam Sandbox'u Aç

Bağlantılı Konular