RNN的简单整理

之前大致写了一个逐字稿
RNN的简单整理

为什么需要RNN?

在讲RNN的原理之前,我们需要知道RNN的概念从何而来。之前我们已经了解了CNN,和最基本的神经网络相比,CNN关注到输入对象比如一张图片中一个像素和周围像素之间的关系,可以说是从空间特征来认识一个事物。而与空间相对应的,那RNN就是针对于输入对象的时间特征来做研究的。比如在一句话、一段文字中,后序列的内容依赖于前面的内容,那么根据这样一些事物的先后序列特征,我们就可以开发出更适用于它们的神经网络,也就是RNN。也因此,RNN在nlp中有着相对广泛的应用。

RNN

所以,我们现在知道了要关注事物的时间序列,那么如何让神经网络来注意到这一点呢?RNN给出的答案是记忆,我们希望神经网络在分析这个字的时候,会受到上一个字的影响,就好像是我们记着之前的字来分析当前的字,因此我们需要有一个状态来帮我们保留着分析完上一个字之后的感受,也就是结构图中的S。
RNN的简单整理
RNN的简单整理
那么S是如何来进行作用的呢?我们把S展开,他大致应该是这样的。其中,每一个状态St都是关于当前输入Xt和上一个状态St-1的函数,他的值和当前输入和上一状态都有关,也就实现了类似记忆的效果。

LSTM

那么我们知道,人的记忆很复杂,记住了有时也会忘记。所以根据忘记的这一特性,就又提出了LSTM模型,也就是Long Short Term Memory,和基本的RNN相比,能够比较好地解决在训练模型时误差反向传递可能导致的梯度消失或梯度爆炸的问题。
RNN的简单整理
LSTM的结构如图,他比一般的RNN在S的前中后分别加了一个Gate,也就相当于一个权重。第一个Gate来控制在输入时是否要将这个字记住,因为一句话中可能有一些是废话,不应该影响我的判断;最后的Gate判断在输出时是否要将把当前记忆读出;中间的Gate决定是否要忘记之前的记忆,比如一个人说了一大堆,然后突然来了一个but,结果后面的才是关键,那就需要对之前的有所遗忘。