当前位置: 首页 > news >正文

深度学习知识点:LSTM

文章目录

  • 1.应用现状
  • 2.发展历史
  • 3.基本结构
  • 4.LSTM和RNN的差异

1.应用现状

长短期记忆神经网络(LSTM)是一种特殊的循环神经网络(RNN)。原始的RNN在训练中,随着训练时间的加长以及网络层数的增多,很容易出现梯度爆炸或者梯度消失的问题,导致无法处理较长序列数据,从而无法获取长距离数据的信息。

LSTM应用的领域包括:文本生成、机器翻译、语音识别、生成图像描述和视频标记等。

  • 2009年, 应用LSTM搭建的神经网络模型赢得了ICDAR手写识别比赛冠军。
  • 2015年以来,在机械故障诊断和预测领域,相关学者应用LSTM来处理机械设备的振动信号。
  • 2016年, 谷歌公司应用LSTM来做语音识别和文字翻译,其中Google翻译用的就是一个7-8层的LSTM模型。
  • 2016年, 苹果公司使用LSTM来优化Siri应用。

2.发展历史

1997年,Sepp Hochreiter 和 Jürgen Schmidhuber[1]提出了长短期记忆神经网络(LSTM),有效解决了RNN难以解决的人为延长时间任务的问题,并解决了RNN容易出现梯度消失的问题。

  • 1999年,Felix A. Gers等人[2]发现[1]中提出的LSTM在处理连续输入数据时,如果没有重置网络内部的状态,最终会导致网络崩溃。因此,他们在文献[1]基础上引入了遗忘门机制,使得LSTM能够重置自己的状态。
  • 2000年,Felix A. Gers和Jiirgen Schmidhuber[3]发现,通过在LSTM内部状态单元内添加窥视孔(Peephole)连接,可以增强网络对输入序列之间细微特征的区分能力。
  • 2005年,Alex Graves和Jürgen Schmidhuber[4]在文献[1] [2] [3]的基础上提出了一种双向长短期记忆神经网络(BLSTM),也称为vanilla LSTM,是当前应用最广泛的一种LSTM模型。
  • 2005年-2015年期间,相关学者提出了多种LSTM变体模型,此处不多做描述。
  • 2016年,Klaus Greff 等人[5]回顾了LSTM的发展历程,并比较分析了八种LSTM变体在语音识别、手写识别和弦音乐建模方面的能力,实验结果表明这些变体不能显著改进标准LSTM体系结构,并证明了遗忘门和输出激活功能是LSTM的关键组成部分。在这八种变体中,vanilla LSTM的综合表现能力最佳。另外,还探索了LSTM相关超参数的设定影响,实验结果表明学习率是最关键的超参数,其次是网络规模(网络层数和隐藏层单元数),而动量梯度等设置对最终结果影响不大。
  • 在GRU被提出后,Junyoung Chung等人[6]比较了LSTM和GRU在复音音乐和语音信号建模方面的能力,实验结果表明GRU和LSTM表现相当。
  • GRU被提出至今(2019年),也只有几年时间,关于它的一些应用利弊到目前还未探索清楚。不过,相对于LSTM架构,GRU的的参数较少,在数据量较大的情况下,其训练速度更快。
  • LSTM是深度学习技术中的一员,其基本结构比较复杂,计算复杂度较高,导致较难进行较深层次的学习,例如谷歌翻译也只是应用7-8层的LSTM网络结构。另外,在训练学习过程中有可能会出现过拟合,可以通过应用dropout来解决过拟合问题(这在Keras等框架中均有实现。
  • LSTM在当前应用比较的结构是双向LSTM或者多层堆叠LSTM,这两种结构的实现在Keras等框架中均有对应的API可以调用。
    下图展示一个堆叠两层的LSTM结构图
    在这里插入图片描述
    下图展示了一个双向LSTM的结构图
    在这里插入图片描述

3.基本结构

本节首先回顾一下RNN的基本结构,然后说明LSTM的具体原理(下面要介绍的LSTM即为vanilla LSTM)。
原始的RNN基本结构图如下图所示。
在这里插入图片描述
由上图可知,RNN展开后由多个相同的单元连续连接。但是,RNN的实际结构确和上图左边的结构所示,是一个自我不断循环的结构。即随着输入数据的不断增加,上述自我循环的结构把上一次的状态传递给当前输入,一起作为新的输入数据进行当前轮次的训练和学习,一直到输入或者训练结束,最终得到的输出即为最终的预测结果。
LSTM是一种特殊的RNN,两者的区别在于普通的RNN单个循环结构内部只有一个状态。而LSTM的单个循环结构(又称为细胞)内部有四个状态。相比于RNN,LSTM循环结构之间保持一个持久的单元状态不断传递下去,用于决定哪些信息要遗忘或者继续传递下去。
包含三个连续循环结构的RNN如下图,每个循环结构只有一个输出:
在这里插入图片描述
包含三个连续循环结构的LSTM如下图,每个循环结构有两个输出,其中一个即为单元状态:
在这里插入图片描述
一层LSTM是由单个循环结构结构组成,既由输入数据的维度和循环次数决定单个循环结构需要自我更新几次,而不是多个单个循环结构连接组成,即当前层LSTM的参数总个数只需计算一个循环单元就行,而不是计算多个连续单元的总个数。
下面将由一组图来详细解释LSTM细胞的基本组成和实现原理。LSTM细胞由遗忘门、输入门、输出门和单元状态组成。

  • 遗忘门( f t f_t ft):决定上一时刻的单元状态有多少需要保留到当前时刻。 (清理记忆垃圾,只保留考试相关内容)
  • 输入门( i t i_t it): 更新门决定了当前时刻有多少新的信息要被存储到单元状态中。(吸收新重点,加入到当前记忆)
  • 输出门( o t o_t ot):控制当前单元状态有多少需要输出到当前的输出值。(考试时根据题目提取相关知识点作答)

更通俗的解释:

  1. 遗忘门 (Forget Gate)

    功能:决定过去的信息中哪些需要保留,哪些需要丢弃。
    • 比喻:遗忘门像你的大脑在复习时选择丢弃的内容。例如,高数考试时你已经知道某些知识点不会考(如绪论部分),于是选择不再复习这些内容。
    • 原理:根据当前输入(考试重点提示)和过去的记忆(已掌握的知识)评估重要性,决定哪些内容不再需要(权值接近 0 的部分被遗忘)。

  2. 输入门 (Input Gate)

    功能:决定当前时刻有多少新的信息需要被记住并加入到记忆中。
    • 比喻:输入门像你的大脑在吸收新的知识。例如,在老师讲解考试重点时,你决定哪些内容是需要认真记忆的重点。
    • 原理:根据当前的输入(老师强调的重点)和上下文评估新信息的价值,选择性地将有用信息写入到记忆中。

  3. 输出门 (Output Gate)

    功能:决定当前单元状态中的多少内容需要被输出,用于生成当前时刻的输出值。
    • 比喻:输出门像你在考试答题时的记忆提取过程。例如,考试时你只需要提取与题目相关的知识点,而不需要将整本书的内容全部回忆出来。
    • 原理:基于单元状态(你储存的知识)和当前输入(具体的考试题目)决定需要输出的信息量。

下图展示了应用上一个时刻的输出 h t − 1 h_{t-1} ht1和当前的数据输入 x t x_t xt,通过遗忘门得到 f t f_t ft的过程。

在这里插入图片描述
下图展示了应用上一个时刻的输出 h t − 1 h_{t-1} ht1和当前的数据输入 x t x_t xt,通过输入门得到 i t i_t it,以及通过单元状态得到当前时刻暂时状态 C ~ t \tilde{C}_t C~t的过程。
在这里插入图片描述
下图展示了应用上一个细胞结构的单元状态 C t − 1 C_{t-1} Ct1、遗忘门输出 f t f_t ft、输入门输出 i t i_t it以及单元状态的输出 C ~ t \tilde{C}_t C~t,得到当前细胞的状态 C t C_t Ct的过程。
在这里插入图片描述
下图展示了应用上一个时刻的输出 h t − 1 h_{t-1} ht1和当前的数据输入 x t x_t xt,通过输出门得到 o t o_t ot的过程,以及结合当前细胞的单元状态 C t C_t Ct o t o_t ot得到最终的输出 h t h_t ht的过程。
在这里插入图片描述
看看里面的步骤
解释

  • 三个 σ \sigma σ代表三个门,其输入均有上一层的隐藏状态 h t h_t ht以及输入数据 x t x_t xt
  • g t g_t gt = C ~ t \tilde{C}_t C~t
  • 其他参数: W W W初始化权重, b b b偏置向
  • c t − 1 c_{t-1} ct1在经历过一次乘法和一次加法后的流动方向有两个:一个是直接输出,另一个是经过 t a n h tanh tanh后和 o t o_t ot汇合输出 h t h_t ht
  • h t h_t ht也有两个流向:一个是流到下一个时刻,另一个是输出 y t = W y h h t + b y y_t = W_{yh}h_t + b_y yt=Wyhht+by
    在这里插入图片描述

4.LSTM和RNN的差异

RNN:把所有信息都记住,不管有用的没用的。
LSTM:设计一个记忆细胞,具备选择性记忆的功能,可以选择记忆重要信息,过滤掉噪声信息,减轻记忆负担,解决了RNN上的问题:梯度爆炸和梯度消失
通俗讲差异:在期末复习周的时候,比如要考高数,老师已经给划定了重点,RNN还是会把整本书复习一遍,这会导致记忆负担重,会遗忘掉一些重要的信息,导致记忆效果差;而LSTM过滤掉了不考的信息,只记重点
名词解释
       梯度消失:
              现象:在训练过程中,反向传播时梯度逐渐变小,导致网络的早期层权重更新很少甚至停滞,使模型无法捕捉长期                      依赖的信息。
              原因:在时间序列长度较长的情况下,RNN 的反向传播会涉及到多次链式求导(如 ∂ L ∂ W \frac{\partial L}{\partial W} WL中的链式规则)。如果激活                      函数的导数值小于 1(如 sigmoid),会使得梯度逐步衰减,最终趋近于 0。
       梯度爆炸:
              现象:在训练过程中,反向传播时梯度逐渐变大,导致权重更新幅度过大,模型失控。
              原因:与梯度消失类似,但激活函数导数值较大(或权重初始化不当)会导致梯度不断放大。

参考文献

[1] S. Hochreiter and J. Schmidhuber, “Long Short-Term Memory,” Neural Comput, vol. 9, no. 8, pp. 1735–1780, Nov. 1997.

[2] F. A. Gers, J. Schmidhuber, and F. A. Cummins, “Learning to Forget: Continual Prediction with LSTM,” Neural Comput., vol. 12, pp. 2451–2471, 2000.

[3] F. A. Gers and J. Schmidhuber, “Recurrent nets that time and count,” Proc. IEEE-INNS-ENNS Int. Jt. Conf. Neural Netw. IJCNN 2000 Neural Comput. New Chall. Perspect. New Millenn., vol. 3, pp. 189–194 vol.3, 2000.

[4] A. Graves and J. Schmidhuber, “Framewise phoneme classification with bidirectional LSTM and other neural network architectures,” Neural Netw., vol. 18, no. 5, pp. 602–610, Jul. 2005.

[5] K. Greff, R. K. Srivastava, J. Koutník, B. R. Steunebrink, and J. Schmidhuber, “LSTM: A Search Space Odyssey,” IEEE Trans. Neural Netw. Learn. Syst., vol. 28, no. 10, pp. 2222–2232, Oct. 2017.

[6] J. Chung, C. Gulcehre, K. Cho, and Y. Bengio, “Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling,” ArXiv14123555 Cs, Dec. 2014.

相关文章:

深度学习知识点:LSTM

文章目录 1.应用现状2.发展历史3.基本结构4.LSTM和RNN的差异 1.应用现状 长短期记忆神经网络(LSTM)是一种特殊的循环神经网络(RNN)。原始的RNN在训练中,随着训练时间的加长以及网络层数的增多,很容易出现梯度爆炸或者梯度消失的问…...

11.C语言内存管理与常用内存操作函数解析

目录 1.简介2.void 指针3.malloc4.free5.calloc6.realloc7.restrict 说明符8.memcpy9.memmove()10.memcmp 1.简介 本篇原文为:C语言内存管理与常用内存操作函数解析。 更多C进阶、rust、python、逆向等等教程,可点击此链接查看:酷程网 C 语…...

Python 中的错误处理与调试技巧

💖 欢迎来到我的博客! 非常高兴能在这里与您相遇。在这里,您不仅能获得有趣的技术分享,还能感受到轻松愉快的氛围。无论您是编程新手,还是资深开发者,都能在这里找到属于您的知识宝藏,学习和成长…...

门禁系统与消防报警的几种联动方式

1、规范中要求的出入口系统与消防联动 1.1《建筑设计防火规范》GB 50016-2018 1.2《民用建筑电气设计规范》JGJ 16-2008  14.4出入口控制系统 3 设置在平安疏散口的出入口限制装置,应与火灾自动报警系统联动;在紧急状况下应自动释放出入口限制系统&…...

云原生安全风险分析

一、什么是云原生安全 云原生安全包含两层含义: 面向云原生环境的安全具有云原生特征的安全 0x1:面向云原生环境的安全 面向云原生环境的安全的目标是防护云原生环境中基础设施、编排系统和微服务等系统的安全。 这类安全机制不一定具备云原生的特性…...

解决cursor50次使用限制问题并恢复账号次数

视频内容: 在这个视频教程中,我们将演示如何解决科sir软件50次使用限制的问题,具体步骤包括删除和注销账号、重新登录并刷新次数。教程详细展示了如何使用官网操作将账号的剩余次数恢复到250次,并进行软件功能测试。通过简单的操…...

python学习笔记—16—数据容器之元组

1. 元组——tuple(元组是一个只读的list) (1) 元组的定义注意:定义单个元素的元组,在元素后面要加上 , (2) 元组也支持嵌套 (3) 下标索引取出元素 (4) 元组的相关操作 1. index——查看元组中某个元素在元组中的位置从左到右第一次出现的位置 t1 (&qu…...

rabbitmq——岁月云实战笔记

1 rabbitmq设计 生产者并不是直接将消息投递到queue,而是发送给exchange,由exchange根据type的规则来选定投递的queue,这样消息设计在生产者和消费者就实现解耦。 rabbitmq会给没有type预定义一些exchage,而实际我们却应该使用自己定义的。 1.1 用户注册设计 用户在…...

Matlab APP Designer

我想给聚类的代码加一个图形化界面,需要输入一些数据和一些参数并输出聚类后的图像和一些评价指标的值。 gpt说 可以用 app designer 界面元素设计 在 设计视图 中直接拖动即可 如图1,我拖进去一个 按钮 ,图2 红色部分 出现一行 Button 图…...

CSS语言的编程范式

CSS语言的编程范式 引言 在现代网页开发中,CSS(层叠样式表)作为一种样式语言,承担着网站前端呈现的重要角色。无论是简单的静态网页还是复杂的单页应用,CSS都在人机交互中发挥着至关重要的作用。掩盖在美观背后的&am…...

一个简单的php博客

一个简单的 PHP 博客的示例代码&#xff1a; 收起 php <?php // 连接数据库 $servername "localhost"; $username "root"; $password ""; $dbname "blog_db";// 创建连接 $conn new mysqli($servername, $username, $passw…...

解决anaconda prompt找不到的情况

由于打开某个文件夹导致系统卡死了&#xff0c;鼠标使用不了&#xff0c;只能使用快捷键ctrlaltdelete打开&#xff0c;点任务管理器也没什么用&#xff0c;就点了注销选项。 注销&#xff1a;清空缓存空间和注册表信息&#xff0c;向系统发出清除现在登陆的用户的请求。 导致…...

【深度学习】多目标融合算法(二):底部共享多任务模型(Shared-Bottom Multi-task Model)

目录 一、引言 1.1 往期回顾 1.2 本期概要 二、Shared-Bottom Multi-task Model&#xff08;SBMM&#xff09; 2.1 技术原理 2.2 技术优缺点 2.3 业务代码实践 三、总结 一、引言 在朴素的深度学习ctr预估模型中&#xff08;如DNN&#xff09;&#xff0c;通常以一个行…...

如何使用vue引入three.js

在 Vue.js 项目中引入和使用 Three.js 是一个常见的需求&#xff0c;Three.js 是一个用于在浏览器中创建和显示动画 3D 计算机图形的 JavaScript 库。以下是一个基本的示例&#xff0c;展示如何在 Vue 项目中引入和使用 Three.js。 1. 创建 Vue 项目 如果你还没有一个 Vue 项…...

城市生命线安全综合监管平台

【落地产品&#xff0c;有需要可留言联系&#xff0c;支持项目合作或源码合作】 一、建设背景 以关于城市安全的重要论述为建设纲要&#xff0c;聚焦城市安全重点领域&#xff0c;围绕燃气爆炸、城市内涝、地下管线交互风险、第三方施工破坏、供水爆管、桥梁坍塌、道路塌陷七…...

计算机毕设【开题报告】怎么写?

技巧 1. 标题简洁且具体 技巧&#xff1a;开题报告的标题要简明扼要&#xff0c;并准确表达研究的核心内容。避免使用复杂的术语或过于宽泛的题目。 实用方法&#xff1a;根据你的研究方向&#xff0c;标题应该包括你的系统类型、技术框架或研究对象。例如&#xff0c;“基于…...

Go学习:多重赋值与匿名变量

1. 变量的多重赋值 1.1 基本语法格式 go语言中&#xff0c;可以将多个赋值语句 合并成 一句&#xff0c;比如&#xff1a; a : 10 b : 20 c : 30//a,b,c三个变量的赋值语句可以简练成以下格式a, b, c : 10, 20, 30 1.2 交换变量值 当需要交换两个变量的值时&#…...

【Ubuntu 上搭建 Nginx-RTMP 服务】

本章目录: 环境1. 安装依赖2. 创建 Nginx 编译目录3. 下载 Nginx 和 Nginx-RTMP-Module4. 编译 Nginx 并添加 RTMP 模块5. 验证 Nginx 安装成功6. 配置环境变量7. 修改 Nginx 配置文件8. 启动 Nginx 服务查看 Nginx 是否启动成功查看端口监听状态 8. 常见问题及解决方法1. 缺少…...

使用uniapp 微信小程序一些好用的插件分享

总结一下自己在开发中遇见的一问题&#xff0c;通过引入组件可以快速的解决 1.zxz-uni-data-select 下拉框选择器(添加下拉框检索&#xff0c;多选功能&#xff0c;多选搜索功能&#xff0c;自定义 下拉框插件&#xff0c;使用这个的原因是因为 uniui uview 组件库下拉框太…...

linux centos挂载未分配的磁盘空间

使用到的命令 lshw -class disk -short hostnamectl fdisk /dev/sdb partprobe /dev/sdb mount /dev/sdb2 /opt/fastdfs/ mkfs.ext4 /dev/sdb2 mount -t ext4 /dev/sdb2 /opt/fastdfs/...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...