Long Short Term Memory networks (LSTM)
Long Short Term Memory networks
Abstract
* 循环神经网络(Recurrent Neural Networks)
* 长期依赖性挑战(The Challenge of Long-Term Dependencies)
* LSTM 网络(Long Short-Term Memory (LSTM) Networks)
* 基于核心原理的核心机制(The Fundamental Principle of LSTMs)
* 逐步分析(LSTM Process Analysis)
* 长短期记忆的不同变体(Variants of Long Short-Term Memory)
* 结论(Conclusion)
致谢(Acknowledgments)
参考文献
Abstract
- 声明:此篇文章仅此为我在休闲时间学习的笔记记录,请自我约束避免误读。
循环神经网络(Recurrent Neural Networks)
人类并非思维起点为空白的状态,在阅读这篇文章的过程中,请依据您现有的词汇知识去解读每一个新的词语。您无需抛弃所有先前的知识体系与思维方式,请始终保持您的思维方式的一致性与稳定性
传统的神经网络难以实现这一目标,并由此显得存在明显的缺陷。设想一个人试图将影片中的每一个点所发生的事件进行分类。目前尚不清楚传统神经网络如何通过利用它对电影中先前发生的事件进行推理推断后继事件的可能性。
循环神经网络解决了这个问题。它们是具有循环的网络,允许信息持久化。

循环神经网络包含循环结构
在图中显示的区域_A_中,请观察当前时刻的输入数据X_t并生成对应的输出数据h_t。 循环机制使信息能够在相邻的时间步之间传递。
这些循环让人对循环神经网络的作用机制仍感好奇。然而,在深入探究后发现其行为与传统神经网络并无本质差异。我们可以将其理解为同一网络的不同副本,并认为每个副本将信息传递给后续的模型单元。如果我们将这些循环展开会发生什么呢?

展开的循环神经网络
这种链状性质表明了循环神经网络与序列和列表之间的密切关系。它们构成了一类数据处理的基础架构。
他们毫无疑问地被广泛使用!近年来,在各个领域应用Recurrent Neural Networks(RNN)均取得了令人难以置信的成就:语音识别、自然语言处理、机器翻译以及图像 Captioning 等等……这些领域不断扩展。本文暂时跳过这一令人惊叹的成就,请参考安德烈·卡帕西撰写的《The Unreasonable Effectiveness of Recurrent Neural Networks》一文(The Unreasonable Effectiveness of Recurrent Neural Networks),但我相信其壮举远非我们所知。
这些成功的关键在于采用了LSTM技术这一独特方法,在深度学习领域中尤其突出的是循环神经网络(RNN)体系,在众多算法中LSTM相较于传统版本具有显著的优势与改进空间。基于此,在深度学习研究中几乎所有的创新成果都借助它们取得了突破性的进展。本文旨在深入探讨这些LSTM模型及其应用前景。
长期依赖性问题(The Problem of Long-Term Dependencies)
RNN的一个显著优点在于它们或许能够将过去的信息与当前任务关联起来。例如,在通过分析前一帧的视频信息去理解当前帧时。如果RNN具备这种能力,则它们将非常有用。然而这取决于具体情况。
有时情况下我们会选择仅回顾最近的历史信息来完成当前操作举个例子假设有一个语言模型其功能是根据过去的词汇推断下一个可能出现的词汇。例如当我们要预测"the clouds are in the sky"这一短语时我们无需额外的背景信息——显而易见下一个词将是"sky"。在这种情况下如果相关的历史信息与所需位置之间的距离较小RNN网络能够有效地利用历史数据进行推断

在某些情况下, 获取额外的信息可能会有所帮助. 为了探索这一可能性, 我们可以尝试预测文本中的最后一个词'我在法国长大…我会说流利_french. _根据最近的信息分析结果来看, 下一个单词可能是一种语言的名称. 如果我们的目标是缩小候选语言的数量, 具体来说, 在这种情况下, 我们需要法国的文化背景作为参考点. 两者之间的差距可能会变得相当显著.
不幸的是,随着这种差距的扩大,RN无法学习连接信息。

在理论上
谢天谢地,LSTM 没有此问题!
LSTM 网络(LSTM Networks)
Long Short-Term Memory (LSTM)网络(通常被简称为LSTM)是一种特殊的 recurrent neural network(RNN),具有学习长期依赖关系的能力。该方法源于霍奇赖特和施密德胡伯于1997年提出的研究,并因此得到了广泛的发展与应用。根据colah的详细解析[1]可知,在多个领域中 LSTM 网络表现出了色,并因此得到了广泛应用。
LSTM 特别设计以抑制长期依赖问题。实际上它们习惯性地将信息存储起来而非难以学习的内容。
LSTM 特别设计以抑制长期依赖问题。实际上它们习惯性地将信息存储起来而非难以学习的内容。
所有循环神经网络均采用神经网络重复模块链的架构形式,在标准 RNN 模型中这一重复单元通常设计为极其简单的构造模式,并且一般只包含一个 tanh 类型层

准 RNN 中的重复模块由一个单独的神经网络层构成。 LSTM 也具备这种链状结构,但其重复模块呈现不同的结构特征. 而非只有一个简单的神经网络层,而是包含了四个神经网络层,并以一种特殊的方式进行交互.

LSTM中的循环机制包含了四个传递路径。
无需过分关注细节部分。稍后我们将逐步讲解 LSTM 的工作原理。在此基础上,请我们暂时接受并熟悉我们将会采用的符号体系

在上图所示中可以看到每一行都包含完整的一组向量从单个节点的输出传递到其他节点的输入其中粉红色圆形框代表逐点操作例如矢量运算中的加法操作而黄框则用于学习构建神经网络各层结构值得注意的是行合并对应于模块间的串联连接这种连接方式有助于信息的有效传递而当出现行分叉时则意味着将复制的内容并将其副本分散至不同的位置以便于后续处理
LSTM 背后的核心理念(The Core Idea Behind LSTMs)
LSTM 的关键是单元格状态,即贯穿关系图顶部的水平线。
细胞的状态类似于沿着一条连续轨道运行的过程。沿着一条直线穿行的是该系统的主要特征,在此过程中仅存在微弱的一维相互作用。该系统能够持续地传递而不发生变化的信息流。

LSTM 确实能够删除或向细胞状态添加信息,由称为门的结构仔细调节。
盖茨是一种传递信息的方式。它们是由 sigmoid 神经网络层以及点乘法构成的。

sigmoid层输出处于0到1之间的数值,并用于衡量每个组件的通道开放程度。当该数值为零时,则表示允许所有输入通过;而当数值接近1时,则表示完全关闭该通道。
LSTM 具有三个这些门,用于保护和控制细胞状态。
分步 LSTM 演练(Step-by-Step LSTM Walk Through)
我们的LSTM模型的第一步主要负责处理细胞状态中应舍弃的信息。该过程主要依据被称为"忘记门机制"的sigmoid层来进行判断。它的作用类似于大脑中的遗忘开关。
和
,并输出一个介于0和1对于单元格状态中的每个数字
表示"完全保留这一点",而0表示"完全摆脱这一点"。
在我们讨论的语言模型实例中,在这些问题中,“单元格的状态”可能会包含当前主题的性别信息。当遇到新的主题时,在这种情况下我们需要遗忘旧主题的具体性别信息以避免混淆。

下一步将是确定我们在单元格状态中存储哪些新信息。这分为两个方面。首先, sigmoid层将确定我们将更新哪些值。接下来,tanh图层将生成新的候选值向量
,可以添加到状态。在下一步中,我们将合并这两个状态以创建状态的更新。
在我们的语言模型示例中,在该单元格状态中我们希望将新主体的性别加入进去以代替我们曾经忘记的旧主题

现在是时候更新旧的单元格状态了,
,进入新的单元格状态
前面的步骤已经决定了该做什么,我们只需要实际完成。
我们把旧状态乘以
忘记我们决定忘记的事情。然后我们添加
这是新的候选值,根据我们决定更新每个状态值的多少进行缩放。
在语言模型构建过程中,在我们选定的先前阶段中,我们实际将剔除与旧主题相关的性别数据,并引入新数据。

最后阶段,在确定输出内容方面上会采用一种筛选机制。该输出基于当前的状态作为筛选后的结果。首先,在神经网络中通常会使用sigmoid函数来处理这一选择过程。它用于筛选出需要传递的信息。随后,在这一过程中会经过tanh激活以进一步精炼信号特征。经过tanh激活后会得到一系列数值参数化表示的变化情况,并将这些值与sigmoid门的输出相乘从而仅传递被选定的信息。
以语言模型为例,在仅观察到单一的主题情况下(即只有一个主题),该系统可能需要推断谓词的相关信息从而预防可能出现的情况。比如,在这种情况下(即当只有一个主题被观察到时),系统可能会确定主语的单复数形式以便明确动词的时态和语态影响后续的语法处理过程。

长期短期记忆的变体(Variants on Long Short Term Memory)
到目前为止所描述的这个LSTM属于一种典型的架构。然而,并非所有LSTM架构都完全等同于上述结构。实际上,在现有的文献中几乎所有的研究均采用了略微不同的变体形式。尽管这些变体之间的差异微小程度令人瞩目。
到目前为止所描述的这个LSTM属于一种典型的架构。然而,并非所有LSTM架构都完全等同于上述结构。实际上,在现有的文献中几乎所有的研究均采用了略微不同的变体形式。尽管这些变体之间的差异微小程度令人瞩目。
说明

上图增加了所有门的窥视孔,但许多文件会给出一些窥视孔,而不是其他。
另一种实现方式是通过耦合忘记和输入门。并非由单一机制负责选择遗忘的内容;而是通过综合考虑所有候选状态来更新模型参数。我们将所有旧的状态丢弃当处理新的输入时,并将它们的位置重新赋值以供后续计算使用。只有在处理旧数据的时候才会将新值注入到状态中以保持系统的稳定性与准确性

相对于传统LSTM架构,在结构上更为简洁的一种改进来自于Cho等人(2014年)提出的循环神经网络单元(RNNU)。该方法通过整合遗忘门与输入门形成单一的更新机制。此外,该架构进一步整合了细胞状态与隐层状态,并在此基础上进行了若干优化调整。所构建的模型相较于传统LSTM架构不仅在结构上更为简洁,而且逐渐获得了广泛关注。

这些仅是几种最具代表性的 LSTM 变体之一。除此之外还有许多其他的变种例如深度门RNN由姚等研究者(2015)所提出它还采用了一些完全不同的方法用于解决长期依赖问题例如时钟工作RNN由Koutnik等研究者(2014)提出
哪些变体最为出色?差异是否显著?Greff等人(2015年)对此进行了全面的比较研究,并发现所有流行变体的性能相当。Jozefowicz等人(2015年)进行了大规模实验,并发现了某些RNN架构在特定任务中的卓越性能。
结论(Conclusion)
之前,在介绍神经网络时提到了人们通过RNN获得的重要成果。大体上来说,在多数情况下能够表现出色的是通过LSTM来实现的。对于许多任务来说,在多数情况下能够表现出色!
作为一个由一系列复杂的数学方程构成的模型组,LSTM确实让人望而生畏.期待在文章中能逐步深入地了解它们,并让这些复杂的机制变得更加直观易懂.
LSTM 是我们在 RNN 中实现的一项重要突破。自然会疑问:还有下一步吗?这一普遍观点指出:“是的!确实存在下一步。”其核心理念是让 RNN 的每一个步骤都能从中提取关键信息。例如,在利用 RNN 自动生成图像标题时,则会选择从图像中提取关键部分来生成每个单词的结果。事实上,在这项研究中(如徐等人(2015)所做的——探索注意力机制可以从这里入手),我们已经看到了许多令人兴奋的结果,并且这一领域似乎还有更多的发现等待挖掘!
注意力并非RNN研究中唯一引人注目的线索。例如,在2015年Kalchbrenner等人的研究表明[1]网格型LSTM展现出巨大的潜力。在生成模型领域中基于RNN的研究也取得了诸多成果[2][3][4]包括Gregor等人(2015年)、钟等人(2015年)以及拜耳和奥森多夫(2015年)。过去几年对于循环神经网络的发展而言无疑是一个极具吸引力的时刻,在未来几年里相关领域的研究承诺会进一步深化!
致谢(Acknowledgments )
我感激诸多助力者对我的支持与指导,在助力下我更深入地掌握LSTM模型的核心原理,并对其性能进行评估结果及改进方向提出反馈意见。
衷心感谢我在谷歌工作的同事(其中包括奥里奥尔·维尼亚尔斯、格雷格·科拉多、乔恩·施伦斯、卢克·维尔尼斯以及伊利亚·苏茨沃)的帮助与支持。我也衷心感谢许多其他同事抽空帮助我完成这项研究工作(包括达里奥·阿莫迪和雅各布·斯坦哈特)。特别值得一提的是,在整个研究过程中,赵京贤就我的图表提出了非常周到的意见和建议。
在之前的文章中,在两次学术交流会上我进行了LSTM模型的讲解,并开设了一节关于神经网络的课程。我表示感谢所有参与的人对我表示耐心和帮助,并对他们的反馈持开放态度。
除原作者外之外,在现代LSTM的发展中还有许多重要人物作出了贡献。此外,在这一领域的发展中有一些非官方 contributors list值得注意:费利克斯•格斯(Felix Gers)、弗雷德•康明斯(Fred Kats支球队)、圣地亚哥•费尔南德斯(Santiago Feijóo)、贾斯汀•拜耳(Jasmin Bohn)、丹•维尔斯特拉(Dan Villegas)、朱利安•托格利乌斯(Julian Titze)、福斯蒂诺•戈麦斯(Fivos Timios)以及马特奥•加格里奥洛(Matteo Gori)。这些人在网络上活跃并分享了他们的研究工作,并且他们的工作也得到了https://colah.github.io/posts/2015-08-Understanding-LSTMs/处的引用支持。
参考文献
[1] Understanding LSTM Networks: http://colah.github.io/posts/2015-08-Understanding-LSTMs/
[2] The Unreasonable Effectiveness of Recurrent Neural Networks: http://karpathy.github.io/2015/05/21/rnn-effectiveness/
