欢迎参观 一> 个人小站

一. RNN

RNNs 多用来处理序列数据,像一段文本,一段视频,一段音频这样连续的数据。其网络结构如下图:

深度学习之LSTM篇

xt 为输入, ht 为输出,中间的循环结构则允许信息从网络的前一个步骤传递到下一个步骤。将 RNN 网络展开如下图,它可看作多个神经网络结构连接而成,只是前一个网络将一些信息传递给下一个网络。

深度学习之LSTM篇

这种链式结构很明显适用于序列数据,RNNs 在语音识别、语言模型、机器翻译、图像描述等领域都取得了很大的成功。具体的可以参考 The Unreasonable Effectiveness of Recurrent Neural Networks

二. 长期依赖的问题

在语言模型中,假设我们要预测 the clouds are in the sky, 这句话的最后一个单词,不需要太多的上下文信息就可以推测出是 sky 。在这种句子简短的情况下,RNNs 可以很好的从之前的上下文推测出答案。

深度学习之LSTM篇

但假如我们想要推测 I grew up in France…… I speak fluent French. 的最后一个词, 根据最后一句话的信息,最后一个词最可能是一种语言,但是想要知道是什么语言,则需要考虑最前面句子的 France 这个词,这种情况句子相隔非常远,RNNs 也越来越不能从之前的信息学到东西,这就是长期依赖问题。如下图所示:

深度学习之LSTM篇

理论上,RNNs 可以通过人工调节参数来解决这种”长期依赖“问题。但是实践证明,RNNs并不能很好的学习很长的句子。

三. LSTM

3.1 介绍

LSTMsRNN 的变体,通常也被称为长短期记忆网络,它可以有效解决长期依赖问题。LSTM 的优点是能记住很长时间之前的信息。RNN 的网络结构都是由一串相同的神经单元构成。比如只有一个 tanh 层。

深度学习之LSTM篇

LSTM同样也是这种链式结构,但是其神经单元被设计成称作“门单元”的结构:输入门、遗忘门和输出门。其结构如下:

深度学习之LSTM篇

将其简化到神经单元中则如下图所示:

深度学习之LSTM篇
深度学习之LSTM篇

LSTM 最重要的就是 Cell State (单元状态): Ct ,用来存储比较靠前的上下文信息,由输入门和遗忘门计算得到。

深度学习之LSTM篇

3.2 遗忘门

遗忘门用来使单元状态丢掉一些信息,使得很早之前的信息得以保留,由一个 sigmoid 层构成,计算对象为当前输入 xt 和上一个隐状态 ht1 ,其输出一个介于 0 到 1 的数,表示可以通过的信息量。0表示丢弃所有的信息,1表示让所有的信息全部通过。

深度学习之LSTM篇

3.3 输入门

输入门可以丢弃一些无关紧要的信息,其计算分两步,第一步:由 sigmoid 层构成的”更新门“确定我们需要更新的值。接着,由 tanh 层建立一个能够和 Ct1 相加的候选集向量 Ct~;第二步:将这第一步中的东西结合产生新的更新状态。

深度学习之LSTM篇

3.4 更新单元状态

使用上一时刻的 Cell StateCt1 更新当前时刻的 Cell StateCt 。使用 Ct1 点乘遗忘门的结果 ft ,表示丢掉一部分之前的信息。然后加上输入门第二步的结果 itCt~ ,这就是新的单元状态。

深度学习之LSTM篇

3.5 输出门

最终的输出基于单元状态:Ct 。首先经过 sigmoid 层来确定 Ct 的哪些部分需要输出,然后将 Ct 通过 tanh 层变为一个介于-1到1的值,乘上 sigmoid 层的输出,这就是下一时刻的输出,即 ht

深度学习之LSTM篇

References

Understanding LSTM Networks
LSTM Forward and Backward Pass
https://www.jianshu.com/p/dcec3f07d3b5

相关文章: