第六讲-循环神经网络(RNN)及变体LSTM
1、卷积神经网络(CNN)与循环神经网络(RNN)的简单对比:
CNN:借助卷积核(kernel)提取特征后,送入后续网络(如全连接网络Dense)进行分类、目标检测等操作。CNN借助卷积核从空间维度提取信息,卷积核参数空间共享。
RNN:借助循环核(cell)提取特征后,送入后续网络进行预测等操作。RNN借助循环核从时间维度提取信息,循环核参数时间共享。
- 循环核
循环核具有记忆力,通过不同时刻的参数共享,实现了对时间序列的信息提取。
每个循环核有多个记忆体,上图中多个小圆柱就是记忆体。记忆体内存储着每个时刻的状态信息ht。我们可以设定记忆体的个数从而改变记忆容量,当记忆体个数被指定、输入xt和输出yt维度指定,那么周围的待训练参数的维度也就被限定了。
前向传播时,记忆体内存储的状态信息ht在每个时刻都被刷新,而三个参数矩阵Wxh、Whh、Why和两个偏置项bh、by自始至终都是固定不变的。
反向传播时,三个参数矩阵Wxh、Whh、Why和两个偏置项bh、by由梯度下降法更新。
- 循环核按时间步展开
将循环核按时间步展开,就是把循环核按照时间轴t方向展开,如下图:
每个时刻记忆体状态信息ht被刷新,记忆体周围的参数矩阵和两个偏置项固定不变,我们训练优化的就是这些参数矩阵。训练完成后,使用效果最好的参数矩阵执行前向传播,然后输出预测结果。
由上图可以看出,循环神经网络就是借助循环核实现时间特征提取后把提取到的信息送入全连接网络,从而实现连续数据的预测。
- 循环计算层:向输出方法生长
在RNN中,每个循环核构成一层循环计算层,循环计算层的层数是向输出方向增长的。如下图
左边的网络中有一个循环核,构成了一层循环计算层;中间的网络有两个循环核,构成了两层循环计算层;右边的网络有3个循环核,构成了三个循环计算层。
原始RNN的问题:
RNN面临的较大的问题是无法解决长跨度依赖问题,即后面节点相对于跨度很大的前面时间节点的信息感知能力太弱。
如下图:左上角的句子中sky可以由较短跨度的词预测出来,而右下角句子中的French与较长跨度之前的France有关系,即长跨度依赖,比较难预测。
长跨度依赖的根本问题在于:多阶段的反向传播后会导致梯度消失、梯度爆炸。可以使用梯度截断去解决梯度爆炸问题,但无法轻易解决梯度消失问题。由此提出了LSTM。
- LSTM
为了解决RNN长期依赖问题,LSTM(Long Short Term Memory)长短记忆网络,由Hochreiter & Schmidhuber 于 1997年提出,通过门控单元很好的解决了RNN长期依赖问题。
因为LSTM使用门(gate)机制对信息的流通和损失进行控制。
如上图,LSTM引入了三个门限:输入门it、遗忘门ft、输出门ot;引入表征长期记忆的细胞态Ct;引入了等待存入长期记忆的候选态Ct波浪号。
- 三个门限都是当前时刻的输入特征Xt和上个时刻的短期记忆ht-1的函数,分别表示:
输入门(门限):决定了多少比例的信息会被存入当前细胞态;
遗忘门(门限):将细胞态中的信息选择性的遗忘;
输出门(门限):将细胞态中的信息选择性的进行输出;
三个公式中Wi、Wf、Wo是待训练参数矩阵,bi、bf、bo是待训练偏置项。σ为sigmoid激活函数,它可以使门限的范围在0到1之间。
- 记忆体ht,表征短期记忆,是当前细胞态经过输出门得到的。
- 候选态表示归纳出的待存入细胞态的新知识,是当前时刻的输入特征Xt和上个时刻的短期记忆ht-1的函数
- 细胞态Ct表示长期记忆,它等于上个时刻的长期记忆Ct-1通过遗忘门的值和当前时刻归纳出的新知识Ct波浪号通过输入门的值之和。
第六讲-循环神经网络(RNN)及变体LSTM相关推荐
- RNN及变体LSTM、GRU(在NILM中的应用)
RNN(Recurrent Neural Network)循环神经网络 1.介绍 卷积神经网络等的输入和输出都是相互独立的,而RNN拥有记忆能力,其记忆能力依赖于输入和输出 网络结构如下图所示: ...
- 循环神经网络(RNN)之长短期记忆(LSTM)
长短期记忆(Long Short Term Memory)跟上篇的循环神经网络(RNN)之门控循环单元(GRU),两者比较的话,LSTM稍微更复杂一点,但很类似,对整个隐藏单元来讲可以说增加了一个记忆 ...
- 自然语言菜鸟学习笔记(七):RNN(循环神经网络)及变体(LSTM、GRU)理解与实现(TensorFlow)
目录 前言 RNN(循环神经网络) 为什么要用循环神经网络(RNN)? 循环神经网络(RNN)可以处理什么类型的任务? 多对一问题 一对多问题 多对多问题 循环神经网络结构 单层网络情况 正向传播 反 ...
- [人工智能-深度学习-52]:循环神经网络 - RNN的缺陷与LSTM的解决之道
作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...
- 深度学习---循环神经网络RNN详解(LSTM)
上一节我们详细讲解了RNN的其中一个学习算法即BPTT,这个算法是基于BP的,只是和BP不同的是在反向传播时,BPTT的需要追溯上一个时间的权值更新,如下图,当前时刻是s(t),但是反向传播时,他需要 ...
- 第六章_循环神经网络(RNN)
文章目录 第六章 循环神经网络(RNN) CNN和RNN的对比 http://www.elecfans.com/d/775895.html 6.1 为什么需要RNN? 6.1 RNN种类? RNN t ...
- 循环神经网络RNN(含LSTM,GRU)小综述
文章目录 前言 一.RNN循环神经网络 1.1 RNN的结构 1.2 BRNN的结构 1.3 梯度消失和梯度爆炸 二.LSTM 2.1 引子 2.2 LSTM单元 2.3 LSTM的补充理解方式和变种 ...
- 深度学习入门(五十六)循环神经网络——循环神经网络RNN
深度学习入门(五十六)循环神经网络--循环神经网络RNN 前言 循环神经网络--循环神经网络RNN 课件 潜变量自回归模型 循环神经网络 使用循环神经网络的语言模型 困惑度(perplexity) 梯 ...
- Python手撸机器学习系列(十六):循环神经网络RNN的实现
目录 循环神经网络RNN 1.公式推导 2.代码实现 循环神经网络RNN 1.公式推导 对于该循环神经网络,以中间的RNN单元为例,推导前向传播: 对于Layer-1: z h = w i x + w ...
最新文章
- JAVA_SE之内部类
- 独家|OpenCV1.11 使用OpenCV制作一个低成本立体摄像机
- CSS十问——好奇心+刨根问底=CSSer (转)
- 从尼古拉斯·泽卡斯开始学习
- flink 自定义 窗口_【Flink 精选】阐述 Watermark 机制,剖析 Watermark 的产生和传递流程...
- php怎么改,php怎么修改图片
- halcon旋转后坐标_FPGA大赛【八】具体模块设计图像旋转方案
- cookie工作流程
- JavaScript 中常见设计模式整理
- 如何让select选项的那个请选择不被选中
- 计算机应用水平考试dream,2016年职称计算机Dreamwaver使用教程:操作环境
- java main函数_Java经典面试题集锦
- MySQL数据库创建与维护数据表
- 网线分类及如何选择?
- 配置java comp路径_java:comp/env/jdbc/ 的两种配置方法
- sqlserver数据库的使用
- (转)UEFI系统的启动过程
- VirtualBox管理工具Vboxmanage
- AD9361 介绍 (中)
- 黑科技之资源搜索网站