【深度学习研究系列】漫谈RNN之长短期记忆模型LSTM

推送第三日,量化投资与机器学习公众号将为大家带来一个系列的 Deep Learning 原创研究。本次深度学习系列的撰稿人为 张泽旺 ,DM-Master,目前在研究自动语音识别系统。希望大家有所收获,共同进步!

长短期记忆模型LSTM

首先想,为什么RNN的记忆性不够?我们可以把梯度消失问题转换成比较形象的解释,例如可能是输入权重Win没有很好地过滤掉输入噪音,还有可能是输出权重W_out没有很好地输出有用的记忆信息。一方面W_in既要吸收有用的输入信号,另一方面W_in又要过滤掉输入噪音,对于W_in而言,其承担的功能太多;同样,对于W_out而言也是,既要提取有用的记忆信息,又要去除没用的记忆信息。所以,提出LSTM的思路就是要解决输入噪音问题以及如何输出有用的信息,换句话说,就是要优化W_in和W_out的角色。

因此,LSTM要解决的核心问题主要有两点:

  • 隐含状态应该存储什么
  • 从隐含状态应该输出什么

这个时候,我们可以添加两个门,分别是输入门以及输出门,这两个门的作用分别是过滤输入信息的噪音、控制输出有用的信息。

输入门函数:

输出门函数:

其中f_in和f_out分别是输入门和输出门,它们元素的值都在0~1之间。中间符号是矩阵相乘。

我们可以从上面这幅图去理解LSTM的结构。左边是原始RNN的结构,原始的RNN单元含有一个记忆模块,而这个记忆模块与其输入、输出神经元直接相连。

上图中间是LSTM结构,其核心是一个memory cell,LSTM的输入共有三个,分别是:当前时刻的输入x,上一时刻的输出h,以及上一时刻的memory cell。而LSTM的输出则有两个,分别是:当前时刻的memory cell,以及当前时刻的输出h。总结成一句话就是:LSTM的核心是由当前时刻的输入、上一时刻的输出、上一时刻的记忆共同决策的,并且产生一个新的输出,同时又更新了内部的记忆。

上图右边是LSTM的计算公式,i是输入门,o是输出门,a是遗忘门,c是记忆细胞,h是最终的输出。如果上图不容易理解的话,可以参照下图LSTM的结构。

从上图看LSTM更加直观。下面分别讲解LSTM的具体不同模块的作用。

  • 遗忘门。遗忘门的作用就是对历史信息的取舍,如果遗忘门关闭,那么不会有任何历史记忆进来;反之,如果遗忘门完全打开,那么所有的历史记忆都将通过。如上图的左边第一个'+'模块,遗忘门是由当前时刻输入x、前一时刻输出h、前一时刻记忆c共同决定的。
  • 记忆模块。可以看到最上面一条线,LSTM的记忆模块就是一个流动的信息,它会从t=0一直更新到t=T时刻,它就像一种流一样,在前进的过程中不断更新,并且受当前输入x以及前一时刻输出h的共同作用。具体说,首先上一时刻的记忆信息会与遗忘门进行相乘,然后它与通过tanh激活的新的记忆进行相加合并,并且新的记忆也是通过与输入门进行相乘得到的。这样就完成了从C_t-1到C-t的过渡。
  • 输入门。输入门的作用就是决定有多少新记忆将和老记忆进行合并,输入门和遗忘门的决定因素一样,即由当前时刻输入x、前一时刻输出h、前一时刻记忆c共同决定的。
  • 输出门。输出门即决定着LSTM单元对外界的响应h。输出门的决定因素和输入门、遗忘门的决定因素相同。
  • LSTM的输出。LSTM的输出主要受输出门控制,具体来说,LSTM的输出h是由当前时刻合并后的新记忆通过tanh再激活之后与输出门进行相乘而得到的。h的作用是提供给外界的输出以及影响下一时刻提供新的记忆信息。
  • 随着时间长度逐渐增大,矩阵W的特征值如果小于1,那么就会导致梯度接近于0;另一方面,如果特征值大于1,在后向传播过程中就会导致梯度爆炸;
  • sigmoid激活函数的导数范围是[0,0.25],这加剧了梯度消失问题的发生;

LSTM通过引入常数偏导来解决了这个问题,即Constant Error Carousels(CEC),CEC的具体意思是令求导偏导为单位矩阵,即:

这个时候,只要σ函数为线性函数即可,W_h固定即可使得偏导固定为一个常数单位矩阵;甚至,可以直接令W为单位矩阵,σ为恒等变换线性函数:

简单来说,CEC的做法就是对于细胞单元永远传递偏导为1的信号,而让其他各个门函数的权重去自我学习,如下图所示,这样就使得了LSTM的记忆细胞可以学得更长的历史记忆信息,从而解决了导致梯度消失的问题。

中间细胞单元的权重一直保持为单位矩阵,其他三个非线性单元是用来控制误差流进入细胞单元的大小。如果没有添加遗忘门的话,其结构图如下:

输入门和输出门分别负责允许多少输入流入以及允许多少信息流到下一时刻,而中间的记忆细胞是一个CEC结构。当我们求导的时候,偏导中始终会有一个单位矩阵I存在,这就保证了梯度不会消失为0:

当加入了遗忘门以后,遗忘门就可以对历史记忆进行进一步取舍,换句话说,遗忘门可以决定哪些记忆没有必要记住:

总结一下,LSTM不同于RNN的地方有以下几点:

  • 它通过输入门来决定何时让输入进入细胞单元;
  • 它通过遗忘门来决定何时应该记住前一时刻的记忆;
  • 它通过输出门来决定何时让记忆流入到下一时刻;

无论是输入门、遗忘门还是输出门,都是通过此刻的输入以及前一时刻的输出来决定的,这一点本质上和原始的RNN是一样的,RNN的隐含层状态是通过此刻的输入以及前一时刻的输出来决定的,只不过LSTM在RNN基础上添加了一个细胞层,而这个细胞层使得了相邻时刻的信息传递程度比RNN要高,因此具备了长时间记忆功能。

原文发布于微信公众号 - 量化投资与机器学习(ZXL_LHTZ_JQXX)

原文发表时间:2016-12-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

深度 | 可视化LSTM网络:探索「记忆」的形成

选自Medium 作者:Piotr Tempczyk 机器之心编译 参与:陈韵竹、刘晓坤 在卷积神经网络领域中有许多可视化方面的研究,但是对于 LSTM 却没有...

4237
来自专栏量子位

谷歌开源语义图像分割模型DeepLab-v3+ | 附代码

据谷歌在博客上的描述,DeepLab-v3+模型是目前DeepLab中最新的、执行效果最好的语义图像分割模型,可用于服务器端的部署。

1532
来自专栏小鹏的专栏

tensorflow_cookbook--preface

Preface         TensorFlow在2015年11月由Google开放,从此,它已经成为GitHub上最受欢迎的机器学习库。 TensorFl...

18610
来自专栏AI科技大本营的专栏

SVM大解密(附代码和公式)

写在之前 支持向量机(SVM),一个神秘而众知的名字,在其出来就受到了莫大的追捧,号称最优秀的分类算法之一,以其简单的理论构造了复杂的算法,又以其简单的用法实现...

1.3K9
来自专栏Coding迪斯尼

手算梯度下降法,详解神经网络迭代训练过程

2054
来自专栏人工智能

使用TensorFlow自动识别验证码(三)

先知安全技术社区独家发表本文,如需要转载,请先联系先知案件技术社区授权;未经授权请勿转载。 0X000 前言 这是该 系列的第三篇文章, 本系列最后一篇。前面几...

2737
来自专栏杨熹的专栏

用 TensorFlow 创建自己的 Speech Recognizer

参考资料 源码请点:https://github.com/llSourcell/tensorf... ---- 语音识别无处不在,siri,google,讯飞...

3235
来自专栏Echo is learning

machine learning 之 多元线性回归

1503
来自专栏人工智能

用TensorFlow生成抽象图案艺术

QQ图片20180204220437.jpg

8935
来自专栏数据派THU

教你用Python解决非平衡数据问题(附代码)

本文为你分享数据挖掘中常见的非平衡数据的处理,内容涉及到非平衡数据的解决方案和原理,以及如何使用Python这个强大的工具实现平衡的转换。

1102

扫码关注云+社区

领取腾讯云代金券