Buradaki fikir, ağırlıkları ağ üzerinden iyi ileri ve geri veri akışı sağlayacak şekilde başlatmak istediğinizdir. Yani, ağda ilerledikçe, aktivasyonların sürekli olarak daralmasını ya da artmasını istemiyorsunuz.
Bu görüntü, ağ üzerinden bir MNIST geçişinden sonra 3 farklı başlatma stratejisi altında 5 katmanlı bir ReLU Çok Katmanlı Perceptron'un aktivasyonlarını göstermektedir.
Her üç durumda da, ağırlıkları standart sapması ile belirlenen sıfır merkezli normal dağılımdan çekilir. İlk ağırlıklar çok küçükse (standart sapma küçükse) aktivasyonların tıkandığını ve aktivasyonların çok büyük olması durumunda aktivasyonların patladığını görebilirsiniz. Yaklaşık olarak doğru olan orta değer, aktivasyonların ve gradyan güncellemelerinin varyansının yaklaşık olarak ağdan geçtiğiniz gibi kalacağı ağırlıkları ayarlayarak bulunabilir.
Ağırlık başlatma hakkında daha ayrıntılı olan bir blog yazısı yazdım , ancak temel fikir şu şekilde.
Eğer , -inci katmanın aktivasyonlarını belirtirse , katmanın boyutunu ve onları -st katmanına bağlayan ağırlıkları , sonra bir aktivasyon fonksiyonu için bu gösterebilir ile elimizdekix(i)iniw(i)(i+1)ff′(s)≈1
Var(x(i+1))=niVar(x(i))Var(w(i))
Elde etmek için bu nedenle durumun uygulamak zorundadırVar(x(i+1))=Var(x(i))
Var(w(i))=1ni.
Biz gösteriyorsa, tarafından , geri geçiş biz Benzer istiyoruz∂L∂x(i)jΔ(i)j
Var(Δ(i))=ni+1Var(Δ(i+1))Var(w(i)).
sürece , bu iki koşul arasında gerekir ve makul bir seçim harmonik ortalamadır.ni=ni+1
Var(w(i))=2ni+ni+1.
Normal dağılıma ağırlıklardan örnekler verirsek bu koşulu . Homojen bir dağılım için , biz almalıdır yana . Bu yüzden Glorot'un başlatılmasına ulaştık. Bu, örneğin Keras'taki yoğun ve 2B evrişim katmanları için varsayılan başlatma stratejisidir.N(0,σ)σ=2ni+ni+1−−−−−√U(−a,a)a=6ni+ni+1−−−−−√Var(U(−a,a))=a2/3
Glorot başlatma, önemsiz ve aktivasyonları için oldukça iyi çalışır , ancak için de . Neyse ki, , negatif girdilerin sadece nedeniyle, varyansın yarısını kabaca kaldırır ve bu, yukarıdaki koşullarımızdan birini iki ile çarparak kolayca değiştirilebilir:tanhReLUf(s)=ReLU(s)
Var(w(i))=2ni.