一、RNN简介

循环神经网络(Recurrent Neural Network,RNN)是一类专门用于处理时序数据样本的神经网络,它的每一层不仅输出给下一层,同时还输出一个隐状态,给当前层在处理下一个样本时使用。就像卷积神经网络可以很容易地扩展到具有很大宽度和高度的图像,而且一些卷积神经网络还可以处理不同尺寸的图像,循环神经网络可以扩展到更长的序列数据,而且大多数的循环神经网络可以处理序列长度不同的数据(for 循环,变量长度可变)。它可以看作是带自循环反馈的全连接神经网络。

 

RNN符合带时间序列的任务场景,前后关联强

  • 标准神经网络做NLP的建模弊端:
  1. 输入和输出数据再不同例子中可能有不同的长度
  2. 不共享从文本的不同位置学到的特征
  3. 参数量巨大
  4. 没有办法体现时序上的前因后果
  • RNN特点:
  1. 串联结构,体现出前因后果,后面结果的生成,要参考前面的信息
  2. 所有特征共享同一套参数
  • 缺点:
  1. 序列太长时,容易导致梯度消失。参数更新只能捕捉到局部依赖关系,没法再捕捉序列之间的长期关联或者依赖关系

  随着距离的增加,RNN无法有效的利用历史信息。在理论上,RNN绝对有能力处理这样的“长依赖”问题。人们可以仔细挑选参数来解决这种形式的问题。 可悲的是,在实践中,RNN似乎无法学习到这些特征。HochreiterBengio,曾经深入的研究过这个问题,他们发现一些根本性的原因,能够解释RNN为什么不work。

 二、LSTM

  • 可以有效的解决梯度消失、梯度爆炸问题
  • 长短记忆神经网络——通常称作LSTM,是一种特殊的RNN,能够学习长的依赖关系。

 三、GRU

GRU(Gate Recurrent Unit)是循环神经网络(Recurrent Neural Network, RNN)的一种。和LSTM(Long-Short Term Memory)一样,也是为了解决长期记忆和反向传播中的梯度等问题而提出来的。

GRU和LSTM在很多情况下实际表现上相差无几

我们在我们的实验中选择GRU是因为它的实验效果与LSTM相似,但是更易于计算。

相比LSTM,使用GRU能够达到相当的效果,并且相比之下更容易进行训练,能够很大程度上提高训练效率,因此很多时候会更倾向于使用GRU。