Tanh neden bir aktivasyon işlevi olarak neredeyse her zaman sigmoidlerden daha iyidir?


33

Andrew Ng'un Yapay Sinir Ağları ve Coursera'daki Derin Öğrenme kursunda kullanmanın neredeyse her zaman kullanmanın tercih edildiğini söylüyor .tanhsigmoid

O verir nedeni çıkışları kullanarak olmasıdır daha etrafında 0 ziyade merkezi 'ın 0.5, ve bu 'biraz daha kolay bit sonraki katman için öğrenme yapar'.tanhsigmoid

  1. Aktivasyonun çıkış hızını merkezlemek neden öğreniyor? Sanırım backprop sırasında öğrenme olurken önceki katmana atıfta bulunuyor?

  2. tercih eden başka özellikler var mı? Daha dik olan gradyan, yok olan geçişleri geciktirir mi?tanh

  3. tercih edilebileceği durumlar var mı?sigmoid

Matematiksel, sezgisel cevaplar tercih edildi.


13
Bir sigmoid işlevi S şeklindedir (bu nedenle isim). Muhtemelen lojistik işlevinden bahsediyorsunuz . Ölçek ve konum dışında, ikisi esasen aynıdır: . Yani gerçek seçim, (-1,1) aralığında mı yoksa aralıkta (0,1) arasında çıktı almak isteyip istemediğinizdirex1+exlogistic(x)=12+12tanh(x2)(1,1)(0,1)
Henry

Yanıtlar:


21

Yan LeCun ve diğerleri de iddia Verimli BackProp o

Eğitim seti üzerindeki her bir giriş değişkeninin ortalaması sıfıra yakın ise yakınsama genellikle daha hızlıdır. Bunu görmek için, tüm girişlerin pozitif olduğu aşırı durumu düşünün. Birinci ağırlık katmanındaki belirli bir düğüme yapılan ağırlıklar, orantılı bir miktarda güncellenir; burada , o düğümdeki (skaler) hatadır ve , giriş vektörüdür (denklemlere (5) ve (10) bakınız). Bir giriş vektörünün tüm bileşenleri pozitif olduğunda, bir düğüme beslenen ağırlık güncellemelerinin tümü aynı işarete sahip olacaktır (yani işareti ( )). Sonuç olarak, bu ağırlıklar yalnızca tümü azaltabilir veya tümü birlikte artabilirδxδxδverilen bir giriş deseni için. Dolayısıyla, bir ağırlık vektörünün yönünü değiştirmesi gerekiyorsa, bunu ancak verimsiz olan ve dolayısıyla çok yavaş olan zikzak yaparak yapabilirsiniz.

Bu nedenle girdilerinizi ortalamaya sıfır olacak şekilde normalleştirmelisiniz.

Aynı mantık orta katmanlar için de geçerlidir:

Bu sezgisel tarama tüm katmanlara uygulanmalıdır, bu da bir düğümün çıktılarının ortalamasının sıfıra yakın olmasını istediğimiz anlamına gelir çünkü bu çıktılar bir sonraki tabakaya girdidir.

Postscript @craq, bu teklifin, yaygın olarak kullanılan bir aktivasyon işlevi haline gelen ReLU (x) = max (0, x) için bir anlam ifade etmediğine işaret ediyor. ReLU, LeCun tarafından belirtilen ilk zikzak probleminden kaçınırken, bu ikinci noktayı ortalamayı sıfıra itmenin önemli olduğunu söyleyen LeCun tarafından çözmez. LeCun'un bu konuda ne söyleyeceğini bilmek isterim. Her durumda, LeCun'un çalışmalarını temel alan ve bu sorunu çözmenin bir yolunu sunan Batch Normalization adlı bir makale var :

Uzun süredir biliniyordu (LeCun ve diğ., 1998b; Wiesler ve Ney, 2011). Her katman, aşağıdaki katmanların ürettiği girdileri gözlemlediğinden, her bir katmanın girdilerinin aynı beyazlaşmasının elde edilmesi avantajlı olacaktır.


Bu arada, Siraj'ın videosu 10 dakika içerisinde aktivasyon fonksiyonları hakkında çok şey anlatıyor.


@elkout, " Tanh'ın sigmoidle karşılaştırıldığında tercih edilmesinin asıl nedeni (...) tanh türevlerinin sigmoid türevlerinden daha büyük olmasıdır."

Bunun bir sorun olmadığını düşünüyorum. Bunun edebiyatta bir sorun olduğunu hiç görmedim. Bir türevinin diğerinden daha küçük olması sizi rahatsız ediyorsa, sadece ölçeklendirebilirsiniz.

Lojistik işlevi . Genellikle, , ancak hiçbir şey türünüzün daha geniş olmasını sağlamak için için başka bir değer kullanmanızı yasaklamaz .σ(x)=11+ekxk=1k


Nitpick: tanh ayrıca bir sigmoid fonksiyonudur. S şeklindeki herhangi bir fonksiyon bir sigmoiddir. Siz ikiniz sigmoid diye adlandırdığınız şey lojistik fonksiyondur. Lojistik fonksiyonun daha popüler olmasının nedeni tarihsel nedenlerdir. İstatistikçiler tarafından uzun süredir kullanılmaktadır. Ayrıca, bazıları biyolojik olarak daha makul olduğunu düşünüyor.


1
'in sadece lise hesabını göstermesi için bir alıntı yapmanız gerekmez . Bunun doğru olduğunu biliyoruz, çünkü , içbükey ikinci dereceden. , denetim ile doğrulanabilir. σ ( x ) = σ ( x ) ( 1 - σ ( x ) ) 0.25 0 < σ ( x ) < 1 tan ( x ) = sech 2 ( x ) = 2maxxσ(x)<maxxtanh(x)
σ(x)=σ(x)(1σ(x))0.25
0<σ(x)<1
tanh(x)=sech2(x)=2exp(x)+exp(x))1.0
Sycorax,

Bunun dışında, çoğu durumda tanh türevlerinin sigmoid türevlerinden daha büyük olduğunu söyledim . Etrafa 0. olduğunda bu Şuna bir göz atmak hoş geldiniz çoğunlukla olur linke ve sağlanan net cevaplara burada soru hangi onlar da devlet bunun türevleri ait türevleri biraz daha büyük olur . sigmoidtanhsigmoid
ekoulier

bekle ... bu mantıklı geliyor, ancak orta katmanların ortalama çıktısının sıfır olması gerekiyorsa, ReLU nasıl bu kadar iyi çalışıyor? Bu bir çelişki değil mi?
craq

@koulier, ın türevi dan daha büyüktür . Canını sıkansa sadece ölçeklendirebilirsin. sigmoidtanhsigmoid
Ricardo Cruz

@craq, iyi nokta, bence LeCun'un tartışmasındaki bir kusur bu. Toplu iş normalleştirme kağıdına, bu konuda daha fazla tartıştığı ve nasıl iyileştirilebileceği hakkında bir bağlantı ekledim. Ne yazık ki, bu yazı relu'yu tanh ile karşılaştırmıyor, sadece relu'yu lojistikle (sigmoid) karşılaştırıyor.
Ricardo Cruz

14

Bunun mutlaka den daha iyi olması değil . Başka bir deyişle, onu daha iyi yapan bir aktivasyon işleminin merkezi değildir. Ve her iki fonksiyonun arkasındaki fikir aynıdır ve aynı zamanda benzer bir “trend” i paylaşırlar. işlevinin işlevinin kaydırılmış bir sürümü olarak adlandırıldığını söylemeye gerek yok .tanh sigmoidsigmoidtanhsigmoid

Bu gerçek nedeni kıyasla tercih edilir genellikle hızlı bir şekilde yerel (veya global) minimum bulmak zor getirdiği o büyük veri söz konusu, bu türevleri olan , in türevlerinden daha büyük . Başka bir deyişle, bir aktivasyon fuction olarak kullanıyorsanız, maliyet fonksiyonunuzu daha hızlı bir şekilde azaltırsınız.sigmoid tanh sigmoid tanhtanhsigmoidtanhsigmoidtanh

Peki neden hiperbolik tanjant daha büyük türevlere sahip? Sadece size çok basit bir sezgiyi vermek için aşağıdaki grafiği gözlemleyebilirsiniz:

Sigmoid vs Hiperbolik Tangent

Aralığın 0 ile 1 ile karşılaştırıldığında -1 ile 1 arasında olması, sinir ağları için işlevi daha uygun hale getirir. Bunun dışında, eğer biraz matematik kullanırsam, şunu ispatlayabilirim:

tanhx=2σ(2x)1

Ve genel olarak, çoğu durumda .|tanh(x)x|>|σ(x)x|


Öyleyse neden Prof. Ng, fonksiyon çıktısının ortalama civarında olmasının bir avantaj olduğunu söylesin ? 0
Tom Hale

2
Ortalamanın 0 civarında olduğu ve daha hızlı yapan gerçek değil . Sıfır civarında olmanın, aralığın aynı zamanda rendelenmiş olduğu anlamına gelir ( durumunda yaklaşık 0,5 ile karşılaştırıldığında ); Umarım şimdi açıktır. Ng, işlevini tercih ettiğimiz için haklıdır, çünkü 0 etrafında merkezlenmiştir, ancak tam bir gerekçe göstermedi. sigmoid tanhtanhsigmoidtanh
ekoulier

Sıfır merkezleme daha önemlidir bu aktivasyon dağılımını eğriltir çünkü, oranı bu performans zarar. Eğer alırsan ve daha küçük öğrenme oranı, bu ile eşit öğrenecektir . 2 x2xsigmoid(x) - 0.52xtanh
Maxim

@Maxim Hangi "o" aktivasyonların dağılımını eğriyor ? Sıfır-merkezleme mi yoksa mi? Eğer sıfır merkezleme iyi bir şeyse, bunun nedeninin "cevaplandığını" hala hissetmiyorum. 2x
Tom Hale

3

Sorunun şu ana kadar cevaplanmayan kısmına cevap vermek:

Andrew Ng, lojistik işlevini kullanmanın (genellikle sigmoid olarak bilinir), yalnızca bir ikili sınıflandırma ağının son katmanında gerçekten anlamlı olduğunu söylüyor.

Ağın çıktısının ile arasında olması beklendiğinden , lojistik aralığı tam olarak olduğu gibi mükemmel bir seçimdir . ölçeklendirilmesi ve kaydırılması gerekmez.01(0,1)tanh


Çıktı için, lojistik fonksiyon olasılık üretmek istiyorsanız mantıklı, hepimiz bu konuda hemfikir olabilir. Tartışılmakta olan şey, lojistik faaliyetler yerine, orta tabakalar için bir aktivasyon olarak tanhın neden tercih edildiğidir.
Ricardo Cruz

OP'nin amacının bu olduğunu nasıl bildin? Genel bir soru soruyor gibi görünüyor.
Tom Hale,

2

Her şey esas olarak aktivasyon fonksiyonunun türevlerine bağlıdır, sigmoid fonksiyonunun ana problemi, türevinin maksimum değerinin 0.25 olmasıdır, bu, W ve b değerlerinin güncellemesinin küçük olacağı anlamına gelir.

Öte yandan tanh işlevi 1.0'a kadar bir türev içerir, bu da W ve b'nin güncellemelerini daha büyük hale getirir.

Bu, tanh işlevini sigmoid işlev yerine bir etkinleştirme işlevi olarak (gizli katmanlar için) neredeyse her zaman daha iyi yapar.

Bunu kendim kanıtlamak için (en azından basit bir durumda), basit bir sinir ağını kodladım ve aktivasyon işlevi olarak sigmoid, tanh ve relu'yu kullandım, sonra hata değerinin nasıl geliştiğini ve bunun ne elde ettiğini çizdim.

görüntü tanımını buraya girin

Yazdığım not defteri burada https://www.kaggle.com/moriano/a-showcase-of-how-relus-can-speed-up-the-learning

Yardımcı olursa, burada tanh fonksiyonunun türevlerinin ve sigmoidinin çizelgeleri var (dikey eksene dikkat!)

görüntü tanımını buraya girin

görüntü tanımını buraya girin


(-1) Bu ilginç bir fikir olsa da, kendi başına durmuyor. Özellikle, DL / NN için kullanılan optimizasyon yöntemlerinin çoğu, öğrenme oranı olan birinci dereceden gradyan yöntemleridir . Bir aktivasyon işleviyle ilgili maksimum türev çok küçükse, kolaylıkla öğrenme oranını arttırabiliriz. α
Cliff AB

Daha yüksek bir öğrenme oranına sahip sabit bir öğrenme eğrisine sahip olmama riskini kullanmıyor musunuz?
Juan Antonio Gomez Moriano,

Peki, eğer türevler daha kararlıysa, öğrenme oranını arttırmanın kestirimi tanımlamasının olasılığı düşüktür.
Cliff AB

Bu adil bir nokta, bundan daha fazla şey öğrenebileceğim bir bağlantın var mı?
Juan Antonio Gomez Moriano
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.