本文基于Understanding-LSTMs进行概括整理,对LSTM进行一个简单的介绍

什么是LSTM

LSTM(Long Short Term Memory networks)可以解决传统RNN的长期依赖(long-term dependencies)问题。它对传统RNN的隐层进行了结构上的改进。

LSTM的内部结构


这是传统的RNN的结构,内部有一个tanh层

LSTM和传统RNN结构类似,然而内部结构却有所不同


图中所示的水平线就是LSTM中的状态信息,可以把这个理解为记忆(memory)

下面介绍门的概念,LSTM中的门可以选择性的控制信息的流动,通常由一个sigmoid神经网络层和一个point wise(或者叫element wise)的乘法操作组成。

LSTM中有三种门:

  • 遗忘门:

    可以看到这里的\(f_{t}\)由输入的\(x_t\)和\(h_{t-1}\)得到,用来控制\(C_{t-1}\)中的信息的遗忘程度。\(f_{t}\)中的每个值都是0-1中的一个数,下界0代表完全遗忘,上界1代表完全不变。

  • 输入门:

    遗忘门决定了历史状态信息的遗忘程度,那么输入门的作用就是往状态信息中添加新东西。同样,由输入的\(x_t\)和\(h_{t-1}\)得到当前的\(i_t\)用以控制新状态信息的更新程度。这里新状态信息\(\tilde{C}\)也是通过输入的\(x_t\)和\(h_{t-1}\)计算得出。


那么当前新的状态信息\(C_t\)就很显然可以通过上式计算得出,通俗的说就是遗忘一些旧信息,更新一些新信息进去。

  • 输出门:

    最后就是输出门了。类似地,根据\(x_t\)和\(h_{t-1}\)得出\(o_{t}\)用以控制哪些信息需要作为输出。

概括一下:

  • 状态信息\(C_t\)的依赖于遗忘门\(f_t\)和输入门\(i_t\)
  • 遗忘门\(f_t\)和输入门\(i_t\)依赖于输入参数中的\(h_{t-1}\)
  • 而当前隐层输出\(h_t\)依赖于\(C_t\)

LSTM的一些变种

增加peephole connections

Gers & Schmidhuber (2000)提出的增加peephole connections

图中所示,在所有的门之前都与状态线相连,使得状态信息对门的输出值产生影响。但一些论文里只是在部门门前加上这样的连接,而不是所有的门

耦合遗忘门和输入门


这一种变体是将遗忘门和输入门耦合在一起,简单来说就是遗忘多少就更新多少新状态,没有遗忘就不更新状态,全部遗忘那就新状态全部更新进去。

GRU

这是目前比较流行的LSTM变种,不仅将遗忘门和输入门统一为更新们,而且将h和c也给合并了。可参考Cho, et al. (2014)

参考

Understanding-LSTMs

理解LSTM的更多相关文章

  1. [译] 理解 LSTM 网络

    原文链接:http://colah.github.io/posts/2015-08-Understanding-LSTMs/ 吴恩达版:http://www.ai-start.com/dl2017/h ...

  2. [译] 理解 LSTM(Long Short-Term Memory, LSTM) 网络

    本文译自 Christopher Olah 的博文 Recurrent Neural Networks 人类并不是每时每刻都从一片空白的大脑开始他们的思考.在你阅读这篇文章时候,你都是基于自己已经拥有 ...

  3. (译)理解 LSTM 网络 (Understanding LSTM Networks by colah)

    @翻译:huangyongye 原文链接: Understanding LSTM Networks 前言:其实之前就已经用过 LSTM 了,是在深度学习框架 keras 上直接用的,但是到现在对LST ...

  4. RNN(1) ------ “理解LSTM”(转载)

    原文链接:http://www.jianshu.com/p/9dc9f41f0b29 Recurrent Neural Networks 人类并不是每时每刻都从一片空白的大脑开始他们的思考.在你阅读这 ...

  5. [转] 理解 LSTM 网络

    [译] 理解 LSTM 网络 http://www.jianshu.com/p/9dc9f41f0b29 Recurrent Neural Networks 人类并不是每时每刻都从一片空白的大脑开始他 ...

  6. 技能|三次简化一张图:一招理解LSTM/GRU门控机制

    作者 | 张皓 引言 RNN是深度学习中用于处理时序数据的关键技术, 目前已在自然语言处理, 语音识别, 视频识别等领域取得重要突破, 然而梯度消失现象制约着RNN的实际应用.LSTM和GRU是两种目 ...

  7. 『cs231n』RNN之理解LSTM网络

    概述 LSTM是RNN的增强版,1.RNN能完成的工作LSTM也都能胜任且有更好的效果:2.LSTM解决了RNN梯度消失或爆炸的问题,进而可以具有比RNN更为长时的记忆能力.LSTM网络比较复杂,而恰 ...

  8. 【翻译】理解 LSTM 网络

    目录 理解 LSTM 网络 递归神经网络 长期依赖性问题 LSTM 网络 LSTM 的核心想法 逐步解析 LSTM 的流程 长短期记忆的变种 结论 鸣谢 本文翻译自 Christopher Olah ...

  9. 【翻译】理解 LSTM 及其图示

    目录 理解 LSTM 及其图示 本文翻译自 Shi Yan 的博文 Understanding LSTM and its diagrams,原文阐释了作者对 Christopher Olah 博文 U ...

  10. 如何简单的理解LSTM——其实没有那么复杂(转载)

    转载地址:https://www.jianshu.com/p/4b4701beba92 1.循环神经网络 人类针对每个问题的思考,一般不会是完全的从头开始思考.正如当你阅读这篇译文的时候,你会根据已经 ...

随机推荐

  1. FCKEditor的使用步骤

    在线发布信息难免要用到在线编辑器,下面就说下在线编辑器的使用步骤: 1.下载FCK,这个不说了 2.把ZZGSEditor文件夹放到网站根目录 3.把FredCK.FCKeditorV2.dll文件放 ...

  2. 初始mvc4(一) 新建项目

    mvc4和mvc4.5基本大同小异,vs2012中已经集成了mvc,不需要手动安装了,现在就来看看如何新建mvc项目 一.首先打开vs2012,新建项目,选中web中mvc4 二.选择项目模板 这里面 ...

  3. AngularJS+Ionic开发-2.项目结构介绍

    使用上篇博客<开发环境搭建>中的命令创建完成IonicHelloWorld项目,在VSCode中的左侧,显示该项目的结构信息,如下图所示: 1 .sourcesmaps文件夹 调试状态的j ...

  4. c#实战开发:以太坊Geth 常用命令 (四)

    首先运行客户端  当前命令分为 eth,web3 ,personal ,net 输入 >eth 可以看到该命令下的所有方法 > eth 1.创建用户 personal.newAccount ...

  5. ppt提取文字

    ALT+F11调出开发窗口 加入引用 插入模块 输入代码运行 Sub Main() On Error Resume Next Dim temp As New Word.Document, tmpSha ...

  6. Spark练习代码

    1.scalaWordCount package com._51doit.spark.day1 import org.apache.spark.rdd.RDDimport org.apache.spa ...

  7. 找不到指定的模块 c#

    首先查这个模块是否存在 若存在,用depends工具查找依赖模块,看下依赖模块是否存在, 依赖模块可以和模块放到同一路径下

  8. 深入理解Java 8 Lambda(语言篇)

    State of Lambda by Brian Goetz 原文链接:http://lucida.me/blog/java-8-lambdas-insideout-language-features ...

  9. scala简单入门_wordCount

    scala的语法写起来是非常的舒服的,相比java来说,简便许多.而Java在scala面前就显的略微有些笨重了. 接下来我们看一下scala版的wordcount import scala.io.S ...

  10. 【c++】计算句子中单词的平均长度

    Description 编程输入一行文本,计算这行文本的单词平均长度.假设每个单词用至少一个空格或者标点(英文逗号.句号)隔开.使用C++ string类型. Input 输入一行文本,不包含数字 O ...