CodeBlanks Logo Icon CodeBlanks

Learning rate

Learning rate, her adımda ağırlıkların ne kadar değişeceğini belirler.

Öğrenme oranı

Öğrenme oranı derin öğrenmenin en önemli hiperparametresidir:

  • Çok küçük: kayıp çok yavaş düşer.
  • Uygun: kayıp hızlı ve kararlı düşer.
  • Çok büyük: kayıp salınır ya da patlar (NaN).
# f(w) = (w - 3)² için hata her adımda (1 - 2·lr) ile çarpılır
# lr = 0.01 -> 0.98   (yavaş)
# lr = 0.1  -> 0.8    (iyi)
# lr = 1.1  -> -1.2   (|·| > 1: ıraksar)

Pratikte önce birkaç değer logaritmik ölçekte denenir: 1e-4, 1e-3, 1e-2.

Isınma ve kosinüs azalması

Modern eğitimler genellikle ilk adımlarda öğrenme oranını sıfırdan yükseltir (ısınma), sonra kosinüs eğrisiyle yavaşça azaltır. Isınma, Adam'ın istatistikleri henüz kararsızken büyük adımları önler:

opt = torch.optim.AdamW(model.parameters(), lr=1e-3)
zam = torch.optim.lr_scheduler.OneCycleLR(opt, max_lr=1e-3, total_steps=1000)
for adim in range(1000):
    egit_bir_adim()
    zam.step()        # her adımda (epoch değil)

OneCycleLR ısınma ve azalmayı tek zamanlayıcıda birleştirir.

Uygulama Oranları karşılaştır

lr = 0.01, 0.1 ve 1.1 için f(w) = (w - 3)² fonksiyonunda w = 0'dan başlayarak 20 adım SGD uygula. Her satırda lr'yi ve son w'yi round(..., 3) ile yazdır.

Başlangıç kodu

model.py
import torch

# buraya yaz

Örnek çözüm

model.py
import torch

for lr in [0.01, 0.1, 1.1]:
    w = torch.tensor(0.0, requires_grad=True)
    opt = torch.optim.SGD([w], lr=lr)
    for _ in range(20):
        opt.zero_grad()
        ((w - 3) ** 2).backward()
        opt.step()
    print(lr, round(w.item(), 3))

Beklenen çıktı

0.01 0.997
0.1 2.965
1.1 -112.013

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Eğitim sırasında kayıp aniden <code>nan</code> olursa ilk şüphe nedir?

  • Öğrenme oranının çok büyük olması Doğru cevap
  • Veri azlığı
  • Model çok küçük
  • Test kümesi

Açıklama: Büyük adımlar parametreleri patlatır; oranı düşürmek ya da gradyan kırpmak gerekir.

2 Kosinüs biçimli azalma kur.

Soru
zam = torch.optim.lr_scheduler.____(opt, T_max=100)
Cevap
zam = torch.optim.lr_scheduler.CosineAnnealingLR(opt, T_max=100)

Açıklama: CosineAnnealingLR oranı T_max adımda kosinüsle azaltır.

3 Davranışları eşleştir.

Kavram Anlamı
lr çok küçük Yavaş düşüş
lr çok büyük Patlama, NaN
ısınma Başta küçük adımlar
kosinüs azalması Sonda ince ayar

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