Press "Enter" to skip to content

深度学习总结(三)激活函数的介绍

1. ReLU函数

 

用ReLU代替了传统的Tanh或者Logistic。

 

优点:

 

ReLU本质上是分段线性模型,前向计算非常简单,无需指数之类操作;
ReLU的偏导也很简单,反向传播梯度,无需指数或者除法之类操作;ReLU不容易发生梯度发散问题,Tanh和Logistic激活函数在两端的时候导数容易趋近于零,多级连乘后梯度更加约等于0;
ReLU关闭了左边,从而会使得很多的隐层输出为0,即网络变得稀疏,起到了类似L1的正则化作用,可以在一定程度上缓解过拟合。

 

缺点:

 

比如左边全部关了很容易导致某些隐藏节点永无翻身之日,所以后来又出现pReLU、random ReLU等改进;
而且ReLU会很容易改变数据的分布,因此ReLU后加Batch Normalization也是常用的改进的方法。

 

2. Sigmoid函数

 

优点:

 

输出范围有限,所以数据在传递的过程中不容易发散;

 

缺点:

 

饱和的时候梯度太小。
为了防止饱和,必须对于权重矩阵的初始化特别留意。

 

3. Tanh函数

 

优点:

 

输出是零中心的

 

缺点:

 

饱和的时候梯度太小。
为了防止饱和,必须对于权重矩阵的初始化特别留意。

 

4. 为什幺RNN选择Tanh函数?

 

可以将数据进行压缩,而且可以保留数据的正负性。

 

5. 激活函数的选择:

 

sigmoid在压缩数据幅度方面有优势,对于深度网络,使用sigmoid可以保证数据幅度不会有问题,这样数据幅度稳住了就不会出现太大的失误。

 

但是sigmoid存在梯度消失的问题,在反向传播上有劣势,所以优化的过程中存在不足。

 

relu不会对数据做幅度压缩,所以如果数据的幅度不断扩张,那幺模型的层数越深,幅度的扩张也会越厉害,最终会影响模型的表现。

 

但是relu在反向传导方面可以很好地将“原汁原味”的梯度传到后面,这样在学习的过程中可以更好地发挥出来。

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注