Özet - Optimizasyon
- Makine Öğrenmesi kursu
- İleri seviye
- Ders 74/78
- 6 dk
Bu grupta SGD, Adam ve learning rate'i öğrendin.
Özet: optimizasyon
Bu grupta:
- Optimize ediciler gradyanı adıma çevirir; arayüz
zero_grad()+step(). - SGD
p -= lr·g; momentum tutarlı yönleri biriktirir. - Adam m ve v ortalamalarıyla parametre başına uyarlamalı adım atar; ilk adım ≈ lr, ölçekten bağımsız.
- Öğrenme oranı en önemli ayardır; ısınma, kosinüs ve OneCycle zamanlayıcıları.
zero_gradkonumu,weight_decayve AdamW.
Uygulama Kötü ölçekli kayıp
f(w) = 100·(w₀ - 1)² + (w₁ - 2)² fonksiyonunu w = [0, 0]'dan 100 adımda küçült: bir kez SGD(lr=0.009), bir kez Adam(lr=0.1) ile. Her optimize edici için son w'yi round(..., 2) uygulanmış liste olarak alt alta yazdır (önce SGD).
Başlangıç kodu
import torch
# buraya yazÖrnek çözüm
import torch
for yap in [lambda p: torch.optim.SGD(p, lr=0.009), lambda p: torch.optim.Adam(p, lr=0.1)]:
w = torch.zeros(2, requires_grad=True)
opt = yap([w])
for _ in range(100):
opt.zero_grad()
(100 * (w[0] - 1) ** 2 + (w[1] - 2) ** 2).backward()
opt.step()
print([round(v, 2) for v in w.tolist()])Beklenen çıktı
[1.0, 1.67] [1.0, 2.01]
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Kötü ölçeklenmiş (bir yönde çok dik) bir kayıpta hangisi genellikle daha hızlı ilerler?
- İkisi aynı
- Hiçbiri
- Adam Doğru cevap
- Momentumsuz SGD
Açıklama: Adam her yönü kendi gradyan ölçeğine göre normalleştirir.
2 Ayrık ağırlık azaltmalı Adam kur.
opt = torch.optim.____(model.parameters(), lr=1e-3, weight_decay=0.01)
opt = torch.optim.AdamW(model.parameters(), lr=1e-3, weight_decay=0.01)
Açıklama: AdamW ağırlık azaltmayı uyarlamalı adımdan ayırır.
3 Optimize edicileri özelliklerle eşleştir.
| Kavram | Anlamı |
|---|---|
SGD |
Basit, gradyanla orantılı |
SGD + momentum |
Hız birikimi |
Adam |
Uyarlamalı, ölçekten bağımsız |
AdamW |
Transformer varsayılanı |