RNN、LSTM和GRU的简单介绍

1、RNN(Recurrent Neural Network,循环神经网络)

1.1为什么会有RNN的出现?
  因为以往的神经网络都只能单独的取处理一个个的输入,前一个输入和后一个输入是完全没有关系的。但是现实生活中很多情况是,这一个的输入需要参照前面一个的输入的.
  比如,当我们在理解一句话意思时,孤立的理解这句话的每个词是不够的,我们需要处理这些词连接起来的整个序列; 当我们处理视频的时候,我们也不能只单独的去分析每一帧,而要分析这些帧连接起来的整个序列。(用联系的眼光去看待各个神经元,而不是孤立而片面地去看待每个神经元)

1.2RNN的结构?
RNN、LSTM和GRU的简单介绍

这个网络在t时刻接收到输入xt之后,隐藏层的值是 st,输出值是Ot。关键一点是, st的值不仅仅取决于xt,还取决于 s(t-1) 。我们可以用下面的公式来表示循环神经网络的计算方法:

用公式表示如下(为了方便理解,没有加入偏置b):
RNN、LSTM和GRU的简单介绍

2、LSTM(Long Short Term Memory networks,长短期记忆网络)

2.1为什么会出现LSTM

有时候,我们仅仅需要知道先前的信息来执行当前的任务。例如,我们有一个语言模型用来基于先前的词来预测下一个词。如果我们试着预测 “the clouds are in the sky” 最后的词,我们并不需要任何其他的上下文 —— 因此下一个词很显然就应该是 sky。在这样的场景中,相关的信息和预测的词位置之间的间隔是非常小的,RNN 可以学会使用先前的信息。
RNN、LSTM和GRU的简单介绍

但是同样会有一些更加复杂的场景。假设我们试着去预测“I grew up in France… I speak fluent French”最后的词。当前的信息建议下一个词可能是一种语言的名字,但是如果我们需要弄清楚是什么语言,我们是需要先前提到的离当前位置很远的 France 的上下文的。这说明相关信息和当前预测位置之间的间隔就肯定变得相当的大。
RNN、LSTM和GRU的简单介绍

不幸的是,在这个间隔不断增大时,RNN 会丧失学习到连接如此远的信息的能力。于是,就出现了一种特殊的RNN来解决这种长期依赖的问题,即LSTM,长短期记忆网络。

2.2LSTM的结构
普通的RNN模型中,其重复神经网络模块的链式模型如下图所示,这个重复的模块只有一个非常简单的结构,一个单一的神经网络层(例如tanh层),这样就会导致信息的处理能力比较低。普通的RNN结构如下图:
RNN、LSTM和GRU的简单介绍
而LSTM在此基础上将这个结构改进了,不再是单一的神经网络层,而是4个,并且以一种特殊的方式进行交互:

RNN、LSTM和GRU的简单介绍
粗看起来,这个结构有点复杂,不过不用担心,接下来我们会慢慢解释。在解释这个神经网络层时我们先来认识一些基本的模块表示方法。图中的模块分为以下几种:

RNN、LSTM和GRU的简单介绍

黄色方块: 表示一个神经网络层(Neural Network Layer);
粉色圆圈: 表示按位操作或逐点操作(pointwise operation),例如向量加和、向量乘积等;
单箭头: 表示信号传递(向量传递);
合流箭头: 表示两个信号的连接(向量拼接);
分流箭头: 表示信号被复制后传递到2个不同的地方。
下面我们将分别介绍这些模块如何在LSTM中作用。

注:
本文部分内容来自:
①知乎作者忆臻《一文搞懂RNN(循环神经网络)基础篇》
原文链接:https://zhuanlan.zhihu.com/p/30844905
②简书作者:朱小虎XiaohuZhu
原文链接:https://www.jianshu.com/p/9dc9f41f0b29
③知乎作者:沙漏
原文链接:https://zhuanlan.zhihu.com/p/104475016