# Geri Yayılım

Adres: https://softwaredictionary.org/tr/terimler/backpropagation
Kategori: Yapay Zekâ ve Makine Öğrenmesi
Son güncelleme: 2026-10-03
İngilizcesi: Backpropagation
Okunuşu: bekpropageyşın

Kısaca: Geri yayılım (backpropagation), her ağırlığın hataya katkısını ölçüp her ağırlığı hatayı azaltan yönde biraz ayarlayarak sinir ağlarını eğiten algoritmadır.

## Geri yayılım (backpropagation) nedir?

Bir ağı eğitmek iki geçişi tekrarlamak demektir. İleri geçişte (forward pass) bir girdi katmanlardan akar ve bir tahmin üretir; bir kayıp fonksiyonu (loss function) bunu doğru yanıtla karşılaştırıp bir hata elde eder. Geri geçişte (backward pass) ise geri yayılım, ağdaki her ağırlık için o ağırlık biraz değişirse hatanın nasıl değişeceğini, yani gradyanı hesaplar.

Bunu kalkülüsteki zincir kuralıyla verimli şekilde yapar. Çıkıştan başlayarak hatayı katman katman geriye iletir ve her katmanın sonucunu bir öncekini hesaplamak için yeniden kullanır; böylece bütün gradyanlar, her ağırlık için ayrı bir hesap yerine tek bir geri taramadan çıkar. Ardından gradyan inişi (gradient descent) her ağırlığı kendi gradyanının tersi yönünde biraz kaydırır.

Yöntem birkaç kez tarif edildi ve David Rumelhart, Geoffrey Hinton ile Ronald Williams'ın, çok katmanlı ağların işe yarar iç özellikler öğrenmesini sağladığını gösteren 1986 tarihli makalesiyle geniş çapta tanındı. Bugün PyTorch ve TensorFlow gibi framework'ler bunu otomatik türev alma (automatic differentiation) ile kendiliğinden yapar; geliştiriciler gradyanları nadiren elle yazar.

Sık yapılan bir yanlış, geri yayılımın öğrenme algoritmasının tamamı olduğunu düşünmektir. Yalnızca gradyanları hesaplar; ağırlıkları güncellemek için bunların nasıl kullanılacağına gradyan inişi ya da Adam gibi bir optimizer karar verir. Çok derin ağlardaki kaybolan gradyan (vanishing gradient) gibi sorunlar ReLU aktivasyonları, dikkatli başlatma ve residual bağlantılar gibi çözümlere yol açtı.

## Önemli noktalar

- Geri yayılım, her ağırlığın hataya ne kadar katkıda bulunduğunu hesaplar.
- Hatayı zincir kuralıyla katman katman geriye iletir.
- Tek bir geri geçiş, bütün ağırlıkların gradyanlarını birden verir.
- Ardından gradyan inişi gibi bir optimizer ağırlıkları günceller.
- PyTorch gibi framework'ler bunu autograd ile otomatik yapar.

## Örnek: PyTorch'ta tek bir eğitim adımı

```python
import torch

model = torch.nn.Sequential(torch.nn.Linear(3, 8), torch.nn.ReLU(), torch.nn.Linear(8, 1))
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

x = torch.tensor([[0.5, 1.0, -0.2]])
target = torch.tensor([[1.0]])

prediction = model(x)                                   # forward pass
loss = torch.nn.functional.mse_loss(prediction, target)
loss.backward()                                         # backpropagation: fills .grad for every weight
optimizer.step()                                        # gradient descent uses those gradients
optimizer.zero_grad()
```

## Sık sorulan sorular

**Geri yayılım ile gradyan inişi arasındaki fark nedir?**

Geri yayılım gradyanları, yani hatanın her ağırlıkla nasıl değiştiğini hesaplar. Gradyan inişi bu gradyanları ağırlıkları güncellemek için kullanır. Eğitimin ikisine de ihtiyacı vardır.

**Kaybolan gradyan (vanishing gradient) sorunu nedir?**

Derin ağlarda gradyanlar çok sayıda katmandan geriye geçerken küçülebilir; bu yüzden ilk katmanlar neredeyse hiç öğrenmez. ReLU aktivasyonları, normalizasyon ve residual bağlantılar sorunu azaltır.

**Geri yayılımı kendim mi yazmalıyım?**

Nadiren. PyTorch, TensorFlow ve JAX gradyanları otomatik hesaplar. Yine de küçük bir ağ için bir kez yazmak, eğitimin nasıl işlediğini anlamanın iyi bir yoludur.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
