Gizli katmanlara rastgele parazit eklemek bir düzenleme olarak kabul edilir mi? Bunu yapmak ile bırakma ve toplu normalizasyon eklemek arasındaki fark nedir?
cevap 1:
Evet, gizli katmanlara rastgele gürültü eklemek, tam olarak bırakma ile aynı şekilde bir düzenlemedir. Buradaki temel sezgi, her bir katmandaki sinirsel yanıtın gürültülü olması durumunda, eğitimin ağırlıkları, gürültüden daha büyük bir açıklık ile ayrı kategorilere ayarlaması gerektiğidir. Bu nedenle, test zamanında, gürültü olmadığında, sınıflandırma daha kararlı olmalıdır. Bu, maksimum marj sınıflandırmasının nasıl çalıştığına çok benzer ve hepimiz maksimum marj tekniklerinin ne kadar başarılı olduğunu biliyoruz (örn. Destek Vektör Makineleri). Yine de, gürültünün sinyali bozmamasına dikkat etmelisiniz.
Bırakma, bir modelleme ortalaması gerçekleştirdiği için bir düzenleme yöntemi olarak kabul edilir. Yani, eğitim sırasında, belirli bir zamandaki model aslında ağırlıkların sabit olduğu, ancak modeldeki nöronlardan herhangi birinin eksik olabileceği bir sinir ağı modelleri sınıfı üzerinde bir olasılık dağılımıdır. Her bir sinir ağının genel olasılığı, mevcut veya yok olan belirli bir nöronun bireysel olasılığı ile belirlenir. Bu, normalleştirmedir, çünkü her bir örneğin önyargısının ortalamasını alır ve maliyet fonksiyonunu düzeltir.
Gizli katmana rastgele gürültü eklemek aynı şekilde çalışır, ancak farklı bir olasılık dağılımıyla. Sabit ağırlıklara sahip olmak yerine, sabit bir topolojiniz vardır ve olasılık dağılımı, “gerçek” ağırlıklarda, yani sabit sürücünüzde depoladığınız ağırlıklarda ortalanmış bir Gauss dağılımına göre ağırlıkları rastgele seçer. Yine, bu model ortalamasıdır ve gürültünün (varyans) sinyalin üzerine çıkmaması gerektiği konusunda uyarıcı bir etkisi olmalıdır. Bu nedenle, örneğin, BatchNorm'u ilk kez uygularsanız, kabaca standart bir normal çıktı profiliniz (bir varyansla sıfır merkezli birimler) olur ve daha sonra, örneğin 0,1 varyansıyla gürültü uygulayabilirsiniz. Neyin işe yaradığını görmek için varyansla oynayabilirsiniz.
EDIT: BatchNorm sorulan soru beri, BatchNorm gerçekten normalleştirme için kullanılmadığını belirtmek istedim. Yani, BatchNorm maliyeti düzeltmez. Bunun yerine, geri çoğaltma performansını artırmak için BatchNorm eklenir. Özünde, arkaya yayılan gradyanın yeniden ölçekleme ve yeniden girme yoluyla çok büyük veya küçük olmasını engeller; bir teknik olarak, maliyet yüzeyinin eğriliğini modellemeye çalışan ikinci dereceden optimizasyon yöntemlerine daha derin bağlantıları vardır. Yukarıda bahsettiğim gibi, BatchNorm, nöral aktivitelere rasgele gürültü ekleyecekseniz bağıl ölçeklemenin doğru olduğunu garanti etmek için de kullanılabilir.
cevap 2:
Düzenlemeden çok bir optimizasyon hilesi olarak düşünürdüm.
Etki, SGD'deki stokastikliğin etkisine eşdeğer olmalıdır.
SGD ve ilhamı Monte Carlo yöntemleri, en dik iniş yönünü kesinlikle takip etmek yerine arada bir rastgele bir adım atarak zayıf yerel minimada sıkışmaktan kaçınır; ya da çeşitli enkarnasyonlarında eşdeğer bir şey yapmak, örneğin, rastgele bir adım atmak yerine her bir aşamaya rastgele bir bileşen eklemek.
Ağırlığa zayıf rasgele gürültü eklemek tam olarak aynı şeyi sağlayacaktır. [İpucu: Degrade iniş ayrıca her yinelemede ağırlıklara bir şeyler ekler!]
cevap 3:
DÜZENLE:
Her katmanın giriş verilerine gauss dağıtılmış rasgele gürültü eklemek, modelinizin verilerdeki küçük değişikliklere karşı daha sağlam olmasını sağlayabilir ve ağınızın gürültüyü sinyalden daha iyi ayırt etmesini sağlar. Zeeshan Zia'nın dediği gibi, bu aslında stokastik gradyan terbiyeli olurdu. Bu düzenlemeyi hala düşünmem. Daha çok modelinizin gürültüyü sinyalden ayırmak için kalıpları öğrenmesine yardımcı olan bir tekniktir.
Bırakma, her geçişte gizli bir katmandaki düğümlerin belirli bir bölümünü rastgele devre dışı bırakır. Bu, ağı geliştirir, çünkü aynı kalıpları birden çok şekilde nasıl tanıyacağını öğrenmeye zorlar, bu da daha iyi bir modele yol açar.
Toplu normalleştirme, girişleri bir katmana götürdüğünüz ve hepsinin 0 ile 1 arasında normalleştirildiğinden emin olduğunuz yerdir. Bu, ağın daha iyi öğrenmesine yardımcı olur, çünkü gradyanı daha tutarlı ve pürüzsüz tutar. Bu şekilde, gradyanınız çok büyük olduğu için minima etrafında atlamaktan kaçınırsınız.