Geri Yayılım
- İngilizcesi
- Backpropagation
- Okunuşu
- bekpropageyşın
Günlük kullanımda iki ad da yaygı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
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.
İlgili sayfalar
- Yapay Sinir AğıYapay Zekâ ve Makine Öğrenmesi, s. 49Yapay sinir ağı, bağlantılı yapay nöron katmanlarından oluşan ve sayısal ağırlıkları ayarlayarak verilerden örüntü öğrenen bir makine öğrenmesi modelidir.
- Gradyan İnişiYapay Zekâ ve Makine Öğrenmesi, s. 24Gradyan inişi, makine öğrenmesi modellerinin parametrelerini hatayı azaltan yönde tekrar tekrar hafifçe iterek modelleri eğiten bir optimizasyon algoritmasıdır.
- Derin ÖğrenmeYapay Zekâ ve Makine Öğrenmesi, s. 14Derin öğrenme, görüntü ve metin gibi ham verilerden karmaşık örüntüleri öğrenmek için çok katmanlı sinir ağları kullanan bir makine öğrenmesi alt kümesidir.
- Makine ÖğrenmesiYapay Zekâ ve Makine Öğrenmesi, s. 30Makine öğrenmesi, bilgisayarların elle yazılmış kurallar yerine verilerdeki örüntüleri öğrenerek tahmin yaptığı bir yapay zekâ dalıdır.
- Model ParametreleriYapay Zekâ ve Makine Öğrenmesi, s. 33Model parametreleri, bir makine öğrenmesi modelinin eğitimde öğrendiği ve girdileri çıktılara dönüştürmek için kullandığı ağırlık ve sapma gibi iç sayılardır.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin