Genel olarak Yapay Sinir Ağlarında Aktivasyon Fonksiyonlarının Farkı


15

Sinir ağları için aktivasyon fonksiyon tiplerini inceledim. İşlevlerin kendileri oldukça basittir, ancak uygulama farkı tamamen açık değildir.

İstenen ikili / sürekli çıkışa bağlı olarak mantıksal ve doğrusal tip fonksiyonları birbirinden ayırmak makul ancak sigmoid fonksiyonun basit doğrusal fonksiyona göre avantajı nedir?

ReLU'nun benim için özellikle anlaşılması zordur, örneğin: pozitif girdiler durumunda lineer gibi davranan ancak negatifler için "düz" olan bir işlevi kullanmanın anlamı nedir? Bunun arkasındaki sezgi nedir? Yoksa sadece basit bir deneme hatası mı, başka bir şey değil mi?

Yanıtlar:


16

CV için benzer bir soru soruldu: Artıları / eksileri olan sinir ağlarında aktivasyon fonksiyonlarının kapsamlı listesi .

Aşağıdaki cevaplardan birini kopyalarım:

Çok kapsamlı olmasa da böyle bir liste: http://cs231n.github.io/neural-networks-1/

Yaygın kullanılan aktivasyon fonksiyonları

Her etkinleştirme işlevi (veya doğrusal olmama durumu ) tek bir sayı alır ve üzerinde belirli bir sabit matematik işlemi gerçekleştirir. Uygulamada karşılaşabileceğiniz birkaç aktivasyon işlevi vardır:

resim açıklamasını buraya girinresim açıklamasını buraya girin

Sol: Sigmoid doğrusal olmayan [0,1] aralığında gerçek sayılar squashes : Sağ tanh doğrusalsızlığı [-1,1] aralığında gerçek sayılar squashes.

Sigmoid. Sigmoid doğrusal olmama durumu matematiksel şekline sahiptir.σ(x)=1/(1+e-x)ve soldaki resimde gösterilmektedir. Önceki bölümde belirtildiği gibi, gerçek değerli bir sayı alır ve 0 ile 1 arasında bir aralıkta "ezer". Özellikle büyük negatif sayılar 0 olur ve büyük pozitif sayılar 1 olur. Sigmoid işlevi tarihsel olarak sık kullanım gördü çünkü bir nöronun ateşleme hızı olarak güzel bir yorumu vardır: hiç ateşlememekten (0) varsayılan maksimum frekansta (1) tam doymuş ateşlemeye kadar. Uygulamada, sigmoid doğrusal olmama durumu yakın zamanda gözden düşmüştür ve nadiren kullanılmaktadır. İki büyük dezavantajı vardır:

  • Sigmoidler degradeleri doyurur ve öldürür . Sigmoid nöronun çok istenmeyen bir özelliği, nöronun aktivasyonu 0 veya 1 kuyruğunda doyurulduğunda, bu bölgelerdeki gradyan neredeyse sıfırdır. Geri çoğaltma sırasında, bu (yerel) degrade, tüm hedef için bu kapının çıktısının gradyanıyla çarpılacaktır. Bu nedenle, yerel gradyan çok küçükse, gradyanı etkili bir şekilde "öldürecektir" ve nörondan ağırlıklarına ve özyinelemeli verilerine neredeyse hiç sinyal akmayacaktır. Ek olarak, doygunluğu önlemek için sigmoid nöronların ağırlıklarını başlatırken ekstra dikkat gösterilmelidir. Örneğin, başlangıç ​​ağırlıkları çok büyükse, çoğu nöron doymuş hale gelir ve ağ zar zor öğrenir.
  • x>0f=wTx+bwf). Bu, ağırlıklar için gradyan güncellemelerinde istenmeyen zig-zagging dinamikleri getirebilir. Ancak, bu degradeler bir grup veriye eklendikten sonra, ağırlıklar için son güncellemenin değişken işaretleri olabileceğini ve bu sorunu hafiflettiğini unutmayın. Bu nedenle, bu bir rahatsızlıktır, ancak yukarıdaki doymuş aktivasyon problemine kıyasla daha az ciddi sonuçları vardır.

tanh(x)=2σ(2x)-1

resim açıklamasını buraya girinresim açıklamasını buraya girin

Sol: Doğrultulmuş Doğrusal Birim (ReLU) aktivasyon fonksiyonu, bu x <0 olduğunda sıfır ve sonra x> 0 olduğunda eğim 1 ile doğrusal. Sağ: Krizhevsky ve ark. (pdf) tan ünitesine kıyasla ReLU birimi ile yakınsamada 6 kat iyileşme olduğunu gösteren kağıt.

Relu. Rektifiye Lineer Ünite son yıllarda çok popüler hale geldi. işlevini hesaplar . Başka bir deyişle, aktivasyon sadece sıfırda eşiklidir (soldaki yukarıdaki resme bakın). ReLU'ları kullanmanın çeşitli artıları ve eksileri vardır:f(x)=maksimum(0,x)

  • (+) Stokastik gradyan inişinin sigmoid / tanh fonksiyonlarına kıyasla yakınlaşmasını büyük ölçüde hızlandırdığı (örn. Krizhevsky ve arkadaşlarında 6 faktörü ). Bunun doğrusal, doymamış formundan kaynaklandığı iddia edilmektedir.
  • (+) Pahalı operasyonlar (üslüler vb.) İçeren tan / sigmoid nöronlarla karşılaştırıldığında, ReLU aktivasyon matrisini sıfırda eşleştirerek uygulanabilir.
  • (-) Ne yazık ki, ReLU birimleri 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ıkların nöronun bir daha hiçbir veri noktasında bir daha aktive olmayacağı şekilde güncellenmesine neden olabilir. Bu durumda, üniteden akan gradyan, o noktadan itibaren sonsuza kadar sıfır olacaktır. Yani, ReLU birimleri veri manifoldundan çıkarılabildikleri için eğitim sırasında geri dönüşü olmayan bir şekilde ölebilirler. Örneğin, öğrenme hızı çok yüksek ayarlanırsa, ağınızın% 40'ının "ölü" olabileceğini (yani, tüm eğitim veri kümesinde asla aktif olmayan nöronların) olabileceğini görebilirsiniz. Öğrenme hızının uygun bir şekilde ayarlanmasıyla, bu daha az sıklıkla bir sorundur.

f(x)=1(x<0)(αx)+1(x> =0)(x)αküçük bir sabittir. Bazı insanlar bu aktivasyon fonksiyonuyla başarıyı rapor eder, ancak sonuçlar her zaman tutarlı değildir. Negatif bölgedeki eğim , Kaiming He ve ark., 2015 tarafından Doğrultuculara Derinlemesine Delme'de tanıtılan PReLU nöronlarında görüldüğü gibi, her nöronun bir parametresine de yapılabilir . belirsiz.

resim açıklamasını buraya girin

f(wTx+b)maksimum(w1Tx+b1,w2Tx+b2)w1,b1=0

Bu, en yaygın nöron tipleri ve aktivasyon fonksiyonları hakkındaki tartışmamızı sonuçlandırmaktadır. Son bir yorum olarak, aynı ağdaki farklı nöron türlerini karıştırmak ve eşleştirmek çok nadirdir, ancak bununla ilgili temel bir sorun yoktur.

TLDR : " Hangi nöron tipini kullanmalıyım? " ReLU doğrusallığını kullanmayın, öğrenme hızlarınıza dikkat edin ve muhtemelen bir ağdaki "ölü" birimlerin oranını izleyin. Bu sizi ilgilendiriyorsa, Leaky ReLU veya Maxout'u deneyin. Asla sigmoid kullanmayın. Tanh'ı deneyin, ancak ReLU / Maxout'tan daha kötü çalışmasını bekleyin.


Lisans:


MIT Lisansı (MIT)

Telif Hakkı (c) 2015 Andrej Karpathy

Bu yazılımın ve ilişkili dokümantasyon dosyalarının ("Yazılım") bir kopyasını alan herhangi bir kişiye, kullanma, kopyalama, değiştirme, birleştirme hakları da dahil ancak bunlarla sınırlı olmamak üzere, herhangi bir sınırlama olmaksızın, Yazılım ile ilgili olarak erişim izni verilir. , Yazılımın kopyalarını yayınlamak, yayınlamak, lisanslamak ve / veya satmak ve Yazılımın sağlandığı kişilere aşağıdaki koşullara tabi olarak izin vermek için:

Yukarıdaki telif hakkı bildirimi ve bu izin bildirimi, Yazılımın tüm kopyalarına veya önemli bölümlerine dahil edilecektir.

YAZILIM, HERHANGİ BİR TÜR, AÇIK VEYA ZIMNİ GARANTİ OLMADAN "OLDUĞU GİBİ" OLMAKTADIR. HİÇBİR DURUMDA YAZARLAR VEYA TELİF HAKKI TUTUCULARININ YAZILIM VEYA KULLANIM VEYA DİĞER BAĞLANTILARLA İLİŞKİN VEYA BAĞLANTI YAPILMASINDAN KAYNAKLANAN HERHANGİ BİR TALEP, HASAR VEYA DİĞER SORUMLULUK İÇİN SORUMLU OLMAYACAKTIR. YAZILIM.*


Teşekkürler, bu özet bazı bilgiler verir, ama açıkçası, bazı ayrıntıları sezgisel olarak kavrayamıyorum (örneğin, ReLU "neden SGD'nin yakınlaşmasını büyük ölçüde hızlandırıyor") ve en önemlisi: hangisini seçmeliyim? Sonuca dayanarak, Maxout en iyisi ve bunun sonu. Ancak Maxout'un en popüler paketlerde (örneğin Keras'ta) uygulanmamış olmasının yanı sıra, en azından son katmanda diğer türlerin yerleştirilmesi gerektiği makul görünüyor (örneğin, sınıflandırma için sigmoid).
Hendrik
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.