用中文传话游戏理解 RNN
循环神经网络(RNN)是人工神经网络中非常流行的一个版本,其可以很好地处理序列数据类型。该数据类型指的是将一组数据点以特定顺序排列,从而使相关的数据点一个挨着一个,具体的例子有:股票市场价格、音频和视频数据、DNA 序列、传感器数据、自然语言文本等等。
为了直观地了解 RNN 是如何工作的,假设我们正在玩一个很受欢迎的儿童游戏——中文传话。该游戏的目的是最后一个人能准确预测出句子中所漏掉的词语,比如「The brown dog has four _____」。
中文传话游戏
玩家们需要排成一队,并且根据句子中词语的排列,每个人都会得到其中的一个词语,比如玩家 1 得到词语「the」,玩家 2 得到词语「brown」,玩家 3 得到词语「dog」,以此类推。首先,队伍中的第一个人把他听到的词语悄悄地告诉队伍中站在他身后的玩家。然后这个玩家将这个词语和自己的词语一起悄悄地告诉他身后的人。接下来,整个队伍不断重复这个过程直到最后一个玩家。最后的玩家需要预测出所漏掉的词语,并大声地把这个消息告诉整个集体。
显而易见的是,最后一个玩家可以准确地猜出漏掉的词语是「legs」。这是因为前一个玩家告诉了他这个句子的前面部分:「The brown dog has four」,所以他能够通过该语境推导出这个词语。
上文说明了 RNN 的基本原理。通过提取序列之前的信息,并结合序列当前的输入,该网络能够预测出序列的下一个输出。
RNN 的展开
由上文可知,RNN 能够通过对整个序列重复同样的过程,从而做出预测。左下图显示了循环网络的基本结构。它同时接收序列数据输入向量(x)和隐藏状态信息(a),然后使用二者去预测序列数据的输出。
为了正确地将系统工作方式可视化,我们通常把 RNN 展开成与序列数据长度一致的一连串重复的单元或称之为时间步(如右上图所示)。比如我们需要处理的序列是一个有三个词语的句子时,那么其将被展开成有三个时间步的 RNN 网络,每一个时间步处理一个词语。
RNN 的设计架构
序列数据的输入和输出有各种各样的形式和长度。比如在情感分析任务中,输入通常是一串文本,而期望的输出是一个整数(1-5 的评分范围)或是单个文本(好的、坏的,积极的、消极的、中性的)。然而在语音文本任务中,输入则是声波中的一串声音信号,其输出则是一串对应的文本。
正是由于这些差异,当需要处理序列任务时,我们会针对性地设计 RNN 的输入和输出结构。一些常见的架构类型如下:
1. 多对多架构(同样的序列长度)
这是最基本的 RNN 结构,在每个时间步中输入序列的数量与输出序列的数量是一致的。一个使用该架构的应用实例是文本生成器:根据句子中前面的词语,预测下一个最有可能的词语。
采用多对多 RNN 架构的文本生成器
如上图所示,文本生成器的输入是一串词语,输出则是由预测得到的下一个词所组成的一串词语:「brown dog has four legs」。
2. 多对多架构(不同序列长度)
当需要处理输入和输出序列的数量不一致时,我们便可采用多对多架构的另一种版本。而机器翻译任务就是这样的一个应用实例:输入是原文的一串词语(比如法文),而输出是译文的一串词语(比如英文)。这个架构有两个不同的模块:编码器和解码器。前者接受输入的句子,将其映射成内部状态表征,然后将其传给后者,以供其生成输出的句子。
采用多对多 RNN 架构的机器翻译
在此架构中,当编码器将全部的输入序列处理完后,解码器才开始对输出的序列进行预测。这与前面提到的相同序列长度架构完全不同,在那个架构中,其每收到一个输入序列对象后,马上开始对每一个输出序列对象进行预测。
3. 多对一架构
在此架构中,RNN 在每个时间步都有一串输入,但只有在最后一个时间步输出一个单一值。情感分析任务正是此情景下的应用实例:任务的目的是对输入的语句进行分类,判断其是否有正面或负面的情感。
采用多对一 RNN 架构的情感分析任务
在上图的情感分析任务中,RNN 并不是在每个时间步都有输出,而是在读完整串词语后,仅在最后一个时间步输出一个单一值:「positive」。
4. 一对多架构
此处的 RNN 在第一个时间步接受一个单一值,然后在剩余的时间步中输出一串值。基于此架构的应用通常会取得每个时间步的预测输出,并把它传递给下一层,作为该层的输入值。一个应用实例是图像标注:RNN 接受一幅图像作为输入,然后输出描述图像中所发生事情的一串词语。
采用一对多架构的图像标注
上图显示了输入是一个女性跑步的表情符号,而输出则是预测得到的一串词语:「woman in blue vest running」。
结论
在这篇文章中,我们简单介绍了循环网络以及其不同类型的架构,包括相应的应用实例。
原文发布时间为:2018-05-31
本文来自云栖社区合作伙伴“雷锋网”,了解相关信息可以关注“雷锋网”。
用中文传话游戏理解 RNN相关推荐
- 2014编程之美热身赛 - 传话游戏
描述 Alice和Bob还有其他几位好朋友在一起玩传话游戏.这个游戏是这样进行的:首先,所有游戏者按顺序站成一排,Alice站第一位,Bob站最后一位.然后,Alice想一句话悄悄告诉第二位游戏者,第 ...
- 2013编程之美资格赛【传话游戏】
时间限制: 1000ms 内存限制: 256MB 描述 Alice和Bob还有其他几位好朋友在一起玩传话游戏.这个游戏是这样进行的:首先,所有游戏者按顺序站成一排,Alice站第一位,Bob站最后一位 ...
- 【工大SCIR】首次探索中文词信息增强中文口语语言理解!
论文名称:Injecting Word Information With Multi-Level Word Adapter for Chinese Spoken Language Understand ...
- 深度理解RNN的梯度消失和LSTM为什么能解决梯度消失
一.RNN的梯度消失有什么不同之处 先说结论:RNN的梯度等于近距离梯度与远距离梯度的和,RNN的梯度消失是远距离梯度的消失,而近距离梯度不会消失,同时总的梯度不会消失,从而导致总的梯度由近距离梯度占 ...
- 一种基于抽取式的中文机器阅读理解数据集CMRC2018
一种基于抽取式的中文机器阅读理解数据集CMRC2018 A Span-Extraction Dataset for Chinese Machine Reading Comprehension Lead ...
- 中文的游戏配音一定不好吗?
优秀的游戏配音富有表现力,能让游戏作品更加的出彩.很多游戏玩家认为汉化的游戏配音听见起来很别扭,那么中文的游戏配音就一定不好吗? 游戏配音也是游戏的重要组成部分,优秀的配音能让玩家更加投入进游戏的世界 ...
- 题目1 : 传话游戏
题目1 : 传话游戏 时间限制: 2000ms 单点时限: 1000ms 内存限制: 256MB
- 平安金融壹账通登顶中文机器阅读理解CMRC竞赛榜单
近日,在第三届中文机器阅读理解评测 (The Third Evaluation Workshop on Chinese Machine Reading Comprehension, CMRC 2019 ...
- CBLUE中文生物医学语言理解评价
英文题目:CBLUE: A Chinese Biomedical Language Understanding Evaluation 中文题目:CBLUE:中文生物医学语言理解评价基准 论文地址:ht ...
最新文章
- 在WP7下自定义RelativeSource 的Binding
- java maven项目构建ssh工程 父工程与子模块的拆分与聚合
- Linux系统及编程期末试题,《LINUX系统及其编程》考试试题及答案.doc
- 基础练习 十六进制转十进制 c语言
- java gt lt_Java运算符,,|,||,^,lt;lt;,gt;gt;,~,gt;gt;gt;
- 2019 css 框架_宣布CSS 2019调查状态
- jqgrid表格下拉搜索多选框优化—使用select下拉多选插件
- 各年龄段都是怎么提加薪的?
- Linux文本编辑器vim
- 安装VisualSVN Server时候,端口号冲突
- spring boot 发邮件
- java中vo_java中的vo是什么
- 改变一个ppt所有的幻灯片的背景色和字体颜色
- 数据不平衡分类问题 代价矩阵 损失函数
- Project: cosmo ical4j
- Python24中使用urllib时遇到IOError的正确打开方式
- hive窗口函数(over)详解
- xss.haozi.me解题记录
- Java多线程的使用方法,Thread,Runnable
- 企业该怎么建立大数据平台?
热门文章
- ENode 2.0 - 深入分析ENode的内部实现流程和关键地方的幂等设计
- Android动画之Property属性动画
- 使用Spring AOP中MethodInterceptor记录日志
- eclipse 对齐行号在括号中显示和字体调整
- 亲测_精简版Fiddler抓包手机端GET请求过程.
- 微软的 SQL Server 你学会了吗?
- 火星云分发全网视频_火星云矿总裁商思林:三大引擎点燃2020年超级牛市,挖矿和理财将成为资产配置必选项...
- 无悔入华夏怎么一直显示服务器,无悔入华夏完整版
- Redis操作List相关API
- Java高并发系统的限流策略