Yapay sinir ağlarında “ölen ReLU” sorunu nedir?


119

Stanford kursuna atıfta bulunan Görsel Tanıma Konvolüsyonel Sinir Ağları ile ilgili notlara bakınız.

“Maalesef, ReLU üniteleri eğitim sırasında kırılgan olabilir ve“ ölebilir ”. Örneğin, bir ReLU nöronundan akan büyük bir gradyan ağırlığın, nöronun herhangi bir veri noktasında tekrar aktive olmayacağı şekilde güncellenmesine neden olabilir. gerçekleşirse, ünite boyunca akan gradyan sonsuza dek sıfırdan sıfır olacaktır, yani, ReLU üniteleri antrenman sırasında veri manifoldundan çıktıkları için geri dönüşsüz bir şekilde ölebilirler. Örneğin, bu kadar 40 Öğrenme hızı çok yüksek olarak ayarlanmışsa, ağınızın% 'si “ölü” (yani tüm eğitim veri setinde asla aktif olmayan nöronlar) olabilir. Öğrenme hızının uygun bir şekilde ayarlanmasıyla bu daha az sorun yaratır. ”

Burada nöronların ölmesi ne anlama geliyor?

Lütfen daha basit ifadelerle sezgisel bir açıklama yapabilir misiniz?


2
Birisi "ölü nöronlar" hakkındaki bazı bilimsel makalelere referans bulabilir mi? Bu, google denemelerinin ilk sonucu olduğundan, bu soru bir referansla düzenlenmişse harika olurdu.
Marek Julidek

Bu sorunu çözmek için düzenlileşmeyle önyargıyı önleyebilir miyiz?
Len

3
Ağırlıklar için her çağda yeni rastgele (normal dağılmış) değerler vererek ölü relu nöronlarını canlandırmayı başardım. Eğitim = Yüksek çağa devam ederken bu yöntemi sadece farklı derinliklerde donma ağırlıkları ile birlikte kullanıyorum (I ' Buna faz geçişi dediğimizden emin değilim.) Artık daha yüksek öğrenme oranları kullanabilir, daha iyi genel doğruluk sağlar (sadece doğrusal regresyonda test edilmiştir). Uygulaması gerçekten kolay.
boli,

1
@boli, uygulamanızı burada paylaşır mısınız?
anu

Yanıtlar:


121

Bir "ölü" ReLU, herhangi bir girdi için her zaman aynı değeri (olduğu gibi sıfır, ancak önemli değildir) verir. Muhtemelen bu, ağırlıkları için büyük bir negatif önyargı terimini öğrenerek ortaya çıkmıştır.

Buna karşılık, bu girdiler arasında ayrım yapmanın hiçbir rolü olmadığı anlamına gelir. Sınıflandırma için, bunu tüm olası girdi verilerinin dışında bir karar planı olarak görselleştirebilirsiniz .

Bir ReLU bu durumda sona erdiğinde, iyileşmesi pek mümkün değildir, çünkü 0'daki işlev gradyanı da 0'dır, dolayısıyla gradyan iniş öğrenmesi ağırlıkları değiştirmez. “Sızdıran” Negatif girdiler için küçük bir pozitif gradyana sahip ReLU'ler ( y=0.01xx <0 deyince) bu sorunu çözme ve iyileşme şansı verme girişimleridir.

Sigmoid ve tanh nöronları değerleri doygunluğuyla benzer problemlerden muzdarip olabilir, ancak her zaman en azından uzun vadede iyileşmelerini sağlayan küçük bir gradyan vardır.


7
İyi yorum ve bu sorunu daha iyi bir şekilde eklemek
padura

14
@alex: Çünkü yanlılık doğruluk için çok önemlidir. Önyargıdan kurtulmak, tüm karar uçaklarının menşe içinden geçmesi gerektiğini söylemekle aynı şeydir - birkaç istisna dışında, bu kötü bir seçimdir. Aslında, bir sinir ağı veya ilgili modellerde (doğrusal regresyon veya lojistik regresyon gibi) önyargı terimlerinden kurtulmak, genellikle modelinizin önyargılı olacağı anlamına gelir! Hem aynı anda hem de oturan ve aynı zamanda donanıma sahip bir modelle karşılaşabileceğiniz birkaç yoldan biri,
Neil Slater

1
@Alex: ReLUs'a küçük bir pozitif önyargı eklemenin yaygın olduğunu düşünüyorum. Bunun "ölmekte olan ReLU problemi" ne yardımcı olacağını bilemiyorum - büyük olasılıkla gradyan değerlerini sayısal olarak çok fazla değiştirmeyecektir (gradyan ReLU için 1 veya 0'dır ve Relus'un aşabileceği 1 olduğunda, küçük başlangıç ​​önyargısı çok az fark yaratır gibi görünecektir). Çoğunlukla, ilk öğrenime küçük bir destek eklemenin sadece bir püf noktası olduğunu düşünüyorum - ancak bu daha iyi bir başlangıç ​​yaparak ve genellikle daha erken derecelerde daha düşük derecelere sahip olmanıza yardımcı olabilir.
Neil Slater

1
@ max: Cevabımın "herhangi bir giriş için" kısmını kaçırıyorsunuz. Resim gradyan bu ağırlıkları tüm yolları için, bir besleme ileri ağ "ölü" nöron ile alakalı ağırlığa akacak olan gradyan bu relu besleme ünitesi ağırlıkları alt-akmasına için alternatif yollar vardır - kesti. Örneğin bir CNN'de bir ReLU görüntüleyebilir veya ağırlık haritasının paylaşıldığı bir durumda görebilirsiniz; bu durumda özellik haritasındaki tüm konumların bir kerede sıfırlanması gerekir. Ancak, bunu "herhangi bir giriş için" başka bir örnek olarak görüyorum.
Neil Slater

1
@anu: Degrade iniş ile. Büyük bir hata değerinin neden olduğu büyük bir pozitif gradyan, sırayla, önyargı teriminin tek bir adımının, nöronu "öldürmesi" için yeterince büyük olmasına ve böylece gelecekteki girdiler (ağırlıklar ve önyargılar için) durumuna ulaşmasına neden olabilir. ReLU işlevine asla 0'dan fazla yükselme olmaz.
Neil Slater

102

ReLU (Rektifiye Doğrusal Birim) nasıl göründüğünü gözden geçirelim:

Bazı giriş için redresöre olan giriş olan ağırlıkların ve önceki tabaka, aktivasyonlar belirli giriş için . Doğrultucu nöron fonksiyonuxn

zn=i=0kwiain
wiainxnReLU=max(0,zn)

Çok basit bir hata ölçüsü varsayarsak

error=ReLUy

doğrultucu, geri algoritmasının deltaları için yalnızca 2 olası gradyan değerine sahiptir: (uygun bir hata ölçüsü kullanırsak, 1 başka bir şey olur, fakat 0 aynı kalır) ve böylece belirli bir ağırlık için :

errorzn=δn={1zn00zn<0
wj
error=errorwj=errorzn×znwj=δn×ajn={ajnzn00zn<0

Akla gelen bir soru, ReLU'nun soldaki 0 gradyanı ile "hiç" nasıl çalıştığıdır . Ne, giriş için eğer optimal bu özel girişi için sağ tarafta olması gerekirken, cari ağırlıklar sol düz tarafında relu koymak? Degrade 0'dır ve bu yüzden ağırlık küçük bir parça bile değil, güncellenmeyecek, bu durumda "öğrenme" nerede?=xn

Cevabın özü Stokastik Gradyen sadece tek giriş düşünmüyoruz gerçeği yatıyor , ancak çoğu, ve umut değil tüm girişler düz tarafında relu koyacağız, bu nedenle gradyan olmayan olacağıdır -Zero için bir girişi (o ve veya da negatif + olabilir). En azından bir x_ girişi ReLU'muzu dik tarafta tutuyorsa, ReLU hala hayattadır, çünkü hala devam eden bir öğrenme vardır ve bu nöron için güncellenen ağırlıklar vardır. Bütün girdiler ReLU'nu düz tarafa koyarsa, ağırlıkların değişmesi ve nöronun ölmesi umudu yoktur .xnx

Bir ReLU daha sonra, bazı giriş gruplarının ağırlıkları daha küçük değerlere yönlendiren gradyan aşaması nedeniyle ölebilir , tüm girişler için . Büyük bir öğrenme oranı bu sorunu güçlendirir.zn<0

@Neil Slater'den bahsettiğimiz gibi bir düzeltme, düz tarafı küçük bir degradeye sahip olacak şekilde modifiye etmektir, böylelikle olarak adlandırılan ReLU olur. ReLU=max(0.1x,x)görüntü tanımını buraya girin


Redresöre giriş için önyargı terimini formülde unutmadın mı?
Tom Hale,

Sanırım tüm katmanlar için a_0 = 1 olduğunu kabul eden bazı ders kitaplarının gösterimini takip ettim ve w_0 önyargıdır. Önyargı önemli değil, bu yüzden yine de atlamak daha iyi
MohamedEzz

@ MohamedEzz, What if, for the input 𝑥𝑛, the current weights put the ReLU on the left flat side while it optimally should be on the right side for this particular input ?girişinizi negatif ise degrade 0 olur, ne anlama geldiğini anlamadım bu dava için en uygun olan nedir? Lütfen anlamada yardım eder misin?
anu

1
En iyisi, eğer ağın bu giriş için daha iyi bir tahmin yapması için, ReLU'nun pozitif bir değer vermesi için ağırlıkların ayarlanması gerekmesi, 0 ayarının olması nedeniyle, bu ayarlamayı yapamamasıydı. düz tarafta.
MohamedEzz

Şaşırtıcı cevap. Teşekkürler
David Refaeli

13

ReLU nöronları sıfır çıktı ve tüm negatif girdiler için sıfır türev var. Dolayısıyla, ağınızdaki ağırlıklar her zaman bir ReLU nöronuna negatif girdiler getirirse, bu nöron ağın eğitimine etkili bir şekilde katkıda bulunmaz. Matematiksel olarak, bu nörondan gelen ağırlık güncellemelerine gradyan katkısı her zaman sıfırdır (bazı detaylar için Matematiksel Eke bakınız).

Ağırlıklarınızın, belirli bir nörona giren tüm girdiler için negatif sayılar üretme şansı nedir ? Buna genel olarak cevap vermek zor, ancak bunun gerçekleşmesinin bir yolu, ağırlık güncellemelerini çok fazla büyütdüğünüz zamandır. Yapay sinir ağlarının tipik olarak, gradyan inişini kullanan ağırlıklara göre bir kayıp fonksiyonunu en aza indirerek eğitildiğini hatırlayın . Yani, bir sinir ağının ağırlıkları, işlevinin "değişkenleri" dir (kayıp, veri kümesine bağlıdır, ancak yalnızca dolaylı olarak: bu her eğitim örneğindeki toplamdır ve her örnek etkin bir şekilde sabittir). Herhangi bir işlevin gradyanı her zaman en dik artış yönünü gösterir, tek yapmamız gereken nin gradyanını hesaplamaktır.L L W LL(W)LL ağırlıklarına göre ve biraz ters yönde hareket edin, ardından durulayın ve tekrarlayın. Bu şekilde, en az (yerel) oluruz . Bu nedenle, eğer girdileriniz kabaca aynı ölçekte ise, gradyan yönünde atılan büyük adım size negatif sonuç verecek şekilde benzer girdiler veren ağırlıklar bırakabilir.WL

Genel olarak ne olduğu, bilgilerin ağ üzerinden nasıl aktığına bağlıdır. Antrenman devam ederken, nöronların ürettikleri değerlerin sürüklenebileceğini ve ağırlıkların bazılarının içinden geçen tüm veri akışını öldürmesini mümkün kılabileceğini hayal edebilirsiniz. (Bazen ağda daha önce yapılan ağırlık güncellemeleri nedeniyle bu olumsuz yapılandırmaları bırakabilirler!). Bu fikri, bir blog yazısında ağırlık başlatma (bu soruna da katkıda bulunabilir) ve bunun veri akışı ile olan ilişkisi hakkında araştırdım . Sanırım buradaki amacım bu makalenin bir taslağı ile gösterilebilir:

ReLU MLP’de farklı başlangıç ​​stratejileriyle yapılan aktiviteler

Çizim, farklı başlatma stratejileri ile ağdan geçtikten sonra, ReLU aktivasyonlarına sahip 5 katmanlı Çok Katmanlı Perceptron'da aktivasyonları görüntüler. Ağırlık yapılandırmasına bağlı olarak, ağınızın çıkışlarının tıkanabileceğini görebilirsiniz.

Matematiksel Ek

Matematiksel olarak, eğer olarak ağ kaybı fonksiyonudur çıkışı olan içinde inci nöron -inci bir tabaka, relu nöron ve , -st katmanına doğrusal girdidir , daha sonra zincir kuralı ile -th ve - bağlayan bir ağırlığa göre zararın türevi st katmanlarLxj(i)jif(s)=max(0,s)sj(i)(i+1)i(i+1)

Lwjk(i)=Lxk(i+1)xk(i+1)wjk(i).

Sağdaki ilk terim özyinelemeli olarak hesaplanabilir. Sağdaki ikinci terim, doğrudan ağırlığını içeren tek yer ve ayrılabilir.wjk(i)

xk(i+1)wjk(i)=f(sj(i))sj(i)sj(i)wjk(i)=f(sj(i))xj(i).

Bundan, eğer çıktılar her zaman negatif olursa, nörona giden ağırlıkların güncellenmediğini ve nöronun öğrenmeye katkıda bulunmadığını görebilirsiniz.


harika bir açıklama ! Therefore, if your inputs are on roughly the same scale, a large step in the direction of the gradient can leave you with weights that give similar inputs which can end up being negative., girişler normalleştirilirse ağırlıklar nasıl negatif oluyor?
anu

@anu ağırlık güncelleme , bu nedenle büyük bir seçme bu durumda, yani büyük bir adım atmak durumunda ve eğer pozitiftir, o zaman görebilirsiniz hale gelebilir olumsuz. Bu özellikle önyargıyı büyük bir negatif değer olacak şekilde güncellersek kötü olur. wλdwλdww
Johnson,

@JohnsonJia, harika, anladım :), bir açıklama daha gerekiyor, neden olumsuz ağırlık her ikisi de yanlılık olabileceğinden, özellikle ağırlık için yanlılık olması durumunda neden bu kadar kötü, yanılıyorsam beni düzelt?
anu

Önyargı girdi tarafından değiştirilmediğinden: , bu nedenle eğer çok negatifse, tüm değerleri için negatif kalabilir . z=wx+bbzx
Johnson,

5

Daha spesifik olmak gerekirse, ReLU'nun yerel gradyanı ( ), geri yayılma nedeniyle geri akan gradyanı çarparken , güncellenmiş degradenin sonucu büyük bir negatif sayı olabilir (eğer geri büyük bir negatif sayıdır).1

Böyle büyük bir negatif güncellenen gradyan , öğrenme oranı göreceli olarak büyük olduğunda büyük bir negatif üretir ; bu nedenle, bu nöronda gerçekleşecek olan güncellemeleri bastıracaktır, çünkü bunun getirdiği büyük negatif sayıyı dengelemek için büyük bir pozitif sayı koymak neredeyse imkansızdır. " kırık " .wiwi


4

"Dying ReLU", eğitim setindeki verileriniz için 0 çıktısı yapan nöron anlamına gelir. Bu , bir nörondaki ağırlık * girişlerinin toplamının ( aktivasyon olarak da bilinir ), tüm giriş kalıpları için <= 0 olması nedeniyle oluşur. Bu ReLU'nun 0 çıktısına neden olur. Bu durumda ReLU'nun türevi 0 olduğunda, ağırlık güncellemesi yapılmaz ve 0 çıkışında nöron sıkışır.

Dikkat edilecek şeyler:

  1. ReLU'nun ölmesi, nöronun çıktısının test zamanında da sıfır kalacağı anlamına gelmez. Dağıtım farklarına bağlı olarak bu olabilir veya olmayabilir.
  2. Ölen ReLU, kalıcı ölü değildir. Eğer yeni eğitim veri eklemek ya da yeni eğitim için önceden eğitilmiş modeli kullanırsanız, bu nöronlar olabilir geri tekme!
  3. Teknik olarak Dying ReLU, TÜM eğitim verileri için 0 vermesi gerekmez. Bazı veriler için sıfır olmayan bir çıktı veriyor olabilir, ancak çağların sayısı ağırlıkları önemli ölçüde taşımak için yeterli değildir.
Licensed under cc by-sa 3.0 with attribution required.