神经网络中的常用激活函数及其导数
1、sigmoid:该函数将取值(-∞,+∞)的数映射到(0,+1)之间。

函数:g(z) = 1-1/(1+e-z)
导数:g'(z) = 1/(1+e-z) * (1-1/(1+e-z) )
缺点:当z值太大或太小时,该函数的导数接近于0,将会导致梯度消失。因此该函数不适用在隐藏层,而是用在输出层进行二分类。
2、tanh:该函数将取值(-∞,+∞)的数映射到(-1,+1)之间。

函数:g(z) = (ez-e-z) / (ez+e-z)
导数:g'(z) ' = 4 / (ez+e-z)2 = 1- tanh2
tanh弥补了sigmoid均值为0.5的缺点,在该函数的某一段课看做线性。
缺点同样为当z值太大或太小时,会导致梯度消失。
3、ReLU(rectified linear unit):分段线性函数

函数:g(z) = { z, if z>0
0, if z<0
导数:g'(z) = { 1, if z>0
0, if z<0
优点:输入为正时不存在梯度消失问题,速度快
缺点:输入为负时存在梯度消失问题。
4、leaky ReLU

函数:g(z)={ z, if z>0
az, if z<0 (0<a<1)
导数:g'(z)={ 1, if z>0
a, if z<0
优点:解决了ReLU函数在输入为负情况下梯度消失问题。
网友评论