LSTM主要思想和网络结构
在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见词的理解来推断当前词的真实含义。我们不会将所有的东西都全部丢弃,然后用空白的大脑进行思考。我们的思想拥有持久性。
相关信息和当前预测位置之间的间隔就肯定变得相当的大,RNN训练会变得很困难。
LSTM网络
LSTM网络可以学习长期依赖信息。为了解决长期依赖问题而生。
举个例子:
“菜的口味嘛,其实我是经过朋友介绍决定来尝一下这里的,还不错。“
标准的RNN结构:
LSTM结构:
核心思想
LSTM的核心思想
LSTMs 的核心所在是 cell 的状态(cell state),也就是下图这条向右的线。
Cell 的状态就像是传送带,它的状态会沿着整条链条传送,而只有少数地方有一些线性交互。信息如果以这样的方式传递,实际上会保持不变。
LSTM 通过一种名为「门」(gate)的结构控制 cell 的状态,并向其中删减或增加信息。
门
门由一个 sigmoid 网络层与一个按位乘操作构成。
Sigmoid 层的输出值在 0 到 1 间,表示每个部分所通过的信息。
0 表示「对所有信息关上大门」;1 表示「我家大门常打开」。
一个 LSTM 有三个这样的门,控制 cell 的状态。
LSTM主要过程
首先,LSTM 的第一步需要决定我们需要从 cell 中抛弃哪些信息。
「遗忘层」
输入: ht-1 和 xt
输出:一个 0 到 1 之间的数。
Ct−1 就是每个在 cell 中所有在 0 和 1 之间的数值,就像我们刚刚所说的,0 代表全抛弃,1 代表全保留。
(我个人理解,Ct-1用来表示细胞的状态,即将被遗忘还是保留)
再拿刚才预测单词的语言模型来举例,cell 的状态可能会需要考虑主语的性别,这样才能找到正确的代词。因此如果我们设定,如果看到了一个新的主语,就「忘记」旧的主语所代表的性别。
下一步,我们需要决定什么样的信息应该被存储起来。
怎么决定?
1.sigmod层(输入门)决定要更新哪些值
2.tanh层生成了一个新的候选向量C’,它能够加入cell的状态中
将1、2中的值结合,更新cell的状态
更新状态
接下来,我们就可以更新 cell 的状态了。将旧状态与 ft 相乘,忘记此前我们想要忘记的内容,然后加上 C`。得到的结果便是新的候选值,依照我们决定的值进行缩放。
确定要输出的内容
这个内容取决于我们的cell状态,但这时经过过滤的版本
首先,我们会运行一个 sigmoid 层决定 cell 状态输出哪一部分。
随后,我们把 cell 状态通过 tanh 函数,将输出值保持在-1 到 1 间。
之后,我们再乘以 sigmoid 门的输出值,就可以得到结果了。
对于语言模型的例子,当它只看到一个主语时,就可能会输出与动词相关的信息。比如它会输出主语是单数还是复数。这样的话,如果后面真的出现了动词,我们就可以确定它的形式了。
LSTM的变体
(遇到过的)有一种变体就是采用一对门,分别叫遗忘门(forget)及输入门(input)。
与分开决定遗忘及输入的内容不同,现在的变体会将这两个流程一同实现。
我们只有在将要输入新信息时才会遗忘,而也只会在忘记信息的同时才会有新的信息输入。
一个比较惹眼的变体为 GRU(Gated Recurrent),由 Cho, et al. (2014) 提出。他将遗忘门与输入门结合在一起,名为「更新门」(update gate),并将 cell 状态与隐藏层状态合并在一起,此外还有一些小的改动。 这个模型比起标准 LSTM 模型简单一些,因此也变得更加流行了。
LSTM主要思想和网络结构的更多相关文章
- 关于LSTM核心思想的部分理解
具体资料可以查阅网上,这里提到一些难理解的点.别人讲过的知识点我就不重复了. LSTM 的关键就是细胞状态,按照水平线从左向右运行,如同履带,在整个链上运行. 根据时间t-1,t,t+1,我们可以看出 ...
- 深度学习--RNN,LSTM
一.RNN 1.定义 递归神经网络(RNN)是两种人工神经网络的总称.一种是时间递归神经网络(recurrent neural network),另一种是结构递归神经网络(recursive neur ...
- LSTM及其变种及其克服梯度消失
本宝宝又转了一篇博文,但是真的很好懂啊: 写在前面:知乎上关于lstm能够解决梯度消失的问题的原因: 上面说到,LSTM 是为了解决 RNN 的 Gradient Vanish 的问题所提出的.关于 ...
- LSTM介绍
转自:https://blog.csdn.net/gzj_1101/article/details/79376798 LSTM网络 long short term memory,即我们所称呼的LSTM ...
- Deep Learning基础--理解LSTM网络
循环神经网络(RNN) 人们的每次思考并不都是从零开始的.比如说你在阅读这篇文章时,你基于对前面的文字的理解来理解你目前阅读到的文字,而不是每读到一个文字时,都抛弃掉前面的思考,从头开始.你的记忆是有 ...
- RNN与 LSTM 网络
循环神经网络(RNN) 人们的每次思考并不都是从零开始的.比如说你在阅读这篇文章时,你基于对前面的文字的理解来理解你目前阅读到的文字,而不是每读到一个文字时,都抛弃掉前面的思考,从头开始.你的记忆是有 ...
- 深度学习中的序列模型演变及学习笔记(含RNN/LSTM/GRU/Seq2Seq/Attention机制)
[说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![认真看图][认真看图] [补充说明]深度学习中的序列模型已经广泛应用于自然语言处理(例如机器翻 ...
- BERT预训练模型的演进过程!(附代码)
1. 什么是BERT BERT的全称是Bidirectional Encoder Representation from Transformers,是Google2018年提出的预训练模型,即双向Tr ...
- Paper | Highway Networks
目录 1. 网络结构 2. 分析 解决的问题:在当时,人们认为 提高深度 是 提高精度 的法宝.但是网络训练也变得很困难.本文旨在解决深度网络训练难的问题,本质是解决梯度问题. 提出的网络:本文提出的 ...
随机推荐
- 【Python】 sys和os模块
sys sys模块能使程序访问于python解释器联系紧密的变量和函数 ● sys中的一些函数和变量 argv 命令行参数构成的列表 path 查找所有可用模块所在的目录名的列表 platform 查 ...
- C语言描述栈的实现及操作(数组实现)
一.静态数组实现 1.堆栈接口 // 一个堆栈模块接口 // 命名为stack.h #define STACK_YTPE int // 堆栈所存储值的类型 // push函数 // 把一个新值压入栈中 ...
- [css 实践篇] 解决悬浮的<header> <footer>遮挡内容的处理技巧
我写的实践篇 都是自己在实践项目所遇到的 "拦路虎" 还是很有借鉴的意义的.(实践才是检验真理的唯一标准呀),废话不多说,进去正题 position: fixed 绝对固定底部后会 ...
- 使用redis的比较完美的加锁解锁
使用redis的比较完美的加锁解锁 tags:redis read&write redis加锁和解锁 php 习惯性说一下写这篇文章要说明什么,我们经常用redis进行加锁操作,目的是为了解决 ...
- shiro(三),使用第三方jdbcRealm连接数据库操作
这里采用第三方实现好的JdbcRealm连接数据库:首先来看一下源码: 接着前面的说:就把这个类当做我们自己写的就好了,我们需要实例化它,然后给他注入一个数据源 下面是ini文件配置 [main] # ...
- p-value
p-value p-value翻译为假定值,假设几率.我们在生物信息中通常使用p值方法(P-Value, Probability, Pr)来做检验.那么p-value是什么呢?其实P-value就是一 ...
- RDD概念、特性、缓存策略与容错
一.RDD概念与特性 1. RDD的概念 RDD(Resilient Distributed Dataset),是指弹性分布式数据集.数据集:Spark中的编程是基于RDD的,将原始数据加载到内存变成 ...
- SIMD---AVX系列
AVX全称Advanced Vcetor Extension,是对SSE的后续扩展,主要分为AVX.AVX2.AVX512三种.在目前常见的机器上,大多只支持到AVX系列,因此其他SIMD扩展指令我们 ...
- Access数据库跨库查询及记录集区分
医疗设备软件一般都是单机软件,如果是Windows平台,常会选择Access数据库存储结构化数据,因为他轻量,便于部署.然而随着医疗信息化的发展,医生希望对多台单机设备的数据进行管理,采用网络数据库当 ...
- 网络1711班 C语言第七次作业批改总结
网络1711班 C语言第七次作业批改总结 1.本次作业评分细则 1.1 基本要求(1分) 按时交 - 有分 未交 - 0分 迟交一周以上 - 倒扣本次作业分数 抄袭 - 0分 泛泛而谈(最多七分) 1 ...