首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

开山-深度学习(1)RNN循环神经网络

一. RNN提出原因

在很多实际应用中,数据是相互依赖的。某些任务需要能够更好的处理序列的信息,即前面的输入和后面的输入是有关系的。如:处理视频的时候,不能只单独的去分析每一帧,而要分析这些帧连接起来的整个序列。

循环神经网络主要用来处理序列数据

二. RNN应用

1.机器翻译

机器翻译是将一种源语言语句变成意思相同的另一种源语言语句,如将英语语句变成同样意思的中文语句。需要将源语言语句序列输入后,才进行输出,即输出第一个单词时,便需要从完整的输入序列中进行获取。

2.语音识别

语音识别是指给一段声波的声音信号,预测该声波对应的某种指定源语言的语句以及该语句的概率值。

3.图像描述生成 (Generating Image Descriptions)

和卷积神经网络(convolutional Neural Networks, CNNs)一样,RNNs已经在对无标图像描述自动生成中得到应用。将CNNs与RNNs结合进行图像描述自动生成。该组合模型能够根据图像的特征生成描述。

三. RNN循环神经网络

3.1单向循环神经网络

RNN模型展开后的效果图

RNN在每一时间步t有相同的网络结构。

设输入层的神经元个数为n,隐藏层神经元个数为m,输出层的神经元个数为r。U是连接输入层和隐藏层的权重矩阵;W是连接上一时间步的隐藏层单元与当前时间步的隐藏层单元的权重矩阵;V是连接隐藏层单元和输出层单元的权重矩阵。

RNN模型在每一个时间步的网络结构图

X表示RNN输入层,其中,xt表示序列中的第t时刻或第t时间步的输入数据,通常是一个向量。中间部分是网络的隐藏层,记为S,与输入层一样,st 通常是一个向量。

隐藏层输出

Sigmoid可以替换为tanh、relu等激活函数。通常来说需要设定一个特殊的初始隐藏单元,即初始状态,一般设置为0向量。从上式可以看出,第t时间步的记忆信息由前面(t-1)时间步的记忆结果和当前输入x t 共同决定的,这些记忆信息保存在隐藏层中,不断向后传递,跨越多个时间步,影响每一个新输入数据的处理。不同类型的递归神经网络模型,本质上式隐藏层设计的不同。

输出层输出

o表示RNN输出层,其中,ot表示序列在第t时间步的输出结果,与输入层和隐藏层不同,输出层的设计比较灵活,并没有规定每一时间步都必须有输出。例如:在文本情感分类中,关心的是整个句子的情感结果,而不是每一个单词,因此只需要在最后时间步有输出层即可。对于分类模型,输出层的结果一般情况下仅依赖于当前的隐藏层数据,如上式。–其中U、W、V代表着相同的权重矩阵

3.2双向循环神经网络

Bi-RNN模型展开

在有些问题中,当前时刻的输出不仅和之前的状态有关,还可能和未来的状态有关系。比如预测一句话中缺失的单词不仅需要根据前文来判断,还需要考虑它后面的内容,真正做到基于上下文判断。

如:我的手机坏了,我打算__一部新手机。

Bi-RNN公式

在双向循环神经网络的隐藏层需要保存两个值,一个A参与正向计算,另一个A’参与反向计算。

正向计算和反向计算不共享权值,U和U’、W和 W’、V和V’是不同的权重矩阵。

四. RNN预测

4.1目的

用sin曲线来预测cos曲线。

4.2模型

input:x=sin(steps) 、hidden_state (每个step是一个数值)

Label: y=cos(steps)

model:单向RNN,32个隐藏层神经元,隐藏层深度为1,输出是一个向量(包含不同step的预测值)

实现效果如下

五. RNN词性判断

5.1目的

判断单词的词性

对于一个单词,会有这不同的词性,首先能够根据一个单词的后缀来初步判断,比如 -ly 这种后缀,很大概率是一个副词,除此之外,一个相同的单词可以表示两种不同的词性,比如 book 既可以表示名词,也可以表示动词,所以到底这个词是什么词性需要结合前后文来具体判断。

根据这个问题,我们可以使用 rnn 模型来进行预测,首先对于一个单词,可以将其看作一个序列,比如 apple 是由 a p p l e 这 5 个字符构成,这就形成了 5 的序列,我们可以对这些字符构建词嵌入,然后输入rnn,只取最后一个输出作为预测结果,整个单词的字符串能够形成一种记忆的特性,帮助我们更好的预测词性。

5.2数据

训练集

对数据进行处理

把输入数据构建成序列

对每个单词的字符过RNN,在对每个单词过RNN,并把结果拼接起来。

5.4训练

5.5测试

结果如下

后记:

很多事不用问值不值得,只用问,它对你来说,是不是有如珍宝。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180627G0QGBM00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券