循环神经网络中的梯度消失问题及其解决办法

  • Post author:
  • Post category:其他


从直觉上来讲,RNN可以被视为不同层之间共享相同参数的、非常深的前馈网络。对于S-RNN,梯度包括了对于同一个矩阵W的重复的乘法,因而使得梯度非常容易消失或者爆炸。门机制在某种程度上通过避免对单一矩阵进行重复的乘法操作从而缓解了这一问题。

想进一步的了解RNN中的梯度消失和梯度爆炸问题,参考Bengio等人[2016]中的10.7节。想要了解在LSTM(GRU)中使用门结构的动机以及它们和解决RNN中梯度消失问题的关系,参考Cho[2015]课堂笔记4.2和4.3节中的细节。

为了缓解深度神经网络中的梯度消失(gradient vanish)问题,同时也为了更充分地利用已有的训练资源,单独组件的神经网络参数可以先分别在相关任务上进行独立的训练从而得到较好的初始值,再将它们接入更大的级联网络进行进一步精调。例如,我们可以先在一个相对较大的词性标注语料上训练词性预测网络,再将其隐层接入训练数据较少的句法分析网络。当训练数据中同时含有两个任务的直接监督信息时,我们可以创建一个双输出的神经网络,对每一个任务的输出均计算一个单独的损失,并将这两个任务的损失求和从而得到整体损失,根据该损失即可进行误差梯度的反向传播。

在使用卷积,递归和循环神经网络时,模型级联的方法很常用。例如,可以使用循环神经网络先将句子编码为一个定长向量,再将该向量作为另一个网络的输入。该循环神经网络的监督信号则主要来自于其上层网络。