Örnek sorular
Dl Training Dynamics BackpropZorluk 2
İleri beslemeli bir ağ h1 = f1(x), h2 = f2(h1), ... , h5 = f5(h4) hesaplıyor ve h5'ten skaler bir L kaybı üretiliyor. Geri yayılım, L'nin ilk katman f1 içindeki bir ağırlığa göre gradyanını oluştururken bu gradyan neyden meydana gelir?
- aYalnızca L'nin h5'e göre türevinden; çünkü eğitim sinyalinin tek kaynağı kayıptır.
- bYalnızca h1'in o ağırlığa göre türevinden; sonraki katmanlar yalnız kendi ağırlıklarını yönetir.
- cKayıp ile f1 arasındaki her katmanın yerel türev çarpanının zincirleme çarpımından; buna h1'in o ağırlığa göre yerel türevi de eklenerek çarpılır.✓
- dKatman başına türevlerin, her katmanın parametre sayısıyla ağırlıklandırılmış ortalamasından.
Açıklama:Zincir kuralı derin bir bileşkeyi çarpıma çevirir: kaybın erken bir ağırlığa göre türevi, kaybın h5'e göre türevi çarpı her katmanın çıktısının girdisine göre türevi çarpı h1'in o ağırlığa göre yerel türevidir. Bu çarpımsal yapı, derinliğin gradyan büyüklüğünü iki yönde de bu kadar sert değiştirmesinin sebebidir.
Dl Training Dynamics BackpropZorluk 2
Lojistik sigmoid s(z) = 1/(1+e^-z) fonksiyonunun türevi s(z)(1-s(z))'dir. Çok sayıda sigmoid katmanı üst üste koyan bir ağda, derinlik arttıkça erken katman gradyanlarını sıfıra doğru iten şey neden tek başına bu türevdir?
- aTürevin alabileceği en büyük değer z = 0'da ulaşılan 0.25'tir; yani her katman geri sinyali en fazla dörtte biriyle çarpar.✓
- bTürev negatif ön-aktivasyonlarda işaret değiştirir, böylece katmanlar arasında işaretler birbirini götürür.
- cSigmoid çıktısı açık birim aralıkta sınırlı olduğu için türev bu aralığın dışında tam olarak sıfırdır ve zincir ilk doygun katmanda kopar.
- dTürev |z| ile birlikte büyür, bu yüzden derin katmanlar giderek daha büyük çarpanlarla çarpar.
Açıklama:s(z)(1-s(z)) ifadesi s(z) = 0.5 iken en büyüktür ve 0.25 verir (PyTorch 2.8'de türev bir ızgara üzerinde hesaplanarak doğrulandı). Geri yayılım her sigmoid katmanı için böyle bir çarpan uyguladığından, on katman sinyali 0.25^10 ile sınırlar; ağırlık matrisleri hesaba katılmadan bile bu milyonda birin altındadır.
Dl Training Dynamics BackpropZorluk 2
y = xW^T doğrusal katmanının geri adımı elle yazılıyor (PyTorch 2.8, CPU):
W = torch.tensor([[1., 2., 3.], [0., 1., -1.]])
x = torch.tensor([[1., 0., 2.], [3., 1., 0.]])
delta = torch.ones(2, 2) # L = tüm çıktıların toplamı için dL/dy
gW = delta.T @ x
gW nedir?
- a[[7.5, -2.5], [5.5, 0.5]] — kaybın topladığı katman çıktıları.
- b[[1., 0., 2.], [3., 1., 0.]] — girdi yığınının kendisi, çünkü kayıp doğrusaldır.
- c[[1., 2., 3.], [0., 1., -1.]] — ağırlık matrisi, çünkü doğrusal bir dönüşümün türevi kendisidir.
- d[[4., 1., 2.], [4., 1., 2.]] — her satır girdi yığınının sütun toplamıdır.✓
Açıklama:Doğrusal katmanda ağırlık gradyanı, geri yayılan sinyal ile katman girdisinin dış çarpımının yığın boyunca toplamıdır. delta tamamen birlerden oluştuğunda delta.T @ x ifadesi x'in sütun toplamlarına indirgenir ve her çıktı birimi için tekrarlanır: [[4,1,2],[4,1,2]]; aynı kurulum autograd ile koşturulduğunda da bu değerler çıkar. Katmanın kendi çıktıları ifadeye hiç girmez.
Dl Training Dynamics BackpropZorluk 3
Bir mühendis, tüm gizli katmanları aynı şekle sahip 9 katmanlı sigmoid bir MLP eğitiyor ve bir geri geçişten sonra her ağırlık matrisinin gradyan normunu yazdırıyor (PyTorch 2.8, CPU, seed 0): katman 1 ~ 2.6e-7, katman 2 ~ 4.8e-6, katman 3 ~ 3.1e-5, ... , katman 8 ~ 5.8e-1, katman 9 ~ 4.0. Bu profil neyi söyler?
- aGeri sinyal katman başına yaklaşık sabit bir çarpanla küçülüyor, dolayısıyla erken katmanlara neredeyse hiç eğitim sinyali ulaşmıyor.✓
- bÖğrenme oranı çok küçük, her katmanın gradyanı bu yüzden küçük.
- cSon katmanlar patlıyor ve ilk ıraksayacak olanlar onlar olacak.
- dFarklı katmanların gradyan normları karşılaştırılamaz, bu yüzden profil bilgi taşımaz.
Açıklama:Normlar geriye doğru katman başına bir büyüklük mertebesine yakın oranda düşüyor; bu, birin epeyce altında çarpımsal bir katman çarpanının imzasıdır — burada sigmoid türevi ile ağırlık matrislerinin bileşimi. En derin katman hâlâ kullanılabilir gradyan alıyor, yani sorun küresel olarak küçük bir adım boyu değil, geri sinyalin derinliğe bağlı sönümlenmesi. Katmanlar aynı şekilde olduğu için normlar doğrudan karşılaştırılabilir.
Dl Training Dynamics BackpropZorluk 2
Bir gizli birim tanh kullanıyor; türevi 1 - tanh(z)^2. Loglara göre birimin ön-aktivasyonu z neredeyse tüm örneklerde 3 civarında; PyTorch 2.8'de ölçüldüğünde oradaki türev yaklaşık 0.0099, z = 0'da ise 1.0. Bu, o birimi besleyen ağırlıklar için ne demektir?
- aTam güçte gradyan alırlar, çünkü tanh her noktada türevlenebilir ve türevi hiçbir yerde sıfır değildir.
- bBirime ulaşan sinyalin %1'inden azını alırlar, dolayısıyla çok yavaş hareket ederler.✓
- cTers işaretli gradyan alırlar, çünkü tanh o bölgede aşağı doğru bükülür.
- dTam olarak sıfır gradyan alırlar, çünkü tanh türevi |z| 2'yi geçtiğinde sıfırlanır ve birim tümden ölür.
Açıklama:Birime ulaşan gradyan, girdi ağırlıklarına varmadan önce yerel tanh türeviyle çarpılır; z = 3 çalışma noktası bu sinyali yaklaşık yüz kat söndürür. Türev hâlâ kesin olarak pozitif olduğundan öğrenme ölü değil sadece yavaştır ve sinyalin işareti korunur.
Dl Training Dynamics BackpropZorluk 3
Bir eğitim koşusu önce sonlu kayıplar, bir adımda inf, ardından her adımda NaN yazdırıyor — sorunlu yığın çoktan geçmiş olmasına rağmen. Bu durumun neden hiç düzelmediğini hangi mekanizma açıklar?
- aEğitim döngüsü son yazdırdığı kaybı önbellekte tutup tekrar tekrar basıyor.
- bNaN yalnızca bir yazdırma artefaktı; parametreler arka planda iyileşmeye devam ediyor.
- cSonsuz gradyanla atılan tek bir güncelleme parametreleri +/-inf'e taşıdı ve sonsuz bir parametre üzerindeki her sonraki işlem inf ya da NaN üretiyor.✓
- dOptimizer bir NaN görünce adım atmayı bırakır, model son sağlıklı parametrelerinde donar.
Açıklama:PyTorch 2.8'de doğrulandı: sonsuz gradyanla atılan tek bir SGD adımından sonra parametre -inf oluyor ve sonraki sonlu gradyanlar onu -inf'te bırakıyor, çünkü inf eksi sonlu bir sayı yine inf'tir. Sonsuz ağırlıktan geçen ileri geçişler inf ve inf eksi inf çarpımları üretir; bunlar NaN'dır, dolayısıyla veri ne olursa olsun kayıp sonsuza kadar NaN kalır.