LSTM模型详解_LSTM模型建立
大家好,又见面了,我是你们的朋友全栈君。
(一)LSTM模型理解
1.长短期记忆模型(long-short term memory)是一种特殊的RNN模型,是为了解决RNN模型梯度弥散的问题而提出的;在传统的RNN中,训练算法使用的是BPTT,当时间比较长时,需要回传的残差会指数下降,导致网络权重更新缓慢,无法体现出RNN的长期记忆的效果,因此需要一个存储单元来存储记忆,因此LSTM模型被提出;
2.下面两个图可以看出RNN与LSTM的区别:
(1)RNN
(2)LSTM
PS:
(1)部分图形含义如下:
(2)RNN与LSTM最大的区别在于LSTM中最顶层多了一条名为“cell state”的信息传送带,其实也就是信息记忆的地方;
3.LSTM的核心思想:
(1)理解LSTM的核心是“cell state”,暂且名为细胞状态,也就是上述图中最顶的传送线,如下:
(2)cell state也可以理解为传送带,个人理解其实就是整个模型中的记忆空间,随着时间而变化的,当然,传送带本身是无法控制哪些信息是否被记忆,起控制作用的是下面将讲述的控制门(gate);
(3)控制门的结构如下:主要由一个sigmoid函数跟点乘操作组成;sigmoid函数的值为0-1之间,点乘操作决定多少信息可以传送过去,当为0时,不传送,当为1时,全部传送;
(4)LSTM中有3个控制门:输入门,输出门,记忆门;
4.LSTM工作原理:
(1)forget gate:选择忘记过去某些信息:
(2)input gate:记忆现在的某些信息:
(3)将过去与现在的记忆进行合并:
(4)output gate:输出
PS:以上是标准的LSTM的结构,实际应用中常常根据需要进行稍微改善;
5.LSTM的改善
(1)peephole connections:为每个门的输入增加一个cell state的信号
(2)coupled forget and input gates:合并忘记门与输入门
(二)LSTM模型推导
1.LSTM模型的思想是将RNN中的每个隐藏单元换成了具有记忆功能的cell(如上图所示),其余的跟RNN一样;
2.每个cell的组成如下:
(1)输入节点(gc):与RNN中的一样,接受上一个时刻点的隐藏节点的输出以及当前的输入作为输入,然后通过一个tanh的激活函数;
(2)输入门(ic):起控制输入信息的作用,门的输入为上一个时刻点的隐藏节点的输出以及当前的输入,激活函数为sigmoid(原因为sigmoid的输出为0-1之间,将输入门的输出与输入节点的输出相乘可以起控制信息量的作用);
(3)内部状态节点(sc):输入为被输入门过滤后的当前输入以及前一时间点的内部状态节点输出,如图中公式;
(4)忘记门(fc):起控制内部状态信息的作用,门的输入为上一个时刻点的隐藏节点的输出以及当前的输入,激活函数为sigmoid(原因为sigmoid的输出为0-1之间,将内部状态节点的输出与忘记门的输出相乘可以起控制信息量的作用);
(5)输出门(oc):起控制输出信息的作用,门的输入为上一个时刻点的隐藏节点的输出以及当前的输入,激活函数为sigmoid(原因为sigmoid的输出为0-1之间,将输出门的输出与内部状态节点的输出相乘可以起控制信息量的作用);
3.LSTM层的计算可以表示如下(若干个cell组成一个LSTM层):
PS:公式1 中的Wih应改为Wgh;圆圈表示点乘;
4.具有2个cell的LSTM模型如下:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/195049.html原文链接:https://javaforall.cn
相关文章
- 详解结构方程模型,路径分析方法有哪些_结构方程模型的数据要求
- JVM内存模型详解「建议收藏」
- Java内存模型详解
- 【机器学习】F1分数(F1 Score)详解及tensorflow、numpy实现
- Laravel Eloquent 模型关联关系详解(上)
- 干货教程 | MongoDB 熟练到精通(一):模型设计基础知识详解
- 表单验证常用正则表达式详解程序员
- 简单了解下OSI七层模型的作用以及常见网络协议含义和所用端口详解程序员
- PKI_实施总结详解架构师
- oracle 异常详解程序员
- 网络io模型详解程序员
- 事件模型详解编程语言
- Python发邮件示例详解编程语言
- Spark入门实战系列–3.Spark编程模型(下)–IDEA搭建及实战详解大数据
- 文档数据库 OrientDB v2.2.15 发布详解大数据
- LDA主题模型介绍详解大数据
- Kafka网络模型和通信流程剖析详解大数据
- java8的接口默认方法实例详解编程语言
- 解决跨域引起的两次请求详解编程语言
- Java并发编程之内存模型详解编程语言
- java使用POI读取excel模版并向固定表格里填写数据详解编程语言
- CSS学习笔记07 盒子模型详解编程语言
- PHP访问REST API上传文件的解决方案详解编程语言
- CSS Box Model(盒子模型)详解编程语言
- Java内存模型浅析详解编程语言
- Java多线程15:Queue、BlockingQueue以及利用BlockingQueue实现生产者/消费者模型详解编程语言
- Java多线程14:生产者/消费者模型详解编程语言
- Linux下的高效异步I/O模型:kqueue详解(linuxkqueue)
- ThoughtWorks技术专家详解:企业级区块链原来是这么玩的
- MySQL的一对多模型应用详解(mysql一对多模型)
- JavaScriptSetInterval与setTimeout使用方法详解
- Golang内存模型详解(一)