Gradyan inişi adımı
Zorluk: Kolay Çözüldüoptimizasyon
kaybı (loss) için tek bir gradyan inişi (gradient descent) adımı atan step(w, lr) fonksiyonunu yaz. Adım şudur:
Formüldeki simgeler:
- : ağırlık (weight).
- : loss’un gradyanı (gradient).
- : öğrenme oranı (learning rate). Kodda
lrolarak geçer.
Yeni weight’i döndür.
Örnekler
Girdi: w = 4.0, lr = 0.1
Çıktı: 3.2
Girdi: w = 0.0, lr = 0.5
Çıktı: 0.0
Girdi: w = -2.0, lr = 0.25
Çıktı: -1.0
İpucu 1
Önce gradyanı hesapla. için .
İpucu 2
Loss’u azaltmak için weight’i gradyanın tersine taşı. Learning rate ile çarptığın gradyanı weight’ten çıkar.
Gereksinimler
wvelrbirerfloat’tır.- Yeni weight’i
floatolarak döndür. - Döngü kullanma: tek bir adım yeter.
Gradyan, loss’un en hızlı arttığı yönü gösterir. Loss’u azaltmak için ters yöne gidersin. Adımın büyüklüğünü learning rate belirler.
ve için:
- Gradyan olur.
- Adım olur.
- Yeni weight ‘dir.
Daha fazlası için Gradyan inişi dersine bak.
Çözüm, gradyan adımını sırayla uygular:
- Gradyanı hesapla.
- Learning rate ile çarp.
- Sonucu weight’ten çıkar.
def step(w: float, lr: float) -> float: grad = 2 * w return w - lr * grad
Sık yapılan hata, gradyanı eklemektir (w + lr * grad). Bu, loss’u her adımda büyütür.
Bu problemde bir sorun mu var?