LSTM(长短时记忆网络)
目录
一、什么是LSTM?
二、LSTM详解
0.什么是门?
1. 遗忘门
2.输入门
3.更新记忆
4.输出门
一、什么是LSTM?
LSTM是RNN的一种,可以解决RNN短时记忆的不足,当一条序列足够长,那RNN将很难将信息从较早的时间步传送到后面的时间步,而LSTM能学习长期依赖的信息,记住较早时间步的信息,因此可以做到联系上下文。
比如:
1.
RNN可以根据前面几个单词有效预测出空白处单词为sky。
2.
RNN可以根据空格处附近的信息得出,这里应该填一种语言,但还不知道具体是哪种语言,我们想的是让模型根据前文的I grew up in France,得出这里应该是法语,但是序列相隔距离太远,RNN做不到有效利用历史信息,所以我们需要依靠LSTM来完成。
二、LSTM详解
LSTM有三个门,分别为遗忘门,输入门(有的也叫更新门,候选门,作用是一样的),输出门。通过这三个门来控制哪些信息该遗忘丢弃,哪些信息该保留,或者保持不变。就像管道阀门一样,控制流通不流通。
先来看一张lstm结构的展开图,后面对三个门及作用进行拆解。
符号说明:
:当前时刻输入信息
:上一时刻的隐藏状态
:传递到下一时刻的隐藏状态
:sigmoid函数,通过这个函数可以将数据变为0-1范围的数值。
tanh: tanh函数,通过这个函数可以将数据变为[-1,1]范围的数值
LSTM的特点:
lstm比rnn多一个细胞状态(cell state),也有人叫记忆细胞。
下图中的水平黑线表示上一时刻的细胞状态通过三个门的控制及线性运算来决定哪些信息该遗忘丢弃,哪些信息该保留,或者不变,从而生成当前时刻的细胞状态,然后输出到下一时刻,以此来进行记忆的更新。
这只是某个时刻的细胞状态的更新过程,在整个长序列中,每个时刻的细胞状态都对上一时刻的信息选择性的进行遗忘丢弃,或者保留,或者不变,对记忆进行更新,从传送到,因此可以做到长期记忆。
0.什么是门?
LSTM通过门(gate)来控制细胞状态遗忘或添加记忆,门的结构就是一个sigmoid层再点乘上一时刻的细胞状态,下图就是一个门。
sigmoid层输出的值范围在[0, 1],可以作为门控信号,0点乘任何值还是0,表示过不去,这些记忆就遗忘了,1表示可以通过,记忆就保留下来了。
1. 遗忘门
遗忘门的作用对象是细胞状态,作用是控制细胞状态中的信息进行选择性的遗忘,决定哪部分需要丢弃,哪些需要保留。那么是如何控制细胞状态选择性遗忘记忆的呢,我们结合公式来看:
遗忘门的公式:
权重矩阵对和拼接而成的矩阵进行矩阵相乘,再加上偏置,投入到sigmoid函数中,得到一个与相同维度的矩阵, 比如,得到为[ 0,0,1,0],矩阵中每一个值都决定中对应信息的遗忘或保留,0代表彻底丢弃,1代表完全保留。
比如一个语言模型,根据之前的所有词预测下一个词。细胞状态可能已经记住了当前人物的性别,以便下次预测人称代词(他还是她),但当出现一个新人物时,需要将上一个人物的性别忘掉。
举例:
小明是一个帅气的男生,小美喜欢...,当处理到‘’小美‘’的时候,需要选择性的忘记前面的’小明’,或者说减小这个词对后面词的作用。
2.输入门
输入门的作用对象也是细胞状态,作用是决定要往细胞状态中存储哪些新的信息,也就是细胞状态选择性的添加哪些新的记忆。那么如何决定添加哪些新的信息呢,输入门分两个部分进行。
第一部分:
构建一个输入门,决定哪些信息被添加到细胞状态中,作为新的记忆。
输入门公式:
与遗忘门公式差不多,输入门通过线性运算得到一个与相同维度的矩阵, 比如,得到为 [ 0,0,1,0],矩阵中每一个值都决定中对应信息的丢弃或保留,0代表彻底丢弃,1代表完全保留
第二部分:
构建出一个候选细胞状态,它保存了 和中的信息,然后与的值点乘,来决定哪些记忆是有用的,依然中0代表彻底丢弃,1代表完全保留,这样保留下来的信息作为新的记忆添加给新的细胞状态,所以这里叫候选细胞状态,它只是一个等候选择的,有用的才会被作为新记忆添加。
候选细胞状态 的公式:
接着上一个例子:
这一步传入了一些信息,比如小美喜欢穿裙子,输入门就是要在这些信息中筛选出来有用的,用来记住新人物的性别,记住小美的性别为女,作为新的记忆添加。
3.更新记忆
新的细胞状态中的记忆由两部分构成。
一部分是,上一时刻的记忆细胞遗忘掉没用的记忆后剩下的旧记忆
另一部分是,输入门中把有用的信息筛选出来当作新的记忆
新的细胞状态的公式:
点乘表示处理后的旧记忆,点乘表示需要添加的新记忆,加起来就是新的细胞状态。
继续举例:
小明是一个帅气的男生,小美喜欢穿裙子,这一步是要忘记小明性别为男,记住小美性别为女。
4.输出门
输出门的作用是决定最终输出什么,也就是,这个输出是以新的细胞状态为基础的,分两部分进行。
第一部分:
依然使用sigmoid层来得到,比如=[0,0,0,1],来决定哪部分细胞状态需要被输出,需要的记忆才输出,并不是所有的都输出。
的公式:
第二部分:
把新的细胞状态通过tanh函数处理,将输出值变为[-1. 1],再点乘,来控制哪部分需要输出。
的公式:
LSTM(长短时记忆网络)相关推荐
- LSTM(长短时记忆网络)原理、pytorch实现、参数量分析以及应用场景简单总结
目录 一.LSTM原理 遗忘门 输入门 细胞状态更新 输出门 LSTM数学模型 二.lstm的实现 三 .lstm学习参数总量分析一级pytorch框架下lstm输入总结 1.学习参数总量分析 2.p ...
- 深度学习之循环神经网络(8)长短时记忆网络(LSTM)
深度学习之循环神经网络(8)长短时记忆网络(LSTM) 0. LSTM原理 1. 遗忘门 2. 输入门 3. 刷新Memory 4. 输出门 5. 小结 循环神经网络除了训练困难,还有一个更严重的问 ...
- 深度学习(7) - 长短时记忆网络(LSTM)
长短时记忆网络是啥 我们首先了解一下长短时记忆网络产生的背景.回顾一下零基础入门深度学习(5) - 循环神经网络中推导的,误差项沿时间反向传播的公式: 我们可以根据下面的不等式,来获取的模的上界(模可 ...
- 长短时记忆网络(Long Short Term Memory,LSTM)详解
长短时记忆网络是循环神经网络(RNNs)的一种,用于时序数据的预测或文本翻译等方面.LSTM的出现主要是用来解决传统RNN长期依赖问题.对于传统的RNN,随着序列间隔的拉长,由于梯度爆炸或梯度消失等问 ...
- 长短时记忆神经网络python代码_零基础入门深度学习(6) - 长短时记忆网络(LSTM)
无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习(Deep Learning)这个超热的技术,会不会感觉马上就o ...
- 小常识10: 循环神经网络(RNN)与长短时记忆网络LSTM简介。
小常识10: 循环神经网络(RNN)与长短时记忆网络LSTM简介. 本文目的:在计算机视觉(CV)中,CNN 通过局部连接/权值共享/池化操作/多层次结构逐层自动的提取特征,适应于处理如图片类的网格 ...
- 【深度学习理论】(7) 长短时记忆网络 LSTM
大家好,今天和各位分享一下长短时记忆网络 LSTM 的原理,并使用 Pytorch 从公式上实现 LSTM 层 上一节介绍了循环神经网络 RNN,感兴趣的可以看一下:https://blog.csdn ...
- 深度学习之长短时记忆网络(LSTM)
本文转自<零基础入门深度学习>系列文章,阅读原文请移步这里 之前我们介绍了循环神经网络以及它的训练算法.我们也介绍了循环神经网络很难训练的原因,这导致了它在实际应用中,很难处理长距离的依赖 ...
- 长短时记忆网络(LSTM)的训练
长短时记忆网络的训练 熟悉我们这个系列文章的同学都清楚,训练部分往往比前向计算部分复杂多了.LSTM的前向计算都这么复杂,那么,可想而知,它的训练算法一定是非常非常复杂的.现在只有做几次深呼吸,再一头 ...
- 长短时记忆网络LSTM
网络介绍 长短时记忆网络(Long short time memory network, LSTM)是RNN的重要变体,解决了RNN无法长距离依赖的问题,同时缓了RNN的梯度爆炸问题.LSTM由遗忘门 ...
最新文章
- VLAN设置错误,导致部分用户无法上网
- js 正则匹配URL,网址,带端口,带query的
- WIn32中CInternetSession运行异常(afxCurrentAppName 为空)
- sphinx-release 2.1.4
- 操作系统实验报告8:进程间通信—消息机制
- 2.在某应用软件中需要记录业务方法的调用日志,在不修改现有业务类的基础上为每一个类提供一个日志记录代理类,在代理类中输出日志,例如在业务方法 method() 调用之前输出“方法 method() 被
- 阿里java架构师面试128题含答案:分布式架构+Dubbo+多线程+Redis
- MySQL高并发事务问题
- 腾讯财报:微信月活增至10.98亿 QQ月活8.07亿
- react学习系列3 使用koa-router模拟后台接口
- java论文范文模板_Java专业论文开题报告 论文的开题报告模板
- caxa cam数控车2020破解版 v20.0.0.6460附安装教程|caxa数控车2020破解版
- html中css图片链接地址中有()括号不显示的解决办法
- Android keyevent值中文表
- 仿百度统计html模板,YJHL仿百度统计 | CNZZ统计友盟源码
- 蒸馏论文三(Similarity-Preserving)
- 双链路是什么意思_实时备份什么意思
- Matlab:isempty()函数用法
- Flash Player”又来了“!
- <C++> 通讯录管理系统(纯手写含源码)