Chain rule, hesap çizgesi ve otomatik türev
Önce bunlara göz at
30 saniyede özet · Ne öğreneceksin
Geri yayılım (backpropagation), ağın parametrelerine göre kayıp fonksiyonunun gradyanlarını zincir kuralıyla verimli hesaplayan algoritmadır. Derin öğrenmeyi pratikte mümkün kılan matematiksel tuğladır.
Her matematiksel işlem bir çizge düğümü, ara sonuçlar kenarlardır. İleri geçişte girdiden …
∂L/∂w = (∂L/∂y) · (∂y/∂w)Zincir kuralı: Kayıp L'nin w'ya göre türevi, L'nin ara çıktı y'ye göre türevinin, y'nin w'ya göre türevi ile çarpımıdır. Bu kural tüm katmanlar boyunca tekrar tekrar uygulanır.
Formül → Kod Karşılığı
w→param / nn.Parametergüncellenecek ağırlık∂L/∂w→param.grad.backward() sonrası dolar∂L/∂y→output.gradçıktıya gelen gradyan∂y/∂w→autograd (otomatik)PyTorch hesap çizgesiVanishing: Gradyanlar geri ilerlerken her katmanda küçük değerlerle çarpılır ve sıfıra yak…
PyTorch otomatik türev — backprop örneği
| 1 | import torch |
| 2 | |
| 3 | x = torch.tensor([2.0], requires_grad=True) |
| 4 | y = x ** 2 + 3 * x # y = x² + 3x |
| 5 | |
| 6 | y.backward() # geri yayılım |
| 7 | print(x.grad) # dy/dx = 2x + 3 = 7 |
ℹ️Modern framework'ler (PyTorch, JAX) otomatik türev (autograd) kullanır. Hesap çizgesini dinamik olarak oluşturur, .backward() çağrısıyla tüm gradyanları hesaplar. Elle türev almak zorunda kalmazsınız.
PyTorch autograd — gerçek dünya eğitim döngüsü
| 1 | import torch |
| 2 | import torch.nn as nn |
| 3 | |
| 4 | model = nn.Linear(2, 1) |
| 5 | optimizer = torch.optim.SGD(model.parameters(), lr=0.01) |
| 6 | loss_fn = nn.MSELoss() |
| 7 | |
| 8 | X = torch.tensor([[1.0, 2.0], [3.0, 4.0]]) |
| 9 | y = torch.tensor([[1.0], [0.0]]) |
| 10 | |
| 11 | # Eğitim döngüsü |
| 12 | for step in range(3): |
| 13 | optimizer.zero_grad() # ⚠️ Gradyanları sıfırla — unutulursa birikir! |
| 14 | pred = model(X) |
| 15 | loss = loss_fn(pred, y) |
| 16 | loss.backward() # Geri yayılım — tüm gradyanlar hesaplanır |
| 17 | optimizer.step() # Parametreler güncellenir |
| 18 | print(f"Adım {step}: kayıp = {loss.item():.4f}") |
⚠️optimizer.zero_grad() her eğitim adımında çağrılmalıdır! PyTorch gradyanları biriktirir — sıfırlamazsanız bir önceki batch'in gradyanları mevcut gradyana eklenir ve parametreler yanlış güncellenir. Bu, en sık yapılan hatalar arasında ilk sıradadır.
✦ Quiz
requires_grad=True ne zaman kullanılır?