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


相关文章
|
5天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
25 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
21天前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
65 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
|
23天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于贝叶斯优化CNN-LSTM网络的数据分类识别算法matlab仿真
本项目展示了基于贝叶斯优化(BO)的CNN-LSTM网络在数据分类中的应用。通过MATLAB 2022a实现,优化前后效果对比明显。核心代码附带中文注释和操作视频,涵盖BO、CNN、LSTM理论,特别是BO优化CNN-LSTM网络的batchsize和学习率,显著提升模型性能。
|
4天前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【10月更文挑战第39天】在数字化时代,网络安全和信息安全成为了我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的内容,帮助读者更好地了解网络安全的重要性,并提供一些实用的技巧和方法来保护自己的信息安全。
15 2
|
5天前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【10月更文挑战第38天】本文将探讨网络安全与信息安全的重要性,包括网络安全漏洞、加密技术和安全意识等方面。我们将通过代码示例和实际操作来展示如何保护网络和信息安全。无论你是个人用户还是企业,都需要了解这些知识以保护自己的网络安全和信息安全。
|
4天前
|
存储 安全 网络安全
云计算与网络安全:探索云服务中的信息安全策略
【10月更文挑战第39天】随着云计算的飞速发展,越来越多的企业和个人将数据和服务迁移到云端。然而,随之而来的网络安全问题也日益突出。本文将从云计算的基本概念出发,深入探讨在云服务中如何实施有效的网络安全和信息安全措施。我们将分析云服务模型(IaaS, PaaS, SaaS)的安全特性,并讨论如何在这些平台上部署安全策略。文章还将涉及最新的网络安全技术和实践,旨在为读者提供一套全面的云计算安全解决方案。
|
4天前
|
存储 安全 网络安全
网络安全与信息安全:漏洞、加密技术与安全意识的交织
【10月更文挑战第39天】在数字化时代,网络安全与信息安全成为保护个人隐私和组织资产的重要屏障。本文将探讨网络安全中的常见漏洞、加密技术的应用以及提升安全意识的重要性。通过具体案例分析,我们将深入了解网络攻击的手段和防御策略,同时提供实用建议,以增强读者对网络安全的认识和防护能力。
|
4天前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【10月更文挑战第39天】在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将探讨网络安全漏洞、加密技术以及安全意识等方面的内容,帮助读者更好地了解网络安全的重要性,并提供一些实用的技巧和建议来保护个人信息和设备安全。
|
7天前
|
SQL 安全 物联网
网络安全与信息安全:深入探讨网络漏洞、加密技术及安全意识###
网络安全与信息安全是当今数字化时代的重要议题。本文将详细探讨网络安全和信息安全的差异,重点介绍常见的网络漏洞、加密技术以及如何提升用户和组织的安全意识。通过具体案例和技术分析,帮助读者理解这些关键概念,并提供实用的建议以应对潜在的网络威胁。 ###
|
7天前
|
安全 网络安全 API
揭秘网络世界的守护神:网络安全与信息安全的深度剖析
【10月更文挑战第36天】在数字时代的洪流中,网络安全和信息安全如同守护神一般,保护着我们的数据不受侵犯。本文将深入探讨网络安全漏洞的成因、加密技术的奥秘以及提升个人安全意识的重要性。通过分析最新的攻击手段、介绍先进的防御策略,并分享实用的安全实践,旨在为读者呈现一个全方位的网络安全与信息安全知识图谱。让我们一同揭开网络世界的神秘面纱,探索那些不为人知的安全秘籍。
25 6

热门文章

最新文章