Sinir ağım Öklid mesafesini bile öğrenemiyor


9

Bu yüzden kendime sinir ağlarını öğretmeye çalışıyorum (regresyon uygulamaları için, kedilerin resimlerini sınıflandırmak değil).

İlk deneylerim, bir FIR filtresi ve Ayrık Fourier Dönüşümü ("önce" ve "sonra" sinyalleri üzerinde eğitim) uygulamak için bir ağı eğitiyordu, çünkü bunların ikisi de etkinleştirme işlevi olmayan tek bir katman tarafından uygulanabilen doğrusal işlemlerdir. Her ikisi de iyi çalıştı.

O zaman abs()bir genlik spektrumu ekleyip ekleyemeyeceğimi görmek istedim . İlk önce gizli katmanda kaç düğüme ihtiyaç duyulacağını düşündüm ve 3 ReLU'nun kaba bir yaklaşım için yeterli olduğunu fark ettim abs(x+jy) = sqrt(x² + y²), bu yüzden bu işlemi yalnız karmaşık sayılar üzerinde tek başına test ettim (2 giriş → 3 ReLU düğümü gizli katmanı → 1 çıktı). Bazen çalışır:

Ters altıgen piramit olarak Öklid mesafesini uygulayan 3 ReLU

Ama çoğu zaman denediğimde, yerel bir minimumda takılıyor ve doğru şekli bulamıyor:

Vadi biçimli ağ oluşturan 3 ReLU

dönemlere karşı zarar

Keras'taki tüm optimize edicileri ve ReLU varyantlarını denedim, ancak çok fazla fark yaratmıyorlar. Bunun gibi basit ağların güvenilir bir şekilde birleşmesi için yapabileceğim başka bir şey var mı? Yoksa sadece yanlış bir tavırla mı yaklaşıyorum ve problemde gerekenden daha fazla düğüm atmanız gerekiyor ve eğer yarısı ölürse büyük bir anlaşma olarak değerlendirilmiyor mu?


1
Çiziminiz, bazıları işe yarayan ve bazıları işe yaramayan birkaç farklı deney gibi görünüyor. Farklılıklar nelerdir?
Sycorax, Reinstate Monica'ya

@Sycorax Bunlar aynı şeyin tekrarlanan denemeleridir. Bazen altıgen bir piramit çözeltisi bulur, ancak genellikle bulmaz.
endolith

Aktivasyon fonksiyonu olarak iki gizli katman ve tanh ile denediniz mi?
Ketan

@KetanNo, neden? Burada daha basit bir varyasyon yayınladı: stats.stackexchange.com/q/379884/11633
Endolit

buna bakmak isteyebilirsiniz. stats.stackexchange.com/q/375655/27556 . Ama neden sadece 3 relusa ihtiyaç duyduğunuzu açıklıyor musunuz? 'doğal' ayrışma relus ile kareleme yaklaşımını yapmak için bir gizli katman ve kare kökü yapmak için başka bir katman olacaktır - temel olarak relus parçalı doğrusal yaklaşımlar yapıyor.
seanv507

Yanıtlar:


6

Çıktı, bir veya daha fazla nöronunuzun öldüğünü güçlü bir şekilde gösteriyor gibi görünüyor (veya belki de iki nöronunuz için ağırlık köprüsü birleşti). 3 Relu ile, daha makul bir çözüme yaklaştığınızda merkezde 3 gölgeli bölünme olduğunu görebilirsiniz. Her bir nöronun çıkış değerlerini kontrol ederek örneklerinizin büyük bir çoğunluğu için ölü kalıp kalmadığını kontrol ederek bunun doğru olup olmadığını kolayca doğrulayabilirsiniz. Alternatif olarak, iki nöronun aynı ağırlık çiftine çöküp çökmediğini görmek için, kendi nöronlarına göre gruplandırılmış 2x3 = 6 nöron ağırlığının tümünü çizebilirsiniz.

Bunun olası bir nedeninin x+beny bir koordinata doğru eğrilmişse, ör. x»y, bu durumda kimliği yeniden oluşturmaya çalışıyorsunuz. birbs(x+beny)x. Bunu düzeltmek için burada yapabileceğiniz çok fazla bir şey yok. Bir seçenek denediğiniz gibi daha fazla nöron eklemektir. İkinci seçenek, sigmoid gibi sürekli bir aktivasyonu veya üstel gibi sınırsız bir şeyi denemektir. Ayrılmayı da deneyebilirsiniz (örneğin% 10 olasılıkla). Keras'ta düzenli bırakma uygulamasını kullanabilirsiniz, bu da 3 nöronunuzun hepsi düştüğünde durumları görmezden gelmek için yeterince akıllıdır.


1
+1, neredeyse kesinlikle bu. ReLU'yu bu kadar az sayıda ağırlıkla kullandığınızda ölü nöronlar neredeyse her zaman devreye girer.
kbrose

1
Bu, ReLU için makul bir tahmindir. Ancak OP birkaç farklı ReLU varyantı denediklerini yazıyor - ölü nöronlar ELU veya Leaky Relu veya PReLU gibi varyantlarda da meydana geliyor mu?
Sycorax, Reinstate Monica'ya

3 shadowy splits in the center when you converge to the more reasonable solution.Evet, demek istediğim bu kaba yaklaşım; ters altıgen bir piramit. or perhaps something unbounded like an exponential Elu ve selu'yu çok daha iyi çalışmadı. two neurons collapse to the same pair of weightsAh, bunu düşünmemiştim; Sadece öldüklerini varsaydım.
endolith

ReLU kullanırken gizli katmanın çıktısına eriştim ve genellikle nöronlardan birinin öldüğünü doğruladım. Daha az sıklıkla, iki kişi üst üste biniyor ve aynı şeyi yapıyor. Acaba nöronların birbirini "itmesi" için bir yol var mı, böylece gereksiz rollere yerleşmiyorlar.
endolith

1
@endolith Bırakma açıkça bağımsız nöronlar oluşturmak için tasarlanmıştır. ELU'lar asla "ölmez", ancak solda yok olan bir gradyanları vardır.
Sycorax, Reinstate Monica'ya
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.