Learning rate
- Makine Öğrenmesi kursu
- İleri seviye
- Ders 72/78
- 5 dk
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
import torch
# buraya yazÖrnek çözüm
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.
zam = torch.optim.lr_scheduler.____(opt, T_max=100)
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 |