LSTM长短期记忆网络

LSTM(长短期记忆网络)数学原理

LSTM(Long Short-Term Memory)是一种特殊的递归神经网络(RNN),解决了标准RNN中存在的梯度消失(Vanishing Gradient) 和**梯度爆炸(Exploding Gradient)**问题。它由 Hochreiter 和 Schmidhuber 在1997年提出,广泛应用于处理序列数据,如自然语言处理、时间序列预测等。


1. LSTM 的基本结构

LSTM的核心是引入了一个记忆单元(Memory Cell)和三个主要的门控机制,分别是:

  • 遗忘门(Forget Gate):决定是否丢弃之前的记忆。
  • 输入门(Input Gate):决定当前输入的信息是否加入记忆单元。
  • 输出门(Output Gate):决定从记忆单元输出多少信息到下一时刻的隐藏状态。

通过这些门控机制,LSTM能够选择性地保留重要的信息,抑制不重要的信息,进而解决长期依赖问题。


2. 数学原理与公式

在时间步 t t t,LSTM 主要包含以下数学操作:

2.1 遗忘门(Forget Gate)

遗忘门决定记忆单元中哪些信息需要被保留,哪些信息需要被丢弃。它通过Sigmoid激活函数实现,输出范围在 ( [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 f_t ft:遗忘门的输出向量(维度与记忆单元相同)
  • W f W_f Wf:遗忘门的权重矩阵
  • h t − 1 , x t h_{t-1}, x_t ht1,xt:将前一时刻的隐藏状态 h t − 1 h_{t-1} ht1 和当前输入 x t x_t xt 进行拼接
  • b f b_f bf:遗忘门的偏置向量
  • σ \sigma σ:Sigmoid激活函数,输出在 ( 0 , 1 ) (0, 1) (0,1) 之间

2.2 输入门(Input Gate)

输入门决定当前输入的信息如何更新到记忆单元中,包括两个步骤:

  1. 候选记忆单元:通过 ( \tanh ) 激活函数生成候选记忆。
  2. 输入门:通过 Sigmoid 决定候选记忆是否加入当前的记忆单元。

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)

  • i t i_t it:输入门的输出范围 ( 0 − 1 ) ( 0-1 ) (01)
  • C ~ t \tilde{C}_t C~t:候选记忆单元
  • W i , W C W_i, W_C Wi,WC:输入门和候选记忆的权重矩阵
  • b i , b C b_i, b_C bi,bC:偏置向量

2.3 更新记忆单元

当前时刻的记忆单元 ( C_t ) 是由以下两个部分组成的:

  1. 遗忘门决定丢弃多少旧记忆 C t − 1 C_{t-1} Ct1
  2. 输入门决定增加多少候选记忆 C ~ t \tilde{C}_t C~t

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

  • C t C_t Ct:当前时刻的记忆单元
  • f t ⊙ C t − 1 f_t \odot C_{t-1} ftCt1:保留的旧记忆
  • i t ⊙ C ~ t i_t \odot \tilde{C}_t itC~t:添加的候选记忆
  • ⊙ \odot :逐元素乘法(Hadamard积)

2.4 输出门(Output Gate)

输出门决定从记忆单元中输出多少信息,并通过 ( \tanh ) 激活函数进一步处理:

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)
h t = o t ⊙ tanh ⁡ ( C t ) h_t = o_t \odot \tanh(C_t) ht=ottanh(Ct)

  • o t o_t ot:输出门的输出范围 ( 0 − 1 ) ( 0-1 ) (01)
  • h t h_t ht:当前时刻的隐藏状态,也是LSTM的输出
  • W o W_o Wo:输出门的权重矩阵
  • b o b_o bo:输出门的偏置向量
  • tanh ⁡ ( C t ) \tanh(C_t) tanh(Ct):将记忆单元中的信息压缩到 [ − 1 , 1 ] [-1,1] [1,1]

3. LSTM 的工作流程总结

  1. 输入当前时刻的数据 x t x_t xt和前一时刻的隐藏状态 h t − 1 h_{t-1} ht1、记忆单元 C t − 1 C_{t-1} Ct1
  2. 遗忘门:决定丢弃多少旧记忆。
  3. 输入门:决定当前输入的信息如何加入记忆单元。
  4. 更新记忆单元 C t C_t Ct:根据遗忘门和输入门进行更新。
  5. 输出门:决定当前时刻的隐藏状态 h t h_t ht 输出多少信息。
  6. 传播到下一时刻 h t h_t ht C t C_t Ct被传递给下一时间步。

4. 解决梯度消失与爆炸问题

LSTM 解决了传统 RNN 的梯度消失问题,主要依靠 记忆单元门控机制

  1. 记忆单元 C t C_t Ct:通过逐元素加法(避免梯度多次相乘),使得记忆信息能够长期保存。
  2. 门控机制:通过遗忘门和输入门的动态调整,能够控制信息的流动,保留有用的信息,抑制无关的信息。
  3. 激活函数:在遗忘门、输入门和输出门中使用 Sigmoid 函数,保证输出在 ( 0 , 1 ) (0,1) (0,1) 之间,防止梯度爆炸。

5. LSTM 与标准 RNN 的对比

特点标准RNNLSTM
结构简单隐藏层引入记忆单元与门控机制
梯度问题容易梯度消失或爆炸能有效缓解梯度消失/爆炸问题
长时依赖问题无法捕捉长期依赖能有效学习长时依赖
计算复杂度相对较高

6. LSTM 的应用场景

  1. 自然语言处理(NLP):文本分类、语言建模、机器翻译等。
  2. 时间序列预测:股票价格、天气预测等。
  3. 语音识别:连续语音识别任务。
  4. 视频分析:视频帧之间的序列建模。
  5. 生成任务:文本生成、音乐生成等。

7. 小结

LSTM通过引入记忆单元门控机制,解决了标准RNN在长时依赖任务中的梯度消失问题。其核心包括遗忘门输入门输出门,动态控制信息的流动与保留,从而实现高效的序列建模。


如果你喜欢这篇文章,请点赞、评论和收藏!😊

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用前端html如何实现2024烟花效果

用HTML、CSS和JavaScript编写的网页&#xff0c;主要用于展示“2024新年快乐&#xff01;”的文字形式烟花效果。下面是对代码主要部分的分析&#xff1a; HTML结构 包含三个<canvas>元素&#xff0c;用于绘制动画。引入百度统计的脚本。 CSS样式 设置body的背景为黑…

makefile文件

简介&#xff1a; 自动化编译&#xff1a;只需要一个make命令&#xff0c;整个工程自动编译 提高编译效率&#xff1a;再次编译时&#xff0c;只编译修改的文件&#xff08;查看时间戳&#xff0c;根据修改文件的时间判断文件是否被修改&#xff09; 基本语法&#xff1a; …

ArKTS基础组件

一.AlphabetIndexer 可以与容器组件联动用于按逻辑结构快速定位容器显示区域的组件。 子组件 color:设置文字颜色。 参数名类型必填说明valueResourceColor是 文字颜色。 默认值&#xff1a;0x99182431。 selectedColor:设置选中项文字颜色。 参数名类型必填说明valueRes…

微积分复习笔记 Calculus Volume 2 - 4.3 Separable Equations

4.3 Separable Equations - Calculus Volume 2 | OpenStax

【爬虫一】python爬虫基础合集一

【爬虫一】python爬虫基础合集一 1. 网络请求了解1.1. 请求的类型1.2. 网络请求协议1.3. 网络请求过程简单图解1.4. 网络请求Headers(其中的关键字释义)&#xff1a;请求头、响应头 2. 网络爬虫的基本工作节点2.1. 了解简单网络请求获取响应数据的过程所涉及要点 1. 网络请求了…

WPF DataTemplate 数据模板

DataTemplate 顾名思义&#xff0c;数据模板&#xff0c;在 wpf 中使用非常频繁。 它一般用在带有 DataTemplate 依赖属性的控件中&#xff0c;如 ContentControl、集合控件 ListBox、ItemsControl 、TabControls 等。 1. 非集合控件中使用 <UserControl.Resources>&l…

LM芯片学习

1、LM7805稳压器 https://zhuanlan.zhihu.com/p/626577102?utm_campaignshareopn&utm_mediumsocial&utm_psn1852815231102873600&utm_sourcewechat_sessionhttps://zhuanlan.zhihu.com/p/626577102?utm_campaignshareopn&utm_mediumsocial&utm_psn18528…

OCR多模态大模型:视觉模型与LLM的结合之路

原文&#xff1a;https://zhuanlan.zhihu.com/p/7783443583 在使用多模态大模型(Visual Language Model, VLM)做视觉信息抽取时&#xff0c;常常出现错字的问题。为了解决这一问题&#xff0c;本文提出了一种名为Guidance OCR的方法。该方法在不额外训练模型的情况下&#xff…

【C++游记】string的使用和模拟实现

枫の个人主页 你不能改变过去&#xff0c;但你可以改变未来 算法/C/数据结构/C Hello&#xff0c;这里是小枫。C语言与数据结构和算法初阶两个板块都更新完毕&#xff0c;我们继续来学习C的内容呀。C是接近底层有比较经典的语言&#xff0c;因此学习起来注定枯燥无味&#xf…

飞牛 fnos 上用docker部署一款网页端办公系统

描述 一款高效的内网办公操作系统&#xff0c;内含word/excel/ppt/pdf/内网聊天/白板/思维导图等多个办公系统工具&#xff0c;支持原生文件存储。平台界面精仿windows风格&#xff0c;操作简便&#xff0c;同时保持低资源消耗和高性能运行。无需注册即可自动连接内网用户&…

【网络安全】网站常见安全漏洞—服务端漏洞介绍

文章目录 网站常见安全漏洞—服务端漏洞介绍引言1. 第三方组件漏洞什么是第三方组件漏洞&#xff1f;如何防范&#xff1f; 2. SQL 注入什么是SQL注入&#xff1f;如何防范&#xff1f; 3. 命令执行漏洞什么是命令执行漏洞&#xff1f;如何防范&#xff1f; 4. 越权漏洞什么是越…

单元测试-Unittest框架实践

文章目录 1.Unittest简介1.1 自动化测试用例编写步骤1.2 相关概念1.3 用例编写规则1.4 断言方法 2.示例2.1 业务代码2.2 编写测试用例2.3 生成报告2.3.1 方法12.3.2 方法2 1.Unittest简介 Unittest是Python自带的单元测试框架&#xff0c;适用于&#xff1a;单元测试、Web自动…

C++动态规划解决最长公共子序列

动规非常经典的一道题目&#xff0c;由于需要用到二维数组——姑且算为中等难度的题目&#xff0c;其实和01背包有着极高的相似度&#xff0c;无论是实现还是理论。 今天这篇博客不讲过多的DP理论&#xff0c;重在讲解题目本身。其实有一定经验的同志都清楚&#xff0c;DP的难点…

学习日志024--opencv中处理轮廓的函数

目录 前言​​​​​​​ 一、 梯度处理的sobel算子函数 功能 参数 返回值 代码演示 二、梯度处理拉普拉斯算子 功能 参数 返回值 代码演示 三、Canny算子 功能 参数 返回值 代码演示 四、findContours函数与drawContours函数 功能 参数 返回值 代码演示 …

《Modern CMake for C++》学习笔记

学习 Modern CMake for C - Second Edition 时的学习笔记&#xff0c;供大家参考。 相关资源&#xff1a; 原书链接&#xff1a; Modern CMake for C: Effortlessly build cutting-edge C code and deliver high-quality solutions , Second Edition 中文翻译链接&#xff1a…

实战 | 某院校小程序记录

更多大厂面试经验的视频分享看主页和专栏 目录&#xff1a; 前言&#xff1a; 渗透思路 1.绕过前端 2.信息泄露 3.爆破用户账号密码 4.信息泄露2 结束 前言&#xff1a; 遇到一个学校小程序的站点&#xff0c;只在前端登录口做了校验&#xff0c;后端没有任何校验&#x…

Visual studio的AI插件-通义灵码

通义灵码 TONGYI Lingma 兼容 Visual Studio、Visual Studio Code、JetBrains IDEs 等主流 IDE&#xff1b;支持 Java、Python、Go、C/C、C#、JavaScript、TypeScript、PHP、Ruby、Rust、Scala 等主流编程语言。 安装 打开扩展管理器&#xff0c;搜送“TONGYI Lingma”&…

【泛微系统】HR同步功能实例讲解

HR同步功能实例讲解\ 前言 HR同步是指ecology与专业的人事管理软件进行数据同步的功能,ecology中的组织结构和人员信息将完全取自HR软件。 官方HR同步功能解释 实例背景 客户本身有外购EHR系统用于员工的入转调离的基础信息管理,现又外购泛微的OA系统用于企业信息协同办…

【测试】Pytest

建议关注、收藏&#xff01; 目录 功能pytest 自动化测试工具。 功能 单元测试&#xff1a;用于验证代码的最小功能单元&#xff08;如函数、方法&#xff09;的正确性。 简单的语法&#xff1a;不需要继承特定类或使用复杂的结构。断言语句简化。 自动发现测试&#xff1a;P…

实验12 socket网络编程

设计程序 1&#xff0e;阅读TCP、UDP数据通信的例子8-2、8-7&#xff0c;理解并运行查看其功能。 2. 编写程序&#xff0c;使用socket网络接口函数&#xff0c;实现同一网段的两台主机的聊天。注&#xff1a;使用多线程&#xff0c;实现实时聊天功能。&#xff08;使用UDP或TCP…