React Flow mini map
Derin Öğrenmeorta12 dk

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

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

Önce bunlara göz at

🎯

30 saniyede özet · Ne öğreneceksin

  • SGD, Momentum, Adam ve AdamW arasındaki farkı açıklamak
  • Learning rate ve weight decay'in eğitim dinamiklerine etkisini görmek
  • Hangi optimizer'ı ne zaman seçeceğini bilmek
12 dk okuma·orta·🧪 interaktif sandbox

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.

Formül → Kod Karşılığı

∇Lparam.gradloss'un gradyanı
β₁betas[0]=0.91. momentum katsayısı
β₂betas[1]=0.9992. momentum katsayısı
αlröğrenme hızı
εeps=1e-8sıfıra bölünme koruması
θₜparam.data (güncellendi)yeni parametre değeri

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?

Bu konunun pratiği

🧪

Bu konuyu interaktif dene

Az önce okuduğun kavramın parametrelerini değiştir, etkisini canlı gör

Aç →