之前我们介绍了RNN 网络结构以及其所遇到的问题,RNN 结构对于关联度太长的时序问题可能无法处理,

简单来说,RNN对于太久远的信息不能有效地储存,为了解决这个问题,有人提出了LSTM的网络结构,LSTM 网络结构最早是由 Hochreiter & Schmidhuber 在1997 年提出的,随着后来研究者的不断改进,LSTM网络在很多问题上都有非常好的表现,并且得到广泛的关注与应用。

LSTM 网络

LSTM 结构的一个优势在于可以很好的解决 “long-term dependency” 的问题,”长期记忆”是LSTM结构与生俱来的特性,而不需要刻意地去学习。

所有的RNN结构都是有一个不断重复的模块,在标准的RNN结构中,这个不断重复的模块是一个单层的tanh , 如下图所示:

表达式简单来说就是: ht=tanh(Wh⋅[ht−1,Xt]+bh)

LSTM 网络也是有一个不断重复的模块,但是这个模块不是一个简单的tanh层,而是有复杂的四个网络层,用一种特殊的方式连接在一起,如下图所示:

LSTM 的核心思想

LSTM 网络的关键是 cell state,就是网络结构中最上面的那条水平线,如下图所示:

这条水平线贯穿整个网络,与一些线性组合相结合,可以将信息无改变的传递。

LSTM 网络具备的另外一种能力就是移除或者增加一些信息,这个过程是由一些称为传送门的结构来控制的,传送门可以让信息有选择的通过,这种门结构由sigmoid 层 与 点乘运算符组成。如下图所示:

其中,sigmoid 层输出 0-1 之间的数,控制信息传递的概率,1表示信息完全通过,0表示信息完全不能通过,一个典型的LSTM 网络有三个这样的传送门用来控制 cell state.

逐步深入LSTM

LSTM 网络的第一步就是决定哪些信息将从 cell state 中剔除掉,这一步是由一个sigmoid 层来负责的,sigmoid 层会根据输入的ht−1 和 xt输出一系列 0-1 之间的数,这些数表示了状态 Ct−1 中信息保存下来的概率,1 表示完全保存,而 0 表示完全剔除。结构及表达式如下图所示:

接下来的一步是要决定哪些新的信息需要存储在cell state 中,这一步有两部分,首先,一个称为 “input gate layer”的sigmoid 层会决定哪些信息要被更新,然后 一个 tanh 层会创建一个新的向量 C̃ t , 这个新的向量有可能被加入到 cell state 中,接下来的一步,我们会结合这两部分对cell state 创建一个更新,结构及表达式如下图所示:

现在,就是对网络的旧状态Ct−1 进行更新到新的状态 Ct , 前面两部已经做好了所有的准备的工作,我们只需要进行简单的线性组合运算即可,结构及表达式如下图所示:

ft 和 it 是两个控制门,Ct−1 是网络的旧状态,C̃ t 是网络更新的信息,ft 表示有多少旧信息会被剔除,而 it 表示会有多少新的信息加入进来。

最后,我们需要给出输出,我们同样需要一个sigmoid层来决定Ct 中哪些是需要被输出的,然后我们让 cell state 通过一个 tanh 层 将值映射到到 [-1, 1]之间,然后乘以sigmoid层的输出,这样最终输出的就是我们决定输出的。结构与表达式如下图所示:

总得来说,LSTM结构,利用了几个传送门来控制信息的删除与更新,通过一些设计好的连接方式,可以拥有“长期记忆”的能力。与标准的RNN结构最大的区别就在于,LSTM是利用模块层里的神经网络来控制信息,而RNN是利用模块本身的连接方式来处理信息。所以与RNN相比,LSTM处理时序信息的能力要更强。性能也更稳定。

这里介绍的只是最常见的一种LSTM结构,实际上还有很多LSTM的变种,更加详细的介绍,可以参考colah 的博客。

http://colah.github.io/posts/2015-08-Understanding-LSTMs/

最新文章

  1. unity3d导出到IOS程序下 集成unity3dAR功能
  2. (404) 未找到 获取StatusCode状态码
  3. hdu 3037 Saving Beans Lucas定理
  4. 【Cocos2d-x】VS2012开发2dx无法解析的外部符号解决记录(第一篇)【转】
  5. 【风马一族_代码英语】代码英语之八 ADB
  6. Python快速入门学习笔记(一)
  7. Yii2 自定义Gii生成代码模板
  8. EF 拉姆达 动态拼接查询语句
  9. Python数据处理进阶——pandas
  10. 源于《Unity官方实例教程 “Space Shooter”》思路分析及相应扩展
  11. JS封闭函数、闭包、内置对象
  12. 这一次带你彻底了解Cookie
  13. 0. Java虚拟机系列备忘预览图
  14. 在使用Idea配置jQuery的问题
  15. [UE4]寻找敌人
  16. 题解 P1130 【红牌】
  17. javax.naming.NamingException: Cannot create resource instance报错修改
  18. UNIX高级环境编程(4)Files And Directories - umask、chmod、文件系统组织结构和链接
  19. gcc 编译 + 选项【转】
  20. windows mysql默认配置文件

热门文章

  1. CImage将图片转为指定像素大小
  2. 【u251】心灵的抚慰
  3. [Angular] @ContentChild with Directive ref
  4. error C2220: warning treated as error - no 'object' file generated warning C4819: The file contains a character that cannot be represented in the current code page (936).
  5. 奇虎360Java笔试题
  6. FAST特征点检测&&KeyPoint类
  7. 用Java对CSV文件进行读写操作
  8. USB 3.0规范中译本 第3章 USB 3.0体系结构概览
  9. 小强的HTML5移动开发之路(49)——HTML5开发神器HBuilder
  10. 【图解】Web前端实现相似Excel的电子表格