常见的激活函数
1、Sigmoid
优点: 它能够把输入的连续实值变换为0和1之间的输出,特别的,如果是非常大的负数,那么输出就是0;如果是非常大的正数,输出就是1.。
缺点: 在深度神经网络中梯度反向传递时导致梯度爆炸和梯度消失,其中梯度爆炸发生的概率非常小,而梯度消失发生的概率比较大
Sigmoid 的 output 不是0均值(即zero-centered)。这是不可取的,因为这会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入。 产生的一个结果就是:如x>0, x>0, f= ,那么对w求局部梯度则都为正,这样在反向传播的过程中w要么都往正方向更新,要么都往负方向更新,导致有一种捆绑的效果,使得收敛缓慢。 当然了,如果按batch去训练,那么那个batch可能得到不同的信号,所以这个问题还是可以缓解一下的。因此,非0均值这个问题虽然会产生一些不好的影响,不过跟上面提到的梯度消失问题相比还是要好很多的。
其解析式中含有幂运算,计算机求解时相对来讲比较耗时。对于规模比较大的深度网络,这会较大地增加训练时间。
Sigmoid函数最大导数值为0.25更新会相对慢一些。
2、Tanh函数
tahn解决了Sigmoid函数的不是zero-centered输出问题
仍然存在梯度消失问题,还存在幂值计算,计算量大的问题。
3、ReLU
优点: 解决正区间的梯度消失问题;计算简单;收敛速度快;单侧抑制 ②相对宽阔的兴奋边界 ③稀疏激活性
缺点: ReLU的输出不是中心化的;某些神经元永远不会被激活了。
4、LeakyReLU和PReLU
其中LeakyRelU的α = 0.001;
PReLU的α是随着网络一起去学习的。