浅谈RNN、LSTM + Kreas实现及应用
本文主要针对RNN与LSTM的结构及其原理进行详细的介绍,了解什么是RNN,RNN的1对N、N对1的结构,什么是LSTM,以及LSTM中的三门(input、ouput、forget),后续将利用深度学习框架Kreas,结合案例对LSTM进行进一步的介绍。
一、RNN的原理
RNN(Recurrent Neural Networks),即全称循环神经网络,它是一种对序列型的数据进行建模的深度模型。如图1.1所示。

图1.1
1、其中
为序列数据。即神经网络的输入,例如nlp中,X1可以看作第一个单词、X2可以看作是第二个单词,依次类推。语音处理中,可以将
是每帧的声音信号。时间序列中,例如,某生活用品的销量数据。
2、U、W、V是参数矩阵,b、c是偏置项,f是激活函数,通常采用”热撸”、tanh函数作为激活函数,用softmax将输出转换成各个类别的概率。
3、上图为经典的RNN结构,其运算过程可以表示为:

式中:
表示神经网络的输出;
表示前一个时间点的状态;
4、考虑到输入与输出的关系,序列问题具有以下分类:
一对多的RNN结构:序列输出,用于图像字幕,如图1.2所示。

图1.2
多对一的RNN结构:序列输入,用于情感分类,如图1.3所示。

图1.3
多对多:序列输入和输出,用于机器翻译
同步多对多:同步序列输入和输出,用于视频分类
二、LSTM的原理
上面第一部分简单介绍了RNN的几种结构,接下来,介绍一下RNN的改进版:LSTM。LSTM(long short-term memory,长短时记忆网络),它的出现解决了很难处理的“长程依赖”问题,即无法学到序列中蕴含的间隔时间较长的规律。RNN每一层的隐状态都由前一层的隐状态经过变换和激活函数得到,反向传播求导时最终得到的导数会包含每一步梯度的连乘,将会引起梯度的消失或者梯度的爆炸。LSTM在隐状态使用了加法替代了每一步的迭代变换,这样便可以避免梯度消失的问题,从而使得网络学到长程的规律。
RNN可用图1.4表示

图1.4
同理,LSTM的结构图1.5所示

图1.5
其中图1.5中的符号,长方形表示对输入的数据做变换或激活函数;圆形表示逐点,逐点运算是指两个形状完全相同的矩形的对应位置进行相加、相乘或者其他的一些运算;箭头则表示向量会在那里进行运算。注意:
通过concat操作,才进入Sigmoid或tanh函数。
RNN与LSTM有所不同,LSTM的隐状态有两部分,一部分是ht ,另一部分则是
,
在各个步骤之间传递的主要信息,绿色的水平线可看作“主干道”,如图1.6所示。通过加法,
可以无障碍的在这条主干道上传递,因此较远的梯度也可以在长程上传播,这便是LSTM的核心思想。

图1.6
但是,不是每一步的信息
都是完全使用前一步的
,而是在
的基础之上“遗忘”掉一些内容,或“记住”一些内容。
1、 遗忘门,我们首先谈一谈遗忘门,每个单元都有一个“遗忘门”,用来控制遗忘掉
的那些部分,其结构如图1.7所示。其中σ是sigmoid激活函数,它的输出在0~1之间,遗忘门输出的
相同形状的矩阵,该矩阵将会和
逐点相乘,决定遗忘掉那部分内容。经过激活函数的输出,f取值接近0的维度上的信息就会被“忘记”,而f取值接近1的维度上的信息就会被保留。

图1.7
2、 输入层,如图1.8,在循环神经网络“忘记”了部分之前的状态后,它还需要从当前的输入补充最新的记忆,这个过程就是“输入门”完成的。输入门的输入同样是两项,分别是:
。它的输出项,一项是
,
同样经过Sigmoid函数运算得到,其值都是在0~1之间,还有一项
。最终要“记住”的内容是
与
点相乘,如图1.9。

图1.8

图1.9
3、 输出门,输出门用于计算另一个隐状态的值,真正的输出(如类别)需要通过做进一步运算得到。输出门的结构如图1.20所示,同样根据
计算,
中每一个数值在0~1之间,
通过
得到。

图1.20
最终总结:LSTM中每一步的输入是
,隐状态是
,最终的输出必须要经过
进一步变换得到。
浅谈RNN、LSTM + Kreas实现及应用的更多相关文章
- 深度学习:浅谈RNN、LSTM+Kreas实现与应用
主要针对RNN与LSTM的结构及其原理进行详细的介绍,了解什么是RNN,RNN的1对N.N对1的结构,什么是LSTM,以及LSTM中的三门(input.ouput.forget),后续将利用深度学习框 ...
- 浅谈分词算法(5)基于字的分词方法(bi-LSTM)
目录 前言 目录 循环神经网络 基于LSTM的分词 Embedding 数据预处理 模型 如何添加用户词典 前言 很早便规划的浅谈分词算法,总共分为了五个部分,想聊聊自己在各种场景中使用到的分词方法做 ...
- 浅谈分词算法(4)基于字的分词方法(CRF)
目录 前言 目录 条件随机场(conditional random field CRF) 核心点 线性链条件随机场 简化形式 CRF分词 CRF VS HMM 代码实现 训练代码 实验结果 参考文献 ...
- 浅谈分词算法(3)基于字的分词方法(HMM)
目录 前言 目录 隐马尔可夫模型(Hidden Markov Model,HMM) HMM分词 两个假设 Viterbi算法 代码实现 实现效果 完整代码 参考文献 前言 在浅谈分词算法(1)分词中的 ...
- 时间序列(六): 炙手可热的RNN: LSTM
目录 炙手可热的LSTM 引言 RNN的问题 恐怖的指数函数 梯度消失* 解决方案 LSTM 设计初衷 LSTM原理 门限控制* LSTM 的 BPTT 参考文献: 炙手可热的LSTM 引言 上一讲说 ...
- 浅谈 Attention 机制的理解
什么是注意力机制? 注意力机制模仿了生物观察行为的内部过程,即一种将内部经验和外部感觉对齐从而增加部分区域的观察精细度的机制.例如人的视觉在处理一张图片时,会通过快速扫描全局图像,获得需要重点关注的目 ...
- 浅谈分词算法基于字的分词方法(HMM)
前言 在浅谈分词算法(1)分词中的基本问题我们讨论过基于词典的分词和基于字的分词两大类,在浅谈分词算法(2)基于词典的分词方法文中我们利用n-gram实现了基于词典的分词方法.在(1)中,我们也讨论了 ...
- 浅谈 Fragment 生命周期
版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Fragment 文中如有纰漏,欢迎大家留言指出. Fragment 是在 Android 3.0 中 ...
- 浅谈 LayoutInflater
浅谈 LayoutInflater 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/View 文中如有纰漏,欢迎大家留言指出. 在 Android 的 ...
随机推荐
- fildder
来自 墨痕 :https://home.cnblogs.com/u/ink-marks/ FIDDLER的使用方法及技巧总结 一.FIDDLER快速入门及使用场景 Fiddler的官方网站:htt ...
- idea设置调用方法时提示方法注释
如图所示:打开file-->setting-->Editor-->General,搜索show,然后勾选上Show quick documentation on mouse move ...
- 日常问题181101: ueditor文本编辑器
下载地址: https://ueditor.baidu.com/website/download.html#ueditor 把下载好的文件整个复制到根目录(或是,想要存放的目录) 引入css: < ...
- 10. vue axios 请求未完成时路由跳转报错问题
axios 请求未完成时路由跳转报错问题 前两天项目基本功能算是完成了,在公司测试时遇到了遇到了一个问题,那就是在请求未完成时进行路由跳转时会报错,想了几种办法来解决,例如加loading,请求拦截, ...
- 基础select语句详解
在数据库操作语句中,使用最频繁,也被认为最重要的是 SELECT 查询语句.我们已经在不少地方用到了 SELECT * FROM table_name; 这条语句用于查看一张表中的所有内容. 而 SE ...
- Content-Type: application/www-form-urlencoded
默认的方式 1.Content-Type: application/www-form-urlencoded id=3&fgf=56&908rr=767 2.Content-Type:a ...
- Golang Go Go Go part3:数据类型及操作
五.Go 基本类型 1.基本类型种类 布尔值: bool 长度 1字节 取值范围 true, false注意事项:不可用数字代表 true 或 false 整型: int/uint 根据运行平台可能为 ...
- Windows10获取VS管理员权限总是很烦人
之前在Windows 7中,只要关闭了UAC,给当前账户管理员权限,任何程序都会以管理员身份启动.现在,在Windows 10上就行不通了.而VS又需要管理员权限才能使用附加调试等一些功能.虽然我们可 ...
- Nginx实现集群服务器的负载均衡
1.安装nginx和tomcat 我这里是使用docker安装的.安装流程可参照 dockerfile 这里安装了两个tomcat,端口分别是42000和42001.第二个tomcat的首页随便加了些 ...
- [Swift]LeetCode526. 优美的排列 | Beautiful Arrangement
Suppose you have N integers from 1 to N. We define a beautiful arrangement as an array that is const ...