一、激活函数
1. Sigmoid
它可以将输入实数值压缩到0到1的范围内,更具体地说,很大的负数变为0,很大的正数变为1。 但sigmoid 函数有几个缺点
- sigmoid函数饱和使梯度消失,当神经元的激活在接近0或者1时会饱和,在这些区域,梯度几乎为0,这样,在反向传播过程中,局部梯度就会接近0,这会有效地“杀死”梯度
- Sigmoid函数的输出不是零中心的。这样使得关于w的梯度在反向传播过程中,将会要么全是正数,要么全是负数,使得梯度下降过程中出现z字型下降
2.Tanh函数
它将输入实数值压缩到-1,1之间,和sigmoid函数一样,它也存在饱和问题,但它输出是零中心的,所以相比较sigmoid而言更受欢迎
3. ReLU
优点:
- ReLU对于随机梯度下降的首先有巨大的加速作用,这是由于它的线性,非饱和的公式导致的
- sigmoid 和 tanh函数都含有指数运算,而ReLU可以简单地通过对一个矩阵进行阈值计算得到
缺点:
- ReLU单元比较脆弱并且可能“死掉”。当一个很大的梯度流过ReLU的神经元的时候,可能会导致梯度更新到一种特别的状态,使得无法被其他任何数据点再次激活,如果这种情况发生,那么从此所有流过这个神经元的梯度都将变为0
4. Leaky ReLU (为解决ReLU死亡问题)
5.Maxout
它是对ReLU和leaky ReLU的一般化归纳,maxout神经元拥有ReLU所有的优点,而没有它的缺点,然而和ReLU对比,它每个神经元的参数量增加了一倍
总结:
如果用ReLU,注意设置好学习率,或许可以监控死亡的神经元占的比例。不要用sigmoid,也可以试试tanh,但效果应该不如ReLU或者Maxout