Backpropagation (Geri Yayılım Algoritması)

Backpropagation, sinir ağı ağırlıklarının gradyanlarını zincir kuralıyla çıkıştan girişe hesaplayan temel eğitim algoritmasıdır.

Backpropagation (geri yayılım), bir yapay sinir ağının kayıp fonksiyonunun her ağırlığa göre kısmi türevini zincir kuralıyla çıkış katmanından giriş katmanına doğru hesaplayan eğitim algoritmasıdır. 1986'da Rumelhart, Hinton ve Williams'ın Nature makalesiyle yaygınlaşan yöntem, çok katmanlı ağların büyük ölçekte öğrenmesini mümkün kıldı ve derin öğrenmenin matematiksel omurgası oldu. Algoritma iki geçişle çalışır. İleri geçişte (forward pass) giriş verisi katman katman işlenir: her katmanda z = Wx + b doğrusal dönüşümü ve a = f(z) aktivasyonu hesaplanır, ara değerler bellekte tutulur. Üretilen tahmin gerçek etiketle karşılaştırılıp kayıp hesaplanır — sınıflandırmada çapraz entropi, regresyonda MSE tipik seçimlerdir. Geri geçişte (backward pass) ∂L/∂W = ∂L/∂a · ∂a/∂z · ∂z/∂W zinciri katman katman çözülür; her ağırlığın toplam hataya katkısı (gradyanı) bulunur ve SGD, Adam veya AdamW gibi bir optimizör W ← W − η·∂L/∂W kuralıyla güncelleme yapar. Verimliliği çarpıcıdır: gradyanı sonlu farklarla ölçmek N parametreli ağda N ayrı ileri geçiş gerektirirken, backpropagation tek geri geçişte tüm gradyanları verir. Bir geri geçişin maliyeti kabaca ileri geçişin iki katıdır; bu yüzden 100 milyar parametreli bir modelin eğitim adımı bile tek grafik geçişinde tamamlanır. GPT-5, Claude, Gemini ve Llama ailesi dahil 2026'nın tüm büyük modelleri, trilyonlarca token üzerinde bu döngüyü milyonlarca kez tekrarlayarak eğitildi; ön eğitimden sonra gelen RLHF ve DPO gibi hizalama aşamaları da gradyanlarını yine backpropagation ile hesaplar. Kavramın kökleri 1986'dan da eskiye gider: ters mod otomatik türevi 1970'te Seppo Linnainmaa formalize etti, Paul Werbos 1974 doktora tezinde sinir ağlarına uygulamayı önerdi. 1986 makalesi yöntemi geniş kitleye taşıdı; 2012'de AlexNet'in GPU üzerinde backpropagation ile ImageNet yarışmasını açık farkla kazanması ise derin öğrenme patlamasını başlattı. O günden bu yana algoritmanın kendisi neredeyse hiç değişmedi — değişen şey ölçek, donanım ve etrafındaki mühendislik oldu. Pratik zorlukları da vardır. Kaybolan gradyan (vanishing gradient) probleminde sigmoid/tanh gibi doyuma giren aktivasyonlar derin ağlarda gradyanı sıfıra yaklaştırır ve erken katmanlar öğrenemez; ReLU/GELU aktivasyonları, He/Xavier ağırlık başlangıcı, artık bağlantılar (ResNet, 2015) ve katman normalizasyonu bu sorunu büyük ölçüde çözdü. Patlayan gradyanda ise gradyan kırpma (gradient clipping) standart önlemdir. Bellek tarafında, ileri geçişte saklanan ara aktivasyonlar uzun dizilerde ana darboğaz olur; gradient checkpointing bu aktivasyonların bir kısmını silip geri geçişte yeniden hesaplayarak belleği hesap gücüyle takas eder. Modern çerçeveler — PyTorch autograd, TensorFlow GradientTape, JAX grad — hesaplama grafiğini otomatik kurar ve loss.backward() tek çağrısıyla tüm türevleri üretir; geliştirici zincir kuralını elle yazmaz. Dağıtık eğitimde binlerce GPU kendi mini-batch'inin gradyanını hesaplar, all-reduce ile ortalamalar senkronize edilir; ZeRO/FSDP gibi teknikler gradyan ve optimizör durumunu cihazlara bölerek trilyon parametreli eğitimleri mümkün kılar. Yine de algoritmanın matematiğini bilmek, öğrenme hızı seçimi, mimari tasarımı, karma hassasiyet (mixed precision) ayarları ve NaN kaynaklı hata ayıklamada belirleyici bir avantajdır. Kısacası bugün üretimde çalışan neredeyse her derin öğrenme modelinin altında aynı 40 yıllık fikir yatar: hatayı geriye yay, sorumluluğu ağırlıklara paylaştır, küçük adımlarla düzelt.

Backpropagation Nasıl Çalışır? Sezgisel Bakış

Ağa bir kedi fotoğrafı verdiğinizde sinyal ilk katmandan son katmana akar (ileri geçiş) ve ağ örneğin %80 güvenle "köpek" der. Hata (kayıp) hesaplanır ve backpropagation tam burada devreye girer: çıkıştan girişe geriye ilerleyip her nörona "bu hataya ne kadar katkın var?" sorusunu sorar. Katkısı büyük olan ağırlıklar daha çok, küçük olanlar daha az düzeltilir. Bu, bir takımda maç kaybedildiğinde suçu oyunculara katkı oranında paylaştırmaya benzer. Tek bir örnekle değil, 32-4096 örneklik mini-batch'lerin ortalama gradyanıyla güncelleme yapılır; bu hem GPU'yu verimli kullanır hem de gradyan tahminindeki gürültüyü azaltır. Binlerce iterasyon sonunda kayıp düşer ve ağ kediyi kedi olarak tanımaya başlar.

Dört Adımda Eğitim Döngüsü

  • check_circle 1. İleri Geçiş (Forward Pass): Giriş verisi katmanlardan geçirilir; her katmanda z = Wx + b ve a = f(z) hesaplanır. Ara aktivasyonlar bellekte saklanır çünkü geri geçiş bu değerlere ihtiyaç duyar.
  • check_circle 2. Kayıp Hesaplama: Tahmin ile gerçek etiket arasındaki fark ölçülür: sınıflandırmada çapraz entropi L = -Σ y log(ŷ), regresyonda MSE. Kayıp, tüm parametrelere göre türevi alınabilen tek bir skalerdir.
  • check_circle 3. Geri Geçiş (Backward Pass): Zincir kuralıyla ∂L/∂W = ∂L/∂a · ∂a/∂z · ∂z/∂W çıkıştan girişe katman katman hesaplanır. Tek geri geçiş, milyarlarca parametrenin tamamının gradyanını üretir.
  • check_circle 4. Ağırlık Güncelleme: Optimizör W ← W − η·∂L/∂W kuralını uygular. Öğrenme hızı η tipik olarak 1e-4 ile 1e-3 arasında seçilir ve warmup + cosine decay gibi zamanlamalarla değiştirilir.

Gradyan Problemleri ve Çözümleri

vanishing Kaybolan Gradyan

Sigmoid/tanh doyuma girince gradyan katman başına küçülür ve derin ağın ilk katmanları öğrenemez. ReLU/GELU aktivasyonları ve dikkatli başlangıç (He/Xavier) temel çözümdür.

residual Artık Bağlantılar

ResNet'in (2015) skip connection'ları gradyana kısayol açar; 100+ katmanlı ağlar bu fikirle eğitilebilir oldu. Transformer bloklarında da standarttır.

norm Normalizasyon

Batch normalization ve Transformer'larda tercih edilen layer normalization, aktivasyon dağılımını dengeleyerek gradyan akışını kararlı tutar.

clipping Gradyan Kırpma

Patlayan gradyanda norm bir eşiği (tipik 1.0) aşarsa gradyan ölçeklenir. RNN eğitiminde ve büyük dil modeli ön eğitiminde standart önlemdir.

Otomatik Türev: PyTorch, TensorFlow ve JAX

Modern çerçeveler backpropagation'ı otomatik türev (autograd) altyapısıyla uygular. PyTorch her işlemden dinamik bir hesaplama grafiği kurar; loss.backward() çağrısı grafiği ters topolojik sırayla gezerek tüm gradyanları doldurur. TensorFlow tf.GradientTape ile işlemleri kaydeder; JAX ise jax.grad ile saf fonksiyonların türevini alır ve XLA derlemesiyle TPU'larda yüksek verim sunar. Bellek darboğazında gradient checkpointing kullanılır: ara aktivasyonların bir kısmı silinir, geri geçişte yeniden hesaplanır — yaklaşık %30 ek hesaba karşılık bellek tüketimi ciddi ölçüde düşer. Büyük modellerde bf16 karma hassasiyet, ZeRO/FSDP ile gradyan parçalama ve binlerce GPU arasında gradyan senkronizasyonu (all-reduce) aynı geri yayılım matematiğinin dağıtık uzantılarıdır.

Tarihçe ve Güncel Tartışmalar

  • check_circle 1970-1986: Fikirden Devrime: Ters mod türev fikrini 1970'te Seppo Linnainmaa formalize etti, Paul Werbos 1974 tezinde sinir ağlarına önerdi; 1986 Nature makalesi (Rumelhart, Hinton, Williams) yöntemi standartlaştırdı ve yapay zeka kışını bitiren kıvılcım oldu.
  • check_circle 2012-2020: Derin Öğrenme Ölçeklenmesi: AlexNet (2012) GPU üzerinde backpropagation ile ImageNet'i kazandı; ResNet, Transformer (2017) ve GPT serisi aynı algoritmayı milyarlarca parametreye taşıdı.
  • check_circle 2022+: Biyolojik Uygunluk Tartışması: Beynin birebir backpropagation kullanmadığı bilinir; Hinton'ın Forward-Forward algoritması (2022) ve predictive coding gibi alternatifler araştırılıyor, ancak 2026 itibarıyla üretim ölçeğinde hiçbiri geri yayılımın verimine ulaşamadı.
  • check_circle Bugün: Her Modelin Altında: GPT-5, Claude, Gemini, Llama 4, Stable Diffusion ve Whisper dahil güncel modellerin ön eğitimi de RLHF/DPO gibi ince ayar aşamaları da gradyanları backpropagation ile hesaplar.

Pratikte Neden Hâlâ Öğrenmelisiniz?

Autograd her şeyi otomatik yapsa da geri yayılımı anlamak günlük mühendislik kararlarında fark yaratır. Kayıp NaN'a uçtuğunda patlayan gradyanı, eğitim durağanlaştığında kaybolan gradyanı veya ölü ReLU'ları teşhis edebilirsiniz. Öğrenme hızını 1e-3'ten 3e-4'e çekmenin ya da warmup eklemenin neden işe yaradığını gradyan ölçeği üzerinden okursunuz. Transfer öğrenmede hangi katmanları dondurup hangilerini eğiteceğiniz, LoRA gibi parametre-verimli ince ayarda gradyanın yalnızca küçük ek matrislere akıtılması, hatta prompt'a karşı yapılan adversarial saldırıların girdiye göre gradyan almasıyla üretilmesi — hepsi aynı zincir kuralının uygulamalarıdır. Mülakatlarda da "backpropagation'ı türetin" hâlâ en sık sorulan derin öğrenme sorularından biridir.

Sık Sorulan Sorular

  • check_circle Backpropagation ile gradient descent aynı şey mi?: Hayır. Backpropagation gradyanları hesaplama yöntemidir; gradient descent (veya Adam, RMSProp) bu gradyanları kullanarak ağırlıkları güncelleyen optimizasyon algoritmasıdır. İkisi birlikte eğitim döngüsünü oluşturur.
  • check_circle Backpropagation neden zincir kuralına dayanır?: Sinir ağı, iç içe geçmiş fonksiyonların bileşimidir. Kaybın derindeki bir ağırlığa göre türevi ancak ara katman türevlerinin çarpımıyla bulunur; zincir kuralı bu çarpımı çıkıştan girişe tek geçişte verimli hesaplamayı mümkün kılar.
  • check_circle Kaybolan gradyan problemi nasıl çözülür?: ReLU/GELU gibi doyuma girmeyen aktivasyonlar, He/Xavier başlangıcı, batch/layer normalization ve artık bağlantılar (ResNet, Transformer) birlikte kullanılır. Bu kombinasyon 100+ katmanlı ağların eğitimini pratik hâle getirdi.
  • check_circle PyTorch'ta backpropagation nasıl yapılır?: İleri geçişten sonra loss.backward() çağrılır; autograd tüm gradyanları .grad alanlarına yazar. Ardından optimizer.step() ağırlıkları günceller, optimizer.zero_grad() bir sonraki adım için gradyanları sıfırlar.
  • check_circle Beyin backpropagation kullanıyor mu?: Hayır; biyolojik nöronlarda simetrik geri bağlantı ve global hata sinyali bulunmaz. Forward-Forward ve predictive coding gibi biyolojik olarak daha uygun alternatifler araştırılıyor ama üretimde geri yayılımın yerini alan olmadı.
  • check_circle ChatGPT gibi modeller backpropagation ile mi eğitiliyor?: Evet. Ön eğitim, denetimli ince ayar ve RLHF/DPO aşamalarının tamamında gradyanlar backpropagation ile hesaplanır; binlerce GPU bu gradyanları all-reduce ile senkronize ederek tek bir modeli günceller.