LSTM(Long Short-Term Memory) 网络

翻译自colah'blog,网址为http://colah.github.io/posts/2015-08-Understanding-LSTMs/git


Long Short-Term Memory 网络—— 通常就叫作 LSTM ——是一种 RNN 特殊的类型,能够学习长期依赖信息。LSTM 由Hochreiter & Schmidhuber (1997)提出,并在近期被Alex Graves进行了改良和推广。在不少问题,LSTM 都取得至关巨大的成功,并获得了普遍的使用。github


LSTM 经过刻意的设计来避免长期依赖问题。记住长期的信息在实践中LSTM 的默认行为,而非须要付出很大代价才能得到的能力!
微信


全部 RNN 都具备一种重复神经网络模块的链式的形式。在标准的 RNN 中,这个重复的模块只有一个很是简单的结构,例如一个 tanh 层。
网络




LSTM 一样是这样的结构,可是重复的模块拥有一个不一样的结构。不一样于 单一神经网络层,这里是有四个,以一种很是特殊的方式进行交互。post





如今,咱们先来熟悉一下图中使用的各类元素的图标。学习




在上面的图例中,每一条黑线传输着一整个向量,从一个节点的输出到其余节点的输入。粉色的圈表明 pointwise 的操做,诸如向量的和,而黄色的矩阵就是学习到的神经网络层。合在一块儿的线表示向量的链接,分开的线表示内容被复制,而后分发到不一样的位置。人工智能


LSTM 的核心思想


LSTM 的关键就是细胞状态,水平线在图上方贯穿运行。spa


细胞状态相似于传送带。直接在整个链上运行,只有一些少许的线性交互。信息在上面流传保持不变会很容易。
.net



LSTM 有经过精心设计的称做为“门”的结构来去除或者增长信息到细胞状态的能力。门是一种让信息选择式经过的方法。他们包含一个 sigmoid 神经网络层和一个 pointwise 乘法操做。翻译




Sigmoid 层输出 0 到 1 之间的数值,描述每一个部分有多少许能够经过。0 表明“不准任何量经过”,1 就指“容许任意量经过”!


LSTM 拥有三个门,来保护和控制细胞状态。


逐步理解 LSTM


在咱们 LSTM 中的第一步是决定咱们会从细胞状态中丢弃什么信息。这个决定经过一个称为忘记门层完成。该门会读取 h_{t-1}x_t,输出一个在 0 到 1 之间的数值给每一个在细胞状态 C_{t-1} 中的数字。1 表示“彻底保留”,0 表示“彻底舍弃”。


让咱们回到语言模型的例子中来基于已经看到的预测下一个词。在这个问题中,细胞状态可能包含当前主语的性别,所以正确的代词能够被选择出来。当咱们看到新的主语,咱们但愿忘记旧的主语





下一步是肯定什么样的新信息被存放在细胞状态中。这里包含两个部分。第一,sigmoid 层称 “输入门层” 决定什么值咱们将要更新。而后,一个 tanh 层建立一个新的候选值向量,\tilde{C}_t,会被加入到状态中。下一步,咱们会讲这两个信息来产生对状态的更新。


在咱们语言模型的例子中,咱们但愿增长新的主语的性别到细胞状态中,来替代旧的须要忘记的主语。





如今是更新旧细胞状态的时间了,C_{t-1} 更新为 C_t。前面的步骤已经决定了将会作什么,咱们如今就是实际去完成。


咱们把旧状态与 f_t 相乘,丢弃掉咱们肯定须要丢弃的信息。接着加上 i_t * \tilde{C}_t。这就是新的候选值,根据咱们决定更新每一个状态的程度进行变化。


在语言模型的例子中,这就是咱们实际根据前面肯定的目标,丢弃旧代词的性别信息并添加新的信息的地方。




更新细胞状态


最终,咱们须要肯定输出什么值。这个输出将会基于咱们的细胞状态,可是也是一个过滤后的版本。首先,咱们运行一个 sigmoid 层来肯定细胞状态的哪一个部分将输出出去。接着,咱们把细胞状态经过 tanh 进行处理(获得一个在 -1 到 1 之间的值)并将它和 sigmoid 门的输出相乘,最终咱们仅仅会输出咱们肯定输出的那部分。


在语言模型的例子中,由于他就看到了一个 代词,可能须要输出与一个 动词 相关的信息。例如,可能输出是否代词是单数仍是负数,这样若是是动词的话,咱们也知道动词须要进行的词形变化。







本文分享自微信公众号 - AI MOOC人工智能平台(AIMOOC_XLAB)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索