前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >循环神经网络(RNN)是如何循环的?

循环神经网络(RNN)是如何循环的?

原创
作者头像
enenbobu
修改2019-08-27 10:27:42
1.9K0
修改2019-08-27 10:27:42
举报
文章被收录于专栏:数据探索君数据探索君

循环神经网络(RNN:Recurrent Neural Network)是一种主要用于处理和预测序列数据的神经网络。

何为循环?

顾名思义,一个时序当前的状态又被输入到网络中,和下一时刻的输入一起被训练,形成了回路,称之为循环。

如下图所示,状态和输出是两个变量,区别在于通常网络训练输出的状态还要经过一层全连接层才输出作为最终当前时刻的输出结果。

RNN向前传播示意图
RNN向前传播示意图

RNN按时间的维度展开为前馈神经网络长这样:

RNN按时间展开示意图
RNN按时间展开示意图

每个时刻有两个输入一个输出:输入上一时刻的状态参数和当前时刻的输入参数,输出当前时刻的训练结果。

每个时刻的训练模块的参数都是共享的,即所有时刻的训练模块都相同,只是输入的信息不同而已。

为什么用循环神经网络处理时序问题?

时序数据的时序信息往往也隐藏着重要的信息,当前时刻的数据与过往时刻的数据之间不是独立的,充分利用好之前时刻数据的隐藏信息,能够帮助我们更好地预测下一时刻的结果。

例子:文本输入预测

前一时刻的单词:小孩

当前时刻单词:喜欢吃

需预测下一时刻单词,“糖”的概率就很大。如果单看当前时刻单词“喜欢吃”,根据词性动词,可以预测下一时刻单词很大概率为名词,名词可选的范围非常大,但是如果加上前一时刻的主语“小孩”,那么名词可选的范围就大大缩小了。因此,前一时刻的数据提供了非常大的信息量。

更长一点的粒子:

今天小明出往晚了,错过了公交,路上的钱包被小偷偷走了,也没有电话和钥匙,公司好远上班肯定得迟到又要扣工资了,小明心情很——

单看“小明心情很”,后面预测开心和伤心的概率差不多大,但是如果结合前面的文字就可以看出,预测伤心的概率远远大于开心的概率。

典型的循环神经网络:LSTM(长短时记忆网络)

LSTM(long short-term memory)主要特点是长与短,指之前时刻的有用数据长度可以不一致,比如上面的例子,”小孩喜欢吃糖”对糖的预测只需要前面五个字“小孩喜欢吃”,而“小明心情很伤心”则需要结合前面几十个文字一起来预测“伤心”。那么,如何实现长短时记忆?答案是使用一个遗忘门------可以理解为一个过滤器,把以往时间的无用信息给过滤掉。除了无用信息,以往时刻的信息中也有有用的信息,则通过输入门把过滤出来的有用信息加入到当前网络中用之预测结果。

LSTM示意图
LSTM示意图

输入门

输入门输入的参数:当前时刻的输入、前一时刻的输出。

作用:把以往时刻有用的信息加入到网络中。

遗忘门

遗忘门输入的参数:上一时刻状态、上一时刻输出、当前时刻的输入。

作用:把以往时刻无用的信息过滤掉(忘记)。

输出门

输出门输入的参数:当前状态(由通过输入门和遗忘门的信息汇聚而成)、上一个时刻的输出、当前时刻的输入。

作用:预测当前时刻的结果。

可以看到,当前时刻的输入和上一时刻的输出都在三个门输入,那岂不是信息重复输入了吗?其实,当前时刻的输入和上一时刻的输出共同作用于输入门和遗忘门,共同决定哪些信息生成当前时刻的新状态。当前时刻的新状态可以看成是网络把以往有用的信息都提炼了出来,即记忆。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 何为循环?
  • 为什么用循环神经网络处理时序问题?
  • 典型的循环神经网络:LSTM(长短时记忆网络)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档