理解LSTM
本文基于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)

参考
理解LSTM的更多相关文章
- [译] 理解 LSTM 网络
原文链接:http://colah.github.io/posts/2015-08-Understanding-LSTMs/ 吴恩达版:http://www.ai-start.com/dl2017/h ...
- [译] 理解 LSTM(Long Short-Term Memory, LSTM) 网络
本文译自 Christopher Olah 的博文 Recurrent Neural Networks 人类并不是每时每刻都从一片空白的大脑开始他们的思考.在你阅读这篇文章时候,你都是基于自己已经拥有 ...
- (译)理解 LSTM 网络 (Understanding LSTM Networks by colah)
@翻译:huangyongye 原文链接: Understanding LSTM Networks 前言:其实之前就已经用过 LSTM 了,是在深度学习框架 keras 上直接用的,但是到现在对LST ...
- RNN(1) ------ “理解LSTM”(转载)
原文链接:http://www.jianshu.com/p/9dc9f41f0b29 Recurrent Neural Networks 人类并不是每时每刻都从一片空白的大脑开始他们的思考.在你阅读这 ...
- [转] 理解 LSTM 网络
[译] 理解 LSTM 网络 http://www.jianshu.com/p/9dc9f41f0b29 Recurrent Neural Networks 人类并不是每时每刻都从一片空白的大脑开始他 ...
- 技能|三次简化一张图:一招理解LSTM/GRU门控机制
作者 | 张皓 引言 RNN是深度学习中用于处理时序数据的关键技术, 目前已在自然语言处理, 语音识别, 视频识别等领域取得重要突破, 然而梯度消失现象制约着RNN的实际应用.LSTM和GRU是两种目 ...
- 『cs231n』RNN之理解LSTM网络
概述 LSTM是RNN的增强版,1.RNN能完成的工作LSTM也都能胜任且有更好的效果:2.LSTM解决了RNN梯度消失或爆炸的问题,进而可以具有比RNN更为长时的记忆能力.LSTM网络比较复杂,而恰 ...
- 【翻译】理解 LSTM 网络
目录 理解 LSTM 网络 递归神经网络 长期依赖性问题 LSTM 网络 LSTM 的核心想法 逐步解析 LSTM 的流程 长短期记忆的变种 结论 鸣谢 本文翻译自 Christopher Olah ...
- 【翻译】理解 LSTM 及其图示
目录 理解 LSTM 及其图示 本文翻译自 Shi Yan 的博文 Understanding LSTM and its diagrams,原文阐释了作者对 Christopher Olah 博文 U ...
- 如何简单的理解LSTM——其实没有那么复杂(转载)
转载地址:https://www.jianshu.com/p/4b4701beba92 1.循环神经网络 人类针对每个问题的思考,一般不会是完全的从头开始思考.正如当你阅读这篇译文的时候,你会根据已经 ...
随机推荐
- FCKEditor的使用步骤
在线发布信息难免要用到在线编辑器,下面就说下在线编辑器的使用步骤: 1.下载FCK,这个不说了 2.把ZZGSEditor文件夹放到网站根目录 3.把FredCK.FCKeditorV2.dll文件放 ...
- 初始mvc4(一) 新建项目
mvc4和mvc4.5基本大同小异,vs2012中已经集成了mvc,不需要手动安装了,现在就来看看如何新建mvc项目 一.首先打开vs2012,新建项目,选中web中mvc4 二.选择项目模板 这里面 ...
- AngularJS+Ionic开发-2.项目结构介绍
使用上篇博客<开发环境搭建>中的命令创建完成IonicHelloWorld项目,在VSCode中的左侧,显示该项目的结构信息,如下图所示: 1 .sourcesmaps文件夹 调试状态的j ...
- c#实战开发:以太坊Geth 常用命令 (四)
首先运行客户端 当前命令分为 eth,web3 ,personal ,net 输入 >eth 可以看到该命令下的所有方法 > eth 1.创建用户 personal.newAccount ...
- ppt提取文字
ALT+F11调出开发窗口 加入引用 插入模块 输入代码运行 Sub Main() On Error Resume Next Dim temp As New Word.Document, tmpSha ...
- Spark练习代码
1.scalaWordCount package com._51doit.spark.day1 import org.apache.spark.rdd.RDDimport org.apache.spa ...
- 找不到指定的模块 c#
首先查这个模块是否存在 若存在,用depends工具查找依赖模块,看下依赖模块是否存在, 依赖模块可以和模块放到同一路径下
- 深入理解Java 8 Lambda(语言篇)
State of Lambda by Brian Goetz 原文链接:http://lucida.me/blog/java-8-lambdas-insideout-language-features ...
- scala简单入门_wordCount
scala的语法写起来是非常的舒服的,相比java来说,简便许多.而Java在scala面前就显的略微有些笨重了. 接下来我们看一下scala版的wordcount import scala.io.S ...
- 【c++】计算句子中单词的平均长度
Description 编程输入一行文本,计算这行文本的单词平均长度.假设每个单词用至少一个空格或者标点(英文逗号.句号)隔开.使用C++ string类型. Input 输入一行文本,不包含数字 O ...