人工智能进修根本:常见的激活函数_函数_梯度
回到顶部
二、激活函数所具有的几个性子非线性: 当激活函数是线性的时候,一个两层的神经网络就可以逼近基本上所有的函数了。但是,如果激活函数是恒等激活函数的时候(即f(x)=x),就不知足这个性子了,而且如果MLP(Multi-Layer Perceptron,即多层感知器)利用的是恒等激活函数,那么实在全体网络跟单层神经网络是等价的。
可微性: 当优化方法是基于梯度的时候,这个性子是必须的。
单调性: 当激活函数是单调的时候,单层网络能够担保是凸函数。
f(x)≈x: 当激活函数知足这个性子的时候,如果参数的初始化是random的很小的值,那么神经网络的演习将会很高效;如果不知足这个性子,那么就须要很存心地去设置初始值。
输出值的范围: 当激活函数输出值是 有限 的时候,基于梯度的优化方法会更加稳定,由于特色的表示受有限权值的影响更显著;当激活函数的输出是 无限 的时候,模型的演习会更加高效,不过在这种情形下,一样平常须要更小的learning rate。
回到顶部
三、四种激活函数3.1:SigmoidSigmoid 因其在 logistic 回归中的主要地位而被人熟知,值域在 0 到 1 之间。Logistic Sigmoid(或者按常日的叫法,Sigmoid)激活函数给神经网络引进了概率的观点。它的导数是非零的,并且很随意马虎打算(是其初始输出的函数)。然而,在分类任务中,sigmoid 正逐渐被 Tanh 函数取代作为标准的激活函数,由于后者为奇函数(关于***对称)。
优点:
Sigmoid函数的输出映射在(0,1)之间,单调连续,输出范围有限,如果是非常大的负数,那么输出便是0;如果是非常大的正数,输出便是1。优化稳定,可以用作输出层。求导随意马虎。sigmoid 函数曾经被利用的很多,不过近年来,用它的人越来越少了。缺陷:
随意马虎饱和和终止梯度通报("去世神经元");sigmoid函数的输出没有0中央化。3.2:双曲正切函数(Tanh)在分类任务中,双曲正切函数(Tanh)逐渐取代 Sigmoid 函数作为标准的激活函数,其具有很多神经网络所钟爱的特色。它是完备可微分的,反对称,对称中央在***。为理解决学习缓慢和/或梯度消逝问题,可以利用这个函数的更加平缓的变体(log-log、softsign、symmetrical sigmoid 等等)。
优点:
比Sigmoid函数收敛速率更快。比较Sigmoid函数,其输出以0为中央。缺陷:
还是没有改变Sigmoid函数的最大问题——由于饱和性产生的梯度消逝。
3.3:改动线性单元(Rectified linear unit,ReLU)是神经网络中最常用的激活函数。它保留了 step 函数的生物学启示(只有输入超出阈值时神经元才激活),不过当输入为正的时候,导数不为零,从而许可基于梯度的学习(只管在 x=0 的时候,导数是未定义的)。利用这个函数能使打算变得很快,由于无论是函数还是其导数都不包含繁芜的数学运算。然而,当输入为负值的时候,ReLU 的学习速率可能会变得很慢,乃至使神经元直接无效,由于此时输入小于零而梯度为零,从而其权重无法得到更新,在剩下的演习过程中会一贯保持静默。
优点:
1.比较起Sigmoid和tanh,ReLU在SGD中能够快速收敛,这是由于它线性(linear)、非饱和(non-saturating)的形式。
2.Sigmoid和tanh涉及了很多很expensive的操作(比如指数),ReLU可以更加大略地实现。
3.有效缓解了梯度消逝的问题。
4.在没有无监督预演习的时候也能有较好的表现。
缺陷:
没有边界,可以利用变种ReLU: min(max(0,x), 6)比较薄弱,比较随意马虎陷入涌现"去世神经元"的情形• 办理方案: 较小的学习率
3.4:Leaky ReLU经典(以及广泛利用的)ReLU 激活函数的变体,带透露改动线性单元(Leaky ReLU)的输出对负值输入有很小的坡度。由于导数总是不为零,这能减少静默神经元的涌现,许可基于梯度的学习(虽然会很慢)。
优缺陷:人工神经网络中为什么ReLu要好过于tanh和sigmoid function?
1.采取sigmoid等函数,算激活函数时(指数运算),打算量大,反向传播求偏差梯度时,求导涉及除法和指数运算,打算量相对大,而采取Relu激活函数,全体过程的打算量节省很多。
2.对付深层网络,sigmoid函数反向传播时,很随意马虎就会涌现梯度消逝的情形(在sigmoid靠近饱和区时,变换太缓慢,导数趋于0,这种情形会造成信息丢失),这种征象称为饱和,从而无法完成深层网络的演习。而ReLU就不会有饱和方向,不会有特殊小的梯度涌现。
3.Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生(以及一些人的生物阐明balabala)。当然现在也有一些对relu的改进,比如prelu,random relu等,在不同的数据集上会有一些演习速率上或者准确率上的改进。
一样平常来说,隐蔽层最好利用 ReLU 神经元。对付分类任务,Softmax 常日是更好的选择;对付回归问题,最好利用 Sigmoid 函数或双曲正切函数。
如果利用 ReLU,要小心设置 learning rate,把稳不要让网络涌现很多 "dead" 神经元,如果不好办理,可以试试 Leaky ReLU、PReLU 或者 Maxout.
比如GAN便是利用这个函数。
回到顶部
四、其它激活函数:ELU激活函数:
指数线性激活函数,同样属于对ReLU激活函数的x≤0部分的转换进行指数改动,而不是和Leaky ReLU中的线性改动
五、勉励层建议:CNN只管即便不要利用sigmoid,如果要利用,建议只在全连接层利用首先利用ReLU,由于迭代速率快,但是有可能效果不佳如果利用ReLU失落效的情形下,考虑利用Leaky ReLu或者Maxout,此时一样平常情形都可以办理啦tanh激活函数在某些情形下有比较好的效果,但是运用处景比较少
附加:Softmax:
做过多分类任务的同学一定都知道softmax函数。softmax函数,又称归一化指数函数。它是二分类函数sigmoid在多分类上的推广,目的是将多分类的结果以概率的形式展现出来。下图展示了softmax的打算方法:
下面为大家阐明一下为什么softmax是这种形式。我们知道指数函数的值域取值范围是零到正无穷。与概率取值相似的地方是它们都是非负实数。那么我们可以
1)利用指数函数将多分类结果映射到零到正无穷;
2)然后进行归一化处理,便得到了近似的概率。
总结一下softmax如何将多分类输出转换为概率,可以分为两步:
1)分子:通过指数函数,将实数输出映射到零到正无穷。
2)分母:将所有结果相加,进行归一化。
下图为斯坦福大学CS224n课程中对softmax的阐明:
本文系作者个人观点,不代表本站立场,转载请注明出处!