理解长短期记忆网络

Understanding LSTM Networks

循环神经网络

理解长短期记忆网络
展开循环神经网络

The Unreasonable Effectiveness of Recurrent Neural Networks
理论上,循环神经网络完全可以掌控“长句依赖”,可以人为的选择好的参数。
但实践证明,循环神经网络看起来不能学习长句。
长短期记忆没有这个问题

长短期记忆网络

长短期记忆网络是一种特殊的循环神经网络,可以解决长句依赖问题。


理解长短期记忆网络
一个标准循环神经网络中的重复模块包含一个单层

理解长短期记忆网络
长短期记忆网络中的重复模块包含四个交互层

理解长短期记忆网络
符号

在上面的图中,每一行都携带一个完整的向量,从一个节点的输出到其他节点的输入
粉红色的圆圈表示逐点操作,比如向量加法
黄色的方框表示learned神经网络层
行合并表示连接
行分叉表示内容被复制和被复制的内容去向不同位置

长短期记忆网络背后的核心思想

长短期记忆网络的关键是单元状态,即贯穿图顶部的水平线。
长短期记忆网络确实能够删除单元状态的信息或添加信息到单元状态,这是由称为门的结构仔细控制的。
门是一种可选地让信息通过的方法。它们由sigmoid神经网络层和逐点乘法运算组成。
sigmoid层输出0到1之间的数字,描述每个component应该允许通过的数量。
0的值表示“不让任何东西通过”
1的值表示“让所有东西通过!”

长短期记忆一步步讲解

忘记

决定要从单元状态中丢弃什么信息。
这个决定是由一个叫做“忘记门”的sigmoid层做出的。
1表示“完全保留这个”
0表示“完全丢弃这个”


理解长短期记忆网络
根据上一时刻的单元状态的输出和当前时刻的输入决定忘记多少旧的

记住

决定要在单元格状态中记住什么新信息。
1、一个名为“输入门层”的sigmoid层决定要更新哪些值。
2、tanh层创建一个新的候选值向量,可以将其添加到状态中。


理解长短期记忆网络
记住什么新的

更新

理解长短期记忆网络
更新单元状态

输出

决定要输出什么
此输出将基于单元状态,但将是经过筛选的版本。
1、运行一个sigmoid层,它决定我们要输出的单元状态的哪些部分
2、把单元状态输入到tanh(将值推到-1和1之间),将其乘以sigmoid门的输出
这样只输出决定要输出的部分。


理解长短期记忆网络
输出什么

长短期记忆的变体

peephole连接

Gers & Schmidhuber (2000)
添加peephole连接,门层观察单元状态
图中在所有的门上都加了窥视孔
但是很多论文只会给出一些窥视孔,而不会给出其他的。

理解长短期记忆网络
peephole连接

coupled 忘记和输入门

不是单独决定忘记什么和应该添加什么新信息,而是一起做这些决定。
当且仅当要记住什么的时候才会忘记
当且仅当要忘记什么的时候才会记住


理解长短期记忆网络
coupled 忘记和输入门

Gated Recurrent Unit

Cho, et al. (2014)
将忘记和输入门组合成一个“更新门”。
它还融合了单元状态和隐藏状态,并做了一些其他的改变。
得到的模型比标准长短期记忆模型更简单,并且越来越流行。

理解长短期记忆网络
Gated Recurrent Unit