下图是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》的更多相关文章

  1. Recurrent Neural Network系列4--利用Python,Theano实现GRU或LSTM

    yi作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORK ...

  2. Recurrent Neural Network(循环神经网络)

    Reference:   Alex Graves的[Supervised Sequence Labelling with RecurrentNeural Networks] Alex是RNN最著名变种 ...

  3. 循环神经网络(Recurrent Neural Network,RNN)

    为什么使用序列模型(sequence model)?标准的全连接神经网络(fully connected neural network)处理序列会有两个问题:1)全连接神经网络输入层和输出层长度固定, ...

  4. Recurrent Neural Network[survey]

    0.引言 我们发现传统的(如前向网络等)非循环的NN都是假设样本之间无依赖关系(至少时间和顺序上是无依赖关系),而许多学习任务却都涉及到处理序列数据,如image captioning,speech ...

  5. Recurrent Neural Network系列1--RNN(循环神经网络)概述

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...

  6. Recurrent Neural Network系列2--利用Python,Theano实现RNN

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...

  7. Recurrent Neural Network系列3--理解RNN的BPTT算法和梯度消失

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 这是RNN教程的第三部分. 在前面的教程中,我们从头实现了一个循环 ...

  8. Recurrent Neural Network[Content]

    下面的RNN,LSTM,GRU模型图来自这里 简单的综述 1. RNN 图1.1 标准RNN模型的结构 2. BiRNN 3. LSTM 图3.1 LSTM模型的结构 4. Clockwork RNN ...

  9. 【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 ...

随机推荐

  1. Golang环境配置

    下载 下载地址 Go官网下载地址:https://golang.org/dl/ Go官方镜像站(推荐):https://golang.google.cn/dl/ 版本选择 安装 Windows安装 示 ...

  2. 游戏服务端pomelo完整安装配置过程

    版权声明:本文为博主原创文章,转载或又一次发表请先与我联系. https://blog.csdn.net/jonahzheng/article/details/27658985 游戏服务端pomelo ...

  3. jQuery中attr()和prop()及removeAttr()和removeProp()的区别

    在jquery1.6之前的所有版本中设置和获取元素属性(固有属性和自定义属性)都使用attr方法,后来单独把设置和获取元素固有属性单独做成了prop()方法. 一般来说: 对于HTML元素本身就带有的 ...

  4. Sql Server 2008安装时提示重启计算机失败解决办法

    在键盘上按下组合键[Win]+[R],调出运行窗口.   在窗口中输入“regedit”,点击确定,打开注册表管理界面.   在注册表左侧目录栏中找到如下位置:“HKEY_LOCAL_MACHINE\ ...

  5. nodejs npm资料

    安装淘宝的 cnpm : npm install --global cnpm 不想安装 cnpm  又想使用淘宝的服务器来下载 : npm install jquery --registry=http ...

  6. Linux性能优化从入门到实战:03 CPU篇:CPU上下文切换

      linux操作系统是将CPU轮流分配给任务,分时执行的.而每次执行任务时,CPU需要知道CPU寄存器(CPU内置的内存)和程序计数器PC(CPU正在执行指令和下一条指令的位置)值,这些值是CPU执 ...

  7. PCB项目 X1 STC12C5A60S2-LQPF48

    单片机控制系统双层板STC51 简介: STC12C5A60S2主芯片,12MHz主频 12V电源输入,12/5/3V电源输出 4路0~12V可调10位ADC输入 4路1A大电流达林顿输出 4路INT ...

  8. css 伪类选择器:checked实例讲解

    css :checked伪类选择器介绍 css :checked伪类选择器用于选择匹配所有被选中的单选按钮(radio)或复选框(checkbox),你可以结合:checked伪类选择器和:not选择 ...

  9. flask之显示当地时间

    一:在网页上显示时间 flask-moment 程序扩展可以实现 pip install flask-moment # 未完待续

  10. [洛谷P2459] SDOI2011 消耗战

    问题描述 在一场战争中,战场由n个岛屿和n-1个桥梁组成,保证每两个岛屿间有且仅有一条路径可达.现在,我军已经侦查到敌军的总部在编号为1的岛屿,而且他们已经没有足够多的能源维系战斗,我军胜利在望.已知 ...