神经网络中的**函数是干是什么用的?
我是小玉,一个平平无奇的数据小天才!
最近在回顾神经网络这里知识,发现自己还是有很多知识点掌握不够清楚明了,既然开始搞就要搞得明明白白,会了神经网络等于掌握了大半个机器学习。
跟大家分享一下我在看这里时候遇到的一些常见问题,神经网络不同于传统的机器学习方法,它由于更多的性质在机器学习领域得到了大量应用。但是想要真的弄清楚神经网络还需要下下功夫。
**函数:
我们在学习神经网络的时候必不可免的会听到一个词叫做**函数,这个东西就是对于神经网络来说,起了很大的作用,为神经网络添加了更多的非线性因素,举个例子:
上图是这是一个简单的线性分类问题,正常情况下我们只需要一条直线就可以很好地分类。
但是当我们碰到下图问题时,无法通过一条直线将样本分类出来,需要我们加入非线性因素才可以将样本分类好,而我们的**函数就是我们要加入的非线性因素:
我们在深入理解**函数的时候需要先知道什么是硬饱和什么是软饱和!
假设h(x)是一个**函数。
1.当我们的n趋近于正无穷,**函数的导数趋近于0,那么我们称之为右饱和。
2.当我们的n趋近于负无穷,**函数的导数趋近于0,那么我们称之为左饱和。
3.当一个函数既满足左饱和又满足右饱和的时候我们就称之为饱和,典型的函数有Sigmoid,Tanh函数。
,则称其为右硬饱和。如果对于任意的x,如果存在常数c,当x<c时,恒有
,则称其为左硬饱和。既满足左硬饱和又满足右硬饱和的我们称这种函数为硬饱和。
4.对于任意的x,如果存在常数c,当x>c时,恒有趋近于0,则称其为右软饱和。如果对于任意的x,如果存在常数c,当x<c时,恒有
趋近于0,则称其为左软饱和。既满足左软饱和又满足右软饱和的我们称这种函数为软饱和。
常用的**函数:
1、Sigmoid函数:
Sigmoid函数的优点:1.求导容易。 2.Sigmoid函数的输出映射在(0,1)之间,单调连续输出范围有限,优化稳定可以用作输出层。
缺点:1.由于其软饱和性,容易造成梯度消失问题。2.其输出没有以0为中心。
2、Tanh函数:
Tanh函数的优点:1.收敛速度比Sigmoid函数快。 2. 其输出以0为中心。
缺点:还是出现软饱和现象,梯度消失问题并没有解决。
3、Relu函数:
Relu函数的优点:1.在SGD(随机梯度下降算法)中收敛速度够快。2.不会出现像Sigmoid那样梯度消失问题。3.提供了网络稀疏表达能力。4.在 无监督训练中也有良好的表现。
缺点:1.不以0为中心。
2.前向传导(forward pass)过程中,如果 x < 0,则神经元保持非**状态,且在后向传导(backward pass)中「杀死」梯度。这样权重无法得到更新,网络无法学习。神经元死亡是不可逆的。
4、LReLU、PReLU与RReLU函数:
LRelu函数:
公式:
LRelu的优点:缓解了Relu神经元死亡的问题。
PRelu函数:
公式:
其中是超参数。这里引入了一个随机的超参数
,它可以被学习,因为你可以对它进行反向传播。这使神经元能够选择负区域最好的梯度,有了这种能力,它们可以变成 ReLU 或 Leaky ReLU。负值部分的斜率是根据数据来定的,而非预先定义的。
RRelu函数:
RReLU也是Leaky ReLU的一个变体。在RReLU中,负值的斜率在训练中是随机的,在之后的测试中就变成了固定的了。RReLU的亮点在于,在训练环节中,aji是从一个均匀的分布U(I,u)中随机抽取的数值。
RReLU中的aji是一个在一个给定的范围内随机抽取的值,这个值在测试环节就会固定下来。
5、ELU函数:
优点:右侧的线性部分能够缓解梯度消失,左侧的软饱和能够对于输入变化鲁棒,而且收敛速度更快。
关于神经网络的**函数,汇总有26 种,但是常用的也就这几种,大家掌握好这几种**函数也就可以将神经网络进行灵活应用啦!
有帮助就点个赞呗!