赞
踩
在神经网络或者逻辑回归当中都使用到了激活函数。在神经网络中,每个神经元节点接收上一层神经元的输出值作为本神经元的输入值,并将输出值继续向下层传递。那么,在上层神经元节点的输出与下层神经元节点的输入之间具有一个函数关系,这个函数被称为激活函数。
若不用激活函数或激活函数是线性函数(也就相当于激活函数f(x)=x,即恒等线性激活函数),则无论神经网络定义多少层,输出都是输入的线性组合,与没有隐藏层效果相当,这种情况就是最原始的感知机,那么网络的逼近能力就相当有限了。正因为如此,才需要引入非线性函数作为激励函数,这样深层神经网络表达能力就更加的强大,几乎可以逼近任意函数。
(1)计算简单:激活函数的前向计算次数与神经元的个数成正比,因此,简单的激活函数效率更高。这也是ReLU之流比其他使用Exp等操作的激活函数更加受欢迎的原因之一。
(2)非线性:理由同1(同时,非线性激活函数能够使用平滑的曲线分割平面,没必要使用复杂的线性组合逼近平滑曲线来分割平面)
(3)可微性:当优化方法是基于梯度(偏导数的向量)的时候,该性质是必须的
(4)单调性:即导数符号不变。这个性质大部分激活函数都有,除了诸如sin、cos等。个人理解,单调性使得在激活函数处的梯度方向不会经常改变,从而让训练更容易收敛。
(5)输出值范围:有限的输出范围使得网络对极值(较大或较小)的处理更加的稳定,这也就是早期激活函数为此类函数的原因,如sigmod、tanh。但是在反向传播算法中需要计算激活函数导数,通过导数图像会发现如sigmod等激活函数从0开始很快就趋近于0了,很容易造成“梯度消失”现象;并且,强行将每一层的输出限制在一个输出层面上会限制网络的表达能力。
(6)非饱和性:即梯度消失,使得参数无法继续更新的问题。如:Sigmoid函数的导数在x为比较大的正值和比较小的负值时都会接近于0。更极端的例子是阶跃函数,由于它在几乎所有位置的梯度都为0,因此处处饱和,无法作为激活函数。ReLU在x>0时导数恒为1,因此对于再大的正值也不会饱和。但同时对于x<0,其梯度恒为0,这时候它也会出现饱和的现象(在这种情况下通常称为dying ReLU)。Leaky ReLU和PReLU的提出正是为了解决这一问题。
(7)部分接近恒等变换(f(x)≈x):这样的好处是是的输出的增幅不会出现随着深度的增加而发生明显的增加(如:指数爆炸),从而使得网络更加的稳定,同时梯度(导数)更容易回转。之所以称之为“部分”,是因为与(2)“非线性”相互矛盾,因此,激活函数基本只是部分满足这个条件。
sigmod函数是生物学中一种常见的S型函数,也称为S型生长曲线。在信息科学当中,其由于单调递增和反函数单调递增等性质,Sigmod函数常常被用作神经网络的阙值函数,将变量映射到(0,1)之间。主要适用于二分类。
特点:
能够将输入的连续的数值转换到[0,1]之间。特别,对于非常大的负数,转换成0,非常大的正数转换成1。
缺点:
(1)在神经网络中梯度(导数)反向传播时,很容易造成“梯度消失”(w∈[0,1])或有很小的可能产生“梯度爆炸”(w初始化为(1,+∞))
(2)sigmod的输出并不是是以0为中心,使得权重的更新效率降低。
(3)函数式中含有幂运算,计算机求解时相对来说比较耗时。对于大规模的较大的深度网络,这会较大的增加训练时间。
sigmod函数公式:
sigmod导数:
sigmod与sigmod_derivatrive对比图:
tanh是sigmod函数的一个优化变形,其解决了sigmod未过(0,0)点的问题,然而,sigmod存在的“梯度消失”和“幂运算效率低下”问题并没有解决。
tanh公式:
tanh导数:
tanh和tank_derivatrive对比图
ReLU(Rectified Linear Unit)函数是目前比较火的激活函数。
优点:相比于tanh和sigmod
(1)当x>0时不存在“梯度消失”问题(梯度饱和问题)
(2)无论是前向计算,还是后向误差调整,不存在“幂运算效率低下”问题(收敛速度快)
缺点:
(1)ReLU的输出要么是0要么是正数,因此其不是以0为中心的
(2)当输入值为负数,ReLU完全不被激活,即ReLU会死掉。正向和反向传播都是如此
(3)当学习速率过大,权重调节过大,同样会使得网络节点不被激活(w = w - r*df(wx+b)*x)
ReLU公式:
ReLU导数:
ReLU与ReLU_derivatrive对比:
优点:
(1)理论上来说,具备ReLU的全部优点
(2)解决了原有ReLU算法在x<0区间上的神经元节点死亡问题(αx),并且缓解了ReLU不是0中心的问题
缺点:
(1)实际的操作过程中,并没有完全证明PReLU要比ReLU要好
(2)α需要依据先验经验进行判断
LReLU公式:
LReLU导数:
LReLU与LReLU_derivatrive对比:
对于 LReLU 中的α,通常都是通过先验知识人工赋值的。 然而可以观察到,损失函数对α的导数我们是可以求得的,因此可以将α作为一个参数进行训练。Kaiming He的论文《Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification》指出,不仅可以训练,而且效果更好,最终的效果比人工赋值提高了1.03%。
RReLU也是Leaky ReLU的一个变体。在RReLU中,负值的斜率α在训练中是随机的,在之后的测试中就变成了固定的了。RReLU的亮点在于,在训练环节中,αij是从一个均匀分布U(I,u)中随机抽取的数值。测试阶段,最终的α为(l+u)/2。
优点:
(1)具有LReLU的全部优点
(2)α并不是根据先验经验确定的,而是在一个给定范围内的均匀分布随机值,在测试环节中被固定下来
RReLU公式:
RReLU导数:
RReLU和RReLU_derivatrive对比:
ELU也是为了解决ReLU存在的问题而提出的。
优点:
(1)当x>0时不存在“梯度消失”问题(梯度饱和问题)
(2)当x<0是不存在神经元死亡现象
(3)输出的均值接近0,zero-centered
缺点:
(1)幂运算计算量稍大.
(2)α需要依据先验经验进行选择
(2)理论上由于ReLU,但是实际使用中并没有好的证据证明ELU总是优于ReLU.
ELU公式:
ELU导数:
ELU和ELU_derivatrive对比图:
maxout是深度学习网络中的一层网络,类似于池化层、卷积层一样,这里即是将maxout看成网络的激活层函数,假设网络的某一层的输入特征为:X=(x1,x2,...,xd),输入神经元为d个,则隐藏层神经元计算公式如下:
传统的神经网络模型在第i层到i+1层时,只需要计算一组参数,而maxout则在该层训练了k组参数(w\b),然后选择最大的激活值作为下一层神经元的激活值,此时max(z)函数充当了激活函数。
优点:
(1)计算简单
(2)不会出现“梯度消失”现象
(3)不会出现节点死亡现象
缺点:
增加了网络的复杂程度,计算效率低
在数学当中,尤其是在概率论和相关领域当中,SoftMax函数(归一化指数函数)是逻辑函数的一种推广。
优点:
(1)将一个含有任意实数的K维向量Z“压缩”到另外一个K维实向量P中,使得每个元素的值都在[0, 1]之间
(2)压缩后的向量的所有元素之和为1
(3)对向量进行归一化,凸显其中最大的值并抑制远低于最大值的其他分量
缺点:
(1)函数式中含有幂运算,计算机求解时相对来说比较耗时。对于大规模的较大的深度网络,这会较大的增加训练时间
(2)softmax处理多分类问题时要求类别之间互斥,即一个输入智能被归为一类。不能出现,“苹果”既输入“水果”也属于“3C”的情况出现。
softmax公式:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。