理解LSTM模型

article/2025/10/2 13:10:33

写在前面:这是翻译自colah的一篇博客,原文关于LSTM神经网络模型的理解写的非常直观、简单易懂,所以翻译过来帮助大家学习理解LSTM模型。

当然我不是按照原文一字不落的翻译,而是摘出其中对模型理解最有帮助的部分,然后用我自己理解的方式和语言来写的博文。这是我翻译博文的一贯做法。

有兴趣的可以自行去看原文,比较简短,原博客地址:http://colah.github.io/posts/2015-08-Understanding-LSTMs/


一、循环神经网络RNN

RNN循环神经网络使用循环核来实现特征在时间上的共享,记住每个时间步的输入信息。

1、RNN的网络结构

1.1 循环核

RNN中的一个循环核块通常这样表示的:

循环核实现参数的时间共享,循环层用来提取时间信息。

1.2 循环核按时间步展开

参数ht随着时间的变化而变化,输入数据x也随着变化而变化。训练优化的就是这些参数构成的矩阵,训练完成后,我们选择效果最好的模型,执行前向传播。

上面的一个循环核块按照时间步展开后是:

图中标示的wx,h 、bh、wh,h 就是可训练的参数。这里展示的是每个时间步都有输出的情况。

有些循环核块中间时间步是没有输出的,只有最后一个时间步才有输出,即没有h0,h1,..ht-1, 只有ht。样子是这样:

1.3  循环计算层

向输出方向生长,循环核中记忆体的个数和参数可以自己设置

TF中实现循环计算层的代码

tf.keras.layers.SimpleRNN(记忆体个数,activation = '激活函数',  # 其中默认为tanhreturn_sequences = Ture or False  # 是否每个时刻输出ht到下一层,# 如果不是则仅最后时间步输出ht,False为默认值)

2、RNN循环核的计算过程

下面展示了循环核是如何根据这些可训练参数来计算ht的过程,也展示了可训练参数矩阵wx,h 、bh、wh,h又是如何做到在各时间步间做到参数共享的。非常直观!

二、LSTM模型

LSTM模型要解决什么问题?为什么要不能直接使用RNN模型,而一定要设计LSTM模型来解决这个问题呢?这就是信息的长期依赖问题。

在预测模型中,如果预测所需要的信息离输入信息距离比较近,正确预测出的概率比较大。但如果我们要预测的信息距离输入的信息比较远,正确预测出的可能性就不那么高了。即便能使用RNN神经网络来做到很好的预测结果,那也是需要工程师们很小心的来调整参数的。

在这种情境下,长短期记忆网络,即LSTM模型诞生了。它很好的解决了答案的信息是在较早,还在较晚出现的输入信息中这个问题,预测效果很好,并且不需要工程师们费尽心力的来调参。

1、LSTM模型的结构

LSTM模型也是RNN模型,所有模型结构中也有循环核的部分,它的构成是这样的:

我们先说明下这些图示的含义,

 :表示一个神经网络层,即一层激活函数的运算

:表示特征向量的元素对元素级别的运算,即点运算。可以是乘法、加法或减法。

:表示特征向量的流向

:表示特征向量的拼接

:表示内容复制,但内容流向不同的路径

2、LSTM模型的核心思想

我们将用如下的一些概念来描述LSTM模型中的计算模块,它们就是LSTM模型的精髓所在了。现在可以不懂它们到底是什么,在接下下来我们逐步过计算过程的时候,这些概念就不言自明了。

LSTM模型的核心思想是细胞态(cell state),就是图中上方水平的那一条贯穿整个循环核的数据流向线。

这个细胞态(cell state)就像数据传输带一样,数据沿着它流动。只不过在有交叉点的地方需要数据会根据交叉点的含义做相应的改变。

LSTM模型的另外一个核心就是控制细胞态中的信息/数据被移除(remove)或增加(add)的结构,这个结构叫做门(gates)。

通过门(gates),我们可以控制信息是通过、不通过、还是部分通过,然后被融入到上方的数据流中。门是由sigmoid神经网络层和点运算 两部分组成的。其中sigmoid函数的输出是0-1之间的数值,所以通过它就描述了信息通过的比例情况。0意味着什么也没通过,1意味着数据全部通过。

一个门(gate)的组成结构如下:

3、逐步拆解LSTM的计算过程

有了上面的这些基本概念和认识后,我们接下来开始逐步说明LSTM的循环核层,看LSTM模型的循环核到底做了怎样的计算过程。

3.1 第一道门“遗忘门”(forget fgate layer)

前一个时间步的循环核的数据ht-1 和 第t个时间的输入特征xt拼接,进入sigmoid激活函数的神经网络层,生成的数据ft是0-1之间的数,代表了细胞态Ct-1应该保留的比率。0代表Ct-1数据全部遗忘,1代表Ct-1数据全部保留。

这里的可训练参数就是Wf ,bf 参数矩阵。

3.2 第二道门“输入门”(input gate layer)

这一步要决定应该记住哪些新的信息到细胞态中。

这里有两步,第一步是“输入门”(input gate layer),即图中的sigmoid函数神经网络层,决定了应不应该更新数据、或者多大比例的去更新数据。

第二步是一个tanh神经网络层,这步生成了一个加入到细胞态的候选向量

将第一步和第二步的结果向量进行点乘,才最终确定如何去更新细胞态。

这里的可训练参数是Wi,bi,Wc,bc 参数矩阵。

3.3 更新细胞态(cell state)

“遗忘门”和“输入门”的步骤都计算完成之后,就要开始更新细胞态了。Ct的更新公式如上,很清晰的说明了“遗忘门”、“输入门”到底是如何对长期、短期的信息来实现遗忘或记住的。

这里没有可训练的参数,都是之前已有的数据。

3.4 第三道门“输出门”(output gate layer)

最后要做的就是确定输出数据,这是根据细胞态(cell state)、时刻t的输入信息xt、时刻t-1的循环核ht 来共同决定的。

首先xt 、ht-1经过一层sigmoid激活函数的神经网络层,即“输出门”,得到一个向量,它将决定我们应该按照多大概率输出数据。

而细胞态Ct经过一层tanh激活函数的神经网络,得到-1 到1之间的向量,这就是候选的输出数据。

将“输出门”的概率向量和候选的输出结果向量 进行点乘,就得到我们最终要输出的结果ht。

这里的可训练参数是Wo,bo 参数矩阵。

4、LSTM模型的变体

我们上面介绍的是一种非常典型的LSTM模型结构。不是所有的LSTM模型都是这样的结构,它有很多变体,在结构上是略有不同的。我们列举几个例子。

其中一个比较流行的LSTM变体是Gers & Schmidhuber (2000) 介绍的,这里引入了窥探孔连接“peephole connections.” 模型结构如下:

另外一个变体使用了成对出现的“遗忘门”和“输入门”。这里的特点是成对出现的“遗忘门”+“输入门”=1, 即我们只有在遗忘一些信息的时候才会输入对应的一部门新信息。

GRU模型(Gated Recurrent Unit)是由 Cho, et al. (2014)引入的,是一个非常瞩目的LSTM模型。它将“遗忘门”、“输入门”结合起来组成了一个“更新门”(update gate)的单元。除此外,它还融合了细胞态和隐藏状。GRU模型比经典的LSTM模型更简单,并且发展也非常迅速。

除了上面的这些变体,还有很多其他的变体,比如Depth Gated RNNs Yao, et al. (2015), Clockwork RNNs  Koutnik, et al. (2014)等。

这么多的LSTM模型,那么到底哪个的效果最好,我们又该如何选择呢?

Greff, et al. (2015) 对上一些流行的LSTM变体做了对比,发现它们的效果差不多。Jozefowicz, et al. (2015)则比较了上千个RNN结构,发现在一些特定的任务中还是有模型比LSTM效果要好的。

总结

以上介绍了LSTM模型及其变种。RNN循环神经网络中还有其他值得关注的模型,比如注意力机制的RNN,以及Grid LSTM等。大家有兴趣就进一步的去学习和研究。


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

相关文章

LSTM模型预测时间序列(快速上手)

写在前面 LSTM模型的一个常见用途是对长时间序列数据进行学习预测,例如得到了某商品前一年的日销量数据,我们可以用LSTM模型来预测未来一段时间内该商品的销量。但对于不熟悉神经网络或者对没有了解过RNN模型的人来说,想要看懂LSTM模型的原理…

基于优化LSTM 模型的股票预测

LSTM自诞生以来,便以其在处理时间序列方面的优越性能在预测回归,语音翻译等领域广受青睐。今天,主要研究的是通过对LSTM模型的优化来实现股票预测。其实,关于股票预测,LSTM模型已经表现的相当成熟,然而&…

【机器学习】LSTM模型原理

文章目录 1. 序言2. RNN的基本概念与网络结构2.1 概念2.2 结构2.3 要素 3. LSTM的基本概念与网络结构3.1 概念3.2 结构3.3 要素 4. LSTM网络结构的说明5. 补充 1. 序言 临渊羡鱼不如归而结网 学习的目的是为了应用 2. RNN的基本概念与网络结构 LSTM是在RNN的基础上演进而来…

LSTM模型

LSTM比RNN复杂很多,RNN只有一个参数矩阵A,LSTM有4个(遗忘门,输入门,更新值,输出门) LSTM有一个非常重要的传输带Ct,过去的信息通过这个传输带送给下一时刻,不会发生太大变…

时间序列预测——LSTM模型(附代码实现)

目录 模型原理 模型实现 导入所需要的库 设置随机数种子 导入数据集 打印前五行数据进行查看 数据处理 归一化处理 查看归一化处理后的数据 将时间序列转换为监督学习问题 打印数据前五行 划分训练集和测试集 查看划分后的数据维度 搭建LSTM模型 得到损失图 模型…

phpstorm汉化操作

问题描述:如何进行phpstorm的汉化(原始为英文) 解决办法: 1.下载汉化包—resources_cn; 2.将汉化包添加到phpstorm文件夹下的lib文件夹内(其中的resources_en可以不删除); 3.重启Ph…

php 教程 phpstorm

目录 php开发流程 php 编辑工具 phpstudy phpstorm如何配置php环境 php 语言 什么是URI URL和URI差别: 一、HTTP和HTTPS的基本概念 经典类型和自定义 实现本机域映射​ php开发流程 1、下载php语言包 php作为一门语言,本身可以是一个纯绿色版的…

【PHP】Phpstorm环境配置与应用

一. Phpstorm环境配置 (1)点击左上端File,选择下拉框中的setting,进入环境配置页面,如下图 (2)如下图点击1处,选中下拉框中的Deployment,Type(图示2处),下拉框中选择Local or mounted folder …

PHP开发工具PhpStorm v2022.3——完全支持PHP 8.2

PhpStorm是一个轻量级且便捷的PHP IDE,其旨在提高用户效率,可深刻理解用户的编码,提供智能代码补全,快速导航以及即时错误检查。可随时帮助用户对其编码进行调整,运行单元测试或者提供可视化debug功能。 PhpStorm v20…

phpstorm10.0.3汉化方法:

PhpStorm10.0.3汉化方法: 1、安装原版PhpStorm10.0.3,在打开最新的PhpStorm10汉化包下载地址: http://pan.baidu.com/s/1bouoyF9 2、双击用压缩软件打开resources_cn.jar(注意是打开而不是解压出来),将下载的汉化包…

PHPSTORM 中文版/汉化 即常用快捷键和配置

PHPStorm配置和快捷键大全(最新版)支持Win和Mac http://blog.csdn.net/fenglailea/article/details/53350080 推荐 1.汉化/中文版 使用的是开源的,翻译的还好,因为是开源,有些人不自觉,在翻译过程中加入广告 开源汉化地址&…

phpstorm10安装并汉化

一、下载phpstorm 下载地址:https://pan.baidu.com/s/1R64ZROVP1ljGbYfCwWjwxA 二、一直点击下一步安装即可 注意:第3步的时候选择一下支持的后缀 三、安装完毕,进行汉化 1、来到安装目录,PhpStorm 10.0.3\lib 目录下 2、…

PhpStorm 中文设置教程

本文仅供学习交流使用,如侵立删!demo下载见文末 Pycharm中文设置教程 1.首先打开PhpStorm ,点击file-settings.找到plugins,搜索Marketplace,然后搜索chinese。 2.找到之后直接点击安装. 3.安装完成之后点击Restart。…

PHPStorm运行PHP代码(新手教程)

PHPStorm是流行对PHP及前端开发IDE,在开发者初次使用写PHP代码时该怎么用呢~ 1、Create New Project 2、选择PHP Empty Project,并新建一个空目录(名字建议为英文,目录不要放在C盘!!!&#xff…

PHP教程二:开发工具 phpstorm 的下载、安装与激活

接着上一章节,我们继续开发工具的安装 phpstorm 的概括:PhpStorm 是 JetBrains 公司开发的一款商业的 PHP 集成开发工具,旨在提高用户效率,可深刻理解用户的编码,提供智能代码补全,快速导航以及即时错误检…

下载phpstorm2021汉化包

网址 网址:https://plugins.jetbrains.com/plugin/13710-chinese-simplified-language-pack---- 点安装到phpstorm 打开phpstorm2021版本 点file-------seeting-------k~(省略了)-----搜索chinese--------最后点安装就可以了。

phpstorm官方汉化包

注意:这个汉化包是官方出品的,并不是网友做的,所以有很强的兼容性不会出现各种乱七八糟bug以及汉化不完全的现象 先一睹为快 我们可以看到全都有翻译 以前的我还觉得那么多选项和按钮都不敢乱点,或者点之前都要百度一下英文 现在可以随便…

PHP开发工具phpstorm的安装及汉化详解

PHP开发工具phpstorm的安装及汉化详解 最近在研究PHP,PHP是目前较为流行的一款PHP开发工具,内容丰富,功能强大,下面将详细介绍一下他的具体安装及汉化步骤。 下载 这个是PHPstorm官网地址,可直接免费下载 我下载的是…

phpstorm安装+新建项目+phpstorm中文版

一、 安装phpstorm 1. 运行安装包 2. 点击next 3. 选择安装路径 点击next 4. 我的电脑系统是windows64位 所以选择64-bit 5. 点击INSTALL安装 6.安装成功后 运行phpstorm 选择evaluate for free 然后点击evaluate 二、 新建项目 1. 点击new project 2. 选择项目路径 点击c…

PhpStorm 汉化包

JetBrains 系列软件汉化包 关键字: Android Studio 3.0-3.1.3 汉化包 CLion 2018.1-2018.2 汉化包 GoLand 2017.3.2-2018.2 汉化包 IntelliJ IDEA 2017.3-2018.2 汉化包 PhpStorm 2017.3-2018.2 汉化包 PyCharm 2017.3-2018.2 汉化包 RubyMine 2017.3.2-2018.2 汉化包 …