深度学习知识点:LSTM

news2025/1/12 5:11:57

文章目录

  • 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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2275313.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ASP.NET Core 中服务生命周期详解:Scoped、Transient 和 Singleton 的业务场景分析

前言 在 ASP.NET Core 中,服务的生命周期直接影响应用的性能和行为。通过依赖注入容器 (Dependency Injection, DI),我们可以为服务定义其生命周期:Scoped、Transient 和 Singleton。本文将详细阐述这些生命周期的区别及其在实际业务中的应用…

kubeneters-循序渐进Cilium网络(二)

文章目录 概要IP 地址配置接口配置解析结论 概要 接续前一章节,我们还是以这张图继续深入Cilium网络世界 IP 地址配置 通过检查 Kubernetes 集群的当前环境,可以获取实际的 IP 地址和配置信息。这些信息将被补充到之前的网络示意图中,以使…

树莓派设备树编译

上回书讲到: 树莓派 OS 安装 树莓派内核 kernel 编译 今天我们介绍下树莓派设备树如何添加、编译和使用。 设备树初识 设备树(Device Tree, DT)是 Linux 内核用来描述硬件的一种数据结构。它以一种结构化的方式定义了硬件的配置和属性&a…

微信小程序map组件所有markers展示在视野范围内

注意&#xff1a;使用include-points属性不生效&#xff0c;要通过createMapContext实现 <template><view class"map-box"><map id"map" class"map" :markers"markers" :enable-traffic"true" :enable-poi&…

省市区三级联动(后端)

前提&#xff1a;springboot、mybatis-plus、swagger 数据库&#xff1a; 文章顶部 实体类&#xff1a; City package com.itfly.entity;import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import java.time.Loca…

【Axure高保真原型】环形进度条(开始暂停效果)

今天和大家分享环形进度条&#xff08;开始暂停效果&#xff09;的原型模版&#xff0c;效果包括&#xff1a; 点击开始按钮&#xff0c;可以环形进度条开始读取&#xff0c;中部百分比显示环形的读取进度&#xff1b; 在读取过程中&#xff0c;点击暂停按钮&#xff0c;可以随…

CTFshow—文件包含

Web78-81 Web78 这题是最基础的文件包含&#xff0c;直接?fileflag.php是不行的&#xff0c;不知道为啥&#xff0c;直接用下面我们之前在命令执行讲过的payload即可。 ?filephp://filter/readconvert.base64-encode/resourceflag.php Web79 这题是过滤了php&#xff0c;…

Jenkins pipeline 发送邮件及包含附件

Jenkins pipeline 发送邮件及包含附件 设置邮箱开启SMTP服务 此处适用163 邮箱 开启POP3/SMTP服务通过短信获取TOKEN &#xff08;保存TOKEN, 后面Jenkins会用到&#xff09; Jenkins 邮箱设置 安装 Build Timestamp插件 设置全局凭证 Dashboard -> Manage Jenkins …

【微服务】8、分布式事务 ( XA 和 AT )

文章目录 利用Seata解决分布式事务问题&#xff08;XA模式&#xff09;AT模式1. AT模式原理引入2. AT模式执行流程与XA模式对比3. AT模式性能优势及潜在问题4. AT模式数据一致性解决方案5. AT模式一阶段操作总结6. AT模式二阶段操作分析7. AT模式整体特点8. AT模式与XA模式对比…

Java解析Excel表格

Java解析Excel表格 <!-- Excel 表格解析 --><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>4.0.3</version></dependency>简单使用 // 创建一个读取监听器 ReadListener<E…

Bytebase 3.1.2 - 在 SQL 编辑器中为表、列和 PG 的视图注释显示鼠标悬浮提示

&#x1f680; 新功能 在 SQL 编辑器中为表、列和 PostgreSQL 的视图注释显示鼠标悬浮提示。 IM, Webhook 集成支持 Lark。展示 Redshift 表或视图的定义。 &#x1f514; API 重大变更 弃用脱敏策略 API /v1/{instance}/{database}/policies/masking&#xff0c;改为调用 /v…

C#里使用libxl读取EXCEL文件里的图片并保存出来

有时候需要读取EXCEL里的图片文件, 因为很多用户喜欢使用图片保存在EXCEL里,比如用户保存一些现场整改的图片。 如果需要把这些图片抽取出来,再保存到系统里,就需要读取这些图片数据,生成合适的文件再保存。 在libxl里也提供了这样的方法, 如下: var picType = boo…

NAT 代理服务器

文章目录 1. NAT2. 内网穿透3. 内网打洞4. 代理服务器正向代理服务器反向代理服务器 5. DNS6. ICMP7.测试内网穿透 1. NAT 在ip协议章节&#xff0c;我们说报文转发给路由器时&#xff0c;由于私有IP地址不能出现在公网中&#xff0c;路由器会将报文源IP地址替换为路由器的WAN…

Android - NDK :JNI实现异步回调

在android代码中&#xff0c;通过JNI调用c层子线程执行耗时任务&#xff0c;在c层子线程中把结果回调到android层&#xff0c; C语言小白&#xff0c;请批评指正&#xff01; android层代码&#xff1a; import androidx.appcompat.app.AppCompatActivity;import android.os.…

【Altium】AD使用智能粘贴功能把多个网络标签改成端口

1、 文档目标 使用智能粘贴功能把多个网络标签&#xff08;net lable&#xff09;改成端口&#xff08;port&#xff09; 2、 问题场景 客户有一份原理图&#xff0c;网络用的是net label&#xff0c;没用Port&#xff0c;然后创建一个sheet symbol&#xff0c;但是sheet sy…

软件系统安全逆向分析-混淆对抗

1. 概述 在一般的软件中&#xff0c;我们逆向分析时候通常都不能直接看到软件的明文源代码&#xff0c;或多或少存在着混淆对抗的操作。下面&#xff0c;我会实践操作一个例子从无从下手到攻破目标。 花指令对抗虚函数表RC4 2. 实战-donntyousee 题目载体为具有漏洞的小型软…

01 springboot集成mybatis后密码正确但数据库连接失败

01 springboot集成mybatis后密码正确但数据库连接失败 问题描述&#xff1a; 1.datasource配置&#xff1a; //application.yaml spring:datasource:url: jdbc:mysql://127.0.0.1:3306/mp?useUnicodetrue&characterEncodingUTF-8&autoReconnecttrue&serverTime…

Python基于jieba和wordcloud绘制词云图

【Cesium】自定义材质&#xff0c;添加带有方向的滚动路线 &#x1f356; 前言&#x1f3b6;一、实现过程✨二、代码展示&#x1f3c0;三、运行结果&#x1f3c6;四、知识点提示 &#x1f356; 前言 Python基于jieba和wordcloud绘制词云图 &#x1f3b6;一、实现过程 读取文本…

保证Mysql数据库到ES的数据一致性的解决方案

文章目录 1.业务场景介绍1.1 需求分析1.2 技术实现方案 2.业界常用数据一致性方案分析2.1 同步双写方案2.2 MQ异步双写方案2.3 扫表定期同步方案2.4 监听binlog同步方案 1.业务场景介绍 1.1 需求分析 某知名的在线旅游平台&#xff0c;在即将到来的春季促销活动之前&#xff…

文件搜索工具Everything

软件介绍 Everything 是一款运行于 Windows 系统的轻量级、高效的文件搜索工具 软件功能 1、基本搜索 在搜索框输入关键词&#xff0c;即可快速找到包含该关键词的文件和文件夹。 2、高级搜索 支持多种高级搜索语法&#xff0c;如.exe&#xff1a;可只返回特定扩展名的结果…