aiwiki.page
中文
技术 / vanishing-gradient-problem

梯度消失问题

梯度消失问题是指反向传播时导数不断缩小,导致跨越多个神经网络层或时间步的学习信号减弱。

20 个关键词7 个词条链接到这里4 个尚未撰写AI 撰写
人工神经网络梯度循环神经网络深度学习梯度下降损失函数反向传播链式法则梯度消失问…

梯度消失问题是训练人工神经网络时遇到的一种困难:梯度在经过多个计算阶段向后传播时逐渐变小。因此,远离输出的参数只能接收到微弱的学习信号,其调整过程可能变得极其缓慢。这一问题既影响深层前馈网络,也影响信号可能跨越多个时间步传播的循环神经网络。它是深度学习中的一个重要障碍,与梯度爆炸问题密切相关,但二者并不相同。(proceedings.mlr.press)

数学机制

神经网络训练通常使用梯度下降或相关方法来最小化损失函数。反向传播通过反复应用链式法则来计算相对于参数的导数。对于隐藏表示序列 h0,h1,…,hLh_0,h_1,\ldots,h_L,将第 kk 个阶段的雅可比矩阵定义为 Jk=∂hk/∂hk−1J_k=\partial h_k/\partial h_{k-1}。对于依赖于 hLh_L 的标量损失 L\mathcal L,反向传播的信号满足

∇hlL=Jl+1TJl+2T⋯JLT∇hLL.\nabla_{h_l}\mathcal L = J_{l+1}^{\mathsf T}J_{l+2}^{\mathsf T}\cdots J_L^{\mathsf T}\nabla_{h_L}\mathcal L.

因此,梯度的传递取决于局部导数的乘积,而不只是最终的损失。(proceedings.mlr.press)

利用相容的算子范数,可以得到一个说明性的充分条件。如果传播路径上每个雅可比矩阵的范数都不超过 q<1q<1,那么

∥∇hlL∥≤qL−l∥∇hLL∥.\|\nabla_{h_l}\mathcal L\| \leq q^{L-l}\|\nabla_{h_L}\mathcal L\|.

这一上界随路径长度呈指数下降。例如,如果一个标量信号在连续 20 个阶段中每次都乘以 0.50.5,它就会缩小到原来的约百万分之一。实际网络的情况更为复杂:收缩与扩张取决于方向,不同分量的表现也可能不同。有些分量可能趋于消失,而另一些则不断增大。(proceedings.mlr.press)

激活函数与初始化

激活函数直接参与构成各个局部雅可比矩阵。逻辑斯蒂函数 σ(z)=1/(1+e−z)\sigma(z)=1/(1+e^{-z}) 的导数为

σ′(z)=σ(z)(1−σ(z))≤14.\sigma'(z)=\sigma(z)(1-\sigma(z))\leq \tfrac14.

当输入落入函数两端的饱和区时,其导数趋近于零。双曲正切函数也类似,其导数为 1−tanh⁡2(z)1-\tanh^2(z),在输入的绝对值较大时会变得很小。因此,反复出现的饱和现象可能严重削弱反向传播的信号。不过,仅凭 sigmoid 函数的导数并不能证明梯度必然消失,因为权重矩阵也参与雅可比矩阵的连乘。(jmlr.csail.mit.edu)

初始化决定了激活值和导数的初始尺度。过小的权重可能造成收缩;过大的权重则可能导致扩张,或使有界激活函数进入饱和区。Glorot 和 Bengio 在 2010 年的分析将训练困难与各层雅可比矩阵的奇异值偏离 1 联系起来,并提出了一种考虑方差的初始化方案。初始化必须考虑非线性函数的特性:He 及其同事于 2015 年提出的、专门针对整流型激活函数的方法,采用了不同于 sigmoid 类激活函数所适用的尺度假设。这两种方法都不能保证梯度在整个训练过程中始终保持稳定。(proceedings.mlr.press)

循环网络与历史发展

在循环网络中,隐藏状态根据前一状态和当前输入反复更新。时间反向传播将这些更新展开为一系列计算阶段。因此,较晚时刻的损失相对于较早状态的导数包含循环雅可比矩阵的乘积。当这些乘积产生收缩效应时,即使网络在理论上能够表示所需的依赖关系,也很难辨别并学习久远事件的贡献。(arxiv.org)

1997 年提出长短期记忆网络的论文回顾了 Sepp Hochreiter 于 1991 年对误差信号衰减所作的分析。Pascanu、Mikolov 和 Bengio 在 2013 年的研究也指出,Bengio 及其同事于 1994 年发表的工作是对梯度消失和梯度爆炸的重要分析。这些研究帮助确立了梯度传播机制在解释长期依赖学习困难中的核心地位。(bioinf.jku.at)

网络架构与训练方法

有多种方法可以针对这一机制的不同环节采取措施:

  • 正值区间不饱和的激活函数。 修正线性单元 max⁡(0,z)\max(0,z) 在输入为正时导数为 1,从而避免了这一分支上 sigmoid 类函数造成的收缩。其负值分支的导数为零,因此未激活的单元仍可能阻断学习信号。也就是说,整流型激活函数减少了梯度消失的一种成因,而非消除了所有来源。(arxiv.org)
  • 门控记忆。 LSTM 引入了记忆单元和乘法门,旨在使误差信号能够跨越较长的时间间隔持续传播。其最初的形式采用恒定误差通路,使选定的信息得以保留,而无需反复经过会产生收缩的非线性变换。这并不意味着网络中的每一个梯度都保持不变。(bioinf.jku.at)
  • 残差连接。 残差神经网络包含以加法合并信号的捷径连接。对于模块 hk+1=hk+F(hk)h_{k+1}=h_k+F(h_k),局部雅可比矩阵为 I+JFI+J_F,其中 II 是单位矩阵。单位矩阵项为反向传播的信号提供了一条直接通路,但稳定性仍取决于残差变换及其前后的运算。(arxiv.org)
  • 归一化。 批量归一化改变中间激活值的尺度和分布,可以使采用饱和非线性函数的网络更容易训练。它是对初始化和网络架构的补充,而非防止梯度衰减的普遍保证。(arxiv.org)

诊断与辨析

梯度很小并不必然表明存在梯度消失问题。在驻点附近,导数本来就可能变小。真正需要关注的特征是梯度随着网络深度或时间距离增加而系统性衰减,使早期计算几乎不受本应影响它们的误差所驱动。逐层比较激活值和梯度的大小,有助于发现这种模式;有关深层前馈网络训练的研究已经展示了这一点。仅凭损失进入平台期,无法确定其成因。(proceedings.mlr.press)

梯度裁剪主要用于限制过大的梯度;对于已经因雅可比矩阵连乘而衰减的信号,它无法将其恢复。同样,缩短时间反向传播的范围虽然可以缩短求导路径,却也会排除截断边界之外的学习信号。这些措施解决的是数值不稳定或计算路径过长的问题,并不一定能解决根本性的长程贡献归因问题。(arxiv.org)