详解LSTM(Understanding LSTM Networks)

欢迎点击参观我的 ——> 个人学习网站

循环神经网络(RNNs)

   人们思考的时候往往会依据之前的经验,正如读这篇文章的时候,在读第二段的时候你会回忆第一段相关的内容,而不是将每一段单独来进行学习。正是因为这具有连贯性。

   这也恰好是传统神经网络的缺点。例如,你想要分辨一个电影在每个时刻想要发生什么情节。传统神经网络不能根据前一刻的情节来判断下一刻发生的情节。

   但是,RNN可以解决这个问题。因为RNN的网络结构中有很多循环,可以让信息持久下去。
Recurrent Neural Networks have loops.

   如图所示,xt 是输入, ht 是输出,中间的循环则允许信息从网络的前一个步骤传递到下一个步骤。

   这样看可能不太明显,我们将RNN网络展开如下图,它其实可以看作多个传统的神经网络结构连接而成,只是前一个网络将一些信息传递给下一个网络。
**An unrolled recurrent neural network.**

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

   重点是,这些取得的成果使用的是RNN的一个变种结构——- “LSTMs”,它的效果要比传统的RNN网络结构好的多。

长期依赖的问题

   RNN的一个很大优点是可以将之前的信息连接到当前的任务中,例如你可以联想看过的电影情节来预测接下来要发生的故事情节。如果RNN能够真正做到这样,那对很多领域非常有用。但是事实并非这样,它视情况而定。

   有时我们当前的任务只需要最近的信息就可以了。例如,语言模型基于之前的几个词就可以预测接下来的词。假设想要预测 the clouds are in the *sky,* 的最后一个单词,我们不需要太多的上下文语境就可以推测出是 sky 。在这种语境很简单,并且相关信息与其位置差距很小的情况下,RNNs可以很好的从之前的语境推测出答案。
RNN-shorttermdepdencies

   但是很多情况下我们需要更多的上下文情节。假如我们想要推测 I grew up in France… I speak fluent *French.* 的最后一个词, 根据最近的词的语境,最后一个词最可能的是一种语言,但是想要知道是什么语言,我们需要知道很靠前的 France 这个词。很有可能相关信息和我们需要的关键信息相隔非常远。

   然而,随着间隔的增大,RNNs也越来越不能从之前的信息学到东西。

   然而,随着间隔的增大,RNNs也越来越不能从之前的信息学到东西。
RNN-longtermdependencies

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

LSTM网络

   LSTMs 是RNN的一种特殊网络结构,通常也被称为长短期记忆网络,它可以有效解决长期依赖问题。有关介绍可参见Hochreiter & Schmidhuber (1997) 。LSTM被明确的设计出来解决长期依赖问题,它很大的功能就是嫩记住很长时间之前的信息。所有的RNNs网络结构都是由一串相同的神经网络单元构成。标准的RNN神经单元都很简单,比如只有一个 tanh 层。
The repeating module in a standard RNN contains a single layer.

   LSTM同样也是这种链式结构,但是其神经网络单元不同。它拥有四个层而不是一层,并且这四层相互作用。
The repeating module in an LSTM contains four interacting layers

    不用担心上面复杂的流程图,接下来我们一步步讲述。首先看下图,流程图中的每一条黑线表示将一个向量从一个节点的输出传输到另一个节点的输入;红色圆圈表示向量运算,比如向量相加、向量相乘等;黄色的方块表示学习神经网络层;合并线表示将数据合并;分叉线表示其内容被复制为多份并且转移到不同的地方。
这里写图片描述

LSTM核心思想

   LSTM最重要的就是 Cell State (细胞状态): Ct ,它就像一种传输带,仅仅通过一些少量的线性运算,通过水平线贯穿作用在整个流程图中。

Cell:相当于一个记事本,有个叫State的参数记东西。

这里写图片描述

   LSTM还可以通过调节 一种被称为”门“的结构在神经单元上增加或者减少信息。”门“可以让信息选择性的通过,由 sigmoid 神经网络层和点乘运算操作构成。
这里写图片描述

   sigmoid 层的输出是一个介于0到1之间的数,表示可以通过的信息量。0表示丢弃所有的信息,1表示让所有的信息全部通过。LSTM一共有三个”门“用来控制 Cell State

LSTM工作步骤详解

    LSTM首先确定从 Cell State 中丢弃哪些信息,这个决定是由被称为”遗忘门“的 sigmoid 层所决定的。输入 ht1xt ,输出一个介于0到1的数至单元状态 Ct1 。1代表全部保留,0代表全部丢弃。

    让我们继续看基于所有之前词语来预测新词的语言模型,Cell State 也许包含了当前主语的类别,所以可以选择正确的代词。当看到一个新的主语时,我们就会忘记之前旧的那个。
这里写图片描述

   接下来,我们要确定在 Cell State 中存储哪些新信息,两部分完成。第一步:由 sigmoid 层构成的”更新门“确定我们需要更新的值。接着,由 tanh 层建立一个能够和 Ct1 相加的候选集向量 Ct~;第二步:将这第一步中的东西结合产生新的更新状态。

    在语言模型中,我们想要添加新的主语到 Cell State ,来取代要遗忘的旧的主语。
这里写图片描述

   现在利用旧的 Cell StateCt1 更新新的 Cell StateCt1 。使用 Ct1 乘以 ft ,表示忘掉我们决定丢弃之前的那些信息。然后加上 itCt~ ,这就是新的 Cell State。在语言模型中,这就是我们丢弃旧的主语,添加新信息的步骤。
这里写图片描述

   最终的输出基于 Cell StateCt 。首先经过 sigmoid 层来确定 Ct 的哪些部分需要输出,然后将 Ct 通过 tanh 层变为一个介于-1到1的值,乘上 sigmoid 层的输出,这就是我们需要的输出。
这里写图片描述

References

Understanding LSTM Networks

阅读更多
文章标签: LSTM
个人分类: 深度学习
上一篇使用python搭建简易区块链
下一篇详解从 Seq2Seq模型、RNN结构、Encoder-Decoder模型 到 Attention模型
想对作者说点什么? 我来说一句

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

关闭
关闭
关闭