首页>>科技 >>内容

LSTM的工作原理究竟是什么,深入了解LSTM

发布时间:2023-10-11 22:23:01编辑:温柔的背包来源:

很多朋友对LSTM的工作原理究竟是什么,深入了解LSTM不是很了解,每日小编刚好整理了这方面的知识,今天就来带大家一探究竟。

LSTM的工作原理究竟是什么,深入了解LSTM

长短期记忆(LSTM)是一种时间递归神经网络(RNN),适用于处理和预测时间序列中具有很长间隔和延迟的重要事件。经过多年的实验,它通常比RNN和HMM要好。那么LSTM的工作原理到底是什么呢?为了解释这个概念,我搬了一篇chrisolah的经典文章,希望对读者有所帮助。递归神经网络

人在接触新事物的时候,并不是从零开始思考。就像你读这篇文章的时候,你会根据之前的知识去理解每一个字,而不是放弃一切,从字母中重新学习。换句话说,你的思维是连续的。

神经网络的出现旨在赋予计算机人脑的功能,但长期以来,传统的神经网络无法模仿这一点。这似乎是一个严重的缺点,因为这意味着神经网络无法从现在发生的事情中推断出以后会发生什么,也就是无法对电影中的顺利事件进行分类。后来,递归神经网络(RNN)的出现解决了这个问题。通过在网络中添加环路,它可以使信息“记住”更长的时间。RNN有自行车

上图是一个大规模的神经网络A,输入一些数据xt后,会输出最终值ht。循环允许信息从当前步骤传递到下一步。这些循环让它看起来有点神秘。但仔细想想,你会发现它和普通的神经网络并没有太大的区别:一个RNN相当于一个神经网络的多个副本,每个副本都会把自己收集到的信息传递给后继者。如果我们把它展开,它看起来像这样:展开的RNN。

这个链式性质揭示了RNN与序列和列表的密切关系。在某种程度上,它是专门为这类数据设计的神经网络的自然架构。

实践也证实,RNN确实有用!在过去的几年里,它在各种任务中取得了令人难以置信的成功:语音识别、语言建模、机器翻译、图像字幕.应用场景非常广泛。几年前,特斯拉AI的现任董事Andrej Karpathy写了一篇名为《递归神经网络的不合理有效性》的博客,专门介绍了RNN的“不合理”适用性。有兴趣的读者可以去看看。

在文章中,我们可以发现这种适用性的关键是“LSTM”的使用。这是一个非常特别的RNN。LSTM能做到RNN能实现的一切,在很多任务上也会比普通版表现更好。所以让我们来看看什么是LSTM。长期依赖

RNN最吸引人的地方在于它能把之前的信息和现在的任务联系起来。比如我们可以用之前的视频图像来理解这一帧的图像。如果这种联系能够建立,它的未来将是无限的。那么它真的能做到吗?答案是:不一定。

有时候,我们只需要查看最新的信息就可以执行当前的任务,比如建立一个语言模型,可以根据上一个单词预测下一个单词。如果要预测“天上飘的云”这句话的最后一个词,模型不需要任何进一步的语义背景。很明显,最后一个字是“云”。在这种情况下,如果相关信息和目标位置之间的差距不大,RNN可以学会利用以前的知识。

但有时我们也希望模型能与上述联系起来理解,比如预测“我在法国长大.我能流利地说法语。”这句话的最后一个字。最近的信息表明,这个词很可能是一种语言的名称。如果要精确到是哪种语言,需要用句首的“法国”这个词来理解。此时,两个相关信息之间的距离非常远。不幸的是,随着距离的增加,RNN将逐渐发现很难了解连接信息。

理论上,RNN完全有能力应对这种长期依赖。我们可以不断调整参数来解决各种玩具问题,但在实践中,RNN完全失败了。关于这个问题,Hochreiter(1991)和Bengio等人(1994)之前已经作了深入的讨论,这里不再赘述。谢天谢地,LSTM没有这些问题。LSTM网络

长短期记忆网络——通常被称为“lstm”,是一种特殊的RNN,可以学习长期依赖。它由Hochreiter&Schmidhuber于1997年首次提出,后经多位专家学者提炼推广。由于其优异的性能,现在已经得到了广泛的应用。LSTM的设计目的很明确:避免长期依赖。对LSTM来说,长时间“记住”信息是一种默认行为,并不是什么难学的东西。

正如我们前面提到的,RNN是包含大量重复神经网络模块的链形式。在标准RNN中,这些重复的神经网络结构通常非常简单,例如,它们仅包含单个tanh层。在标准RNN中,只包含单个tanh层的重复模块LSTM也有类似的链结构,但不同的是其重复模块结构不同,是四个神经网络以特殊的方式相互作用。LSTM的示意图在这里,让我们来看看图中的这些符号:

在示意图中,每条线都将一个完整的向量从一个节点的输出传递到其他节点的输入。粉色圆圈代表逐点操作,如节点求和,而黄色方框代表用于学习的神经网络层。合并的两条线表示连接,分开的两条线表示信息复制成两份,将传递到不同的位置。LSTMs背后的关键思想是细胞的状态,即贯穿图表顶部的水平线。

细胞状态有点像传送带。它可以贯穿整个链式结构,只需要一些较小的线性相互作用,这实际上是信息被记忆的地方,因此信息可以很容易地以不变的形式流经它。为了在单元格中添加/删除信息,LSTM有一些控制门。它们决定了信息传递的方式,包括一个sigmoid神经网络层和一个逐点的点乘运算。

Sigmoid层输出一个0到1之间的数,点乘运算决定了可以传输多少信息。当它为0时,它不被传输。当该值为1时,传输所有数据。有三个像LSTM一样的控制门来保护和控制细胞状态。了解更多关于LSTM的信息。让我们先来看看应该从cell中删除哪些信息。这个决定是由包含sigmoid层的遗忘门做出的。对于输入xt和ht-1,遗忘门将输出范围为[0,1]的数字,并将其置于单元状态ct1。为0时,全部删除;当它为1时,所有都被保留。

以预测下一个单词的语言模型为例。对于“云在天上飘”这个句子,LSTM的细胞状态会记住句子主语“云”的词性,进而判断出正确的代词。Cell下次遇到新的主语时会“忘记”“云”的词性。

让我们看看cell是如何添加新信息的。这可以分为两步。首先,LSTM将使用包含sigmoid层的输入门来决定应该保留哪些信息。其次,它将使用tanh层为这些信息生成一个向量C~t,以更新单元状态。在语言模型例子中,如果句子变成“天上飘着云,草地上跑着马”。然后LSTM会用“马”的词性替换“云”被遗忘的词性。

利用遗忘门和输入门,现在我们可以将单元状态Ct 1更新为Ct。如下图所示,其中ftCt 1代表要删除的信息,itCt代表新的信息。最后,决定LSTM输出内容的输出门。它的信息是基于细胞状态,但它必须被过滤。我们先用sigmoid层确定要输出的单元格的内容,然后用tanh层把单元格状态值推到-1和1之间,乘以sigmoid层的输出,这样就只输出我们要输出的部分。LSTM的变体

以上是一个非常常规的LSTM,但是在实际操作中,我们会遇到很多非常不同的神经网络,因为一旦涉及到使用,人们必然会使用一些DIY版本。虽然差别不大,但有些还是值得一提的。

2000年,Gers&Schmidhuber提出了一个“窥视孔连接”的LSTM变体。这意味着我们可以在相应的控制门中观察细胞状态。下图给每个门都加了窥视孔,我们也可以只加一两个地方。第二种变型是耦合遗忘门和输入门,使得一个模块可以同时决定添加/删除什么信息。

第三个稍微有点戏剧性的变体是Cho等人在2014年提出的LSTM和GRU。它将遗忘门和输入门合并成一个“更新门”,将单元状态和隐藏状态合并,并做了一些其他的修改。这种模式的优点是更简单,更受欢迎。这只是最知名的几个变种,还有很多,比如姚等人的深度门控,另外也有人一直在尝试用完全不同的方式解决长期依赖的问题,比如Koutnik等人的发条等。

如果你只是列出一大堆数学公式,LSTM看起来会很吓人。因此,为了便于读者理解和掌握,本文制作了大量的视觉图片,得到了业内人士的认可,并在各种文章中被广泛引用。

LSTM是完善RNN的重要内容。虽然到目前为止已经取得了丰硕的成果,但我们还是以此为起点来探讨的其他研究方向,比如近两年非常热门的注意机制,以及在GAN中的运用。过去的几年对于神经网络来说是一段激动人心的时光,我相信未来会更加激动人心!

以上知识分享希望能够帮助到大家!