简单理解LSTM神经网络

2018 年 2 月 6 日 算法与数学之美

递归神经网络 


在传统神经网络中,模型不会关注上一时刻的处理会有什么信息可以用于下一时刻,每一次都只会关注当前时刻的处理。举个例子来说,我们想对一部影片中每一刻出现的事件进行分类,如果我们知道电影前面的事件信息,那么对当前时刻事件的分类就会非常容易。实际上,传统神经网络没有记忆功能,所以它对每一刻出现的事件进行分类时不会用到影片已经出现的信息,那么有什么方法可以让神经网络能够记住这些信息呢?答案就是Recurrent Neural Networks(RNNs)递归神经网络。

递归神经网络的结果与传统神经网络有一些不同,它带有一个指向自身的环,用来表示它可以传递当前时刻处理的信息给下一时刻使用,结构如下: 


 


其中, Xt为输入,A为模型处理部分, ht为输出。


为了更容易地说明递归神经网络,我们把上图展开,得到: 




这样的一条链状神经网络代表了一个递归神经网络,可以认为它是对相同神经网络的多重复制,每一时刻的神经网络会传递信息给下一时刻。如何理解它呢?假设有这样一个语言模型,我们要根据句子中已出现的词预测当前词是什么,递归神经网络的工作原理如下: 




其中,W为各类权重,x表示输入,y表示输出,h表示隐层处理状态。


递归神经网络因为具有一定的记忆功能,可以被用来解决很多问题,例如:语音识别、语言模型、机器翻译等。但是它并不能很好地处理长时依赖问题。


长时依赖问题 


长时依赖是这样的一个问题,当预测点与依赖的相关信息距离比较远的时候,就难以学到该相关信息。例如在句子”我出生在法国,……,我会说法语“中,若要预测末尾”法语“,我们需要用到上下文”法国“。理论上,递归神经网络是可以处理这样的问题的,但是实际上,常规的递归神经网络并不能很好地解决长时依赖,好的是LSTMs可以很好地解决这个问题。


LSTM 神经网络 


Long Short Term Mermory network(LSTM)是一种特殊的RNNs,可以很好地解决长时依赖问题。那么它与常规神经网络有什么不同? 
首先我们来看RNNs具体一点的结构: 




所有的递归神经网络都是由重复神经网络模块构成的一条链,可以看到它的处理层非常简单,通常是一个单tanh层,通过当前输入及上一时刻的输出来得到当前输出。与神经网络相比,经过简单地改造,它已经可以利用上一时刻学习到的信息进行当前时刻的学习了。


LSTM的结构与上面相似,不同的是它的重复模块会比较复杂一点,它有四层结构: 




其中,处理层出现的符号及表示意思如下: 




LSTMs的核心思想 


理解LSTMs的关键就是下面的矩形方框,被称为memory block(记忆块),主要包含了三个门(forget gate、input gate、output gate)与一个记忆单元(cell)。方框内上方的那条水平线,被称为cell state(单元状态),它就像一个传送带,可以控制信息传递给下一时刻。 




这个矩形方框还可以表示为: 


 


这两个图可以对应起来看,下图中心的 ct即cell,从下方输入( ht−1,xt)到输出 ht的一条线即为cell state, ft,it,ot分别为遗忘门、输入门、输出门,用sigmoid层表示。上图中的两个tanh层则分别对应cell的输入与输出。


LSTM可以通过门控单元可以对cell添加和删除信息。通过门可以有选择地决定信息是否通过,它有一个sigmoid神经网络层和一个成对乘法操作组成,如下: 


 


该层的输出是一个介于0到1的数,表示允许信息通过的多少,0 表示完全不允许通过,1表示允许完全通过。


逐步解析LSTM

 
LSTM第一步是用来决定什么信息可以通过cell state。这个决定由“forget gate”层通过sigmoid来控制,它会根据上一时刻的输出
ht−1和当前输入 xt来产生一个0到1 的 ft值,来决定是否让上一时刻学到的信息 Ct−1通过或部分通过。如下: 




举个例子来说就是,我们在之前的句子中学到了很多东西,一些东西对当前来讲是没用的,可以对它进行选择性地过滤。


第二步是产生我们需要更新的新信息。这一步包含两部分,第一个是一个“input gate”层通过sigmoid来决定哪些值用来更新,第二个是一个tanh层用来生成新的候选值 C~t,它作为当前层产生的候选值可能会添加到cell state中。我们会把这两部分产生的值结合来进行更新。 




现在我们对老的cell state进行更新,首先,我们将老的cell state乘以 ft来忘掉我们不需要的信息,然后再与 it∗C~t相加,得到了候选值。


一二步结合起来就是丢掉不需要的信息,添加新信息的过程: 




举个例子就是,在前面的句子中我们保存的是张三的信息,现在有了新的李四信息,我们需要把张三的信息丢弃掉,然后把李四的信息保存下来。


最后一步是决定模型的输出,首先是通过sigmoid层来得到一个初始输出,然后使用tanh将 
Ct值缩放到-1到1间,再与sigmoid得到的输出逐对相乘,从而得到模型的输出。 



这显然可以理解,首先sigmoid函数的输出是不考虑先前时刻学到的信息的输出,tanh函数是对先前学到信息的压缩处理,起到稳定数值的作用,两者的结合学习就是递归神经网络的学习思想。至于模型是如何学习的,那就是后向传播误差学习权重的一个过程了。

上面是对LSTM一个典型结构的理解,当然,它也会有一些结构上的变形,但思想基本不变,这里也就不多讲了。


参考:http://colah.github.io/poss/2015-08-Understanding-LSTMs/

∑编辑 | Gemini

来源 | csdn博客


算法数学之美微信公众号欢迎赐稿

稿件涉及数学、物理、算法、计算机、编程等相关领域
稿件一经采用,我们将奉上稿酬。

投稿邮箱:math_alg@163.com


登录查看更多
3

相关内容

递归神经网络(RNN)是神经网络的一种。单纯的RNN因为无法处理随着递归,权重指数级爆炸或梯度消失问题,难以捕捉长期时间关联;而结合不同的LSTM可以很好解决这个问题。 时间递归神经网络可以描述动态时间行为,因为和前馈神经网络(feedforward neural network)接受较特定结构的输入不同,RNN将状态在自身网络中循环传递,因此可以接受更广泛的时间序列结构输入。手写识别是最早成功利用RNN的研究结果。
【ICML2020-西电】用于语言生成的递归层次主题引导RNN
专知会员服务
21+阅读 · 2020年6月30日
【ICML2020-华为港科大】RNN和LSTM有长期记忆吗?
专知会员服务
74+阅读 · 2020年6月25日
【斯坦福CS520】向量空间中嵌入的知识图谱推理,48页ppt
专知会员服务
100+阅读 · 2020年6月11日
《强化学习》简介小册,24页pdf
专知会员服务
272+阅读 · 2020年4月19日
神经网络的拓扑结构,TOPOLOGY OF DEEP NEURAL NETWORKS
专知会员服务
31+阅读 · 2020年4月15日
麻省理工学院MIT-ICLR2020《神经网络能推断出什么?》
专知会员服务
50+阅读 · 2020年2月19日
【MIT深度学习课程】深度序列建模,Deep Sequence Modeling
专知会员服务
77+阅读 · 2020年2月3日
复旦大学邱锡鹏老师《神经网络与深度学习》书册最新版
神经网络与深度学习,复旦大学邱锡鹏老师
专知会员服务
118+阅读 · 2019年9月24日
【论文笔记】基于LSTM的问答对排序
专知
12+阅读 · 2019年9月7日
三次简化一张图:一招理解LSTM/GRU门控机制
机器之心
15+阅读 · 2018年12月18日
基于 Keras 用 LSTM 网络做时间序列预测
R语言中文社区
21+阅读 · 2018年8月6日
递归神经网络
Datartisan数据工匠
4+阅读 · 2018年8月2日
基础 | 深度解析LSTM神经网络的设计原理
黑龙江大学自然语言处理实验室
6+阅读 · 2018年6月16日
一文详解LSTM网络
论智
18+阅读 · 2018年5月2日
基础 | GRU神经网络
黑龙江大学自然语言处理实验室
27+阅读 · 2018年3月5日
深度学习基础之LSTM
全球人工智能
28+阅读 · 2017年12月18日
深度解析LSTM神经网络的设计原理
AI研习社
5+阅读 · 2017年11月1日
深入理解LSTM网络
深度学习
17+阅读 · 2017年6月7日
Do RNN and LSTM have Long Memory?
Arxiv
19+阅读 · 2020年6月10日
Bivariate Beta LSTM
Arxiv
5+阅读 · 2019年10月7日
Neural Image Captioning
Arxiv
5+阅读 · 2019年7月2日
Relational recurrent neural networks
Arxiv
8+阅读 · 2018年6月28日
Arxiv
21+阅读 · 2018年5月23日
Arxiv
14+阅读 · 2018年5月15日
Arxiv
22+阅读 · 2018年2月14日
Arxiv
4+阅读 · 2015年8月25日
VIP会员
相关VIP内容
【ICML2020-西电】用于语言生成的递归层次主题引导RNN
专知会员服务
21+阅读 · 2020年6月30日
【ICML2020-华为港科大】RNN和LSTM有长期记忆吗?
专知会员服务
74+阅读 · 2020年6月25日
【斯坦福CS520】向量空间中嵌入的知识图谱推理,48页ppt
专知会员服务
100+阅读 · 2020年6月11日
《强化学习》简介小册,24页pdf
专知会员服务
272+阅读 · 2020年4月19日
神经网络的拓扑结构,TOPOLOGY OF DEEP NEURAL NETWORKS
专知会员服务
31+阅读 · 2020年4月15日
麻省理工学院MIT-ICLR2020《神经网络能推断出什么?》
专知会员服务
50+阅读 · 2020年2月19日
【MIT深度学习课程】深度序列建模,Deep Sequence Modeling
专知会员服务
77+阅读 · 2020年2月3日
复旦大学邱锡鹏老师《神经网络与深度学习》书册最新版
神经网络与深度学习,复旦大学邱锡鹏老师
专知会员服务
118+阅读 · 2019年9月24日
相关资讯
【论文笔记】基于LSTM的问答对排序
专知
12+阅读 · 2019年9月7日
三次简化一张图:一招理解LSTM/GRU门控机制
机器之心
15+阅读 · 2018年12月18日
基于 Keras 用 LSTM 网络做时间序列预测
R语言中文社区
21+阅读 · 2018年8月6日
递归神经网络
Datartisan数据工匠
4+阅读 · 2018年8月2日
基础 | 深度解析LSTM神经网络的设计原理
黑龙江大学自然语言处理实验室
6+阅读 · 2018年6月16日
一文详解LSTM网络
论智
18+阅读 · 2018年5月2日
基础 | GRU神经网络
黑龙江大学自然语言处理实验室
27+阅读 · 2018年3月5日
深度学习基础之LSTM
全球人工智能
28+阅读 · 2017年12月18日
深度解析LSTM神经网络的设计原理
AI研习社
5+阅读 · 2017年11月1日
深入理解LSTM网络
深度学习
17+阅读 · 2017年6月7日
相关论文
Do RNN and LSTM have Long Memory?
Arxiv
19+阅读 · 2020年6月10日
Bivariate Beta LSTM
Arxiv
5+阅读 · 2019年10月7日
Neural Image Captioning
Arxiv
5+阅读 · 2019年7月2日
Relational recurrent neural networks
Arxiv
8+阅读 · 2018年6月28日
Arxiv
21+阅读 · 2018年5月23日
Arxiv
14+阅读 · 2018年5月15日
Arxiv
22+阅读 · 2018年2月14日
Arxiv
4+阅读 · 2015年8月25日
Top
微信扫码咨询专知VIP会员