激活函数(ReLU, Swish, Maxout)

  • Post author:
  • Post category:其他


神经网络中使用激活函数来加入非线性因素,提高模型的表达能力。

ReLU(Rectified Linear Unit,修正线性单元)

形式如下:


\[ \begin{equation} f(x)= \begin{cases} 0, & {x\leq 0} \\\\ x, & {x\gt 0} \end{cases} \end{equation} \]


ReLU

公式近似推导::


\[ \begin{align} f(x) &=\sum_{i=1}^{\inf}\sigma(x-i+0.5) &\text{(stepped sigmoid)} \\\\ &\approx\log(1+e^x) &\text{(softplus function)} \\\\ &\approx\max(0,x+N(0,1)) &\text{(ReL function)} \\\\ 其中\sigma(z) &={1\over 1+e^{-z}} &\text{(sigmoid)} \end{align} \]

下面解释上述公式中的softplus,Noisy ReLU.


softplus

函数与ReLU函数接近,但比较平滑, 同ReLU一样是单边抑制,有宽广的接受域(0,+inf), 但是由于指数运算,对数运算计算量大的原因,而不太被人使用.并且从一些人的使用经验来看(Glorot et al.(2011a)),效果也并不比ReLU好.

softplus的导数恰好是sigmoid函数.

softplus 函数图像

:

softplus


Noisy ReLU



1



ReLU可以被扩展以包括高斯噪声(Gaussian noise):


\(f(x)=\max(0,x+Y), Y\sim N(0,\sigma(x))\)


Noisy ReLU 在受限玻尔兹曼机解决计算机视觉任务中得到应用.


ReLU上界设置

: ReLU相比sigmoid和tanh的一个缺点是没有对上界设限.在实际使用中,可以设置一个上限,如ReLU6经验函数:

\(f(x)=\min(6,\max(0,x))\)

. 参考这个上限的来源论文:

Convolutional Deep Belief Networks on CIFAR-10. A. Krizhevsky


ReLU的稀疏性

(摘自

这里

):

当前,深度学习一个明确的目标是从数据变量中解离出关键因子。原始数据(以自然数据为主)中通常缠绕着高度密集的特征。然而,如果能够解开特征间缠绕的复杂关系,转换为稀疏特征,那么特征就有了鲁棒性(去掉了无关的噪声)。稀疏特征并不需要网络具有很强的处理线性不可分机制。那么在深度网络中,对非线性的依赖程度就可以缩一缩。一旦神经元与神经元之间改为线性激活,网络的

非线性部分

仅仅来自于神经元部分选择性激活。

对比大脑工作的95%稀疏性来看,现有的计算神经网络和生物神经网络还是有很大差距的。庆幸的是,ReLu只有负值才会被稀疏掉,即引入的稀疏性是可以训练调节的,是动态变化的。只要进行梯度训练,网络可以向误差减少的方向,自动调控稀疏比率,保证激活链上存在着合理数量的非零值。

ReLU 缺点

  • 坏死: ReLU 强制的稀疏处理会减少模型的有效容量(即特征屏蔽太多,导致模型无法学习到有效特征)。由于ReLU在x < 0时梯度为0,这样就导致负的梯度在这个ReLU被置零