深度学习之LSTM篇

欢迎参观 一> 个人小站

一. RNN

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

Recurrent Neural Networks have loops.

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

**An unrolled recurrent neural network.**

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

二. 长期依赖的问题

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

RNN-shorttermdepdencies

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

RNN-longtermdependencies

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

三. LSTM

3.1 介绍

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

The repeating module in a standard RNN contains a single layer.

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

lstm

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

The repeating module in an LSTM contains four interacting layers

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

这里写图片描述

3.2 遗忘门

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

这里写图片描述

3.3 输入门

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

这里写图片描述

3.4 更新单元状态

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

这里写图片描述

3.5 输出门

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

这里写图片描述

References

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

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页