RNN是怎么从单层网络一步一步构造的?

2018 年 7 月 13 日 七月在线实验室

一、从单层网络谈起

在学习RNN之前,首先要了解一下最基本的单层网络,它的结构如图:


 

输入是x,经过变换Wx+b和激活函数f得到输出y。相信大家对这个已经非常熟悉了。


二、经典的RNN结构(N vs N)

在实际应用中,我们还会遇到很多序列形的数据:


 

如:

1.自然语言处理问题。x1可以看做是第一个单词,x2可以看做是第二个单词,依次类推。

2.语音处理。此时,x1、x2、x3……是每帧的声音信号。

3.时间序列问题。例如每天的股票价格等等。


序列形的数据就不太好用原始的神经网络处理了。为了建模序列问题,RNN引入了隐状态h(hidden state)的概念,h可以对序列形的数据提取特征,接着再转换为输出。


先从h1的计算开始看:


 

图示中记号的含义是:

a)圆圈或方块表示的是向量。

b)一个箭头就表示对该向量做一次变换。如上图中h0和x1分别有一个箭头连接,就表示对h0和x1各做了一次变换。

在很多论文中也会出现类似的记号,初学的时候很容易搞乱,但只要把握住以上两点,就可以比较轻松地理解图示背后的含义。


h2的计算和h1类似。要注意的是,在计算时,每一步使用的参数U、W、b都是一样的,也就是说每个步骤的参数都是共享的,这是RNN的重要特点,一定要牢记。


 

依次计算剩下来的(使用相同的参数U、W、b):


 

我们这里为了方便起见,只画出序列长度为4的情况,实际上,这个计算过程可以无限地持续下去。


我们目前的RNN还没有输出,得到输出值的方法就是直接通过h进行计算:


 

正如之前所说,一个箭头就表示对对应的向量做一次类似于f(Wx+b)的变换,这里的这个箭头就表示对h1进行一次变换,得到输出y1。


剩下的输出类似进行(使用和y1同样的参数V和c):


 

OK!大功告成!这就是最经典的RNN结构,我们像搭积木一样把它搭好了。它的输入是x1, x2, .....xn,输出为y1, y2, ...yn,也就是说,输入和输出序列必须要是等长的。


由于这个限制的存在,经典RNN的适用范围比较小,但也有一些问题适合用经典的RNN结构建模,如:

1.计算视频中每一帧的分类标签。因为要对每一帧进行计算,因此输入和输出序列等长。

2.输入为字符,输出为下一个字符的概率。这就是著名的Char RNN(详细介绍请参考:The Unreasonable Effectiveness of Recurrent Neural Networks,Char RNN可以用来生成文章、诗歌,甚至是代码。此篇博客里有自动生成歌词的实验教程《基于torch学汪峰写歌词、聊天机器人、图像着色/生成、看图说话、字幕生成》)。


三、N VS 1

有的时候,我们要处理的问题输入是一个序列,输出是一个单独的值而不是序列,应该怎样建模呢?实际上,我们只在最后一个h上进行输出变换就可以了:


 

这种结构通常用来处理序列分类问题。如输入一段文字判别它所属的类别,输入一个句子判断其情感倾向,输入一段视频并判断它的类别等等。


四、1 VS N

输入不是序列而输出为序列的情况怎么处理?我们可以只在序列开始进行输入计算:


 

还有一种结构是把输入信息X作为每个阶段的输入:


下图省略了一些X的圆圈,是一个等价表示:

 


这种1 VS N的结构可以处理的问题有:

1.从图像生成文字(image caption),此时输入的X就是图像的特征,而输出的y序列就是一段句子

2.从类别生成语音或音乐等


五、N vs M

下面我们来介绍RNN最重要的一个变种:N vs M。这种结构又叫Encoder-Decoder模型,也可以称之为Seq2Seq模型。

原始的N vs N RNN要求序列等长,然而我们遇到的大部分问题序列都是不等长的,如机器翻译中,源语言和目标语言的句子往往并没有相同的长度。

为此,Encoder-Decoder结构先将输入数据编码成一个上下文向量c:


 

得到c有多种方式,最简单的方法就是把Encoder的最后一个隐状态赋值给c,还可以对最后的隐状态做一个变换得到c,也可以对所有的隐状态做变换。


拿到c之后,就用另一个RNN网络对其进行解码,这部分RNN网络被称为Decoder。具体做法就是将c当做之前的初始状态h0输入到Decoder中:


 

还有一种做法是将c当做每一步的输入:

 


由于这种Encoder-Decoder结构不限制输入和输出的序列长度,因此应用的范围非常广泛,比如:

机器翻译。Encoder-Decoder的最经典应用,事实上这一结构就是在机器翻译领域最先提出的

文本摘要。输入是一段文本序列,输出是这段文本序列的摘要序列。

阅读理解。将输入的文章和问题分别编码,再对其进行解码得到问题的答案。

语音识别。输入是语音信号序列,输出是文字序列。


何之源,

https://zhuanlan.zhihu.com/p/28054589。


题目来源:

七月在线官网(https://www.julyedu.com/)——面试题库——面试大题——深度学习 第31题。

RNN是深度学习的基础,而深度学习又是机器学习的一个分支。深度学习除了可以学习特征和任务之间的关联以外,还能自动从简单特征中提取更加复杂的特征。深度学习算法可以从数据中学习更加复杂的特征表达,使得最后一步权重学习变得更加简单且有效。


为了帮助大家系统地学习机器学习课程的相关知识,我们特意推出了机器学习集训营系列课程。迄今为止,「机器学习集训营」已经举办了四期,每一期都涌现出了不少优秀offer,特别是上一期很多同学从Java、Android、iOS等传统IT行业成功转行转型转岗AI拿到年薪三四十万,部分甚至超过四十万拿到五十万。


本第五期,在第四期的基础上,除了继续维持“入学测评、直播答疑、布置作业、阶段考试、毕业考核、一对一批改、线上线下结合、CPU&GPU双云平台、组织比赛、面试辅导、就业推荐”十一位一体的教学模式,本期特地推出机器学习工程师联合认证。且线下在北京、上海、深圳、广州、杭州、沈阳、济南、郑州、成都的基础上,新增武汉、西安两个线下点,十一城同步开营


此外,本期依然沿用前四期线上线下相结合的授课方式,加强项目实训的同时引入线下BAT专家面对面、手把手的教学方式;突出BAT级工业项目实战辅导 + 一对一面试求职辅导,并提供一年GPU云实验平台免费使用,精讲面试考点。让每一位学员不用再为遇到问题没人解答,缺乏实战经验以及简历上没有项目经验,面试屡屡遭拒而发愁。


本期限150个名额,历时3个月,10多个BAT级工业项目,保障每一位学员所学更多、效率更高、收获更大。


机器学习集训营 第五期 课程详情可点击文末阅读原文进行查看,或者加微信客服:julyedukefu_02进行咨询。

扫码加客服微信

登录查看更多
6

相关内容

RNN:循环神经网络,是深度学习的一种模型。
【ICML2020-华为港科大】RNN和LSTM有长期记忆吗?
专知会员服务
74+阅读 · 2020年6月25日
深度学习自然语言处理概述,216页ppt,Jindřich Helcl
专知会员服务
212+阅读 · 2020年4月26日
【MIT深度学习课程】深度序列建模,Deep Sequence Modeling
专知会员服务
77+阅读 · 2020年2月3日
【反馈循环自编码器】FEEDBACK RECURRENT AUTOENCODER
专知会员服务
22+阅读 · 2020年1月28日
三次简化一张图:一招理解LSTM/GRU门控机制
机器之心
15+阅读 · 2018年12月18日
深度学习面试100题(第31-35题)
七月在线实验室
8+阅读 · 2018年7月16日
深度解析LSTM神经网络的设计原理
数盟
4+阅读 · 2018年6月22日
基础 | 深度解析LSTM神经网络的设计原理
黑龙江大学自然语言处理实验室
6+阅读 · 2018年6月16日
一文详解LSTM网络
论智
18+阅读 · 2018年5月2日
干货 | 深度学习之卷积神经网络(CNN)的前向传播算法详解
机器学习算法与Python学习
9+阅读 · 2017年11月17日
完全图解RNN、RNN变体、Seq2Seq、Attention机制
AI研习社
12+阅读 · 2017年9月5日
干货|完全图解RNN、RNN变体、Seq2Seq、Attention机制
机器学习研究会
11+阅读 · 2017年8月5日
【深度学习基础】4. Recurrent Neural Networks
微信AI
16+阅读 · 2017年7月19日
CNN之卷积层
机器学习算法与Python学习
8+阅读 · 2017年7月2日
Do RNN and LSTM have Long Memory?
Arxiv
19+阅读 · 2020年6月10日
Arxiv
6+阅读 · 2019年4月8日
Universal Transformers
Arxiv
5+阅读 · 2019年3月5日
Neural Speech Synthesis with Transformer Network
Arxiv
5+阅读 · 2019年1月30日
Arxiv
3+阅读 · 2018年10月25日
Relational recurrent neural networks
Arxiv
8+阅读 · 2018年6月28日
Arxiv
5+阅读 · 2016年10月24日
VIP会员
相关资讯
三次简化一张图:一招理解LSTM/GRU门控机制
机器之心
15+阅读 · 2018年12月18日
深度学习面试100题(第31-35题)
七月在线实验室
8+阅读 · 2018年7月16日
深度解析LSTM神经网络的设计原理
数盟
4+阅读 · 2018年6月22日
基础 | 深度解析LSTM神经网络的设计原理
黑龙江大学自然语言处理实验室
6+阅读 · 2018年6月16日
一文详解LSTM网络
论智
18+阅读 · 2018年5月2日
干货 | 深度学习之卷积神经网络(CNN)的前向传播算法详解
机器学习算法与Python学习
9+阅读 · 2017年11月17日
完全图解RNN、RNN变体、Seq2Seq、Attention机制
AI研习社
12+阅读 · 2017年9月5日
干货|完全图解RNN、RNN变体、Seq2Seq、Attention机制
机器学习研究会
11+阅读 · 2017年8月5日
【深度学习基础】4. Recurrent Neural Networks
微信AI
16+阅读 · 2017年7月19日
CNN之卷积层
机器学习算法与Python学习
8+阅读 · 2017年7月2日
相关论文
Do RNN and LSTM have Long Memory?
Arxiv
19+阅读 · 2020年6月10日
Arxiv
6+阅读 · 2019年4月8日
Universal Transformers
Arxiv
5+阅读 · 2019年3月5日
Neural Speech Synthesis with Transformer Network
Arxiv
5+阅读 · 2019年1月30日
Arxiv
3+阅读 · 2018年10月25日
Relational recurrent neural networks
Arxiv
8+阅读 · 2018年6月28日
Arxiv
5+阅读 · 2016年10月24日
Top
微信扫码咨询专知VIP会员