激活函数

1.Sigmoid激活函数:sigmoid将实值输出压缩在[0,1]范围内,最后输出的结果的平均值更趋近于0.5

(1)sigmoid函数饱和使梯度消失(sigmoidsaturate and kill gradients)。我们从导函数中可以看出sigmoid的导数都是小于0.25的,那么在进行反响传播的时候,梯度相乘结果会慢慢的趋近于0。这样,几乎就没有梯度信号通过神经元传递到前面层的梯度更新中,因此这时前面层的权值几乎没有更新,这就叫梯度消失。除此之外,为了防止饱和,必须对于权重矩阵的初始化特别留意。如果初始化权重过大,可能很多神经元得到一个比较小的梯度,致使神经元不能很好的更新权重提前饱和,神经网络就几乎不学习。
(2)sigmoid函数输出不是“零中心”(zero-centered)。一个多层的sigmoid神经网络,如果你的输入x都是正数,那么在反向传播中w的梯度传播到网络的某一处时,权值的变化要么全正要么全负。当梯度从上层传播下来,w的梯度都是用x乘以f的梯度,因此如果神经元输出的梯度是正的,那么所有w的梯度就会是正的,反之依然。这就造成你的w只能往同一个方向走,模型拟合的过程就会十分缓慢。
(3)指数函数的计算是比较消耗计算资源的。

2.Tanh激活函数:tanh函数将实值输出压缩在[-1, 1]的范围,最后输出的结果的平均值更趋近于0,模型收敛更快。
tanh函数跟sigmoid外形上是很像的,实际上,tanh是sigmoid的变形tanh与sigmoid不同的是,tanh是“零为中心”的。因此,在实际应用中,tanh会比sigmoid更好一些。但是在饱和神经元的情况下,tanh还是没有解决梯度消失问题。
优点:(1)tanh解决了sigmoid的输出非“零中心”的问题
缺点:(1)依然有sigmoid函数过饱和的问题。(2)依然进行的是指数运算。

3.softmax激活函数:分段函数 解决分类问题

4.ReLU激活函数:(1)“非饱和激活函数”能解决所谓的“梯度消失”问题。(2)能加快收敛速度。

优点:

(1)ReLU解决了梯度消失的问题,至少x在正区间内,神经元不会饱和;

(2)由于ReLU线性、非饱和的形式,在SGD中能够快速收敛;

(3)计算速度要快很多。ReLU函数只有线性关系,不需要指数计算,不管在前向传播还是反向传播,计算速度都比sigmoid和tanh快。

缺点:

(1)ReLU的输出不是“零中心”;

(2)随着训练的进行,可能会出现神经元死亡,权重无法更新的情况。这种神经元的死亡是不可逆转的死亡。

5.Softplus激活函数:Softplus激活函数是Sigmoid函数的原函数,表达式如下所示,Softplus函数和ReLU函数图像类似。

6.PReLU激活函数:PReLU激活函数是ReLU的变种,特点是如果激活值小于0,激活值不是简单的变为0,而是逐渐的变化。

 

近年来,ReLU函数变得越来越受欢迎。全称是Rectified Linear Unit,中文名是:修正线性单元。

 

总结:训练神经网络的时候,一旦学习率没有设置好,第一次更新权重的时候,输入的是负值,那么这个含有ReLU的神经节点就会死亡,再也不会被激活。在实际训练中,如果学习率设置的太高,可能会发现网络中40%的神经元都会死掉,且在整个训练集中这些神经元都不会被激活。所以,设置一个合适的较小的学习率会降低这种情况的发生。所以必须设置一个合理的学习率。为了解决神经元节点死亡的情况,有人提出了Leaky ReLU、P-ReLU、R-ReLU、ELU等激活函数。

 

引出的问题:神经网络中ReLU是线性还是非线性函数?为什么ReLU这种“看似线性”的激活函数所形成的网络,居然能够增加非线性的表达能力?

(1)ReLU是非线性激活函数。

线性网络:如果把线性网络看成一个大的矩阵M。那么输入样本A和B,则会经过同样的线性变换MA,MB(这里A和B经历的线性变换矩阵M是一样的)

(2)的确对于单一的样本A,经过由ReLU激活函数所构成神经网络,其过程确实可以等价是经过了一个线性变换M1,但是对于样本B,在经过同样的网络时,由于每个神经元是否激活(0或者Wx+b)与样本A经过时情形不同了,因此B所经历的线性变换M2并不等于M1。因此,ReLU构成的神经网络虽然对每个样本都是线性变换,但是不同样本之间所经历的线性变换M并不一样,所以整个样本空间在经过ReLU构成的网络时其实是经历了非线性变换的。

 

Leaky ReLUs
    ReLU是将所有的负值都设为零,相反,Leaky ReLU是给所有负值赋予一个非零斜率。

参数化修正线性单元(PReLU)
    PReLU可以看作是Leaky ReLU的一个变体。在PReLU中,负值部分的斜率是根据数据来定的,而非预先定义的。作者称,在ImageNet分类(2015,Russakovsky等)上,PReLU是超越人类分类水平的关键所在。

也是Leaky ReLU的一个变体。在RReLU中,负值的斜率在训练中是随机的,在之后的测试中就变成了固定的了。RReLU的亮点在于,在训练环节中,aji是从一个均匀的分布U(I,u)中随机抽取的数值。

ELUs
    ELUs是“指数线性单元”,它试图将激活函数的平均值接近零,从而加快学习的速度。同时,它还能通过正值的标识来避免梯度消失的问题。