一、RNN简介
循环神经网络(Recurrent Neural Network,RNN)是一类专门用于处理时序数据样本的神经网络,它的每一层不仅输出给下一层,同时还输出一个隐状态,给当前层在处理下一个样本时使用。就像卷积神经网络可以很容易地扩展到具有很大宽度和高度的图像,而且一些卷积神经网络还可以处理不同尺寸的图像,循环神经网络可以扩展到更长的序列数据,而且大多数的循环神经网络可以处理序列长度不同的数据(for 循环,变量长度可变)。它可以看作是带自循环反馈的全连接神经网络。
RNN符合带时间序列的任务场景,前后关联强
- 标准神经网络做NLP的建模弊端:
- 输入和输出数据再不同例子中可能有不同的长度
- 不共享从文本的不同位置学到的特征
- 参数量巨大
- 没有办法体现时序上的前因后果
- RNN特点:
- 串联结构,体现出前因后果,后面结果的生成,要参考前面的信息
- 所有特征共享同一套参数
- 缺点:
- 序列太长时,容易导致梯度消失。参数更新只能捕捉到局部依赖关系,没法再捕捉序列之间的长期关联或者依赖关系
随着距离的增加,RNN无法有效的利用历史信息。在理论上,RNN绝对有能力处理这样的“长依赖”问题。人们可以仔细挑选参数来解决这种形式的问题。 可悲的是,在实践中,RNN似乎无法学习到这些特征。Hochreiter和Bengio,曾经深入的研究过这个问题,他们发现一些根本性的原因,能够解释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。