RNN 中的梯度消失是否存在问题?

机器算法验证 机器学习 神经网络
2022-04-05 18:33:26

RNN 训练中经常提到的问题之一是梯度消失问题 [1,2,3,4]。

然而,我遇到了 Anton Maximilian Schaefer、Steffen Udluft 和 Hans-Georg Zimmermann 的几篇论文(例如 [5]),他们声称如果使用共享权重,即使在简单的 RNN 中也不存在问题。

那么,哪一个是正确的——梯度消失问题是否存在?


  1. Y.Bengio 等人很难通过梯度下降学习长期依赖关系。(1994)

  2. S.Hochreiter (1997)学习递归神经网络期间的梯度消失问题和问题解决方案

  3. 递归网络中的梯度流: S.Hochreiter 等人学习长期依赖的难度。(2003)

  4. R.Pascanu 等人关于训练递归神经网络的难度。(2012)

  5. AM Schaefer 等人使用递归神经网络学习长期依赖关系。(2008)

1个回答

首先让我们重申梯度消失的问题。假设您有一个带有 sigmoid 隐藏单元的普通多层感知器。这是通过反向传播训练的。当有许多隐藏层时,误差梯度会随着它从网络的后面移动到前面而减弱,因为 sigmoid 的导数向极点减弱。当您移动到网络前端时,更新将包含较少的信息。

RNN 放大了这个问题,因为它们是通过时间反向传播 (BPTT) 训练的。实际上,反向传播遍历的层数急剧增加。

长短期记忆 (LSTM) 架构通过引入错误门控来避免梯度消失的问题。这允许它通过“错误轮播”学习数据点之间的长期(100+ 步)依赖关系。

训练神经网络的最新趋势是使用校正线性单元,它对梯度消失问题更加稳健。具有稀疏惩罚和整流线性单元的 RNN 显然工作得很好。

请参阅优化循环网络的进展。

从历史上看,神经网络的性能很大程度上取决于许多优化技巧和许多超参数的选择。在 RNN 的情况下,您最好还实现 rmsprop 和 Nesterov 的加速梯度。值得庆幸的是,最近 dropout 训练的发展使神经网络对过度拟合更加稳健。显然,有一些工作可以使 RNN 的 dropout 工作。

请参阅快速辍学及其对循环网络的适用性