您的位置:首页 > 理论基础 > 计算机网络

循环神经网络

2020-03-08 14:45 1011 查看

前言

循环神经网络( Recurrent Neural Networks,RNN),一类用于处理可变长度的序列数据的神经网络,其主要用途是处理和预测序列数据。

在全连接神经网络或卷积神经网络中,网络结果都是从输入层到隐含层再到输出层,层与层之间是全连接或部分连接的,但每层之间的结点是无连接的。

考虑这样一个问题,如果要预测句子的下一个单词是什么,一般需要用到当前单词以及前面的单词,因为句子中前后单词并不是独立的,比如,当前单词是“很”,前一个单词是“天空”,那么下一个单词很大概率是“蓝”。循环神经网络的来源就是为了刻画一个序列当前的输出与之前信息的关系。从网络结果上来说,RNN会记忆之前的信息,并利用之前的信息影响后面的输出。也就是说,RNN的隐藏层之间的结点是有连接的,隐藏层的输入不仅包括输入层的输出,还包含上一时刻隐藏层的输出。网络会对前面的信息进行记忆,保存在网络的内部状态中,并应用于当前输出的计算中,即隐含层之间的节点不再无连接而是有链接的,并且隐含层的输入不仅包含输入层的输出还包含上一时刻隐含层的输出。理论上,循环神经网络能够对任何长度的序列数据进行处理,但是在实践中,为了减低复杂性往往假设当前的状态只与前面的几个状态相关。

典型的RNN结构如下图所示,对于RNN来说,一个非常重要的概念就是时刻,RNN会对于每一个时刻的输入结合当前模型的状态给出一个输出,从图中可以看出,RNN的主体结构A的输入除了来自输入层的Xt,还有一个循环的边来提供当前时刻的状态。同时A的状态也会从当前步传递到下一步。

我们将这个循环展开,可以很清晰地看到信息在隐藏层之间的传递:
链式的特征揭示了 RNN 本质上是与序列和列表相关的。他们是对于这类数据的最自然的神经网络架构。在过去几年中,应用 RNN 在语音识别,语言建模,翻译,图片描述等问题上已经取得一定成功,并且这个列表还在增长。

t 时刻RNN模型的输出:

需要注意的是:在传统神经网络中,每一个网络层的参数是不共享的。而在循环神经网络(RNN)中,每输入一步,每一层各自都共享参数U,V,W,其反映着循环神经网络(RNN)中的每一步都在做相同的事,只是输入不同。因此,这大大降低了网络中需要学习的参数。具体的说是,将循环神经网络(RNN)进行展开,这样变成了多层的网络,如果这是一个多层的传统神经网络,那么xtxt到stst之间的U矩阵与xt+1xt+1到st+1st+1之间的U是不同的,而循环神经网络(RNN)中的却是一样的,同理对于隐含层与隐含层之间的W、隐含层与输出层之间的V也是一样的。

图中每一步都会有输出,但是每一步都要有输出并不是必须的。比如,我们需要预测一条语句所表达的情绪,我们仅仅需要关系最后一个单词输入后的输出,而不需要知道每个单词输入后的输出。同理,每步都需要输入也不是必须的。循环神经网络(RNN)的关键之处在于隐含层,隐含层能够捕捉序列的信息。

  • 点赞
  • 收藏
  • 分享
  • 文章举报
ClimberSky 发布了2 篇原创文章 · 获赞 0 · 访问量 157 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: