LSTM网络最清晰解释原理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LSTM网络最清晰解释原理相关的知识,希望对你有一定的参考价值。
参考技术A 人类不会每时每刻都开始思考。当你阅读这篇文章时,你会根据你对之前单词的理解来理解每个单词。你不要扔掉所有东西,然后再从头开始思考。你的想法有持久性。传统的神经网络无法做到这一点,这似乎是一个主要的缺点。例如,假设您想要对电影中每个点发生的事件进行分类。目前尚不清楚传统神经网络如何利用其对电影中先前事件的推理来告知后者。
循环神经网络解决了这个问题,他们是带有循环的网络,允许信息持续存在。
RNN的一个吸引力是他们可能能够将先前信息连接到当前任务,例如使用先前的视频帧可能通知对当前帧的理解。 如果RNN可以做到这一点,它们将非常有用。 但他们可以吗? 这取决于。
有时,我们只需要查看最近的信息来执行当前任务。 例如,考虑一种语言模型,试图根据之前的单词预测下一个单词。 如果我们试图预测“云在天空中”的最后一个词,我们不需要任何进一步的背景 - 很明显下一个词将是天空。 在这种情况下,如果相关信息与所需信息之间的差距很小,则RNN可以学习使用过去的信息。
但也有一些情况需要更多的背景。 考虑尝试预测文本中的最后一个词“我在法国长大......我说流利的法语。”最近的信息表明,下一个词可能是一种语言的名称,但如果我们想缩小哪种语言,我们需要 从更进一步的背景来看,法国的背景。 相关信息与需要变得非常大的点之间的差距是完全可能的。
不幸的是,随着差距的扩大,RNN无法学习连接信息。
长短序列记忆网络-通常被称为LSTMs网络,是一种特殊的RNN网络,其能够学习到长序列间的依赖。LSTM网络由 Hochreiter和Schmidhuber(1997) 率先提出,并且被很多人精炼和推广。他们所提出的改进在各种各样的问题上都表现很好,现在被广泛的使用。
LSTM很明显的被设计用于避免长序列依赖问题。长时间记住信息实际上是他们的默认行为,而不是他们努力学到的东西。
所有的循环神经网络都是被一个一个的神经元重复模块链的东西组成。在标准的RNN中,这些重复的模块的结构非常简单,比如说单个tanh层。
lstm的关键是单元状态,水平线贯穿图中顶部的内容。
单元状态有点像传送带,它直接沿着真个链运行,只有一些次要的线性交互。信息很容易沿着它不变的流动。
LSTM有能力移除或添加信息到单元状态中,这是由一个叫门的结构精细调节的。
门是一种可选择通过的方法。它由一个sigmoid神经网络层和逐点乘法组成。
LSTM的第一步是确定我们将从单元状态中丢弃哪些信息,这个策略由一个被称为遗忘门的sigmoid层决定。输入ht−1和xt遗忘门对应单元状态Ct-1中每个数输出一个0到1之间的数字。1代表“完全保持”,0表示“完全遗忘”。
让那个我们回到我们的语言模型例子中尝试基于所有之前的词预测下一个词是什么。在这阳的问题中,单元状态中可能包括当前主题的性别,因此可以预测正确的代词。当我们看到一个新的主题的性别时,我们想要忘记旧主题的性别。
下一步将决定我们将在单元状态中保存哪些新信息。 这有两个部分。 首先,称为“输入门层”的sigmoid层决定我们将更新哪些值。 接下来,tanh层创建可以添加到状态的新候选值Ct~的向量。 在下一步中,我们将结合这两个来创建状态更新。
在我们的语言模型的例子中,我们想要将新主题的性别添加到单元格状态,以替换我们忘记的旧主题。
最后,我们需要决定我们要输出的内容。 此输出将基于我们的单元状态,但将是过滤版本。 首先,我们运行一个sigmoid层,它决定我们要输出的单元状态的哪些部分。 然后,我们将单元状态设置为tanh(将值推到介于-1和1之间)并将其乘以sigmoid门的输出,以便我们只输出我们决定的部分。
对于语言模型示例,由于它只是看到一个主题,它可能想要输出与动词相关的信息,以防接下来会发生什么。 例如,它可能输出主语是单数还是复数,以便我们知道动词应该与什么形式共轭,如果接下来的话。
到目前为止我所描述的是一个非常正常的LSTM。 但并非所有LSTM都与上述相同。 事实上,似乎几乎所有涉及LSTM的论文都使用略有不同的版本。 差异很小,但值得一提的是其中一些。
由 Gers&Schmidhuber(2000) 引入的一种流行的LSTM变体是添加“窥视孔连接”。这意味着我们让门层看到单元状态。
另一种变化是使用耦合的遗忘和输入门。 我们不是单独决定忘记什么以及应该添加新信息,而是共同做出这些决定。 我们只会忘记当我们要在其位置输入内容时。 当我们忘记旧事物时,我们只向州输入新值。
哪种变体最好? 差异是否重要? Greff等人(2015) 对流行的变种做了很好的比较,发现它们都差不多。 Jozefowicz,et al(2015) 测试了超过一万个RNN架构,找到了一些在某些任务上比LSTM更好的架构。
早些时候,我提到了人们使用RNN取得的显着成果。基本上所有这些都是使用LSTM实现的。对于大多数任务来说,它们确实工作得更好!
写下来作为一组方程式,LSTM看起来非常令人生畏。希望在这篇文章中逐步走过它们,使它们更加平易近人。
LSTM是我们通过RNN实现的重要一步。很自然地想知道:还有另一个重要的步骤吗?研究人员的共同观点是:“是的!下一步是它的注意力!“我们的想法是让RNN的每一步都从一些更大的信息集中选择信息。例如,如果您使用RNN创建描述图像的标题,则可能会选择图像的一部分来查看其输出的每个单词。实际上, 徐等人 (2015) 做到这一点 - 如果你想探索注意力,它可能是一个有趣的起点!使用注意力已经取得了许多非常令人兴奋的结果,而且似乎还有很多事情即将来临......
注意力不是RNN研究中唯一激动人心的线索。例如, Kalchbrenner等人的Grid LSTMs (2015) 似乎非常有希望。在生成模型中使用RNN的工作 - 例如 Gregor等人(2015) , Chung等人(2015年) ,或 Bayer&Osendorfer(2015年) -似乎也很有趣。过去几年对于递归神经网络来说是一个激动人心的时刻,即将到来的神经网络承诺只会更加激动人心!
以上是关于LSTM网络最清晰解释原理的主要内容,如果未能解决你的问题,请参考以下文章
Matlab基于长短期记忆网络分类LSTM实现多分类预测(Excel可直接替换数据)
理解 LSTM 中的输入和输出形状 | tf.keras.layers.LSTM(以及对于return_sequences的解释)