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模块并进行实例应用(附代码)


相关文章
|
11月前
|
存储 机器学习/深度学习 监控
网络管理监控软件的 C# 区间树性能阈值查询算法
针对网络管理监控软件的高效区间查询需求,本文提出基于区间树的优化方案。传统线性遍历效率低,10万条数据查询超800ms,难以满足实时性要求。区间树以平衡二叉搜索树结构,结合节点最大值剪枝策略,将查询复杂度从O(N)降至O(logN+K),显著提升性能。通过C#实现,支持按指标类型分组建树、增量插入与多维度联合查询,在10万记录下查询耗时仅约2.8ms,内存占用降低35%。测试表明,该方案有效解决高负载场景下的响应延迟问题,助力管理员快速定位异常设备,提升运维效率与系统稳定性。
427 4
|
11月前
|
机器学习/深度学习 算法
采用蚁群算法对BP神经网络进行优化
使用蚁群算法来优化BP神经网络的权重和偏置,克服传统BP算法容易陷入局部极小值、收敛速度慢、对初始权重敏感等问题。
610 5
|
11月前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
400 0
|
SQL 监控 安全
网络安全与信息安全:漏洞、加密与安全意识
随着互联网的迅猛发展,网络安全和信息安全问题日益受到关注。本文深入探讨了网络安全漏洞、加密技术以及提高个人和组织的安全意识的重要性。通过分析常见的网络攻击手段如缓冲区溢出、SQL注入等,揭示了计算机系统中存在的缺陷及其潜在威胁。同时,详细介绍了对称加密和非对称加密算法的原理及应用场景,强调了数字签名和数字证书在验证信息完整性中的关键作用。此外,还讨论了培养良好上网习惯、定期备份数据等提升安全意识的方法,旨在帮助读者更好地理解和应对复杂的网络安全挑战。
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
582 17
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
429 10
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的内容,并提供一些实用的代码示例。通过阅读本文,您将了解到如何保护自己的网络安全,以及如何提高自己的信息安全意识。
405 10
|
监控 安全 网络安全
网络安全与信息安全:漏洞、加密与意识的交织
在数字时代的浪潮中,网络安全与信息安全成为维护数据完整性、保密性和可用性的关键。本文深入探讨了网络安全中的漏洞概念、加密技术的应用以及提升安全意识的重要性。通过实际案例分析,揭示了网络攻击的常见模式和防御策略,强调了教育和技术并重的安全理念。旨在为读者提供一套全面的网络安全知识框架,从而在日益复杂的网络环境中保护个人和组织的资产安全。
|
存储 监控 安全
云计算与网络安全:云服务、网络安全、信息安全等技术领域的融合与挑战
本文将探讨云计算与网络安全之间的关系,以及它们在云服务、网络安全和信息安全等技术领域中的融合与挑战。我们将分析云计算的优势和风险,以及如何通过网络安全措施来保护数据和应用程序。我们还将讨论如何确保云服务的可用性和可靠性,以及如何处理网络攻击和数据泄露等问题。最后,我们将提供一些关于如何在云计算环境中实现网络安全的建议和最佳实践。

热门文章

最新文章