激活函数

激活函数(Activation Function)

激活函数为神经网络模型引入了非线性计算。
如果神经网络中没有激活函数,那么神经网络中的每一层的输出都是上层输入的线性函数,因此无论神经网络有多少层,输出都是输入的线性组合,这就是最原始的感知机(Perceptron)。
在现实任务中,大多数任务都是非线性的,因此激活函数给神经网络引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性计算任务中。
如下图,在神经元中,输入的 inputs 通过加权,求和后,被作用于一个函数,这个函数就是激活函数。
激活函数_第1张图片

常见激活函数

Sigmoid函数

Sigmoid函数是一个在生物学中常见的S型函数,也称为S型生长曲线。在信息科学中,由于其单增以及反函数单增等性质,Sigmoid函数常被用作神经网络的阈值函数,将变量映射到0,1之间。
Sigmoid函数的数学公式: σ ( x ) = 1 1 + e − x \sigma(x)=\frac{1}{1+e^{-x}} σ(x)=1+ex1
Sigmoid函数的图像(两个图坐标尺度不同):
激活函数_第2张图片

tanh函数

双曲正切函数,其数学公式: tanh ⁡ ( x ) = e x − e − x e x + e − x \tanh(x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}} tanh(x)=ex+exexex
tanh函数的图像:
激活函数_第3张图片

ReLu函数

整流线性单元(Rectified Linear Unit),其公式如下: R e l u ( x ) = m a x ( 0 , x ) Relu(x)=max(0, x) Relu(x)=max(0,x)
ReLu函数的图像:
激活函数_第4张图片

Leaky ReLu函数

渗漏整流线性单元,其公式如下: L e a k y R e L u ( x ) = m a x ( x , α x ) LeakyReLu(x)=max(x, \alpha x) LeakyReLu(x)=max(x,αx)
Leaky ReLu函数的图像 ( α = 0.01 \alpha=0.01 α=0.01):
激活函数_第5张图片

hard tanh函数

硬双曲正切函数,其形状和tanh及ReLu相似,但不同于后两者,它是有界的。
其数学公式为: H a r d t a n h ( x ) = m a x ( − 1 , m i n ( 1 , x ) ) Hardtanh(x)=max(-1,min(1,x)) Hardtanh(x)=max(1min(1,x))
函数图像为:
激活函数_第6张图片

softplus函数

这是ReLu单元的平滑版本。
其数学公式如下: s o f t p l u s ( x ) = l o g ( 1 + e x ) softplus(x)=log(1+e^x) softplus(x)=log(1+ex)
softplus函数的图像:
激活函数_第7张图片

ELU函数

指数线性单元(Exponential Linear Units)
其公式如下: E L U ( x ) = m a x ( x , α ( e x − 1 ) ) ELU(x)=max(x, \alpha(e^x-1)) ELU(x)=max(x,α(ex1))
ELU函数的图像(蓝色线和橙色线在 x > 0 x>0 x>0处重合):
激活函数_第8张图片

maxout单元

maxout(maxout unit)进一步扩展了整流线性单元。maxout单元将 x x x 划分为每组具有 k k k 个值的组,而不是使用作用于每个元素的函数。每个maxout单元输出每组中的最大元素: m a x o u t ( z ) i = m a x j ∈ [ 1 , k ] z j maxout(z)_i=max_{j\in{[1,k]}}z_j maxout(z)i=maxj[1,k]zj
maxout提供了一种方法来学习对输入 x x x 空间中多个方向响应的分段线性函数。
maxout单元可以学习具有多达 k k k 段的分段线性凸函数。maxout单元因此可以视为学习激活函数本身,而不仅仅是单元之间的关系。使用足够大的 k k k,maxout单元可以任意的精确来近似任何凸函数。

各种激活函数总结

函数名 描述 缺点
Sigmoid 能够把输入的连续实值变换为0和1之间的输出,如果是非常大的负数,输出就是0;如果是非常大的正数,输出就是1 1. 易导致梯度消失;2. Sigmoid 的 output 不是0均值(即zero-centered)。这会导致后一层的神经元得到上一层输出的非0均值数据作为输入,产生的一个结果就是:如 x>0, f=w^T x+b, 那么对w求局部梯度则都为正,在反向传播的过程中w要么都往正方向更新,要么都往负方向更新,使得收敛缓慢; 3. 含有幂运算,计算机比较耗时
tanh 解决了Sigmoid函数的不是zero-centered输出问题 梯度消失(gradient vanishing)的问题和幂运算的问题仍然存在
ReLu 1. 解决了gradient vanishing问题 (在正区间);2. 计算速度非常快,只需要判断输入是否大于0;3. 收敛速度远快于sigmoid和tanh 1. ReLU的输出不是zero-centered; 2.(Dead ReLU Problem)某些神经元可能永远不会被激活,导致相应的参数永远不能被更新
Leaky ReLu 解决Dead ReLU Problem Leaky ReLU有ReLU的所有优点,外加不会有Dead ReLU问题,但是在实际操作当中,并没有完全证明Leaky ReLU总是好于ReLU
hard tanh 硬双曲正切函数,其形状和tanh及ReLu相似,但不同于后两者,它是有界的 。。。
softplus ReLu的平滑版本 softplus表明隐藏单元类型的性能可能是非常反直觉的—因为它处处可导或者因为它不完全饱和,在实际应用中其性能并不优于ReLu
ELU ELU有ReLU的基本所有优点; 不会有Dead ReLU问题; 不会有Dead ReLU问题 计算量稍大。类似于Leaky ReLU,理论上虽然好于ReLU,但在实际使用中目前并没有好的证据ELU总是优于ReLU

ReLu和它的扩展都基于它们的行为更加接近线性,使模型更容易优化。
softmax是一种用于输出的单元,有时也可以用作激活函数。softmax单元表示具有 k k k 个可能值的离散型随机变量的概率分布,可以作为一种开关。具体可参考softmax1、softmax2

你可能感兴趣的:(神经网络,神经网络,激活函数)