循环神经网络(RNN)原理以及实战

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/john_bh/article/details/80353436

一. RNN的网络结构及原理

一般的神经网络应该有的结构如下图所示:


这里写图片描述
图一 神经网络结构

既然我们已经有了人工神经网络和卷积神经网络,为什么还要循环神经网络?
因为无论是卷积神经网络,还是人工神经网络,他们的前提假设都是:元素之间是相互独立的,输入与输出也是独立的,比如猫和狗。 但现实世界中,很多元素都是相互连接的,某些任务需要能够更好的处理序列的信息,即前面的输入和后面的输入是有关系的。比如股票随时间的变化;或者比如说当我们在理解一句话意思时,孤立的理解这句话的每个词是不够的,我们需要处理这些词连接起来的整个序列;当我们处理视频的时候,我们也不能只单独的去分析每一帧,而要分析这些帧连接起来的整个序列

一句话:我昨天上学迟到了,老师批评了____。

这里填空,人应该都知道是填“我“。因为我们是根据上下文的内容推断出来的,但计算机要做到这一步就相当得难了。因此,就有了现在的循环神经网络(Recurrent Neural Network),它的本质是:像人一样拥有记忆的能力。因此,他的输出就依赖于当前的输入和记忆。

RNN网络引入定向循环,能够处理那些输入之间前后关联的问题。打破了传统神经网络结构层与层之间全连接,每层节点之间无连接的转态,不在是输入-隐层-输出的模式。
RNN的目的:处理序列数据
RNN的内容:一个序列当前的输出与前面的输入也有关系。
RNN的具体做法:网络会对前面的信息进行记忆,并应用于当前输出的计算中,即隐层之间的节点不再无连接,并且隐层的输入不仅包括输入层的输出,还包括上一时刻隐层的输出。
RNN的功能特点:1、隐层节点之间可以互连也可以自连2、网络共享权重U、V、W3、RNN网络中,每一步的输出不是必须的,每一步的输入也不是必须的。
RNN用途:语言模型和文本生成研究、机器翻译、语音识别、图像描述生成。
循环神经网络种类繁多,基本循环神经网络结构如下图,它由输入层、一个隐藏层和一个输出层组成,把序列按时间展开:


这里写图片描述
图二 循环神经网络结构

其中每个圆圈可以看作是一个单元,而且每个单元做的事情也是一样的,因此可以折叠呈左半图的样子。用一句话解释RNN,就是一个单元结构重复使用

  • xt是时间t处的输入 ;
  • st是时间t处的“记忆”,St=f(UXt+WSt−1),f可以是tanh等 ;
  • ot是时间t出的输出,比如是预测下个词的话,可能是softmax输出的属于每个候选词的概率

循环神经网络在t时刻接收到输入xt之后,隐藏层的值是st,输出值是ot。关键一点是,st的值不仅仅取决于xt,还取决于st1。我们可以用下面的公式来表示循环神经网络的计算方法:
(式1)ot=g(Vst)
(式2)st=f(Uxt+Wst1)
式1是输出层的计算公式,输出层是一个全连接层,也就是它的每个节点都和隐藏层的每个节点相连。V是输出层的权重矩阵,g是激活函数。式2是隐藏层的计算公式,它是循环层。U是输入x的权重矩阵,W是上一次的值作为这一次的输入的权重矩阵,f是激活函数。
循环层和全连接层的区别就是循环层多了一个权重矩阵 W。如果反复把式2带入到式1,我们将得到:

(3)ot=g(Vst)(4)=Vf(Uxt+Wst1)(5)=Vf(Uxt+Wf(Uxt1+Wst2))(6)=Vf(Uxt+Wf(Uxt1+Wf(Uxt2+Wst3)))(7)=Vf(Uxt+Wf(Uxt1+Wf(Uxt2+Wf(Uxt3+Wst4))))

从上面可以看出,循环神经网络的输出值,是受前面历次输入值xtxt1xt2xt3、…影响的,这就是为什么循环神经网络可以往前看任意多个输入值的原因。
RNN中的结构细节:

  1. 可以把st当作隐状态,捕捉了之前时间点上的信息。就像你去考研一样,考的时候记住了你能记住的所有信息。
  2. ot是由当前时间以及之前所有的记忆得到的。就是你考研之后做的考试卷子,是用你的记忆得到的。
  3. 很可惜的是,st并不能捕捉之前所有时间点的信息。就像你考研不能记住所有的英语单词一样。
  4. 和卷积神经网络一样,这里的网络中每个cell都共享了一组参数(U,V,W),这样就能极大的降低计算量了。
  5. ot在很多情况下都是不存在的,因为很多任务,比如文本情感分析,都是只关注最后的output结果的。就像考研之后选择学校,学校不会管你到底怎么努力,怎么心酸的准备考研,而只关注你最后考了多少分。

RNN训练:采用BP误差反向传播算法、梯度下降算法。

二. RNN的改进

RNN网络的改进模型:SRN、BRNN、LSTM、GRU、Deep BRNN、ESN、CW-RNN。

2.1.双向RNN

2.2. 深层双向RNN

五. Pyramidal RNN

六.RNN的训练-BPTT

七.RNN与CNN的结合应用:看图说话

八.RNN项目练手

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页