Doğrusal aktivasyon fonksiyonu, sinir ağlarında kaybolan gradyan problemini nasıl çözer?


40

Rektifiye doğrusal ünite (ReLU) sinir ağları için kaybolma degrade sorununa bir çözüm olarak çeşitli yerlerde övgüde bulundu . Yani aktivasyon fonksiyonu olarak max (0, x) kullanılır. Aktivasyon pozitif olduğunda, bunun, sigmoid aktivasyon fonksiyonundan daha iyi olduğu açıktır, çünkü türetilmesi, büyük x için keyfi olarak küçük bir değer yerine her zaman 1'dir. Öte yandan, türetme, x, 0'dan küçük olduğunda tam olarak 0'dır. En kötü durumda, bir birim asla çalıştırılmadığında, bu birim için olan ağırlıklar da hiçbir zaman değişmez ve birim sonsuza dek işe yaramaz olur - ki bu kaybolan küçük degradelerden bile daha kötü. ReLU'yu kullanırken öğrenme algoritmaları bu problemi nasıl ele alıyor?


2
En kötü durum olarak tanımladığınız şey, ölmekte olan ReLU
Martin Thoma,

Bence, lojistik fonksiyon için, gradyan keyfi olarak küçük olabileceğinden, birkaç "önemsiz" lojistiği oluşturarak sayısal olarak kaybolan bir gradyan elde edebileceğinizi düşünüyorum (sorun daha derin mimariler için kötüleşir). Rampa işlevi için, gradyan parçalı parça sabit olduğu için, kaybolan bir bileşik gradyan ancak gerçekten 0 olan bir bileşen varsa oluşabilir.
GeoMatt22

(Bunun “sonsuza kadar” olup olmadığından emin değilim? Daha fazla eğitimden sonra sıfır olamaz mı? Diğer düğümlere ve / veya mevcut veri-mini toplu işlemlere bağımlılıktan mı? (Stokastik gradyan inişi için)
GeoMatt22

Yanıtlar:


33

İşte konuyu açıklayan bir makale . Sorunu netleştirmek için bir kısmından alıntı yapıyorum.

Doğrultucu aktivasyon fonksiyonu, bir ağın kolayca seyrek gösterimler elde etmesini sağlar. Örneğin, ağırlıkların düzgün bir şekilde başlatılmasından sonra, gizli birimlerin yaklaşık% 50'si sürekli çıkış değerleri gerçek sıfırlardır ve bu kısım, seyrekliği indükleyen regülasyonla kolayca artabilir.

Böylece doğrultucu aktivasyon fonksiyonu ağ üzerinde seyreklik etkisi yaratır. İşte aynı makalede seyreklik bazı avantajları;

  • Bilgi çözme . Derin öğrenme algoritmalarının iddia edilen hedeflerinden biri (Bengio, 2009), verilerdeki farklılıkları açıklayan faktörleri serbest bırakmaktır. Yoğun bir gösterim oldukça karmaşıktır çünkü girdideki hemen hemen her değişiklik temsil vektöründeki girdilerin çoğunu değiştirir. Bunun yerine, bir sunum küçük giriş değişikliklerine hem seyrek hem de sağlamsa, sıfır olmayan özellik kümesi, girişin küçük değişiklikleriyle neredeyse her zaman kabaca korunur.

  • Verimli değişken boyutlu gösterimi . Farklı girdiler, farklı miktarlarda bilgi içerebilir ve bilginin bilgisayar sunumunda yaygın olan değişken boyutlu bir veri yapısı kullanılarak daha uygun şekilde temsil edilir. Aktif nöronların sayısının değiştirilmesi, bir modelin belirli bir giriş ve gerekli hassasiyet için gösterimin etkin boyutluluğunu kontrol etmesine izin verir.

  • Doğrusal ayrılabilirlik . Seyrek temsillerin ayrıca doğrusal olarak ayrılabilir olmaları ya da daha az doğrusal olmayan makinelerle daha kolay ayrılma olasılıkları daha yüksektir, çünkü sadece bilgi yüksek boyutlu bir alanda temsil edilir. Ayrıca, bu orijinal veri formatını yansıtabilir. Örneğin metinle ilgili uygulamalarda, orijinal ham veriler zaten çok seyrek.

  • Dağıtılmış fakat seyrek . Yoğun dağıtılmış temsiller, potansiyel olarak yalnızca yerel olanlardan katlanarak daha verimli olan en zengin temsillerdir (Bengio, 2009). Seyrek temsillerin etkinliği hala üssel olarak daha yüksektir, üssün gücü sıfır olmayan özelliklerin sayısıdır. Yukarıdaki kriterlere göre iyi bir takas yapabilirler.

Ayrıca sorduğunuz soruyu yanıtlar:

Kişi 0'daki sert doygunluğun, gradyan geri yayılımını bloke ederek optimizasyona zarar verebileceğini varsayabilir. Bu etkinin potansiyel etkisini değerlendirmek için ayrıca softplus aktivasyonunu da araştırıyoruz:softplus(x)=log(1+ex)(Dugas ve diğerleri, 2001), doğrultucu olmayan doğrusallığın pürüzsüz bir versiyonudur. Tam seyrekliği kaybediyoruz, ancak daha kolay bir eğitim almayı umuyor olabilir. Bununla birlikte, deneysel sonuçlar, zor sıfırların gerçekten denetimli eğitime yardımcı olabileceğini düşündüren hipotezle çelişme eğilimindedir. Degrade bazı yollar boyunca yayılabildiği sürece sert doğrusal olmayan sertliklerin zarar görmeyeceğini, yani, her katmandaki gizli birimlerin bir kısmının sıfır olmadığına dair varsayımlar yapıyoruz. daha eşit olarak, optimizasyonun daha kolay olduğunu varsayıyoruz.

Daha fazla ayrıntı için kağıdı okuyabilirsiniz .


18

Bu nedenle, PReLU, ELU veya diğer sızdıran ReLU benzeri aktivasyonları kullanmak, sadece 0'a düşmeyen, fakat x öğrenmeye devam etmekte olumsuzlandığında 0.1 * x gibi bir şeye düşmesi daha iyi bir fikir olabilir. Uzun zamandan beri ReLU'ların sigmoid gibi bir tarih olduğu anlaşılıyor, ancak nedense insanlar bunlarla ilgili makaleler yayınlıyor. Neden? Bilmiyorum.

Dmytro Mishkin ve diğer çocuklar gerçekten bir çok farklı aktivasyon tipine sahip bir ağı test ettiler, farklı aktivasyon fonksiyonlarının ve diğer özelliklerin performansıyla ilgili bulgularını incelemelisiniz.. Yine de XOR gibi bazı işlevler düz ReLU ile daha iyi öğrenilir. Dogma terimleriyle hiçbir sinirsel şey düşünmeyin, çünkü sinir ağları devam eden çok fazla iş vardır. Dünyadaki hiç kimse onları ilahi gerçeği söyleyecek kadar iyi tanımıyor ve anlamıyor. Kimse. Bir şeyler denemek, kendi keşiflerinizi yapmak. ReLU’nun kendisini kullanmanın çok yeni bir gelişme olduğunu ve onlarca yıldan bu yana alandaki tüm doktora öğrencilerinin şu an sadece gülebileceğimiz aşırı karmaşık aktivasyon işlevlerini kullandıklarını unutmayın. Çok sık "çok fazla şey bilmek" size kötü sonuçlar verebilir. Sinir ağlarının kesin bir bilim olmadığını anlamak önemlidir. Matematikteki hiçbir şey sinir ağlarının gerçekte olduğu kadar iyi çalışacağını söylemez. Sezgisel. Ve bu yüzden çok dövülebilir.

FYI bile mutlak değer aktivasyonu bazı problemlerde, örneğin XOR benzeri problemlerde iyi sonuçlar alır. Farklı aktivasyon fonksiyonları farklı amaçlara daha uygundur. Cifar-10'u abs () ile denedim ve daha kötü bir performans gösterdi. Yine de, "görsel tanıma için daha kötü bir aktivasyon işlevidir" diyemem, çünkü örneğin ön-başlangıç ​​işlemimin bunun için uygun olup olmadığından emin değilim. beni hayrete düşürdü.

Ayrıca, gerçek hayatta, backprop'a geçirdiğiniz "türevler", mutlaka gerçek matematik türevleriyle eşleşmek zorunda değildir.

Onlara "türev" demeyi yasaklamamız ve başka bir şey demeye başlamamız gerektiğini söyleyebildiğim kadar ileri giderdim, örneğin, error activation functionsAklımızı onlarla başa çıkma ihtimallerine kapatmamak. Aslında, örneğin, ReLU aktivasyonunu kullanabilirsiniz, ancak x1 için bir türev olarak 0 yerine bunun yerine bir 0.1 veya benzeri bir şey kullanabilirsiniz. Bir şekilde, daha sonra sade bir ReLU'n var, ancak nöronların "uyumluluktan ölemediği" durumuyla. Ben buna NecroRelu diyorum, çünkü ölmeyen bir ReLU. Bazı durumlarda (kesinlikle çoğunda olmasa da), aslında x <0'da 0.1 türevi olan ve normal ReLU'dan daha iyi olan düz LeakyReLU'dan daha iyi çalışır. Çok fazla kimsenin böyle bir işlevi araştırdığını sanmıyorum, bununla birlikte, ya da benzer bir şey aslında kimsenin sadece matematiğe yoğunlaştığı için düşünmediği genel olarak serin bir aktivasyon işlevi olabilir.

Genel olarak kullanılanlara gelince, tanH (x) aktivasyon fonksiyonu için, işleri daha hızlı hesaplamak için türev olarak 1 - tanH (x) ² yerine 1 - x²'yi geçmek normaldir.

Ayrıca, ReLU’nun örneğin TanH’dan daha açık bir şekilde daha iyi olmadığını unutmayın. TanH muhtemelen bazı durumlarda daha iyi olabilir. Öyle gözüküyor, görsel olarak değil. Bununla birlikte, ELU, örneğin, bir miktar sigmoid yumuşaklığına sahiptir ve şu anda görsel tanıma için bilinen en iyi etkinleştirme işlevlerinden biridir. Gerçekten denemedim, ancak bahse girerim aynı katman seviyesinde farklı aktivasyon fonksiyonları olan birkaç grup bir avantaja ayarlayabilir. Çünkü farklı mantık, farklı aktivasyon fonksiyonlarıyla daha iyi tanımlanmaktadır. Ve bazen muhtemelen birkaç çeşit değerlendirmeye ihtiyaç duyarsınız.

Etkinleştirme işlevinizin türüne karşılık gelen bir intializasyonun önemli olduğunu unutmayın. Sızdıran ReLU'lar, örneğin, sade ReLU'lar gibi başka initlere ihtiyaç duyar.

EDIT: Aslına bakarsanız standart ReLU, modern mimarilere sahip sızdıranlara karşı daha az eğilimli görünüyor. En azından görüntü tanımada. Çok yüksek doğrulukta net bir parametre yükü ile net gidiyorsanız, düz ReLU vs sızdıran seçeneklere bağlı kalmak daha iyi olabilir. Ancak, elbette, tüm bunları kendiniz test edin. Belki, bazı sızdıran şeyler daha fazla düzenlileştirme yapıldığında daha iyi çalışacaktır.


NecroReLU'nuz ile ilgileniyorum, ancak LeakyReLU’nun farklılığından ne yazdığınızı alamıyorum. Aydınlatabilir misin?
Tom Hale

Aktivasyonun ReLU olduğu farklı, ancak türev LReLU
Íhor Mé

ÍhorMé @, yaklaşık belirtildiği gibi initialization that corresponds to a type of activation function one is usingbir de NOTEyazınıza, kendi önerilerinde misiniz bunun için ben tam sigmoid üzerinde relu aktivasyonlar kullanarak / TANH kaybolan / patlayan degrade sorun için bir çözüm olduğuna ikna olmadım, aynı hat üzerinde .
anu

16

İşte bir sezgisel açıklama:

  • Backprop'taki her degrade güncellemesi, birkaç çarpım faktöründen oluşur.
  • Ağın başlangıcına doğru ne kadar ileri giderseniz, degrade güncellemesini elde etmek için bu faktörlerin fazlasıyla çarpılır.
  • Bu faktörlerin çoğu, nöronların aktivasyon fonksiyonunun türevleridir - gerisi ağırlıklar, önyargılar vb.
  • Bu faktörlerden, sezgisel olarak önemli olan faktörler ağırlıklar, önyargılar, vb .dir. Aktivasyon fonksiyonu türevleri, gradyan inişinin doğru yönde doğru yönde gitmesini sağlamak için tasarlanmış bir çeşit ayarlama parametresidir.
  • 1'den daha az olan bir terim demetini çoğaltırsanız, sahip olduğunuz terim kadar sıfıra doğru gidecektir. Bu nedenle, <1 eğimine sahip aktivasyon fonksiyonlarınız varsa, çıkış katmanından daha ileriye giderken ufuk gradyanı.
  • Eğer 1'den daha büyük bir terim demetini çarptıysanız, sahip olduğunuz kadar sonsuzluğa doğru yönelecektir, dolayısıyla eğim> 1 olan aktivasyon fonksiyonlarınız varsa, çıktı katmanından daha ileri giderken gradyanı patlatabilirsiniz.
  • Bir şekilde, sihirli bir şekilde, bu terimleri etkinleştirme işlevlerinin türevinden katkıda bulunmaya başlasak nasıl olur? Bu sezgisel olarak, gradyan güncellemelerine yapılan tüm katkıların soruna ve modele - ağırlıklar, girdiler, önyargılar - seçilen etkinleştirme işlevinin bir eseri yerine.
  • RELU, çıkış> 0 olduğunda gradyan 1'e ve sıfır ise sıfır değerine sahiptir.
  • Bu nedenle, bir grup RELU türevinin backprop denklemlerinde birlikte çoğaltılması, 1 veya sıfır olma güzelliğine sahiptir - güncelleme ya hiçbir şey değildir, ya da tamamen diğer ağırlıklardan ve önyargılardan katkıda bulunur.

X <0 olduğunda yassılaştırmak yerine doğrusal bir işleve sahip olmanın daha iyi olacağını düşünebilirsiniz. Buradaki fikir, RELU'nun nispeten daha az biyolojik bağlantıya sahip olan nispeten az sayıda yararlı bağlantıya sahip seyrek ağlar oluşturmasıdır; bir sürü ağırlık aslında yardımcı olur. Ayrıca, nöral ağlarla ilginç fonksiyonların simülasyonu, aktivasyon fonksiyonunda sadece bazı doğrusal olmayan durumlarla mümkündür. Doğrusal bir etkinleştirme işlevi, hiç de ilginç olmayan bir doğrusal çıktıya neden olur.


Büyük açıklama, size önerilerde misiniz, ayrıca 6 noktada daha açar mısınız bunun için ben tam sigmoid üzerinde relu aktivasyonlar kullanarak / TANH kaybolan / patlayan degrade sorun için bir çözüm olduğuna ikna olmadım, aynı hat üzerinde.
anu

1
Hassas ağırlık başlatma da önemlidir; fakat aktivasyon fonksiyonu seçimi de öyle. Önemsiz bir örnek olarak, tüm ağırlıklarınız varsayılan olarak sıfıra sıfırsa ve RELU kullanıyorsanız, o zaman nöronlarınızdaki tüm çıktılar sıfır olur ve sıfır kalır ... Ne yalnız RELU ne de ilklendirme teknikleri tek başına ufuk / patlayan gradyanı tam olarak çözmez, ancak ikisi de yardımcı olur. 6. maddede yeniden yapılanma ne demek istediğinden emin değil, belirsiz olan nedir?
Tom Walker,

1

Hata sinyalinin geri yayılımını tanımlayan ana yineleme ilişkisini ele alalım.

izin ve ağırlık matrisi ve tabakanın ön gerilim vektörü ve olmak aktivasyon fonksiyonu.Wibiif

Aktivasyon vektörü tabakanın , aşağıdaki gibi hesaplanır:hii

si=Wi(hi1)+bi

hi=f(si)

katmanı için singal hatası şöyle tanımlanır:δi

δi=Wi+1(δi+1f(si))

Burada , iki vektörün elementwise çarpımıdır.

Bu yineleme ilişkisi ağdaki her katman için hesaplanır ve hata sinyalinin çıkış katmanından geriye doğru aktarılma şeklini ifade eder. Şimdi, eğer tanf fonksiyonu olarak örneğini alırsak, . Sürece tam olarak 1 ya da -1, bu ifade Bu nedenle, her bir tabaka bir hata sinyali, bir fraksiyonu ile çarpılması 0 1. arasında bir kısmını, ve daha küçük ve daha küçük hale gelir: bir ufuk gradyan.fhıf(si)=(1hi2)hi

Bununla birlikte, eğer alırsak, bir şeyi ateşleyen her nöron için 1 olan sahibiz , yani aktivasyonu sıfır olmayan bir nöron (yani, bu olacaktır ). Bu durumda, hata sinyali tamamen bir sonraki katmana yayılır (1 ile çarpılır). Bu nedenle, çok katmanlı bir ağ için bile, ufuk bir gradyanla karşılaşmayız.ff=Relu=max(0,x) Fff=numpy.where(hi>0,1,0)

Bu denklem aynı zamanda relu aktivasyonuna özgü diğer bir sorunu da gösterir - ölü nöronlar: belirli bir nöron herhangi bir giriş için ateş etmeyecek şekilde başlatılmış olsaydı (aktivasyonu sıfırdır), gradyanı da sıfır olur ve bu yüzden asla aktif olmaz.

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.