
2.2.2 常用激活函数
人工神经元模型采用不同的变换函数,用来执行对该神经元获得的网络输入的变换,这个就是激活函数,也称为激励函数、活化函数,使神经元具有不同的信息处理特征。用φ表示为y=φ(v),利用诱导局部域v定义神经元的输出。下面介绍几种常用的激活函数。
(1)阈值函数。
阈值函数又叫阶跃函数,图2-3(a)所示为常用的单极性阈值函数,用下式定义:

有时还将式(2-9)中的0变为-1,此时就变成了双极形式,如图2-3(b)所示,定义为


图2-3 阈值函数
(2)Sigmoid函数。
Sigmoid函数图形是S形的,称为S型函数,又叫压缩函数,是严格递增函数。它对信号有较好的增益控制,当v的值比较小时,φ(v)有较大的增益;当v的值比较大时,φ(v)有较小的增益,这为防止网络进入饱和状态提供了良好的支持。常用下面两种形式。
① logistic函数。
logistic函数叫逻辑特斯函数,应用非常广泛,其一般形式为

其中,a是Sigmoid函数的倾斜参数。实际上,它在原点的倾斜度等于a/4,其值域是[0,1],其图形如图2-4(a)所示。
② tanh函数。
tanh函数也称为双曲正切函数,定义为

tanh函数的值域是[-1,1],其图形如图2-4(b)所示。

图2-4 Sigmoid函数图形
③ 分段线性函数。
分段线性函数也称为非线性斜面函数,是简单的非线性函数,在一定区间内满足线性关系。单极性分段线性函数表达式为

其中,k为线性段的斜率,图2-5(a)给出了该函数的曲线。而双极性分段线性函数的曲线如图2-5(b)所示,其表达式如下:


图2-5 分段线性函数图形
④ 概率型激活函数。
概率型激活函数的神经元模型的输入与输出之间的关系是不确定的,需要一个随机函数来描述其输出状态为1或0的概率。设神经元模型输出为1的概率为

其中,T为温度参数。由于该函数的神经元模型的输出状态分布与热力学中的玻尔兹曼(Boltzmann)分布相类似,因此这种神经元模型也称为热力学模型。
(3)ReLU函数。
ReLU(Rectified Linear Unit,修正线性单元)函数也叫Rectifier函数,是目前深度神经网络中经常使用的激活函数。ReLU函数实际上是一个斜坡函数,定义为

在实际使用中,为了避免上述情况,有几种ReLU函数的变种也会被广泛使用。
① 带泄漏的ReLU(Leaky ReLU)函数。
在输入x<0时,保持一个很小的梯度γ。这样,当神经元处于非激活状态时,也能有一个非零的梯度可以更新参数,避免永远不能被激活。带泄漏的ReLU函数的定义如下:

其中,γ是一个很小的常数,如0.01。当γ<1时,带泄漏的ReLU函数也可以写为
LeakyReLU (x)=max (x,γx)
② 带参数的ReLU函数。
带参数的ReLU(Parametric ReLU,PReLU)函数引入一个可学习的参数,不同神经元可以有不同的参数。对于第i个神经元,其PReLU函数的定义为

其中,γi为x≤0时函数的斜率。因此,PReLU是非饱和函数,如果γi=0,那么PReLU函数就退化为ReLU函数;如果γi为一个很小的常数,则PReLU函数可以看作带泄漏的ReLU函数。PReLU函数可以允许不同神经元具有不同的参数,也可以一组神经元共享一个参数。
③ ELU函数。
ELU(Exponential Linear Unit,指数线性单元)是一个近似的零中心化非线性函数,其定义为

其中,γ≥0,是一个超参数,决定x≤0时的饱和曲线,并调整输出均值在0附近。
④ Softplus函数。
Softplus函数可以看作ReLU函数的平滑版本,其定义为

Softplus函数的导数刚好是logistic函数。Softplus函数虽然也具有单侧抑制、宽兴奋边界的特性,却没有稀疏激活性。
图2-6给出了ReLU、Leaky ReLU、ELU及Softplus函数的示例。

图2-6 ReLU、Leaky ReLU、ELU及Softplus函数的示例