LSTM 循环神经网络原理深度解读与网络结构精细剖析

news2025/3/16 23:01:27

在这里插入图片描述

长短期记忆网络(Long Short-Term Memory, LSTM)是一种特殊的循环神经网络(Recurrent Neural Network, RNN),设计用于解决长期依赖问题,特别是在处理时间序列数据时。

循环神经网络(RNN)问题

循环神经网络(RNN)是一种能够处理序列数据的神经网络架构,其特点是网络内部存在反馈循环,使得当前时刻的输出不仅取决于当前输入,还受到先前时刻隐藏状态的影响。RNN通常通过一个隐藏状态(hidden state)来传递过去的信息,使得网络具有记忆功能。

然而,RNN在处理长序列时面临长期依赖问题:当需要考虑较远过去的输入信息时,由于反向传播过程中梯度的逐层累乘(乘法运算可能导致数值极小或极大),可能会导致梯度要么消失(vanishing gradients),要么爆炸(exploding gradients),从而使得网络无法有效地学习到长时间跨度的依赖关系。

一、LSTM原理

LSTM是一种巧妙应对RNN固有挑战的架构创新,它并未直接对RNN的权重矩阵进行特征值调整以解决梯度消失/爆炸问题,而是通过引入参数化的门控单元以及细胞状态这一特殊结构,构建了一条非权重依赖的线性信息传播路径,从而绕开了传统RNN中导致长期依赖学习困难的权重参数W。

1、输入门与输出门

RNN中对于不同时间步上的数据序列使用了同样的网络结构,只是将某个或者几个层存储起来用作下一时间步的输入,这个存储的结构就是记忆单元。LSTM取消权重参数W,并对这个memory单元做重参数化:
在这里插入图片描述

  • 输入门(Input Gate):这一门控组件负责决定何时将当前时间步的输入信息写入记忆单元(memory cell)。其工作原理如下:当输入门开启时,即其激活值接近于1,允许新接收到的数据被整合到记忆单元中;反之,若门关闭(激活值接近0),则阻止新的信息进入。输入门通过参数化方式赋予模型选择性地接纳外部输入的能力,确保仅与当前处理任务相关且有价值的信号得以存储,有效地过滤掉可能干扰记忆单元稳定性的无关信息。

  • 输出门(Output Gate):该门控单元扮演着控制记忆单元内容何时及如何向后续时间步输出的角色。当输出门开启时,记忆单元中存储的信息得以部分或全部传递至模型的下一层或下一时间步,供进一步处理或用于预测。相反,如果输出门关闭,则记忆单元的内容将被暂时屏蔽,不会影响后续计算。输出门的参数化特性使得模型能够在不同时间点灵活地调整记忆单元内容的可见度,确保下游组件接收到的是经过筛选、与当前任务最为相关的记忆信息。

此时得到了一个较为复杂的神经元,输入门控制了信息的流入,输出门控制了信息的流出,那么看起来的memory单元是不必要的,但是在RNN中,必然采用权重W来控制流通的信息,在LSTM中,并没有使用权重,而只是采用简单的相加:

c t = c ( t − 1 ) + f ( x t ) F i c_t = c_(t-1) + f(x_t)F_i ct=c(t1)+f(xt)Fi

2、遗忘门

随着序列越来越长,时间步越来越大,前一步的memory会流入到下一步的memory,会使得后面的memory单元存储的数值越来越大。此时,有两种可能的后果:

  • 如果函数g也是一个带有挤压性质的激活函数,那么过大的值将会使得这个激活函数永远处于激活状态,失去了学习能力。

  • 如果函数g是ReLU类型的函数,值变得非常巨大时,会使得输出门失效,因为输出门的值再小,当它乘以一个庞大的值时,也会变的非常大。

无论是哪种情况,都在表明需要在memory单元中丢弃一些信息,LSTM的解决办法是在原本的单元中加入一个遗忘门(forget gate),它的作用是重参数化记忆单元,将记忆单元输入的信息乘以遗忘门的结果Ff,存入到记忆单元中作为信息。
在这里插入图片描述

  • 遗忘门(Forget Gate):遗忘门是一个额外的门控组件,其作用是对记忆单元中已存储的信息进行主动遗忘。当遗忘门开启(其激活值接近1),对应的记忆单元内容将被显著削弱甚至完全清除;当遗忘门关闭(激活值接近0),则相应信息得以保留。遗忘门通过参数化方式赋予模型选择性忘记特定信息的能力,从而在不直接修改权重矩阵的前提下,动态调整记忆单元内容。

整个流程就是,将当前时间步的数据乘以输入门的结果,同时前一步的记忆单元乘以遗忘门的结果,两者相加,一起乘以输出门的结果,得到下一层的输出,同时此时的记忆单元参与到下一时间步的运算。

LSTM通过以下原理克服了传统RNN在处理长期依赖时的局限性:

  • 细胞状态:提供一个不受梯度影响的直接信息传递路径,使长期记忆得以保持。
  • 门控机制:赋予模型选择性地保留、更新和输出信息的能力,解决了长期依赖中信息的精确管理和访问问题。
  • sigmoid与tanh:sigmoid激活函数用于生成门控信号,确保信息流的控制在逻辑意义上是连续且可微的;tanh函数则用于规范化候选信息和隐藏状态的值域。

这些原理共同作用,使得LSTM在处理时间序列数据时能有效地捕捉和利用长距离依赖关系,适用于自然语言处理、语音识别、音乐生成、时间序列预测等多种应用场景。

二、LSTM结构

在这里插入图片描述

1、细胞状态(Cell State)

细胞状态是LSTM的核心记忆组件,它沿着时间轴线性传递信息,类似于一条持续流动的信息传送带。细胞状态在每个时间步仅通过特定的线性变换(由门控机制控制)进行更新,这有助于防止梯度消失或爆炸问题,使得信息能在长时间跨度内得以有效保存。

2、门控机制

LSTM引入了门控机制来精确控制细胞状态的读取、写入和遗忘过程。这些门通过sigmoid激活函数(输出范围为(0, 1),表示概率值)来决定信息流的通过程度:

  • 遗忘门(Forget Gate):决定上一时刻细胞状态中的哪些信息应当被遗忘。遗忘门的输出值介于0和1之间,其中0表示完全遗忘,1表示完全保留。其计算公式为:

f t = σ ( W f ⋅ [ h t − 1 , x t ] + b f ) f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f) ft=σ(Wf[ht1,xt]+bf)

其中,(f_t)是遗忘门输出,(\sigma)是sigmoid函数,(W_f)和(b_f)是权重和偏置,[h_{t-1}, x_t]是上一时刻隐藏状态和当前时刻输入的拼接。

  • 输入门(Input Gate):决定当前时刻新输入信息哪些部分应被添加到细胞状态中。输入门包括两个子组件:

    • 输入门决定门:决定哪些新信息重要且应被写入细胞状态。
      i t = σ ( W i ⋅ [ h t − 1 , x t ] + b i ) i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i) it=σ(Wi[ht1,xt]+bi)
    • 输入门候选值:提供新的候选信息,这部分信息可能被添加到细胞状态。
      C ~ t = tanh ⁡ ( W C ⋅ [ h t − 1 , x t ] + b C ) \tilde{C}_t = \tanh(W_C \cdot [h_{t-1}, x_t] + b_C) C~t=tanh(WC[ht1,xt]+bC)
  • 输出门(Output Gate):决定当前时刻细胞状态中哪些信息应作为隐藏状态输出给后续层或用于最终预测。输出门的计算公式为:

o t = σ ( W o ⋅ [ h t − 1 , x t ] + b o ) o_t = \sigma(W_o \cdot [h_{t-1}, x_t] + b_o) ot=σ(Wo[ht1,xt]+bo)

三、细胞状态更新与隐藏状态计算

基于上述门控机制,LSTM更新细胞状态并计算当前时刻的隐藏状态:

  • 细胞状态更新:综合遗忘门和输入门的结果,更新细胞状态:

C t = f t ⊙ C t − 1 + i t ⊙ C ~ t C_t = f_t \odot C_{t-1} + i_t \odot \tilde{C}_t Ct=ftCt1+itC~t

其中,(\odot)表示元素-wise乘法,即对应位置的值相乘。遗忘门决定旧信息的留存比例,输入门决定新信息的添加比例。

  • 隐藏状态计算:通过输出门筛选细胞状态,生成当前时刻的隐藏状态:

h t = o t ⊙ tanh ⁡ ( C t ) h_t = o_t \odot \tanh(C_t) ht=ottanh(Ct)

输出门控制细胞状态中哪些信息应被暴露给模型的其余部分,(\tanh)函数将细胞状态压缩到(-1, 1)范围内,便于后续计算。

四、应用与变体

LSTM广泛应用于各种时间序列数据处理任务,如:

  • 自然语言处理(NLP):文本分类、情感分析、机器翻译、问答系统、命名实体识别、语音识别等。
  • 语音合成与识别:声学建模、语言建模。
  • 生物信息学:基因序列分析、蛋白质结构预测。
  • 时间序列预测:股票价格、电力负荷、气象预报等。
  • 音乐生成与视频理解

LSTM还有多种变体和扩展,如:

  • 门控循环单元(GRU, Gated Recurrent Unit):简化版LSTM,合并了遗忘门和输入门,没有明确的细胞状态。
  • 双向LSTM (Bi-LSTM):同时考虑序列的前后上下文信息。
  • 深度LSTM:堆叠多个LSTM层以增加模型复杂度和表示能力。
  • 注意力机制结合的LSTM:引入注意力机制,让模型在不同时间步上动态分配注意力权重。

五、LSTM的优势

LSTM相对于传统RNN的优势主要体现在:

  • 长期依赖处理:通过细胞状态和门控机制,LSTM能够在长序列中有效地捕获和利用远距离的依赖关系,解决了RNN的长期依赖问题。

  • 可控的记忆管理:遗忘门、输入门和输出门提供了对记忆内容的精细控制,允许模型根据任务需求选择性地保留、添加或忽略信息。

  • 稳定的学习过程:由于门控机制的存在,LSTM在训练时能够保持较为稳定的梯度流动,避免了梯度消失或爆炸问题,提高了训练效率和模型性能。

当然LSTM也有它的局限性:

  • 计算复杂度与资源消耗高

    • 计算复杂度:LSTM引入了遗忘门、输入门、输出门以及细胞状态等组件,每个门控单元内部都有非线性激活函数和矩阵乘法操作,这使得LSTM的计算复杂度显著高于传统的循环神经网络(RNN)。在处理大规模数据或构建深层网络时,这种复杂性会导致训练时间显著延长。
    • 资源消耗:由于LSTM结构复杂,包含的参数较多,对内存的需求较大,尤其在处理长序列数据时,内存占用可能成为瓶颈。同时,计算密集性可能导致对硬件(如GPU)的需求增加,特别是对于实时或大规模部署的应用,可能会受限于硬件资源。
  • 并行化效率低

    • 依赖性限制并行化:LSTM的递归性质决定了其在时间步间存在依赖关系,即当前时刻的输出不仅取决于当前输入,还与前一时刻的隐藏状态有关。这种时间上的顺序执行限制了并行计算的潜力,尤其是在硬件加速(如GPU)环境中,无法像卷积神经网络(CNN)那样高效利用并行计算资源。
    • 难于充分发挥现代硬件优势:现代计算设备如GPU和TPU擅长处理大量独立且并行的任务。然而,LSTM固有的序列处理特性使其难以充分利用这些硬件的并行化能力,从而影响模型训练和推理的速度。
  • 过拟合风险

    • 参数众多:LSTM由于其复杂的门控机制和细胞状态,通常包含大量参数。在数据量有限的情况下,过多的参数容易导致模型过度学习训练数据的细节,而忽视了数据背后的普遍规律,从而降低模型在未见过数据上的表现,即过拟合。
    • 需要大量数据和正则化手段:为了避免过拟合,LSTM通常需要大量的训练数据以及诸如 dropout、权重衰减、早停等正则化方法来约束模型复杂度,确保模型具有较好的泛化能力。
  • 解释性不足

    • 内部工作机制不透明:LSTM的决策过程涉及复杂的门控状态更新和信息流控制,这些内部机制对于人类观察者来说并不直观。理解特定决策背后的逻辑(例如为何模型在某个时间点选择遗忘某些信息或突出其他信息)往往非常困难,不利于模型调试、错误分析以及在需要可解释性决策的应用(如医疗、法律、金融等领域)中的接受度。
  • 初始化与超参数调整挑战

    • 敏感性:LSTM的性能高度依赖于初始参数设置和超参数的选择,如学习率、隐藏层大小、门控阈值等。这些参数的不当设置可能导致训练过程不稳定、收敛缓慢甚至无法收敛。
    • 专家经验要求:有效的LSTM训练往往需要丰富的领域知识和实践经验,以找到最优的模型架构和超参数组合,这增加了模型开发和优化的难度,特别是对初学者或缺乏深度学习经验的研究者来说。

针对上述缺陷,研究者不断探索改进LSTM的设计、提出新的变种(如GRU)或采用其他序列建模技术(如Transformer),以期在保持或增强建模能力的同时,减轻上述问题的影响。

总结来说,LSTM通过创新的细胞状态和门控机制,有效解决了RNN在处理长期依赖时遇到的问题,成为处理时间序列数据的强有力工具,在众多领域取得了显著效果,并启发了一系列变体和扩展模型的发展。

在这里插入图片描述

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

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

相关文章

jenkins(docker)安装及应用

jenkins Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解…

【InternLM】LMDeploy部署实践

1. LMDeploy基本介绍 LMDeploy提供一站式的大模型压缩、部署和服务,其主要特点包括: 高效的推理速度。通过引入持久批处理(即连续批处理)、阻塞 KV 缓存、动态拆分与融合、张量并行、高性能 CUDA 内核等关键特性,提供了比 vLLM 高1.8倍的请…

从零开始写一个RTSP服务器(三)RTP传输H.264

目录 一、RTP封装1.1 RTP数据结构1.2 源码 二、H.264的RTP打包2.1 H.264格式2.2 H.264的RTP打包方式2.3 H.264 RTP包的时间戳计算2.4 源码 三、H.264 RTP打包的sdp描述四、测试 本篇文章目标,使用vlc打开sdp文件后,可以观看到视频数据 一、RTP封装 1.1 …

实战:完美解决md图床问题-nginx图床-2024.4.16(测试成功)

目录 文章目录 目录1、前言图床简介搭建方式需求背景解决方案 2、配置过程1.部署nginx服务2.配置picgo3.配置rsync服务(可选) 3、测试验证关于我最后最后 1、前言 图床简介 对于写博客的朋友们来讲,图床这个东西一定不会陌生,而且在一定程度上也给大家…

MySQL8.0.20 下载与安装

一、下载 MySQL服务器下载安装: 官网社区版地址: https://downloads.mysql.com/archives/installer/ 二、安装 安装注意事项---成功秘诀 安装密码不要设置复杂了,千万要记住密码,比如root和mysql就很好;不要随意卸…

4.Spring AOP

4.1 Spring AOP的基本概念 4.1.1 AOP的概念 在业务处理代码中,通常都有日志记录、性能统计、安全控制、事务处理、异常处理等操作。尽管使用OOP可以通过封装或继承的方式达到代码的重用,但仍然存在同样的代码分散到各个方法中。因此,采用OO…

文件上传App,H5,小程序多端兼容

插件地址&#xff1a;https://ext.dcloud.net.cn/plugin?id5459 下载lsj-upload插件 代码如下 结构 <lsj-upload :option"option" :size"size" :formats"formats" :debug"debug":instantly"instantly" change"…

网络编程(现在不重要)

目录 网络编程三要素与InetAddress类的使用 软件架构 面临的主要问题 网络编程三要素&#xff08;对应三个问题&#xff09; InetAddress的使用 TCP与UDP协议剖析与TCP编程案例&#xff08;了解&#xff09; TCP协议 UDP协议 例子 UDP、URL网络编程 URL&#xff1a;&…

Android多线程:Handler runOnUiThread 异步消息处理机制

目录 一&#xff0c;Android中的多线程问题 1.模拟耗时工作 2.Android开启子线程 二&#xff0c;在子线程中更新UI 1.异步消息处理机制 Handler 2.使用runOnUiThread更新UI 一&#xff0c;Android中的多线程问题 Android用户界面是与用户交互的接口&#xff0c;对于用户的…

偏微分方程算法之混合边界差分

目录 一、研究对象 二、差分格式 2.1 向前欧拉格式 1. 中心差商 1.1.1 理论推导 1.1.2 算例实现 2. x0处向前差商&#xff0c;x1处向后差商 1.2.1 理论推导 1.2.2 算例实现 2.2 Crank-Nicolson格式 2.2.1 理论推导 2.2.2 算例实现 一、研究对象 这里我们以混合边界…

科技云报道:AI大模型疯长,存储扛住了吗?

科技云报道原创。 AI大模型正在倒逼数字基础设施产业加速升级。 过去一年半&#xff0c;AI大模型标志性的应用相继出现&#xff0c;从ChatGPT到Sora一次次刷新人们的认知。震撼的背后&#xff0c;是大模型参数指数级的增长。 这种数据暴涨的压力&#xff0c;快速传导到了大模…

Efficient Multimodal learning from data-centric perspective

[MLLM-小模型推荐-2024.3.18] Bunny 以数据的眼光看问题 - 知乎近期几天会梳理下多模态小模型相关的论文&#xff0c;做个汇总。为了能够每天更新点啥&#xff0c;先穿插一些小模型算法。等到全部算法都梳理完成后&#xff0c;再发布一篇最终汇总版本的。 3.15 号 BAAI 发布了 …

关于机器学习/深度学习的一些事-答知乎问(五)

嵌入学习方法在解决小样本学习问题时面临的挑战是什么&#xff1f; &#xff08;1&#xff09;过度依赖于辅助数据&#xff0c;预训练的模式违背了小样本学习的本质定义。几乎所有的嵌入学习方法都需要通过大量辅助样本来预训练特征嵌入函数&#xff0c;但在实际应用场景中&am…

葡萄书--图理论基础

图的定义 G{V,E} 节点和边的信息可以是类别型的&#xff0c;类别型数据的取值只能是哪一类别。一般称类别型的信息为标签。 节点和边的信息可以是数值型的&#xff0c;数值型数据的取值范围为实数。一般称数值型的信息为属性。 在图的计算任务中&#xff0c;我们认为&#x…

不消除存储瓶颈,AIGC就是梦幻泡影

大数据产业创新服务媒体 ——聚焦数据 改变商业 在大模型和AIGC的新纪元&#xff0c;我们正见证一个前所未有的技术革命。从更自然的人机对话&#xff0c;到图片、视频生成&#xff0c;AIGC技术正在彻底改变我们创造、学习和交流的方式。 然而&#xff0c;这一切进步的背后&am…

【数据结构|C语言版】顺序表应用

前言1. 基于动态顺序表实现通讯录1.1 通讯录功能1.2 代码实现1.2.1 SeqList.h1.2.2 SeqList.c1.2.3 Contact.h1.2.4 Contact.c1.2.5 test.c 1.3 控制台测试1.3.1 添加联系人1.3.2 删除联系人1.3.3 修改联系人1.3.4 查找联系人1.3.5 清空通讯录1.3.6 通讯录读档和存档 2. 好题测…

如何打开一个fbx模型

步骤 ① 下载fbx viewer &#xff0c;以下是管网链接 FBX Review | Cross-platform 3D model viewer | Autodesk ②需要用邮箱进行注册&#xff0b;确认&#xff0c;这一步完成之后 ③下载之后吧fbx文件导入到这个里面就可以了

NL2SQL进阶系列(4):ConvAI、DIN-SQL、C3-浙大、DAIL-SQL-阿里等16个业界开源应用实践详解[Text2SQL]

NL2SQL进阶系列(4)&#xff1a;ConvAI、DIN-SQL等16个业界开源应用实践详解[Text2SQL] NL2SQL基础系列(1)&#xff1a;业界顶尖排行榜、权威测评数据集及LLM大模型&#xff08;Spider vs BIRD&#xff09;全面对比优劣分析[Text2SQL、Text2DSL] NL2SQL基础系列(2)&#xff1a…

前端导出excel 接口处理和导出处理

如果按照一般的请求方式&#xff0c;接口会返回如下乱码 此时&#xff0c;接口其实已经请求成功了&#xff0c;只需要对乱码进行一下处理就行 1.请求方式处理 1.1 如果是直接使用axios进行请求 axios({method: get,url: url,params: params,//需要添加responseType: blob }…

采用分治法求含n个实数序列中的最大元素和次大元素(C语言)

目录 实验内容&#xff1a; 实验过程&#xff1a; 1.算法设计 2.程序清单 3.复杂度分析 4.运行结果 实验内容&#xff1a; 设计一个程序&#xff0c;采用分治法求含n个实数序列中的最大元素和次大元素&#xff0c;并分析算法的时间复杂度。 实验过程&#xff1a; 1.算法…