RNN简介

RNN简介

最近由于工作需要,看了一些RNN (Recurrent Neural Networks )的相关资料,对RNN多少有了一些了解。发现一个绝佳的RNN入门tutorial,顺手记录下来。

以下内容大部分译自:http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-1-introduction-to-rnns/

1、什么是RNN?

在如今高速发展的互联网时代,我们的生活工作中其实有很多RNN的影子,比如:语音助手、机器翻译等等,那么什么是RNN呢?

RNN能够运用序列数据信息。在传统的神经网络中,所有的输入(或输出)之间是独立的 (即本层内部没有连接)。也就是说,输入与输入之间没有任何关联,这种假设对于序列数据显然不合理,比如:给定一个句子的前几个词,预测接下来最可能出现的词 (句子前后不同的词之间有密切的关联)。RNN能够处理这种类型的任务。

典型的RNN结构如下:

基本RNN结构
基本RNN结构和按时间展开的结构(图片来源)

在上图中, xt 表示 t 时刻的输入,可以用向量(比如one-hot vector)表示;

st t 时刻的隐藏状态,它表示网络的记忆单元,由前一时刻的隐藏状态和当前时刻的输入来确定:st=f(Uxt+Wst1)。函数 f 通常是非线性激活函数,比如:tanh 或 ReLU。初始状态 s1 通常需要初始化为0。

ot 表示 t 时刻的输出,它与隐藏状态有关:ot=softmax(Vst)

U,W,V 分别是输入与隐藏状态、先前隐藏状态与当前隐藏状态、隐藏状态与输出之间的连接权重。与传统神经网络不同,这些连接权重在不同时刻 t 取值相同,极大的降低了RNN模型中的参数个数。

理论上,隐藏状态 st 可以记忆所有之前步骤的信息,但实际情况中, st 对于太长时间之前的信息是无能为力的,这是因为基本的RNN结构优化求解中存在梯度小时/爆炸问题 (后续对此做专门的解释)。

2. RNN的应用

RNN目前已有了很多成功的应用,主要是LSTM(long-short term memory)模型的广泛使用。LSTM比基本的RNN模型能更好的解决长期依赖的问题(即需要很久之前的信息)。与基本RNN相比,LSTM只是在记忆单元的计算上做了些改进,本质没有太大区别 (后续做较详细的介绍)。

(1) 语言建模和文本生成

给定一系列文字(比如编码为ont-hot vector),我们期望预测出可能出现的每个词的概率。语言模型可以估计每个句子的概率,概率大的最可能是正确的。

相关研究论文:

Recurrent neural network based language model

Extensions of Recurrent neural network based language model

Generating Text with Recurrent Neural Networks

(2) 机器翻译

与语言模型相似,机器翻译的输入是某种语言的一系列词,我们希望用另一种语言去表示这些词。主要差别在于,只用在输入完毕后,机器翻译才开始输出,从而保证翻译的准确性。

机器翻译RNN
机器翻译RNN (图片来源)

相关研究论文:

A Recursive Recurrent Neural Network for Statistical Machine Translation

Sequence to Sequence Learning with Neural Networks

Joint Language and Translation Modeling with Recurrent Neural Networks

(3) 语音识别

给定一系列音频,预测语句及其概率值。

相关研究论文:

Towards End-to-End Speech Recognition with Recurrent Neural Networks

(4) 生成图像描述

RNN结合CNN,可以对没有任何标注的图片内容进行描述,并且达到很好的效果。

生成图像描述
生成图像描述 (图片来源)

3. RNN的变种

(1) Bidirectional RNN

很多时候,时刻 t 的值不仅仅取决于之前时刻的序列值,还可能与未来时刻有关,比如:我 今天 去 超市,—— 了 一双 鞋。中间空缺的部分与前后语境都有关系。因此,Bidirectional RNN便应运而生,它由两个RNN堆叠而成。

Bidirectional RNN
Bidirectional RNN (图片来源)

(2) Deep (Bidirectional) RNN

与 Bidirectional RNN 类似,只是每个时刻 t 有多个层,因此学习能力更强。

Deep (Bidirectional) RNN
Deep (Bidirectional) RNN (图片来源)

(3) LSTM

LSTM与基本RNN类似,只是记忆单元的计算方式不同。LSTM中的记忆单元又称 cells,由先前cell 状态和当前输入作为输入,进一步决定保留哪些记忆。

好了,RNN的基本介绍就到这里,后续会继续跟进。

已标记关键词 清除标记
相关推荐
<p> <span><b><span style="background-color:#FFE500;">【超实用课程内容】</span></b><br /> </span> </p> <p> <span>本课程从</span>pytorch安装开始讲起,从基本计算结构到深度学习各大神经网络,全程案例代码实战,一步步带大家入门如何使用深度学习框架pytorch,玩转pytorch模型训练等所有知识点。最后通过 kaggle 项目:猫狗分类,实战pytorch深度学习工具。 </p> <p> <br /> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <b><span style="background-color:#FFE500;">【课程如何观看?】</span></b> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> PC端:<a href="https://edu.csdn.net/course/detail/26277"></a><a href="https://edu.csdn.net/course/detail/26150"></a><a href="https://edu.csdn.net/course/detail/26150"></a><a href="https://edu.csdn.net/course/detail/27286">https://edu.csdn.net/course/detail/27286</a> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 移动端:CSDN 学院APP(注意不是CSDN APP哦) </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 本课程为录播课,课程永久观看,大家可以抓紧时间学习后一起讨论哦~ </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <strong><span style="background-color:#FFE500;">【学员专享增值服务】</span></strong> </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <b>源码开放</b> </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化 </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 下载方式:电脑登录<a href="https://edu.csdn.net/course/detail/26277"></a><a href="https://edu.csdn.net/course/detail/26150"></a><a href="https://edu.csdn.net/course/detail/27286">https://edu.csdn.net/course/detail/27286</a>,点击右下方课程资料、代码、课件等打包下载 </p> <p> <br /> </p>
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页