LSTM 长短期记忆循环神经网络(学习笔记)
LSTM 长短期记忆循环神经网络
1.LSTM 定义
LSTM 全称是Long Short Term Memory (长短期记忆),是RNN的一种。
基本一般情况下使用RNN都是使用LSTM,最基础的RNN存在一些问题,LSTM的效果更好。
最基础版本的RNN每一时刻的隐藏层不仅由该时刻的输入决定,还有上一时刻的隐藏层的值。如果一个句子很长的时候,到句子末尾的时候,将会记不住句子开头的内容,发生梯度消失和爆炸的问题。而LSTM通过它的“门控装置”有效的缓解了这个问题。
LSTM和普通的RNN不一样,可以将这两者看成一个是贵族,一个是乞丐。RNN什么信息他都要存下来,没有选择的能力。而LSTM会有选择性的存储信息,因为他能力强,有门控装置,可以尽情的选择。
2.长短时记忆网络的思路
原始 RNN 的隐藏层只有一个状态,即h,它对于短期的输入非常敏感。
再增加一个状态,即c,让它来保存长期的状态,称为单元状态(cell state)。
把上图按照时间维度展开:
在 t 时刻,LSTM 的输入有三个:当前时刻网络的输入值 x_t
、上一时刻 LSTM 的输出值 h_t-1
、以及上一时刻的单元状态 c_t-1
;
LSTM 的输出有两个:当前时刻 LSTM 输出值 h_t
、和当前时刻的单元状态 c_t
.
3.如何控制长期状态c
方法是:使用三个控制开关
第一个开关,负责控制继续保存长期状态c;
第二个开关,负责控制把即时状态输入到长期状态c;
第三个开关,负责控制是否把长期状态c作为当前的LSTM的输出。
4.如何实现这三个开关
方法:用 门(gate)
定义:gate 实际上就是一层全连接层,输入是一个向量,输出是一个 0到1 之间的实数向量。
公式为:
回忆一下它的样子:
具体实现:用门的输出向量按元素乘以我们需要控制的那个向量
原理:门的输出是 0 到 1 之间的实数向量,
当门输出为 0 时,任何向量与之相乘都会得到 0 向量,这就相当于什么都不能通过;
当门输出为 1 时,任何向量与之相乘都不会有任何改变,这就相当于什么都可以通过。
5.LSTM的工作
5.1 遗忘门(forget gate)
它决定了上一时刻的单元状态 c_t-1
有多少保留到当前时刻 c_t
5.2 输入门(input gate)
它决定了当前时刻网络的输入 x_t
有多少保存到单元状态 c_t
5.3 输出门(output gate)
控制单元状态 c_t
有多少输出到 LSTM 的当前输出值 h_t
5.4 遗忘门的计算
遗忘门的计算公式中:
W_f
是遗忘门的权重矩阵,[h_t-1, x_t]
表示把两个向量连接成一个更长的向量,b_f
是遗忘门的偏置项,σ
是 sigmoid 函数。
5.5 输入门的计算
input
根据上一次的输出和本次输入来计算当前输入的单元状态:
当前输入的单元状态c_t
当前时刻的单元状态 c_t
的计算:
由上一次的单元状态 c_t-1
按元素乘以遗忘门 f_t
,再用当前输入的单元状态 c_t
按元素乘以输入门 i_t
,再将两个积加和。
这样,就可以把当前的记忆 c_t
和长期的记忆 c_t-1
组合在一起,形成了新的单元状态 c_t
。
由于遗忘门的控制,它可以保存很久很久之前的信息,由于输入门的控制,它又可以避免当前无关紧要的内容进入记忆。
当前时刻的单元状态c_t
5.6 输出门的计算
output
6. 总结
LSTM里常用的激活函数有两个,一个是tanh,一个是sigmoid。
其中 i是input gate的缩写,f是forget的缩写,o是output的缩写。
其中Z是最为普通的输入,可以从上图中看到,Z 是通过该时刻的输入 X_t和上一时刻存在memory cell里的隐藏层信息 h_t-1 向量拼接,再与权重参数向量 W点积,得到的值经过激活函数tanh最终会得到一个数值,也就是 Z,注意只有 Z的激活函数是tanh,因为 Z 是真正作为输入的,其他三个都是门控装置。
再来看 Z_i ,也就是输入门的门控装置, Z_i同样也是通过该时刻的输入X_t和上一时刻隐藏状态,也就是上一时刻存下来的信息 h_t-1向量拼接,在与权重参数向量 W_i点积(注意每个门的权重向量都不一样,这里的下标i代表input的意思,也就是输入门)。得到的值经过激活函数sigmoid的最终会得到一个0-1之间的一个数值,用来作为输入门的控制信号。
经过这个sigmod激活函数后,得到的Z_i,Z_f,Z_o ,都是在0到1之间的数值,1表示该门完全打开,0表示该门完全关闭。
LSTM 长短期记忆循环神经网络(学习笔记)相关推荐
- LSTM长短期记忆人工神经网络简述
LSTM长短期记忆人工神经网络简述 By:Yang Liu 1.什么是LSTM 长短期记忆网络(LSTM,Long Short-Term Memory)是一种时间循环神经网络,是为了解决一般的RNN( ...
- 什么是循环神经网络——学习笔记
序列模型:以一个句子为例 1 循环网络:通过带有自反馈的神经元,能够处理任意长度的(存在时间关联性)序列: 将过去的信息整合起来,辅助处理当前信息. 循环网络的结构以及参数 循环网络的前向传播的计算 ...
- 神经网络学习笔记3——LSTM长短期记忆网络
目录 1.循环神经网络 1.1循环神经网络大致结构 1.2延时神经网络(Time Delay Neural Network,TDNN) 1.3按时间展开 1.4反向传播 1.5 梯度消失,梯度爆炸 2 ...
- RNN循环神经网络 、LSTM长短期记忆网络实现时间序列长期利率预测
全文链接:http://tecdat.cn/?p=25133 2017 年年中,R 推出了 Keras 包 _,_这是一个在 Tensorflow 之上运行的综合库,具有 CPU 和 GPU 功能(点 ...
- 长短期记忆人工神经网络(LSTM)网络学习资料
一.人工神经网络模型的分类: 1.27种神经网络的图解 地址:https://baijiahao.baidu.com/s?id=1590362274035183205&wfr=spider&a ...
- 深度学习 LSTM长短期记忆网络原理与Pytorch手写数字识别
深度学习 LSTM长短期记忆网络原理与Pytorch手写数字识别 一.前言 二.网络结构 三.可解释性 四.记忆主线 五.遗忘门 六.输入门 七.输出门 八.手写数字识别实战 8.1 引入依赖库 8. ...
- 【视频】Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析|数据分享...
全文下载链接:http://tecdat.cn/?p=23544 在本文中,长短期记忆网络--通常称为"LSTM"--是一种特殊的RNN递归神经网络,能够学习长期依赖关系(点击文末 ...
- Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析
原文链接:http://tecdat.cn/?p=23544 下面是一个关于如何使用长短期记忆网络(LSTM)来拟合一个不平稳的时间序列的例子. 每年的降雨量数据可能是相当不平稳的.与温度不同,温度 ...
- 小白学深度之LSTM长短期记忆神经网络——深度AI科普团队
前言 不知道RNN的一定要先看看RNN的原理 在RNN中我们说了RNN的不足,也就是对较长的时间,或者较长的string,很多时候前面的数据对后面的数据影响就很小甚至没影响了,这是我们就要加强前面的数 ...
最新文章
- shell /dev/null
- c语言N*N的二维数组,c语言高手帮个忙(请先看问题,好解答
- Spring @Resource、@Autowired、@Qualifier区别
- 【PAT乙级】1074 宇宙无敌加法器 (20 分)
- Linux下Poppler源码编译安装
- 进程及 fork() 系统调用详解
- 我从未看过荒原写作背景_您从未听说过的最佳数据科学认证
- html中写随机数,为HTML生成一个随机数
- STM32之FSMC-SRAM/NOR原理
- 385. Mini Parser
- [Python] 关键字 assert
- hdu 4609 3-idiots(FFT计数)
- 人工智能基础——2.3.2产生式系统
- android 行居中,android自己定义换行居中CenterTextView(示例代码)
- 《Proof of Federated Learning: A Novel Energy-recycling Consensus Algorithm》精读
- MATLAB图像分割的GUI设计
- 【更新】蛙色VR视频故事线功能上线,行业进入新时代
- 字库软件-字模III
- php解析手机号 归属地,PHP通过API获取手机号码归属地,api手机号码_PHP教程
- 民营医院不做竞价,做啥能带业绩