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

在这里插入图片描述

长短期记忆网络(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中对于不同时间步上的数据序列使用了同样的网络结构,只是将某个或者几个层存储起来用作下一时间步的输入,这个存储的结构就是记忆单元。取消权重参数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.mfbz.cn/a/544784.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

每日一VUE——组件的生命周期

文章目录 VUE组件的生命周期生命周期钩子函数实例创建Teleport VUE组件的生命周期 组件生命周期 组件从创建到挂载、更新、到销毁的一系列过程被称为组件的生命周期。 生命周期函数 在组件的各个生命周期节点执行的函数,为生命周期钩子函数。 生命周期钩子函数…

RT-thread信号量与互斥量

1,信号量 信号量是一种轻型的用于解决线程间同步问题的内核对象,线程可以获取或释放它,从而达到同步或互斥的目的。理解资源计数适合于线程间工作处理速度不匹配的场合;信号量在大于0时才能获取,在中断、线程中均可释放信号量。 为了体现使用信号量来达到线程间的同步,…

【STM32】西南交大嵌入式系统设计实验:环境配置

把走过的坑记录一下,希望后来人避坑 No ST-Link device detected.问题解决 如果跟着指导书出现这个问题: 直接跳过这一步不用再更新固件,后面直接创建项目写程序就行了。 在keil里配置成用DAP_link即可。 详细的可以看这篇文章&#xff1a…

NumPy基础及取值操作

文章目录 第1关:ndarray对象第2关:形状操作第3关:基础操作第4关:随机数生成第5关:索引与切片 第1关:ndarray对象 编程要求 根据提示,在右侧编辑器Begin-End中填充代码,根据测试用例…

Oracle 数据库 count的优化-避免全表扫描

Oracle 数据库 count的优化-避免全表扫描 select count(*) from t1; 这句话比较简单,但很有玄机!对这句话运行的理解,反映了你对数据库的理解深度! 建立实验的大表他t1 SQL> conn scott/tiger 已连接。 SQL> drop table …

Fiddler工具的操作和功能时-----定位到步骤图(助力抓包)

前言: 继续上一篇,已经对fiddler的安装、配置和代理的问题进行了讲解: Fiddle配置代理,保手机模拟器访问外部网络-CSDN博客 本章,讲对一些fiddler的操作进行一系列讲解!Fiddler作为一款网络调试工具&…

可视化大屏的应用(13):3D建模运用到机房运维中

可视化大屏在机房运维中发挥着重要的作用,主要体现在以下几个方面: 实时监控 通过可视化大屏,可以实时监控机房的各项指标和状态,如服务器的运行状态、网络流量、机房温度等。运维人员可以通过大屏快速获取关键信息,…

LazyVim开发vue2

neovim 0.5刚出来的时代,那时刚有lua插件我很狂热。每天沉迷于打造自己的IDE之中。写过一堆相关的博客,也录过一些视频教程。后来发现neovim的接口和插件更新的很快,导致配置文件要不定期的修改,才能保证新版本的插件的适配。我也…

程序员学CFA——数量分析方法(三)

数量分析方法(三) 概率论基础概率论的基本概念概率论的相关术语随机变量结果随机事件 事件之间的关系互斥事件遍历事件独立事件 概率的定义与确定方法概率的定义概率的确定方法赔率条件概率 概率的计算乘法法则与加法法则联合概率与乘法法则加法法则 全概…

LeetCode257:二叉树的所有路径

题目描述 给你一个二叉树的根节点 root &#xff0c;按 任意顺序 &#xff0c;返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 解题思想 利用了回溯 代码 class Solution { public:void traversal(TreeNode* node, vector<int> &path, vect…

哈希 | unordered_set + unordered_map 的模拟实现(上)

目录 什么是 unordered_set unordered_map &#xff1f; unordered_set &#xff1a; unordered_map &#xff1a; 哈希 哈希表&#xff1a; 哈希冲突&#xff1a; 如何解决哈希冲突&#xff1a; 闭散列&#xff1a; 负载因子&#xff1a; 闭散列的模拟实现&#xff…

html公众号页面实现点击按钮跳转到导航

实现效果&#xff1a; 点击导航自动跳转到&#xff1a; html页面代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>跳转导航</title><meta name"keywords" conten…

【学习笔记十五】批次管理和容量管理

一、批次管理 1.配置 SAP EWM 特定参数 激活仓库的批次管理 2.ERP端物料需要启用批次管理 3.EWM物料需要启用批次管理 一般是ERP启用批次管理&#xff0c;相关的配置也会传输到EWM系统 4.建立批次主数据 5.创建采购订单并创建内向交货单&#xff0c;维护批次 6.维护产品主数…

【Canvas技法】绘制正三角形、切角正三角形、圆角正三角形

【图例】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>绘制正三角形、切角正三角形、圆角正三角形</title><style …

计算机网络—传输层UDP协议:原理、应用

​ &#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;2月のセプテンバー 1:21━━━━━━️&#x1f49f;──────── 5:21 &#x1f504; ◀️ ⏸ ▶️ ☰ &am…

leetcode.45题:跳跃游戏II

Leetcode.45题&#xff1a;跳跃游戏II /* 题意的理解&#xff1a; nums[0] 只能跳 1 ~ nums[0]步 依次类推&#xff1a;从nums[0] - nums[n - 1] 最少需要多少步数 nums 2 3 1 1 4 nums[0] 2,初始只能跳 1/2步&#xff0c;如跳1步&#xff0c;达到nums[1] 而nums[1] 3,顾第二…

网络篇04 | 应用层 mqtt(物联网)

网络篇04 | 应用层 mqtt&#xff08;物联网&#xff09; 1. MQTT协议介绍1.1 MQTT简介1.2 MQTT协议设计规范1.3 MQTT协议主要特性 2 MQTT协议原理2.1 MQTT协议实现方式2.2 发布/订阅、主题、会话2.3 MQTT协议中的方法 3. MQTT协议数据包结构3.1 固定头&#xff08;Fixed header…

uboot操作指令2

文章目录 一、FAT 格式文件系统操作命令1.fatinfo 命令2.fatls 命令3.fstype 命令4.fatload命令-将EMMC数据复制到DRAM中4.fatwrite命令-将DRAM数据复制到EMMC中 二、Boot操作指令1.bootz2.boot命令 一、FAT 格式文件系统操作命令 &#x1f4a6; 有时候需要在 uboot 中对 SD 卡…

MYSQL08_页的概述、内部结构、文件头、文件尾、最大最小记录、页目录、区段表

文章目录 ①. 页的概述、大小②. 页的内部结构③. 第一部分 - 文件头④. 第一部分 - 文件尾⑤. 第二部分 - 空闲、用户记录、最大最小⑥. 第三部分 - 页目录⑦. 第三部分 - 页面头部⑧. 从数据页角度看B树⑨. 区、段和表、碎片区 ①. 页的概述、大小 ①. 数据库的存储结构&…
最新文章