回到顶部

二、激活函数所具有的几个性子

人工智能进修根本:常见的激活函数_函数_梯度 绘影字幕

非线性: 当激活函数是线性的时候,一个两层的神经网络就可以逼近基本上所有的函数了。
但是,如果激活函数是恒等激活函数的时候(即f(x)=x),就不知足这个性子了,而且如果MLP(Multi-Layer Perceptron,即多层感知器)利用的是恒等激活函数,那么实在全体网络跟单层神经网络是等价的。

可微性: 当优化方法是基于梯度的时候,这个性子是必须的。

单调性: 当激活函数是单调的时候,单层网络能够担保是凸函数。

f(x)≈x: 当激活函数知足这个性子的时候,如果参数的初始化是random的很小的值,那么神经网络的演习将会很高效;如果不知足这个性子,那么就须要很存心地去设置初始值。

输出值的范围: 当激活函数输出值是 有限 的时候,基于梯度的优化方法会更加稳定,由于特色的表示受有限权值的影响更显著;当激活函数的输出是 无限 的时候,模型的演习会更加高效,不过在这种情形下,一样平常须要更小的learning rate。

回到顶部

三、四种激活函数3.1:Sigmoid

Sigmoid 因其在 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的阐明: