理解 LSTM 网络

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

递归神经网络

人类并不是每时每刻都从头开始思考。正如你阅读这篇文章的时候,你是在理解前面词语的基础上来理解每个词。你不会丢弃所有已知的信息而从头开始思考。你的思想具有持续性。

传统的神经网络不能做到这点,而且这似乎也是它的主要缺陷。比如,你想对电影中每个点发生的事件类型进行分类。目前还不清楚传统神经网络如何利用之前事件的推理来得出后来事件。

递归神经网络能够解决这一问题。这些网络中具有循环结构,能够使信息持续保存。

递归神经网络具有循环结构

在上图中,一组神经网络A,接收参数,输出,循环A可以使信息从网络的某个步骤中传递到下一个步骤。

这些循环使得递归神经网络有些不可思议。不过,如果你进一步思考,可以发现,它们与常规神经网络并非完全不同。可以将递归神经网络想象成是有多层相同网络的神经网络,每一层将信息传递给下一层。如果我们展开循环,就是这样:

展开的递归神经网络

这种链状的性质表明,递归神经网络与序列和列表密切相关。这是处理这种数据所使用的神经网络的自然结构。

人们当然使用了它们!在过去的几年里,在许多问题上使用RNNs已经取得了难以置信的成功,比如语音识别,语言建模,翻译,图像字幕,这样的例子不胜枚举。不过我不将讨论RNNs的惊人壮举,Andrej Karpathy对此写了篇非常棒的博客,递归神经网络不可思议的有效性(The Unreasonable Effectiveness of Recurrent Neural Networks)。它们真是太了不起了。

成功的关键是使用了“LSTMs”,一种特殊的递归神经网络,在许多任务中,它的表现要比标准递归神经网络出色许多。几乎所有基于递归神经网络令人振奋的结果都是由它们实现的。这篇文章就将探讨这些LSTMs。

长期依赖关系问题

RNNs呼吁的一点就是,它们可能将前期信息与当前任务连接,比如使用前面的视频帧可能得出对当前帧的理解。如果RNNs能够做到这点,它们会非常有用。但是它们能吗?这得看情况。

有些时候,在执行当前任务时,我们只需要查看最近的信息。比如,考虑一个语言模型,试图根据之前单词预测下一个。如果我们想要预测“the clouds are in the sky”中最后一个单词,我们不需要更多的上下文——很明显下一个单词会是“sky”。在这种情况下,如果相关信息与预测位置的间隔比较小,RNNs可以学会使用之前的信息。

但我们也有需要更多上下文的情况。考虑试图预测“I grew up in France… I speak fluent French.”中最后一个词。最近信息显示下一个词可能是一门语言的名字,但是如果我们想要缩小选择范围,我们需要包含“法国”的那段上下文,从前面的信息推断后面的单词。相关信息与预测位置的间隔很大是完全有可能的。

不幸的是,随着这种间隔的拉长,RNNs就会无法学习连接信息。

从理论上讲,RNNs绝对能够处理这样的“长期依赖关系”。一个人可以仔细挑选参数来解决这种简单的问题。不幸的是,实际上RNNs不能够学习它们。这种问题被Hochreiter (1991)【德国】和Bengio等人深入探讨过,他们发现了造成这种可能的一些非常基本的原因。

值得庆幸的是,LSTMs没有这个问题!

LSTM网络

长短期记忆网络——通常简称“LSTMs”——是一种特殊的RNN,能够学习长期依赖关系。它们由Hochreiter和Schmidhuber (1997)提出,在后期工作中又由许多人进行了调整和普及(除了原始作者之外,许多人为现代LSTM做出了贡献,不完全统计:Felix Gers, Fred Cummins, Santiago Fernandez, Justin Bayer, Daan Wierstra, Julian Togelius, Faustian Gomez, Matteo Gagliolo 和 Alex Graves)。它们在大量问题上效果异常出色,现在正在广泛使用。

LSTMs明确设计成能够避免长期依赖关系问题。记住信息很长一段时间几乎是它们固有的行为,而不是努力去学习!

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

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

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

LSTM中的重复模块包含四个相互作用的神经网络层

先别急着想问细节。我们之后会一步一步讲解LSTM图。现在,我们先来熟悉下我们将要使用到的符号。

在上面的图中,每条线表示一个完整向量,从一个节点的输出到其他节点的输入。粉红色圆圈代表逐点操作,比如向量加法,而黄色框框表示的是已学习的神经网络层。线条合并表示串联,线条分叉表示内容复制并输入到不同地方。

LSTMs核心理念

LSTMs的关键点是单元状态,就是穿过图中的水平线。

单元状态有点像是个传送带。它贯穿整个链条,只有一些小的线性相互作用。这很容易让信息以不变的方式向下流动。

LSTM有能力向单元状态中移除或添加信息,通过结构来仔细管理称为门限。

门限是有选择地让信息通过。它们由一个sigmoid神经网络层和逐点乘法运算组成。

sigmoid层输出0到1之间的数字,描述了每个成分应该通过门限的程度。0表示“不让任何成分通过”,而1表示“让所有成分通过!”。

LSTM有三种这样的门限,来保护和控制单元状态。

一步一步剖析LSTM

LSTM中第一步是决定哪些信息需要从单元状态中抛弃。这项决策是由一个称为“遗忘门限层”的sigmoid层决定的。它接收和,然后为单元状态中的每个数字计算一个0到1之间的数字。1表示“完全保留”,而0则表示“完全抛弃”。

我们来回顾一下那个语言模型的例子,试图根据前面所有的词语来预测下一个词。在这种问题中,单元状态可能包含当前主语的性别,所以可以使用正确的代词。当碰到一个新的主语时,我们希望它能够忘记旧主语的性别。

接下来我们需要决定在单元状态中需要存储哪些新信息。这分为两个部分。首先,一个叫做“输入门限层”的sigmoid层决定哪些值需要更新。接下来,一个tanh层创建一个向量,包含新候选值,这些值可以添加到这个状态中。下一步我们将会结合这两者来创建一个状态更新。

在语言模型的例子中,我们希望在单元状态中添加新主语的性别,来替换我们忘记的旧主语性别。

现在来更新旧单元状态了,输入到新单元状态。之前的步骤已经决定了需要做哪些事情,我们只需要实现这些事情就行了。

我们在旧状态上乘以,忘记之前决定需要忘记的。然后我们加上,这就是新的候选值,它的规模取决于我们决定每个状态值需要更新多少。

在语言模型的例子中,这里就是我们实际丢弃旧主语性别信息,根据之前步骤添加新信息的地方。

最后,我们需要决定需要输出什么。这个输出将会建立在单元状态的基础上,但是个过滤版本。首先,我们运行一个sigmoid层来决定单元状态中哪些部分需要输出。然后我们将单元状态输入到tanh函数(将值转换成-1到1之间)中,然后乘以输出的sigmoid门限值,所以我们只输出了我们想要输出的那部分。

对于语言模型例子来说,因为它只看到了一个主语,它可能想输出与动词相关的信息,为接下来出现的词做准备。比如,它可能输出主语是单数还是复数,那么我们知道接下来修饰动词的应该成对。

长短期记忆变体

我目前所讲述的还是非常常规的LSTM。但并不是所有的LSTMs都与上述的LSTM一样。实际上,几乎所有关于LSTMs的论文都稍有不同。虽然差异很小但也值得一谈。

一种流行的LSTM变种,由Gers和Schmidhuber (2000)提出,加入了“窥视孔连接”(peephole connections)。这意味着门限层也将单元状态作为输入。

上图中,所有的门限中都加入了窥视孔,但是许多论文都只使用部分窥视孔。

另一个变种就是使用耦合遗忘和输入门限。我们不单独决定遗忘哪些、添加哪些新信息,而是一起做出决定。在输入的时候才进行遗忘。在遗忘某些旧信息时才将新值添加到状态中。

稍微有戏剧性的LSTM变种是门限递归单元或GRU,由Cho等人(2014)提出。它将遗忘和输入门限结合输入到单个“更新门限”中。同样还将单元状态和隐藏状态合并,并做出一些其他变化。所得模型比标准LSTM模型要简单,这种做法越来越流行。

提出的深度门限RNNs(Depth Gated RNNs )。当然还有其他解决长短期依赖关系问题的方法,比如Koutnik等人(2014)提出的Clockwork RNNs 。

这些变种哪个是最好的?这些差异重要吗?Greff等人(2015)针对流行的变种做了良好对比,发现它们其实都一样。Jozefowicz等人(2015)对超过1万种RNN架构做了测试,发现其中某些在特定任务上效果比LSTMs要好。

结论

早些时候,我提到了人们使用RNNs取得的显著成效。基本上这些都是使用了LSTMs。对于大多数任务,它们真的可以达到更好的效果!

写了一堆方程式,LSTMs看起来很吓人。希望通过这篇文章中一步一步的剖析,能更好理解它们。

LSTMs是我们使用RNNs的一个飞跃。那么很自然地会想:还有其他飞跃吗?研究人员之间共同的想法是:“有的!还有其他飞跃,还有关注点(attention)!”。这个想法是,让RNN中每一步都从更大的信息集中挑选信息作为输入。比如,你使用RNN来创建一个标题来描述图像,它可能会挑选图像的一部分作为输入,然后输出信息。事实上,Xu等人(2015)这么做了——如果你想探索关注点这可能是个有趣的出发点!使用关注点还有一些其他令人兴奋的结果,而且似乎还有其他的效果还没被发现……

关注点并不是RNN研究中唯一令人振奋的地方。比如,Kalchbrenner等人(2015)提出的Grid LSTMs似乎非常有前途。在生产模型——比如Gregor等人(2015),Chung等人(2015)和Bayer,Osendorfer(2015)中使用RNNs似乎同样有趣。过去的几年对递归神经网络来说是激动人心的时期,而且今后更会如此!


http://chatgpt.dhexx.cn/article/24gZrSwT.shtml

相关文章

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…

LSTM神经网络介绍

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 引言一、介绍1.1什么是LSTM?1.2基础知识1.2.1门控机制1.2.2 相关激活函数1.2.3网络参数介绍 二、LSTM网络架构2.1架构图 三、LSTM的门3.1遗忘门3.2输入门3.3输出门…