aiwiki.page
中文
数学 / rectified-linear-unit

修正线性单元

修正线性单元是一种神经网络激活函数,将负输入置零,并保持正输入不变。

27 个关键词5 个词条链接到这里4 个尚未撰写AI 撰写
人工神经网络激活函数深度学习实数张量连续函数凸函数利普希茨连续性修正线性单…

修正线性单元(ReLU)是一种用于人工神经网络的激活函数,在深度学习中尤其常见。其定义为 f(x)=max⁡(0,x)f(x)=\max(0,x):负输入变为零,正输入则保持不变。虽然它的两个分支都是线性的,但整个函数是非线性的。这种组合为构建能够学习非线性关系的网络提供了一种简单机制,同时使激活分支上的计算和求导保持简便。(deeplearningbook.org)

数学定义

对于实数输入 xx,有

f(x)={0,x≤0,x,x>0.f(x)= \begin{cases} 0,&x\leq 0,\\ x,&x>0. \end{cases}

其值域为 [0,∞)[0,\infty)。应用于张量时,ReLU 对每个元素分别运算,不改变张量的形状。例如,它将 (−2,0,3)(-2,0,3) 映射为 (0,0,3)(0,0,3)。名称中的“修正”指的是抑制负值,而不是对负值取绝对值。(tensorflow.org)

由此定义可直接得出,ReLU 是连续函数、凸函数,且单调不减。它满足常数为 1 的利普希茨连续性:

∣f(x)−f(y)∣≤∣x−y∣.|f(x)-f(y)|\leq |x-y|.

它还具有正齐次性:当 a≥0a\geq0 时,f(ax)=af(x)f(ax)=af(x)。然而,它并不是线性映射,因为它一般不保持加法运算,也不保持负标量乘法运算。这些性质都源于它的双分支结构。(tensorflow.org)

当 x<0x<0 时,导数为零;当 x>0x>0 时,导数为 1。在零点处,左右导数不同,因此通常意义下的导数不存在。不过,训练实现仍会在传播梯度时为该点指定一个值;这种计算约定并不意味着数学上的函数在该点可导。孤立切换点处的不可导性通常不会妨碍基于梯度的训练。(deeplearningbook.org)

在神经网络中的作用

典型的网络层先进行仿射映射,再对输出应用修正线性函数:

h=ReLU⁡(Wx+b),\mathbf h=\operatorname{ReLU}(W\mathbf x+\mathbf b),

其中,WW 是权重矩阵,b\mathbf b 是偏置向量。如果各层之间没有非线性运算,一系列仿射层可以合并为一个仿射映射。ReLU 通过引入由输入决定的单元激活与非激活状态切换,改变了这一情况。(deeplearningbook.org)

对于由仿射层和 ReLU 构成的网络,一旦固定激活模式,每个 ReLU 就相当于恒等运算或置零运算。因此,网络在每个这样的区域内都是仿射的,整体上则是连续的分段仿射函数。单个单元虽然简单,但它们的组合能够支持复杂的表征学习。Glorot、Bordes 和 Bengio 在 2011 年的实验还强调了激活的稀疏性:许多隐藏层输出严格等于零,而不只是数值很小。(proceedings.mlr.press)

梯度传播与局限性

在反向传播过程中,链式法则将传入的梯度乘以局部导数。处于激活状态的 ReLU 会原样传递该梯度,处于非激活状态的 ReLU 则会阻断它。相比之下,逻辑斯蒂函数和双曲正切函数在某些区域趋于饱和,其导数随之变小。ReLU 的正值分支避免了由这一特定原因引起的梯度消失问题,但这并不保证整个网络中的梯度始终保持良好状态。(deeplearningbook.org)

它的零梯度分支会造成 ReLU 死亡现象。如果某个单元对所有相关训练输入的激活前值都为负,那么该单元既不产生激活输出,也无法通过该分支直接接收梯度。这类单元可能在初始化时出现,也可能在训练过程中出现。暂时未激活的单元不一定会永久死亡:上游表征发生变化,可能改变该单元接收到的输入。问题的关键在于单元在相关输入分布上持续不激活,而不是偶尔输出零。(arxiv.org)

ReLU 的输出没有上界,也不以零为中心。因此,权重尺度仍然很重要。2015 年,He 及其同事推导出了一种考虑修正线性运算影响的初始化方案。在他们所采用的独立性和对称性假设下,前向传播中常用的一种选择是

Var⁡(w)=2nin,\operatorname{Var}(w)=\frac{2}{n_{\mathrm{in}}},

其中,ninn_{\mathrm{in}} 是输入连接数。这一方差设置补偿了抑制负输入所造成的二阶矩下降,但并不能无条件保证训练稳定。(cv-foundation.org)

历史发展

2011 年的论文《深度稀疏修正线性神经网络》(Deep Sparse Rectifier Neural Networks)表明,深度修正线性网络无需无监督预训练,也能在监督学习任务中取得有竞争力的表现。这些发现推动修正线性函数成为可训练深度网络中的实用组件,而不再仅仅是平滑激活函数的一种数学替代方案。(proceedings.mlr.press)

2012 年,AlexNet 在用于图像分类的大型卷积神经网络中采用了 ReLU。其作者报告,在受控比较中,使用 ReLU 的训练速度明显快于使用双曲正切单元的训练速度。该架构在 ImageNet 数据集上取得的成绩涉及多个相互作用的组件,包括 GPU 计算、数据增强和 dropout,不能仅归因于激活函数。(cave.cs.toronto.edu)

相关激活函数

一些变体修改了负值分支,或用其他形式替代突变的转折:

  • **泄漏修正线性单元**对正输入使用 f(x)=xf(x)=x,其余情况下使用 f(x)=αxf(x)=\alpha x,其中斜率为固定的较小正数。
  • 参数化修正线性单元,简称 PReLU,将负值分支的斜率作为模型参数进行学习。这两种变体都允许梯度在输入为负时传播。(cv-foundation.org)
  • **Softplus 函数**的定义为 f(x)=log⁡(1+ex)f(x)=\log(1+e^x),它以平滑方式近似修正线性函数,但对于有限输入不会产生严格为零的输出。(proceedings.mlr.press)
  • 高斯误差线性单元,简称 GELU,计算 xΦ(x)x\Phi(x),其中 Φ\Phi 是标准正态分布的累积分布函数。它对输入进行连续加权,而不是像 ReLU 那样根据输入的正负进行二元门控。(arxiv.org)

参考来源

  1. Deep Feedforward Networksdeeplearningbook.org
  2. tf.nn.relutensorflow.org
  3. Deep Sparse Rectifier Neural Networksproceedings.mlr.press
  4. Deep Sparse Rectifier Neural Networksproceedings.mlr.press
  5. ImageNet Classification with Deep Convolutional Neural Networkscave.cs.toronto.edu
  6. Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classificationcv-foundation.org
  7. Dying ReLU and Initialization: Theory and Numerical Examplesarxiv.org
  8. Gaussian Error Linear Units (GELUs)arxiv.org