Optimizer nedir?
- Makine Öğrenmesi kursu
- İleri seviye
- Ders 69/78
- 5 dk
Optimizer, gradyanları kullanarak model ağırlıklarını günceller.
Optimize edici nedir?
Optimize edici, gradyanları kullanarak parametreleri güncelleyen algoritmadır. Hepsi aynı arayüzü paylaşır: kuruluşta parametreler ve ayarlar, eğitimde zero_grad() ve step(). Farkları, gradyanı adıma nasıl çevirdikleridir:
torch.optim.SGD(params, lr=0.1) # p -= lr·g
torch.optim.SGD(params, lr=0.1, momentum=0.9) # hızlanma birikimi
torch.optim.Adam(params, lr=1e-3) # parametre başına uyarlamalı adım
torch.optim.AdamW(params, lr=1e-3, weight_decay=0.01)Kayıp yüzeyi düz bir çukur değildir: dar vadiler, düzlükler ve eyer noktaları içerir. İyi bir optimize edici bunlarda hızlı ve kararlı ilerler.
Elle gradyan inişi
Optimize edicinin yaptığını elle görmek için f(w) = (w - 3)² fonksiyonunu küçültelim. Türev 2(w - 3)'tür; her adımda hata (1 - 2·lr) katına iner:
w, lr = 0.0, 0.1
for adim in range(3):
g = 2 * (w - 3)
w -= lr * g
print(round(w, 3)) # 0.6, 1.08, 1.464Optimum 3'e her adımda kalan mesafenin %20'si kadar yaklaşılır.
Uygulama Elle ve optimize ediciyle
f(w) = (w - 3)² için torch.optim.SGD([w], lr=0.1) ile 3 adım at; her adımdan sonra w'yi round(..., 3) ile alt alta yazdır. Sonuçlar kartta elle hesaplananlarla aynı olmalıdır.
Başlangıç kodu
import torch
w = torch.tensor(0.0, requires_grad=True)
# buraya yazÖrnek çözüm
import torch
w = torch.tensor(0.0, requires_grad=True)
opt = torch.optim.SGD([w], lr=0.1)
for _ in range(3):
opt.zero_grad()
((w - 3) ** 2).backward()
opt.step()
print(round(w.item(), 3))Beklenen çıktı
0.6 1.08 1.464
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Tüm PyTorch optimize edicilerinin ortak iki yöntemi hangileridir?
- fit() ve predict()
- forward() ve backward()
- train() ve eval()
- zero_grad() ve step() Doğru cevap
Açıklama: Eğitim döngüsü optimize ediciden yalnızca bu ikisini çağırır.
2 SGD optimize ediciyi kur.
opt = torch.optim.____([w], lr=0.1)
opt = torch.optim.SGD([w], lr=0.1)
Açıklama: SGD stokastik gradyan inişidir.
3 Optimize edicileri eşleştir.
| Kavram | Anlamı |
|---|---|
SGD |
p -= lr·g |
momentum |
Hız birikimi |
Adam |
Uyarlamalı adım |
AdamW |
Ayrık ağırlık azaltma |