在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见词的理解来推断当前词的真实含义。我们不会将所有的东西都全部丢弃,然后用空白的大脑进行思考。我们的思想拥有持久性。

相关信息和当前预测位置之间的间隔就肯定变得相当的大,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主要思想和网络结构的更多相关文章

  1. 关于LSTM核心思想的部分理解

    具体资料可以查阅网上,这里提到一些难理解的点.别人讲过的知识点我就不重复了. LSTM 的关键就是细胞状态,按照水平线从左向右运行,如同履带,在整个链上运行. 根据时间t-1,t,t+1,我们可以看出 ...

  2. 深度学习--RNN,LSTM

    一.RNN 1.定义 递归神经网络(RNN)是两种人工神经网络的总称.一种是时间递归神经网络(recurrent neural network),另一种是结构递归神经网络(recursive neur ...

  3. LSTM及其变种及其克服梯度消失

    本宝宝又转了一篇博文,但是真的很好懂啊: 写在前面:知乎上关于lstm能够解决梯度消失的问题的原因: 上面说到,LSTM 是为了解决 RNN 的 Gradient Vanish 的问题所提出的.关于 ...

  4. LSTM介绍

    转自:https://blog.csdn.net/gzj_1101/article/details/79376798 LSTM网络 long short term memory,即我们所称呼的LSTM ...

  5. Deep Learning基础--理解LSTM网络

    循环神经网络(RNN) 人们的每次思考并不都是从零开始的.比如说你在阅读这篇文章时,你基于对前面的文字的理解来理解你目前阅读到的文字,而不是每读到一个文字时,都抛弃掉前面的思考,从头开始.你的记忆是有 ...

  6. RNN与 LSTM 网络

    循环神经网络(RNN) 人们的每次思考并不都是从零开始的.比如说你在阅读这篇文章时,你基于对前面的文字的理解来理解你目前阅读到的文字,而不是每读到一个文字时,都抛弃掉前面的思考,从头开始.你的记忆是有 ...

  7. 深度学习中的序列模型演变及学习笔记(含RNN/LSTM/GRU/Seq2Seq/Attention机制)

    [说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![认真看图][认真看图] [补充说明]深度学习中的序列模型已经广泛应用于自然语言处理(例如机器翻 ...

  8. BERT预训练模型的演进过程!(附代码)

    1. 什么是BERT BERT的全称是Bidirectional Encoder Representation from Transformers,是Google2018年提出的预训练模型,即双向Tr ...

  9. Paper | Highway Networks

    目录 1. 网络结构 2. 分析 解决的问题:在当时,人们认为 提高深度 是 提高精度 的法宝.但是网络训练也变得很困难.本文旨在解决深度网络训练难的问题,本质是解决梯度问题. 提出的网络:本文提出的 ...

随机推荐

  1. call是什么?一次说个明白

    首先简单粗暴的从例子中看概念 var a = {}; function foo() { this.name = "hello"; this.age = 100 } foo.call ...

  2. WordPress菜单“显示选项”无法显示的解决办法

    比较新版本的WordPress会出现点击“外观”——“菜单”右上角的“显示选项”无法打开的问题,而老版本的就没有这个问题,后台的其他页面中的这个 功能都可以正常使用,看来问题是因为中文版WordPre ...

  3. 初学Python3 - 写一个登录程序

    本篇主要实现一个简单的登录程序,默认给出一个账号密码,贴出写的代码及过程中遇到的问题. ----------------------------------------要求如下: username p ...

  4. Linux/Unix 资源

    Linux/Unix笔记本 初窥Linux 之 我最常用的20条命令 Linux Shell脚本教程

  5. AIX分页(交换)空间的监控

    1.分页和交换 这两个概念,很多人混为一回事儿,两者虽然有共性,但也有些差别.分页是进程的部分内容在RAM和磁盘的分页空间间移动,而交换是整个进程在RAM和磁盘的分页空间间移动,在将进程移到磁盘分页空 ...

  6. python趣味——与MS系列编译器一样强大的Unicode变量名支持

    中文变量名,中文函数名,中文类名等,可惜Python2不支持,但在Python3时代,这些都可以完美支持了. def 中文函数(): return 1

  7. 分享PHP中的10个实用函数

    分享PHP中的10个实用函数 PHP的功能越来越强大,里面有着非常丰富的内置函数.资深的PHP程序员对它们可能都很熟悉,但很多参加PHP培训的PHP初学者,仍然对一些非常有用的函数不太熟悉.这篇文章里 ...

  8. PHP开发中涉及到emoji表情的几种处理方法

    最近几个月做微信开发比较多,存储微信昵称必不可少 可这万恶的微信支持emoji表情做昵称,这就有点蛋疼了 一般Mysql表设计时,都是用UTF8字符集的.把带有emoji的昵称字段往里面insert一 ...

  9. C++模板类与Qt信号槽混用

    一.正文 目前正在做一个视频处理相关的项目.项目的技术栈是这样的,UI层采用Qt来实现基本的数据展示和交互,底层音视频采用的是一套基于FFmpeg的视频处理框架.这是一套类似Microsoft Med ...

  10. 笔记:Maven 生命周期与命令行详解

    Maven 拥有三套相互独立的生命周期,分别是 clean.default和site,clean 生命周期的目的是清理项目,default 生命周期的目的是构建项目,而site生命周期的目的是建立项目 ...