LSTM(长短期记忆)网络的算法介绍及数学推导

简介: LSTM(长短期记忆)网络的算法介绍及数学推导
前言

按照国际惯例,首先声明:本文只是我自己学习的理解,虽然参考了他人的宝贵见解,但是内容不乏不准确的地方,希望批评指正,共同进步。

本文旨在说明LSTM正向传播及反向传播的算法及数学推导过程,其他内容CSDN上文章很多,不再赘述。因此在看本文前必须掌握以下两点基础知识:

①RNN的架构及算法:RNN作为LSTM的基础,是必须要先掌握的。

夹带私货,推荐自己的文章:基于Numpy构建RNN模块并进行实例应用(附代码)

②LSTM的架构:基于RNN引入上一时刻隐层输出的思想,LSTM又增加了细胞状态 C t C_t Ct的概念。 t t t时刻的输出除了要参考 t − 1 t-1 t1时刻隐层的输出 h t − 1 h_{t-1} ht1之外,还要参考 t − 1 t-1 t1时刻的细胞状态 C t − 1 C_{t-1} Ct1。为了计算细胞状态,引入忘记门、输出门、新记忆门、输出门几个路径。

推荐文章:如何从RNN起步,一步一步通俗理解LSTM 以及此篇文章中引用的文章,都值得好好看下。

基于colah的博客的LSTM结构图,稍微加工下得到下面的原理图:

一、LSTM正向传播算法

这块比较容易,只要严格按照上面原理图,正向传播的算法都容易得出。

1.隐藏层正向传播算法

t t t时刻各个门为:

  • 忘记门: image.png
  • 输入门: image.png
  • 新记忆门: image.png
  • 输出门: image.png

t t t时刻的细胞状态 C t C_t Ct为:

image.png

t t t时刻的隐层输出 h t h_t ht为:

image.png

σ \sigma σ为Sigmoid函数,⨀为矩阵的哈达马积。

2.输出层正向传播算法

t t t时刻的最终输出为:

image.png

二、LSTM的反向传播算法

重点,也是LTSM算法的难点来了。


※关于反向传播,始终要牢记其目的是:求解损失函数E关于各个权重的偏导。


既然有了正向传播的算法公式,那么反向传播就变成了一个求偏导的纯粹数学问题。下面以对忘记门的权重 w f w_f wf求偏导为例,讲解这个过程。

损失函数E对权重w f 的偏导为:

这里的E根据损失函数的选择而不同,例如交叉熵损失函数,即为:

image.png

可见这个偏导由3个部分组成:

1. 损失函数E对细胞状态 C t的偏导

首先我们要明白损失函数E是一个关于 image.png 的函数,即:

image.png

根据正向传播公式, h t 是 C t 的函数, C t是  Ct1的函数,即:

image.png

这样,求损失函数E对细胞状态 C t C_t Ct的偏导就成了高等数学中对复合函数求偏导的问题了。

代入上式,最终得出:

首先计算t = n时刻细胞状态的偏导,即E对C n 的偏导:

image.png

反向传播,再求E对C n−1的偏导:

image.png

反向传播,再求E对Cn−2 的偏导:

image.png

以此类推,容易得出t时刻E对C t的偏导:

image.png

根据正向传播公式,可以得出:

image.png

代入上式,最终得出:

实际上,上式的乘法“ · ”对于矩阵而言,都是哈达马积“⨀”。为了方便理解,均以单个变量而非矩阵的形式为例说明求偏导的过程,下面也是如此,不再特殊说明。

2. 细胞状态 C t对忘记门 f t的偏导

根据正向传播公式容易得出:

3. 忘记门 f t f_t ft对权重 w f w_f wf的偏导

根据正向传播公式容易得出:

对于Sigmoid函数及上面tanh函数的求导过程略,如果不会CSDN上也能找到具体过程。

最终得出:

至此,LSTM的正向传播及反向传播的过程推导结束。


后面预告下用Python实现它。


填坑了,Python实现LSTM的链接:基于NumPy构建LSTM模块并进行实例应用(附代码)


目录
打赏
0
0
0
0
19
分享
相关文章
基于PSO粒子群优化的BiLSTM双向长短期记忆网络序列预测算法matlab仿真,对比BiLSTM和LSTM
本项目基于MATLAB2022a/2024b开发,结合粒子群优化(PSO)算法与双向长短期记忆网络(BiLSTM),用于优化序列预测任务中的模型参数。核心代码包含详细中文注释及操作视频,涵盖遗传算法优化过程、BiLSTM网络构建、训练及预测分析。通过PSO优化BiLSTM的超参数(如学习率、隐藏层神经元数等),显著提升模型捕捉长期依赖关系和上下文信息的能力,适用于气象、交通流量等场景。附有运行效果图预览,展示适应度值、RMSE变化及预测结果对比,验证方法有效性。
基于遗传优化ELM网络的时间序列预测算法matlab仿真
本项目实现了一种基于遗传算法优化的极限学习机(GA-ELM)网络时间序列预测方法。通过对比传统ELM与GA-ELM,验证了参数优化对非线性时间序列预测精度的提升效果。核心程序利用MATLAB 2022A完成,采用遗传算法全局搜索最优权重与偏置,结合ELM快速训练特性,显著提高模型稳定性与准确性。实验结果展示了GA-ELM在复杂数据中的优越表现,误差明显降低。此方法适用于金融、气象等领域的时间序列预测任务。
基于CNN卷积神经网络和GEI步态能量提取的步态识别算法matlab仿真,对比不同角度下的步态识别性能
本项目基于CNN卷积神经网络与GEI步态能量提取技术,实现高效步态识别。算法使用不同角度(0°、45°、90°)的步态数据库进行训练与测试,评估模型在多角度下的识别性能。核心流程包括步态图像采集、GEI特征提取、数据预处理及CNN模型训练与评估。通过ReLU等激活函数引入非线性,提升模型表达能力。项目代码兼容Matlab2022a/2024b,提供完整中文注释与操作视频,助力研究与应用开发。
基于PSO粒子群优化TCN-LSTM时间卷积神经网络时间序列预测算法matlab仿真
本内容展示了一种基于粒子群优化(PSO)与时间卷积神经网络(TCN)的时间序列预测方法。通过 MATLAB2022a 实现,完整程序运行无水印,核心代码附详细中文注释及操作视频。算法利用 PSO 优化 TCN 的超参数(如卷积核大小、层数等),提升非线性时间序列预测性能。TCN 结构包含因果卷积层与残差连接,结合 LSTM 构建混合模型,经多次迭代选择最优超参数,最终实现更准确可靠的预测效果,适用于金融、气象等领域。
基于PSO粒子群优化的CNN-LSTM-SAM网络时间序列回归预测算法matlab仿真
本项目展示了基于PSO优化的CNN-LSTM-SAM网络时间序列预测算法。使用Matlab2022a开发,完整代码含中文注释及操作视频。算法结合卷积层提取局部特征、LSTM处理长期依赖、自注意力机制捕捉全局特征,通过粒子群优化提升预测精度。适用于金融市场、气象预报等领域,提供高效准确的预测结果。
基于GA遗传优化TCN-LSTM时间卷积神经网络时间序列预测算法matlab仿真
本项目基于MATLAB 2022a实现了一种结合遗传算法(GA)优化的时间卷积神经网络(TCN)时间序列预测算法。通过GA全局搜索能力优化TCN超参数(如卷积核大小、层数等),显著提升模型性能,优于传统GA遗传优化TCN方法。项目提供完整代码(含详细中文注释)及操作视频,运行后无水印效果预览。 核心内容包括:1) 时间序列预测理论概述;2) TCN结构(因果卷积层与残差连接);3) GA优化流程(染色体编码、适应度评估等)。最终模型在金融、气象等领域具备广泛应用价值,可实现更精准可靠的预测结果。
基于GA遗传优化的CNN-LSTM-SAM网络时间序列回归预测算法matlab仿真
本项目使用MATLAB 2022a实现时间序列预测算法,完整程序无水印。核心代码包含详细中文注释和操作视频。算法基于CNN-LSTM-SAM网络,融合卷积层、LSTM层与自注意力机制,适用于金融市场、气象预报等领域。通过数据归一化、种群初始化、适应度计算及参数优化等步骤,有效处理非线性时间序列,输出精准预测结果。
基于WOA鲸鱼优化的CNN-LSTM-SAM网络时间序列回归预测算法matlab仿真
本内容介绍了一种基于CNN-LSTM-SAM网络与鲸鱼优化算法(WOA)的时间序列预测方法。算法运行于Matlab2022a,完整程序无水印并附带中文注释及操作视频。核心流程包括数据归一化、种群初始化、适应度计算及参数更新,最终输出最优网络参数完成预测。CNN层提取局部特征,LSTM层捕捉长期依赖关系,自注意力机制聚焦全局特性,全连接层整合特征输出结果,适用于复杂非线性时间序列预测任务。
7.1.3.2、使用飞桨实现基于LSTM的情感分析模型的网络定义
该文章详细介绍了如何使用飞桨框架实现基于LSTM的情感分析模型,包括网络定义、模型训练、评估和预测的完整流程,并提供了相应的代码实现。
基于贝叶斯优化CNN-LSTM网络的数据分类识别算法matlab仿真
本项目展示了基于贝叶斯优化(BO)的CNN-LSTM网络在数据分类中的应用。通过MATLAB 2022a实现,优化前后效果对比明显。核心代码附带中文注释和操作视频,涵盖BO、CNN、LSTM理论,特别是BO优化CNN-LSTM网络的batchsize和学习率,显著提升模型性能。

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问