W Andrzej zNg sieci neuronowe i głęboki learning na Coursera mówi, że przy jest prawie zawsze korzystniejsze .
Powodem jest to, że daje on wyjść przy użyciu centrum niż około 0 „a 0,5, a to«sprawia, że uczenie się do następnej warstwy trochę łatwiejsze».
Dlaczego centrowanie uczenia się prędkości wyjściowej aktywacji? Zakładam, że odnosi się on do poprzedniej warstwy, ponieważ nauka odbywa się podczas backprop?
Czy są jakieś inne cechy, które sprawiają, korzystne? Czy bardziej stromy gradient opóźniałby zanikanie gradientów?
Są sytuacje, w których nie wszystkie byłoby korzystne?
Preferowane są matematyczne, intuicyjne odpowiedzi.
Odpowiedzi:
Yan LeCun i inni argumentują w Efficient BackProp to
Dlatego powinieneś znormalizować swoje dane wejściowe, aby średnia wynosiła zero.
Ta sama logika dotyczy warstw środkowych:
Postscript @craq wskazuje, że ten cytat nie ma sensu dla ReLU (x) = max (0, x), który stał się bardzo popularną funkcją aktywacyjną. Chociaż ReLU unika pierwszego zygzakowatego problemu wspomnianego przez LeCun, nie rozwiązuje tego drugiego punktu przez LeCun, który mówi, że ważne jest, aby przesunąć średnią na zero. Chciałbym wiedzieć, co LeCun ma do powiedzenia na ten temat. W każdym razie istnieje artykuł o nazwie Batch Normalization , który jest oparty na pracy LeCun i oferuje sposób rozwiązania tego problemu:
Nawiasem mówiąc, ten film Siraja wyjaśnia wiele na temat funkcji aktywacyjnych w 10 zabawnych minut.
@elkout mówi „Prawdziwym powodem, dla którego tanh jest preferowany w porównaniu do sigmoidu (...), jest to, że pochodne tanh są większe niż pochodne sigmoidu”.
Myślę, że to nie jest problem. Nigdy nie widziałem, aby był to problem w literaturze. Jeśli przeszkadza Ci, że jedna pochodna jest mniejsza od innej, możesz ją po prostu skalować.
Funkcja logistyczna ma kształtσ(x)=11+e−kx . Zwykle używamyk=1 , ale nic nie zabrania ci używania innej wartości dlak aby poszerzyć pochodne, jeśli to był twój problem.
Nitpick: tanh jest również funkcją sigmoidalną . Każda funkcja o kształcie S jest sigmoidem. To, co nazywacie sigmoid, to funkcja logistyczna. Powodem, dla którego funkcja logistyczna jest bardziej popularna, są przyczyny historyczne. Od dłuższego czasu jest używany przez statystyków. Poza tym niektórzy uważają, że jest to bardziej prawdopodobne biologicznie.
źródło
It's not that it is necessarily better thansigmoid . In other words, it's not the center of an activation fuction that makes it better. And the idea behind both functions is the same, and they also share a similar "trend". Needless to say that the tanh function is called a shifted version of the sigmoid function.
The real reason thattanh is preferred compared to sigmoid , especially when it comes to big data when you are usually struggling to find quickly the local (or global) minimum, is that the derivatives of the tanh are larger than the derivatives of the sigmoid . In other words, you minimize your cost function faster if you use tanh as an activation fuction.
But why does the hyperbolic tangent have larger derivatives? Just to give you a very simple intuition you may observe the following graph:
The fact that the range is between -1 and 1 compared to 0 and 1, makes the function to be more convenient for neural networks. Apart from that, if I use some math, I can prove that:
And in general, we may prove that in most cases∣∣∂tanh(x)∂x∣∣>∣∣∂σ(x)∂x∣∣ .
źródło
sigmoid(x) - 0.5
andtanh
.Answering the part of the question so far unaddressed:
Andrew Ng says that using the logistic function (commonly know as sigmoid) really only makes sense in the final layer of a binary classification network.
As the output of the network is expected to be between0 and 1 , the logistic is a perfect choice as it's range is exactly (0,1) . No scaling and shifting of tanh required.
źródło
It all essentially depends on the derivatives of the activation function, the main problem with the sigmoid function is that the max value of its derivative is 0.25, this means that the update of the values of W and b will be small.
The tanh function on the other hand, has a derivativ of up to 1.0, making the updates of W and b much larger.
This makes the tanh function almost always better as an activation function (for hidden layers) rather than the sigmoid function.
To prove this myself (at least in a simple case), I coded a simple neural network and used sigmoid, tanh and relu as activation functions, then I plotted how the error value evolved and this is what I got.
The full notebook I wrote is here https://www.kaggle.com/moriano/a-showcase-of-how-relus-can-speed-up-the-learning
If it helps, here are the charts of the derivatives of the tanh function and the sigmoid one (pay attention to the vertical axis!)
źródło