Understanding LSTM Networks(LSTM的网络结构)

article/2025/9/22 11:45:46

Recurrent Neural Networks

人类不是每时每刻都从头开始思考的。当你读这篇文章的时候,你理解每个单词是基于你对以前单词的理解。你不会把所有的东西都扔掉,然后从头开始思考。你的思想有毅力。传统的神经网络无法做到这一点,这似乎是一个主要的缺点。

例如,假设你想对电影中每一点发生的事件进行分类。目前尚不清楚传统的神经网络如何利用其对电影中先前事件的推理来告知后来的事件。递归神经网络解决了这个问题。它们是带有循环的网络,允许信息持续存在。

                                                          

                                                       循环神经网络有循环

在上面的图中,神经网络a块,查看一些输入xt并输出一个值ht。循环允许信息从网络的一个步骤传递到下一个步骤。这些循环使得循环神经网络看起来有点神秘。然而,如果你再仔细想想,就会发现它们与正常的神经网络并没有多大区别。递归神经网络可以看作是同一网络的多个副本,每个副本都将消息传递给后继网络。考虑一下如果我们展开循环会发生什么:

 

                         

                                                           展开递归神经网络

这种链的性质揭示了循环神经网络与序列和列表密切相关。它们是神经网络的自然结构,用来处理这些数据。它们当然是有用的!在过去的几年里,将RNNs应用到各种问题上取得了令人难以置信的成功:语音识别、语言建模、翻译、图片字幕等等。

我将在Andrej Karpathy的一篇优秀的博客文章《循环神经网络的不合理有效性》中留下对RNNs所能取得的惊人成就的讨论。但它们真的很神奇。这些成功的关键是LSTMs的使用,LSTMs是一种非常特殊的循环神经网络,在很多任务中都比标准版本好得多。几乎所有基于递归神经网络的令人兴奋的结果都是通过它们得到的。本文将探讨的就是这些LSTMs。

The Problem of Long-Term Dependencies

RNNs的吸引力之一是,他们可能能够将以前的信息与当前的任务联系起来,比如使用以前的视频框架,这可能会让人们了解当前框架。如果RNNs能够做到这一点,它们将非常有用。但他们能吗?视情况而定。有时,我们只需要查看最近的信息就可以完成当前的任务。例如,考虑一个语言模型,它试图根据前一个词预测下一个词。如果我们试图预测云中的最后一个词是天空,我们不需要更多的上下文,很明显下一个词是天空。在这种情况下,相关信息与所需信息之间的差距很小,RNNs可以学习使用过去的信息。

                                     

但也有一些情况我们需要更多的背景。“我在法国长大,法语说得很流利”。最近的信息表明,下一个单词可能是一种语言的名字,但如果我们想缩小语言的范围,我们需要从更远的地方来了解法国的背景。相关信息与需要变得非常大的点之间的差距是完全可能的。

不幸的是,随着差距的扩大,RNNs无法学习连接信息。

                              

从理论上讲,RNNs完全有能力处理这种长期依赖关系。一个人可以仔细地为他们挑选参数来解决这种形式的玩具问题。遗憾的是,在实践中,RNNs似乎无法学习它们。Hochreiter (1991) [德国]和Bengio等人(1994)对这个问题进行了深入的研究,他们发现了一些非常基本的原因,为什么会有困难。

谢天谢地,LSTMs没有这个问题。

LSTM Networks

长短时记忆网络通常被称为LSTMs,是一种特殊的RNN,能够学习长期依赖关系。它们是Hochreiter & Schmidhuber公司(1997)推出的,在后续的工作中被很多人提炼和推广。它们在各种各样的问题上都能很好地工作,现在被广泛使用。

LSTMs被明确设计来避免长期依赖问题。长时间记住信息实际上是他们的默认行为,而不是他们努力学习的东西!

所有的递归神经网络都有一个神经网络的重复模块链。在标准的RNNs中,这个重复模块将有一个非常简单的结构,比如一个tanh层。

                     

                                                          标准RNN中的重复模块包含一个单层

LSTMs也有这种链状结构,但重复模块有不同的结构。不是单一的神经网络层,而是四层,以一种非常特殊的方式相互作用。

                       

                                                        LSTM中的重复模块包含四个交互层

不要担心正在发生的事情的细节。我们将在后面逐步介绍LSTM图。现在,让我们试着熟悉一下我们将要使用的符号。

                                           

在上面的图中,每一行都携带一个完整的向量,从一个节点的输出到其他节点的输入。粉色的圆圈表示点对点的操作,比如向量加法,黄色的方框表示学习过的神经网络层。行合并表示连接,而行分叉表示内容被复制,副本被复制到不同的位置。

The Core Idea Behind LSTMs

LSTMs的关键是单元格状态,即贯穿图表顶部的水平线。细胞状态有点像传送带。它沿着整个链直线向下,只有一些微小的线性相互作用。信息很容易在不改变的情况下沿着它流动。

                                               

LSTM确实有能力删除或添加信息到细胞状态,被称为门的结构小心地调节。门是一种可选择地让信息通过的方式。它们由一个s型神经网络层和一个点乘运算组成。

                                                                  

sigmoid层输出0到1之间的数字,描述每个组件应该允许多少流量。0的值表示什么都不通过,而1的值表示什么都通过!LSTM有三个这样的门,用来保护和控制细胞状态。

Step-by-Step LSTM Walk Through

LSTM的第一步是决定从细胞状态中丢弃什么信息。这个决定是由一个称为“忘记门”(遗忘门)层的sigmoid层做出的。它查看ht-1和xt,并为细胞状态Ct-1中的每个数字输出一个介于0和1之间的数字。1表示完全保留这个,0表示完全去掉这个。

让我们回到我们的语言模型的例子,它试图根据前面的例子预测下一个单词。在这种情况下,细胞状态可能包括当前主题的性别,以便正确使用代词。当我们看到一个新的主题,我们想忘记旧主题的性别。

                                 

下一步是决定在单元格状态下存储哪些新信息。这有两部分。首先,一个称为输入门层的sigmoid层决定我们要更新哪些值。接下来,tanh层创建一个新的候选值向量,,可以添加到状态中。

在接下来的步骤中,我们将结合这两者来创建一个状态更新。在我们的语言模型的例子中,我们希望在细胞状态中添加新受试者的性别,以取代我们忘记的旧受试者。

                                  

现在是时候更新旧的细胞状态,Ct-1,到新的细胞状态Ct。前面的步骤已经决定了要做什么,我们只需要实际去做。我们把旧状态乘以ft,忘记了之前决定要忘记的事情。然后加上。这是新的候选值,根据我们决定更新每个状态值的程度进行缩放。

在语言模型中,这是我们删除旧主题的性别信息并添加新信息的地方,正如我们在前面的步骤中所决定的那样。

                                  

最后,我们需要决定输出什么。此输出将基于单元格状态,但将是过滤后的版本。首先,我们运行一个sigmoid层,它决定输出单元状态的哪些部分。然后,我们将单元格状态通过tanh(将值推到-1到1之间)乘以sigmoid门的输出,这样我们只输出我们决定输出的部分。

对于语言模型示例,由于它只是看到一个主语,所以它可能希望输出与动词相关的信息,以防接下来发生什么。例如,它可能输出主语是单数还是复数,这样我们就能知道一个动词应该以什么形式出现,如果接下来是什么形式的话。

                              

Variants on Long Short Term Memory

到目前为止我所描述的是一个非常普通的LSTM。但并非所有LSTMs都与上述相同。事实上,似乎几乎每一篇涉及LSTMs的论文都使用了稍有不同的版本。

这些差别很小,但有一些值得一提。一种流行的LSTM变种,由 Gers & Schmidhuber (2000)加入了窥孔连接。这意味着我们让gate层观察cell状态。

                         

上面的图表在所有的门上都加了窥视孔,但是许多论文会给出一些窥视孔而不是其他的。另一种变体是使用耦合遗忘和输入门。我们不是单独决定忘记什么和添加什么新信息,而是一起做这些决定。我们只会忘记在它的位置输入什么东西。当我们忘记一些旧的东西时,我们只会给状态输入新的值。

                               

LSTM的一个稍微显著的变化是门控循环单元,或GRU,由Cho等人(2014)介绍。它将忘记和输入门合并到一个单独的更新门中。它还合并了单元格状态和隐藏状态,并进行了一些其他更改。最终的模型比标准的LSTM模型更简单,并且越来越流行。

                               

这些只是最值得注意的LSTM变体中的几个。还有很多其他的,如Yao等人(2015)的深度门控RNNs。还有一些完全不同的方法来处理长期依赖关系,比如Koutnik等人(2014)的Clockwork RNNs。

这些变体中哪一种最好?差异重要吗?Greff等人(2015)对流行的变体做了一个很好的比较,发现它们都差不多。Jozefowicz等人(2015)测试了一万多个RNN架构,发现其中一些在某些任务上比LSTMs更好。

Conclusion

早些时候,我提到了人们用RNNs取得的显著成果。基本上所有这些都是通过LSTMs实现的。在大多数任务中,它们确实工作得更好!LSTMs被写成一组方程,看起来很吓人。希望在这篇文章中,一步一步地了解它们能让他们更容易接近。

LSTMs是我们可以通过RNNs完成的一大步。人们自然会想:是否还有一大步?研究人员普遍认为:是的!还有下一步,就是注意了!其思想是让RNN的每一步都从一些更大的信息集合中挑选信息。例如,如果使用RNN创建描述图像的标题,它可能会为输出的每个单词选择图像的一部分。

事实上,Xu等人(2015)正是这么做的,如果你想探索注意力,这可能是一个有趣的起点!使用注意力有很多令人兴奋的结果,而且似乎还有很多即将到来,注意力并不是RNN研究中唯一令人兴奋的线索。例如,Kalchbrenner等(2015)的网格LSTMs似乎非常有前途。在生成模型中使用RNNs,如Gregor, et al. (2015), Chung, et al.(2015),或Bayer &Osendorfer(2015)也很有趣。过去的几年对于循环神经网络来说是一个激动人心的时期,而接下来的几年将会更加激动人心!

 

参考链接:http://colah.github.io/posts/2015-08-Understanding-LSTMs/


http://chatgpt.dhexx.cn/article/KNglCBMJ.shtml

相关文章

理解 LSTM 网络

递归神经网络人类并不是每时每刻都从头开始思考。正如你阅读这篇文章的时候,你是在理解前面词语的基础上来理解每个词。你不会丢弃所有已知的信息而从头开始思考。你的思想具有持续性。传统的神经网络不能做到这点,而且这似乎也是它的主要缺陷。比如&…

LSTM网络的简单理解

目录 RNN递归神经网络LSTM神经网络结构变形1.peephole connections结构2.在忘记门与输入门之间引入一个耦合3.门循环单元(GRU) 今天对LSTM网络进行学习。 在理解LSTM网络之前,我们首先要对Recurrent Neural Networks(RNNs&#xf…

循环神经网络与LSTM

1. 循环神经网络 ①基本结构 在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题却无能无力。例如,你要预测句子的下一个单词是什么&am…

实例 :教你使用简单神经网络和LSTM进行时间序列预测(附代码)

翻译:张玲 校对:丁楠雅 本文约1500字,建议阅读5分钟。 作者基于波动性标准普尔500数据集和Keras深度学习网络框架,利用python代码演示RNN和LSTM RNN的构建过程,便于你快速搭建时间序列的预测模型。 图片来源&#xff…

【LSTM】深入浅出讲解长短时记忆神经网络(结构、原理)

本文收录于《深入浅出讲解自然语言处理》专栏,此专栏聚焦于自然语言处理领域的各大经典算法,将持续更新,欢迎大家订阅!​​个人主页:有梦想的程序星空​​个人介绍:小编是人工智能领域硕士,全栈…

深入理解LSTM神经网络

本文内容及图片主要参考:Understanding LSTM Networks LSTM核心思想 LSTM最早由 Hochreiter & Schmidhuber 在1997年提出,设计初衷是希望能够解决神经网络中的长期依赖问题,让记住长期信息成为神经网络的默认行为,而不是需要…

LSTM神经网络实战

上一遍博客简单的介绍了LSTM神经网络的工作原理, 有兴趣的打开了解一下: https://blog.csdn.net/weixin_52486467/article/details/126301845 显目介绍: 一、问题背景 电力系统负荷(电力需求量,即有功功率&#xf…

LSTM -长短期记忆网络(RNN循环神经网络)

文章目录 基本概念及其公式输入门、输出门、遗忘门候选记忆元记忆元隐状态 从零开始实现 LSTM初始化模型参数定义模型训练和预测 简洁实现小结 基本概念及其公式 LSTM,即(long short-term Memory)长短期记忆网络,也是RNN循环神经网络的一种改进方法&…

机器学习之LSTM的Python实现

什么是LSTM? LSTM(长短期记忆人工神经网络),是一种可以学习长期依赖特殊的RNN(循环神经网络)。 传统循环网络RNN虽然可以通过记忆体,实现短期记忆,进行连续数据的预测。但是当连续…

神经网络:LSTM基础学习

1、LSTM简介 在时间序列数据学习中,传统的循环神经网络(RNN)存在较多的学习瓶颈和技术缺陷,而长短时记忆(LSTM)神经网络克服了循环神经网络的缺陷,使其在长时间序列数据学习训练中能克服梯度爆炸…

Lstm(循环神经网络)

算法模型Lstm(循环神经网络): 简介 LSTM和RNN相似,它们都是在前向传播的过程中处理流经细胞的数据,不同之处在于 LSTM 中细胞的结构和运算有所变化。 LSTM结构: 遗忘门: 遗忘门的功能是决定应丢弃或保留哪些信息。…

基于MATLAB的LSTM神经网络时序预测

参考博客及文献:4 Strategies for Multi-Step Time Series Forecasting Multivariate Time Series Forecasting with LSTMs in Keras (machinelearningmastery.com) LSTM进阶:使用LSTM进行多维多步的时间序列预测_lstm多维多部预测_一只小EZ的博客-CSD…

LSTM神经网络图解

LSTM神经网络图详解 (1)遗忘门,用于计算信息的遗忘(保留)程度,通过sigmoid处理后为0到1的值,1表示全部保留,0表示全部忘记。 f t σ ( W f ⋅ [ h t − 1 , x t ] b f ) f_{t}\si…

【神经网络】LSTM

1.什么是LSTM 长短期记忆(Long short-term memory, LSTM)是一种特殊的RNN,主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。简单来说,相比普通的RNN,LSTM能够在更长的序列中有更好的表现。 LSTM区别于RNN地方…

[深入浅出] LSTM神经网络

由来 人类并不是每时每刻都从一片空白的大脑开始他们的思考。在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见词的理解来推断当前词的真实含义。我们不会将所有的东西都全部丢弃,然后用空白的大脑进行思考。我们的思想拥有持久性。 传统的神经…

简单理解LSTM神经网络

递归神经网络 在传统神经网络中,模型不会关注上一时刻的处理会有什么信息可以用于下一时刻,每一次都只会关注当前时刻的处理。举个例子来说,我们想对一部影片中每一刻出现的事件进行分类,如果我们知道电影前面的事件信息&#xf…

LSTM神经网络

LSTM被广泛用于许多序列任务(包括天然气负荷预测,股票市场预测,语言建模,机器翻译),并且比其他序列模型(例如RNN)表现更好,尤其是在有大量数据的情况下。 LSTM经过精心设…

(神经网络深度学习)--循环神经网络LSTM

一、什么是LSTM: 如果你经过上面的文章看懂了RNN的内部原理,那么LSTM对你来说就很简单了,首先大概介绍一下LSTM,是四个单词的缩写,Long short-term memory,翻译过来就是长短期记忆,是RNN的一种…

机器学习——人工神经网络模型LSTM

LSTM的学习 学习目标: 1理解什么是人工神经网络。2深入理解LSTM(长短期记忆网络)3Code 浅析人工神经网络: 在谈人工神经网络模型之前我们先来了解一下生理上的神经网络。 下面是一张对比图: Neural Science Compute…

LSTM神经网络详解

LSTM 长短时记忆网络(Long Short Term Memory Network, LSTM),是一种改进之后的循环神经网络,可以解决RNN无法处理长距离的依赖的问题,目前比较流行。 长短时记忆网络的思路: 原始 RNN 的隐藏层只有一个状态,即h&am…