01Derinlik bir çarpımdır#
Geri yayılımda hata sinyali, çıktıdan girişe doğru her katmanın türeviyle çarpılarak ilerler. Elli katman, elli çarpım demektir. Her çarpan 1’den biraz küçükse sonuç yok olur (kaybolan gradyan); biraz büyükse patlar. 0,9’un 50. kuvveti yaklaşık 0,005, 1,1’in 50. kuvveti yaklaşık 117’dir. Katmanlar arttıkça çarpım ya sönmeye ya patlamaya meyleder; ağın ilk katmanları ya hiç öğrenemez ya da kararsız hâle gelir.
He ve arkadaşları sorunu şöyle açar: daha derin sinir ağlarının eğitilmesi daha zordur. Önerdikleri artık öğrenme, katmanları girdilerine göre bir “artık” fonksiyon öğrenecek biçimde yeniden kurar. Yazarlar bu ağların optimize edilmesinin daha kolay olduğunu ve çok daha fazla derinlikten doğruluk kazandığını bildirdi; ImageNet’te 152 katmana kadar denediler. Deep Residual Learning ↗
02Rastgele bir ağda sinyali ölç#
Aşağıdaki deneyde üç ağ yığını var; hepsi genişliği 24 olan tanh katmanları ve rastgele ağırlıklardır (eğitim yok). (1) Düz yığın: h ← tanh(W·h). (2) Artık bağlantılı: h ← h + tanh(W·h). (3) Artık + LayerNorm: h ← h + tanh(W·LN(h)), yani normalizasyon alt katmandan önce. Çıktıdaki rastgele bir birim gradyanı girişe kadar geri yayıp büyüklüğünü ölçüyoruz. Ağırlık ölçeğini seç.
Kaç katman sonra sinyal ne kadar kalır?
Ağırlık ölçeğini seç ve üç yığını karşılaştır. Düz yığında sinyal ne oluyor? Artık bağlantı ve LayerNorm ne değiştiriyor?
Ağırlık ölçeği 0,7 iken düz yığında gradyan 48 katman sonunda yaklaşık 10⁻⁸,¹ kadar küçülür: pratikte hiçbir sinyal ilk katmana ulaşmaz. Aynı ağırlıklarla artık bağlantılı yığında gradyan 10¹,⁰ (yaklaşık 10 kat) büyür; LayerNorm eklenince 10⁰,⁵’e (yaklaşık 3 kat) iner. Ölçek 1,0’da düz yığın 10⁻¹,⁴, artıklı yığın 10¹,³, LayerNorm’lu yığın 10⁰,⁶ verir. Ölçek 1,5’te düz yığın bu kez büyür (10⁰,³); artıklı yığın 10¹,⁷, LayerNorm’lu yığın 10⁰,⁸’e ulaşır.
Dikkat edilecek üç şey: (1) düz yığının davranışı ağırlık ölçeğine çok duyarlıdır: biraz küçükse söner, biraz büyükse büyür. (2) Artık bağlantılar gradyanı söndürmez; en kötü durumda bile 10⁻⁰,⁵’in altına inmedi. (3) Artık bağlantı gradyanın büyümesini engellemez; LayerNorm bu büyümeyi sınırlar.
03Artık bağlantı: gradyana bir otoyol#
h ← h + f(h) kuralında türev, I + f′(h) biçimindedir: birim matris sayesinde sinyalin f hiç işe yaramasa bile doğrudan geçebileceği bir yol vardır. Katman sayısı arttıkça çarpım küçülmek yerine “bir şey + küçük düzeltmeler” gibi davranır. Bu yüzden, Transformer bloğunda her alt katman (dikkat, ileri beslemeli ağ) girdisine eklenir; temsil korunur, üzerine güncelleme yapılır.
He ve arkadaşları, ImageNet testinde ağların bir topluluğunun %3,57 hataya ulaştığını ve ILSVRC 2015 sınıflandırmasında birinci olduğunu bildirdi; CIFAR-10’da 100 ve 1000 katmanlı ağları da incelediler.
04Normalizasyon: ölçeği sabit tut#
LayerNorm, her örnek için bir katmandaki değerlerin ortalamasını ve standart sapmasını hesaplayıp aynı örneğin değerlerini ona göre ölçekler; bunu toplu iş (batch) boyutundan bağımsız yapar, eğitimde ve testte aynı hesabı yürütür. Ba ve arkadaşları, bu özellikleriyle özellikle yinelemeli ağlar için uygun olduğunu bildirdi. Layer Normalization ↗ Transformer’lar katman başına tek örnekle çalışabildiği için LayerNorm’u kullanır.
Normalizasyonun neden işe yaradığı sanıldığı kadar basit değil. Ioffe ve Szegedy, toplu normalizasyonun (BatchNorm) girdi dağılımlarındaki kaymayı azalttığını ve aynı doğruluğa 14 kat daha az eğitim adımıyla ulaştığını bildirdi. Batch Normalization ↗ Santurkar ve arkadaşları ise işe yarama nedeninin bu “iç değişken kayması” olmadığını, BatchNorm’un optimizasyon yüzeyini belirgin biçimde yumuşattığını savundu. How Does Batch Normalization Help Optimization? ↗
Nereye konur? Orijinal Transformer, normalizasyonu artık toplamdan sonra uygular (post-LN). Xiong ve arkadaşları, post-LN’de çıktıya yakın parametrelerin gradyanlarının başlangıçta büyük olduğunu, bu yüzden öğrenme oranı ısınmasının (warm-up) gerektiğini; normalizasyonu artık bloğun içine koyan pre-LN’de gradyanların başlangıçta iyi davrandığını ve ısınmanın bazı deneylerde kaldırılabildiğini bildirdi. On Layer Normalization in the Transformer Architecture ↗ Bu sitedeki Transformer anlatımı pre-LN düzenini kullanır.
05Bu deney neyi göstermez?#
- Eğitim yok. Yalnızca başlangıçtaki rastgele ağırlıklarda sinyalin büyüklüğü ölçüldü; eğitimin sonunda ne olduğu başka bir konudur.
- Basit bir yığın. Tanh katmanları ve genişlik 24; gerçek bir Transformer’da dikkat, ileri beslemeli ağ ve çok daha geniş vektörler var.
- Ağırlık başlatma ayrı bir araçtır. Ağırlık ölçeğini derinliğe göre seçen başlatma yöntemleri vardır; burada ölçek bilerek elle değiştirilir.
- Derin her zaman iyi değildir. Artık bağlantılar derin ağı eğitilebilir yapar; daha derin ağın daha iyi olacağı sonucu çıkmaz.
Katmanların içini gördün; şimdi bunların girişine bak: Tokenların sınırını kim çizer?
Bu yazıyı bitirdiğinde:
- Derin bir ağda gradyanın neden bir çarpım olduğunu ve katman sayısıyla neden söndüğünü ya da patladığını anlatabilirsin.
- Artık bağlantının gradyana nasıl doğrudan bir yol açtığını açıklayabilirsin.
- LayerNorm’un ne yaptığını ve pre-LN ile post-LN arasındaki farkı söyleyebilirsin.
Cümlelerden birini kendi sözlerinle anlatamıyorsan, ilgili bölüme dön ve demoyu yeniden dene.
Tokenların sınırını kim çizer?
Orta · 8 dk okuma