Recurrent Neural Network(3):LSTM Basics and 《Inside Out》
下图是Naive RNN的Recurrent Unit示意图,可以看到,在每个时间点t,Recurrent Unit会输出一个隐藏状态ht,对ht加工提取后将产生t时刻的输出yt。而在下一个时间节点t+1,ht与下一时刻的输入xt+1将线性组合后,pass through一个activation function,如tanh,产生状态ht+1.

LSTM Unit解决了Naive RNN上Vanishing Gradient 和 Exploding Gradient的问题。如下图所示,首先可以看到1在time dimension上,最上方类似传送带的结构,是cell state。我们可以理解为memory,然后在其下方分别有三个gate,是foget gate, input gate and output gate.

Cell State:即上图中最上方的传送带结构,是在时间维度上传递所谓的Cell State,即长期记忆。在Jurgen Schmidhuber的论文"Recurrent Nets that Time and Count"中,称该结构为Constant Error Carrousel(CEC)。可以把CEC理解为《Inside Out》中的memory library,存储着开心、愤怒、悲伤和恐惧的记忆。

疑问:Library是静止的,在传送带上传递个啥?回答:其实作为人脑记忆库而言,看似并没有被放在一个传送带上做类似上图的工作,但实际上,当人体静止不动的时候,我们也被放在时间的车轮上滚滚向前。所以我们如果从此刻开始,记忆的图书馆里,不出、不进,安心的做一个植物人,那么在LSTM的结构中,仅仅保留最上方的那条传输带就可以了.

也即:
C(t)=C(t-1)
Input Gate: 但既然我们在日复一日的工作、生活并产生记忆,那么就必然涉及到新记忆的存储。存还是不存?存在哪里?这个记忆球是否真的重要?此时Input Gate就发挥作用了。对于记忆Library而言,该Gate是一个审核单元,很多不需要的记忆球即刻就被丢弃了,保护了记忆库不被干扰,而对于需要存储的记忆,Input Gate会分配权重。像一家人一起打冰球的这种记忆单元,一定是非常非常重要的,在电影中,它可是Family Island的组成部分哦。

Forget Gate: 为了保证library不被爆仓,当新的记忆单元需要存储时,就会有工作人员,在电影中叫做Fogetter,在LSTM中叫做Forget Gate,来清扫这些没用的记忆球并丢弃。

Output Gate: 在输出部分,虽然我们有很多很多很多的记忆球,但在某一时刻并不需要把所有东西都输出出来。拿出该拿出的就是刚刚好,否则对于输出层而言,也是一种干扰。所以,在输出ht的时候,output gate会从记忆库中选择需要的记忆球,以合适的方式进行输出。像极了inside out中,headquarter利用传输管道,提取记忆球并进行放映的步骤。

Peephole: 最后一个问题是,到底谁来控制这些Gate? 在最初版本的LSTM中,Gates的状态是由当前时刻的输入xt和上一时刻的输出ht-1线性组合后pass through一个sigmoid function来控制的。而目前新版的LSTM则加入了Peephole,即长时记忆单元的值,用当前时刻的输入、前一时刻的输出、前一时刻的长时记忆,三者线性组合再做sigmoid压缩来决定,即:
g = σ(W*xt+V*ht-1+U*ct-1)
这样的设计其实也符合了人脑记忆的工作模式:通过当前的事件,刚刚发生的事情,以及过去的记忆,来共同决定下一步的动作。
当然,和Inside Out电影不同的是,目前并没有情绪或心理学的应用在LSTM中,不过个人倒着实对于Sentiment Analysis有些兴趣,不如今后再来进一步讨论。
Recurrent Neural Network(3):LSTM Basics and 《Inside Out》的更多相关文章
- Recurrent Neural Network系列4--利用Python,Theano实现GRU或LSTM
yi作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORK ...
- Recurrent Neural Network(循环神经网络)
Reference: Alex Graves的[Supervised Sequence Labelling with RecurrentNeural Networks] Alex是RNN最著名变种 ...
- 循环神经网络(Recurrent Neural Network,RNN)
为什么使用序列模型(sequence model)?标准的全连接神经网络(fully connected neural network)处理序列会有两个问题:1)全连接神经网络输入层和输出层长度固定, ...
- Recurrent Neural Network[survey]
0.引言 我们发现传统的(如前向网络等)非循环的NN都是假设样本之间无依赖关系(至少时间和顺序上是无依赖关系),而许多学习任务却都涉及到处理序列数据,如image captioning,speech ...
- Recurrent Neural Network系列1--RNN(循环神经网络)概述
作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...
- Recurrent Neural Network系列2--利用Python,Theano实现RNN
作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...
- Recurrent Neural Network系列3--理解RNN的BPTT算法和梯度消失
作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 这是RNN教程的第三部分. 在前面的教程中,我们从头实现了一个循环 ...
- Recurrent Neural Network[Content]
下面的RNN,LSTM,GRU模型图来自这里 简单的综述 1. RNN 图1.1 标准RNN模型的结构 2. BiRNN 3. LSTM 图3.1 LSTM模型的结构 4. Clockwork RNN ...
- 【NLP】Recurrent Neural Network and Language Models
0. Overview What is language models? A time series prediction problem. It assigns a probility to a s ...
随机推荐
- VUE组件嵌套
vue中组件嵌套烦分为两种,分别是全局注册组件和局部注册组件 基本步骤: 1.在components 下创建一个新的.vue结尾的文件,文件首字母最好是大写,基于规范复制代码 2.分别写出结构层< ...
- ES6——Promise
异步和同步 异步,操作之间没有关系,同时执行多个操作, 代码复杂 同步,同时只能做一件事,代码简单 Promise 对象 用同步的方式来书写异步代码 Promise 让异步操作写起来,像在写同步操作的 ...
- vue.js(10)--案例--列表增加与删除
品牌管理案例 (1)bootstrip快速布局 <div class="app"> <div class="panel panel-primary&qu ...
- linux创建相关待同步目录
[root@rsync-server-1 ~]# mkdir /data/{web,web_data}/redhat.sx -p [root@rsync-server-1 ~]# tree /data ...
- 基于cdn方式的vue+element-ui的单页面架构
一.下载vue2.x,下载element-ui.js以及css 二.html文件 <!DOCTYPE html> <html> <head> <meta ch ...
- html中的块级元素和行内元素
块级元素:块级大多为结构性标记 <address>...</adderss> <center>...</center> 地址文字 <h1> ...
- flask之表单
一:表单 表单用于注册,修改用户数据等场景. flask-wtf提供了一个包,可以创建表单:pip install flask-wtf 为了防止跨域请求,flask_wtf自己生成一个秘钥,用秘钥生成 ...
- 爬虫技术:数据处理josn和pickle模块
一:json模块 json模块的作用就是讲json字符串("{"a":1,"b":1}")和python能够识别的字典进行相互转换. imp ...
- 【leetcode】1028. Recover a Tree From Preorder Traversal
题目如下: We run a preorder depth first search on the root of a binary tree. At each node in this traver ...
- 对Kubernetes的研究
服务发现和负载平衡 自动包装 存储编排 自愈 自动部署和回滚 秘密和配置管理 批量执行 水平缩放 是一个对docer进行管理的平台.