React Flow mini map
Derin Öğrenmeileri15 dk

Geri Yayılım: Zincir Kuralı ve Gradyan Akışı

Chain rule, hesap çizgesi ve otomatik türev

Önce bunlara göz at

🎯

30 saniyede özet · Ne öğreneceksin

  • Hesap çizgesi (computational graph) üzerinde türev almayı anlamak
  • Zincir kuralını çok katmanlı ağlara uygulamak
  • Vanishing/exploding gradient sorunlarını tanımak
15 dk okuma·ileri

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ığı

wparam / nn.Parametergüncellenecek ağırlık
∂L/∂wparam.grad.backward() sonrası dolar
∂L/∂youtput.gradçıktıya gelen gradyan
∂y/∂wautograd (otomatik)PyTorch hesap çizgesi

Vanishing: Gradyanlar geri ilerlerken her katmanda küçük değerlerle çarpılır ve sıfıra yak…

PyTorch otomatik türev — backprop örneği

Python
1import torch
2
3x = torch.tensor([2.0], requires_grad=True)
4y = x ** 2 + 3 * x # y = x² + 3x
5
6y.backward() # geri yayılım
7print(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ü

Python
1import torch
2import torch.nn as nn
3
4model = nn.Linear(2, 1)
5optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
6loss_fn = nn.MSELoss()
7
8X = torch.tensor([[1.0, 2.0], [3.0, 4.0]])
9y = torch.tensor([[1.0], [0.0]])
10
11# Eğitim döngüsü
12for 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?