funkcja aktywacji tanh vs funkcja aktywacji sigmoidalnej

82

Funkcja aktywacji tanh to:

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

Gdzie , funkcja sigmoidalna jest zdefiniowana jako: σ ( x ) = e xσ(x)
.

σ(x)=ex1+ex

Pytania:

  • Czy to naprawdę ma znaczenie między użyciem tych dwóch funkcji aktywacyjnych (tanh vs. sigma)?
  • Która funkcja jest lepsza w jakich przypadkach?
satya
źródło
12
tanh(x)=2σ(2x)1
Ruszyły głębokie sieci neuronowe. Obecne preferencje to funkcja RELU.
Paul Nord
7
@PaulNord Zarówno tanh, jak i sigmoidy są nadal używane w połączeniu z innymi aktywacjami, takimi jak RELU, zależy od tego, co próbujesz zrobić.
Tahlor

Odpowiedzi:

80

Tak, ma to znaczenie techniczne. Zasadniczo do optymalizacji. Warto przeczytać Efficient Backprop LeCun i in.

Istnieją dwa powody tego wyboru (zakładając, że znormalizowałeś swoje dane, a to jest bardzo ważne):

  1. Mając silniejsze gradienty: ponieważ dane są wyśrodkowane wokół 0, pochodne są wyższe. Aby to zobaczyć, oblicz pochodną funkcji tanh i zauważ, że jej zakres (wartości wyjściowe) wynosi [0,1].

Zakres funkcji tanh wynosi [-1,1], a zakres funkcji sigmoidalnej wynosi [0,1]

  1. Unikanie stronniczości gradientów. Wyjaśnia to bardzo dobrze w artykule i warto je przeczytać, aby zrozumieć te problemy.
jpmuc
źródło
Mam niewielkie wątpliwości w zaproponowanym przez ciebie artykule. Na stronie 14, „Gdy MLP mają wspólne wagi (np. Sieci splotowe), szybkość uczenia się powinna być wybrana w taki sposób, aby była proporcjonalna do pierwiastka kwadratowego liczby połączeń dzielących wagę”. Czy możesz wyjaśnić dlaczego?
satya
tutaj już odpowiedziano na pytanie stats.stackexchange.com/questions/47590/…
jpmuc
1
To bardzo ogólne pytanie. Krótko mówiąc: funkcja kosztu określa, co powinna zrobić sieć neuronowa: klasyfikacja lub regresja i jak. Gdybyś mógł dostać kopię „Sieci neuronowych do rozpoznawania wzorców” Christophera Bishopa, byłoby świetnie. Również „Uczenie maszynowe” Mitchella daje dobre wyjaśnienie na bardziej podstawowym poziomie.
jpmuc
1
Przykro mi, Satyo, zazwyczaj jestem dość zajęty w ciągu tygodnia. Jak dokładnie znormalizować swoje dane? en.wikipedia.org/wiki/Whitening_transformation Nie jestem do końca pewien, jaki może być twój problem. Najłatwiej jest odjąć średnią, a następnie wyrównać ją z macierzą kowariancji. Evtl. musisz dodać jakiś komponent dla wysokich częstotliwości (patrz transformacja ZCA w odnośniku powyżej)
jpmuc
1
Wielkie dzięki Juampa. Naprawdę bardzo mi pomagasz. Sugerowana lektura jest bardzo dobra. W rzeczywistości realizuję projekt eksploracji danych klimatycznych. 50% moich cech wejściowych to temperatura (zakres 200 K-310 K), a 50% moich cech wejściowych to wartości ciśnienia (zakres od 50000pa do 100000pa). Robię wybielanie. Przed pca, czy jest jakaś potrzeba, aby to znormalizować ... Jeśli tak, jak mam to znormalizować? Czy powinienem normalizować przed odejmowaniem od środka czy po odjęciu od środka? Otrzymuję różne wyniki, jeśli normalizuję się różnymi metodami ...
satya
32

Wielkie dzięki @jpmuc! Zainspirowany twoją odpowiedzią osobno obliczyłem i narysowałem pochodną funkcji tanh i standardowej funkcji sigmoidalnej. Chciałbym się z wami wszystkimi podzielić. Oto co mam. Jest to pochodna funkcji tanh. Dla danych wejściowych między [-1,1] mamy pochodną między [0,42, 1]. wprowadź opis zdjęcia tutaj

Jest to pochodna standardowej funkcji sigmoidalnej f (x) = 1 / (1 + exp (-x)). Dla danych wejściowych między [0,1] mamy pochodną między [0,20, 0,25]. wprowadź opis zdjęcia tutaj

Najwyraźniej funkcja tanh zapewnia silniejsze gradienty.

Mina HE
źródło
6
Innym sposobem spojrzenia na to jest to, że σ (2x) jest takie samo jak σ (x), ale z zastosowanym rozciągnięciem poziomym współczynnik skali 1/2 (tj. Jest to ten sam wykres, ale wszystko jest wciśnięte w kierunku osi y). Kiedy go
wciskasz
2
Nie rozumiem, dlaczego miałoby to mieć jakąkolwiek różnicę. Skala i squash będą losowe dla każdego węzła i (z przesunięciami i wagami na wejściu i wyjściu) oba będą uniwersalnymi aproksymatorami, zbiegającymi się do tego samego wyniku.
endolith