CodeBlanks Logo Icon CodeBlanks

Optimizer nedir?

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.464

Optimum 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

model.py
import torch

w = torch.tensor(0.0, requires_grad=True)

# buraya yaz

Örnek çözüm

model.py
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.

Soru
opt = torch.optim.____([w], lr=0.1)
Cevap
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

İleri seviye bölümündeki tüm dersler