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⋅[ht−1,xt]+bf)
- f t f_t ft:遗忘门的输出向量(维度与记忆单元相同)
- W f W_f Wf:遗忘门的权重矩阵
- h t − 1 , x t h_{t-1}, x_t ht−1,xt:将前一时刻的隐藏状态 h t − 1 h_{t-1} ht−1 和当前输入 x t x_t xt 进行拼接
- b f b_f bf:遗忘门的偏置向量
- σ \sigma σ:Sigmoid激活函数,输出在 ( 0 , 1 ) (0, 1) (0,1) 之间
2.2 输入门(Input Gate)
输入门决定当前输入的信息如何更新到记忆单元中,包括两个步骤:
- 候选记忆单元:通过 ( \tanh ) 激活函数生成候选记忆。
- 输入门:通过 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⋅[ht−1,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⋅[ht−1,xt]+bC)
- i t i_t it:输入门的输出范围 ( 0 − 1 ) ( 0-1 ) (0−1)
- 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 ) 是由以下两个部分组成的:
- 遗忘门决定丢弃多少旧记忆 C t − 1 C_{t-1} Ct−1。
- 输入门决定增加多少候选记忆 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=ft⊙Ct−1+it⊙C~t
- C t C_t Ct:当前时刻的记忆单元
- f t ⊙ C t − 1 f_t \odot C_{t-1} ft⊙Ct−1:保留的旧记忆
- i t ⊙ C ~ t i_t \odot \tilde{C}_t it⊙C~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⋅[ht−1,xt]+bo)
h t = o t ⊙ tanh ( C t ) h_t = o_t \odot \tanh(C_t) ht=ot⊙tanh(Ct)
- o t o_t ot:输出门的输出范围 ( 0 − 1 ) ( 0-1 ) (0−1)
- 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 的工作流程总结
- 输入当前时刻的数据 x t x_t xt和前一时刻的隐藏状态 h t − 1 h_{t-1} ht−1、记忆单元 C t − 1 C_{t-1} Ct−1。
- 遗忘门:决定丢弃多少旧记忆。
- 输入门:决定当前输入的信息如何加入记忆单元。
- 更新记忆单元 C t C_t Ct:根据遗忘门和输入门进行更新。
- 输出门:决定当前时刻的隐藏状态 h t h_t ht 输出多少信息。
- 传播到下一时刻: h t h_t ht和 C t C_t Ct被传递给下一时间步。
4. 解决梯度消失与爆炸问题
LSTM 解决了传统 RNN 的梯度消失问题,主要依靠 记忆单元 和 门控机制:
- 记忆单元 C t C_t Ct:通过逐元素加法(避免梯度多次相乘),使得记忆信息能够长期保存。
- 门控机制:通过遗忘门和输入门的动态调整,能够控制信息的流动,保留有用的信息,抑制无关的信息。
- 激活函数:在遗忘门、输入门和输出门中使用 Sigmoid 函数,保证输出在 ( 0 , 1 ) (0,1) (0,1) 之间,防止梯度爆炸。
5. LSTM 与标准 RNN 的对比
| 特点 | 标准RNN | LSTM |
|---|---|---|
| 结构 | 简单隐藏层 | 引入记忆单元与门控机制 |
| 梯度问题 | 容易梯度消失或爆炸 | 能有效缓解梯度消失/爆炸问题 |
| 长时依赖问题 | 无法捕捉长期依赖 | 能有效学习长时依赖 |
| 计算复杂度 | 低 | 相对较高 |
6. LSTM 的应用场景
- 自然语言处理(NLP):文本分类、语言建模、机器翻译等。
- 时间序列预测:股票价格、天气预测等。
- 语音识别:连续语音识别任务。
- 视频分析:视频帧之间的序列建模。
- 生成任务:文本生成、音乐生成等。
7. 小结
LSTM通过引入记忆单元和门控机制,解决了标准RNN在长时依赖任务中的梯度消失问题。其核心包括遗忘门、输入门和输出门,动态控制信息的流动与保留,从而实现高效的序列建模。
如果你喜欢这篇文章,请点赞、评论和收藏!😊
相关文章:
LSTM长短期记忆网络
LSTM(长短期记忆网络)数学原理 LSTM(Long Short-Term Memory)是一种特殊的递归神经网络(RNN),解决了标准RNN中存在的梯度消失(Vanishing Gradient) 和**梯度爆炸&#x…...
基于前端技术UniApp和后端技术Node.js的电影购票系统
文章目录 摘要Abstruct第一章 绪论1.1 研究背景与意义1.2 国内外研究现状 第二章 需求分析2.1 功能需求分析2.2 非功能性需求分析 第二章系统设计3.1 系统架构设计3.1.1 总体架构3.1.2 技术选型 3.2 功能架构 第四章 系统实现4.1 用户端系统实现4.1.1 用户认证模块实现4.1.2 电…...
数据结构与算法:稀疏数组
前言 此文以整型元素的二维数组为例,阐述稀疏数组的思想。其他类型或许有更适合压缩算法或者其他结构的稀疏数组,此文暂不扩展。 稀疏数组的定义 在一个二维数据数组里,由于大量的元素的值为同一个值,比如 0或者其他已知的默认值…...
Meta重磅发布Llama 3.3 70B:开源AI模型的新里程碑
在人工智能领域,Meta的最新动作再次引起了全球的关注。今天,我们见证了Meta发布的Llama 3.3 70B模型,这是一个开源的人工智能模型,它不仅令人印象深刻,而且在性能上达到了一个新的高度。 一,技术突破&#…...
VSCode中的Black Formatter没有生效的解决办法
说明 如果正常按照配置进行的话,理论上是可以生效的。 "[python]": {"editor.defaultFormatter": "ms-python.black-formatter","editor.formatOnSave": true }但我在一种情况下发现不能生效,应为其本身的bug…...
【潜意识Java】蓝桥杯算法有关的动态规划求解背包问题
目录 背包问题简介 问题描述 输入: 输出: 动态规划解法 动态规划状态转移 代码实现 代码解释 动态规划的时间复杂度 例子解析 输出: 总结 作者我蓝桥杯:2023第十四届蓝桥杯国赛C/C大学B组一等奖,所以请听我…...
Odoo:免费开源ERP的AI技术赋能出海企业电子商务应用介绍
概述 伴随电子商务的持续演进,客户对于便利性、速度以及个性化服务的期许急剧攀升。企业务必要探寻创新之途径,以强化自身运营,并优化购物体验。达成此目标的最为行之有效的方式之一,便是将 AI 呼叫助手融入您的电子商务平台。我们…...
微信小程序苹果手机自带的数字键盘老是弹出收起,影响用户体验,100%解决
文章目录 1、index.wxml2、index.js3、index.wxss1、index.wxml <!--index.wxml--> <view class="container"><view class="code-input-container"><view class="code-input-boxes"><!-- <block wx:for="{{…...
sql中case when若条件重复 执行的顺序
sql case when若条件重复 执行的顺序 在 SQL 中,如果你在 CASE 表达式中定义了多个 WHEN 子句,并且这些条件有重叠,那么 CASE 表达式的执行顺序遵循以下规则: (1)从上到下:SQL 引擎会按照 CASE …...
压力测试Jmeter简介
前提条件:要安装JDK 若不需要了解,请直接定位到左侧目录的安装环节。 1.引言 在现代软件开发中,性能和稳定性是衡量系统质量的重要指标。为了确保应用程序在高负载情况下仍能正常运行,压力测试变得尤为重要。Apache JMeter 是一…...
cesium 与 threejs 对比
Cesium 和 Three.js 都是用于在 Web 浏览器中创建和渲染 3D 图形的强大 JavaScript 库,但它们有显著的不同之处,主要体现在应用领域、功能集和使用场景上。 以下是两者之间的对比: 1. 应用场景 Three.js: 适用于广泛的 3D 图形应用ÿ…...
探索QScreen的信号与槽:动态响应屏幕变化
在处理屏幕显示和多显示器环境时,QScreen 提供了一些特有的信号,这些信号可以在屏幕的变化时通知应用程序,帮助我们动态地适配和响应显示设备的变化。今天,我们将深入探讨如何使用 QScreen 的信号与槽,并展示适用的使用…...
vLLM项目加入PyTorch生态系统,引领LLM推理新纪元
近日,vLLM项目宣布正式成为PyTorch生态系统的一部分,标志着该项目与PyTorch的合作进入了一个全新的阶段。本文将从以下几个方面进行介绍,特别提醒:安装方案在第四个部分,可选择性阅读。 vLLM项目概述 vLLM的成就与实际…...
索引-介绍结构语法
一.概述: 1.当给某个字段创建索引后,就会把字段生成二叉排序树进行查找,大大增加了查找效率,比不创建索引时用的全表扫描好得多。 2.二叉排序树:小的在左边,大的在右边(查找和存放都遵循这个原则)。 3.注…...
SpringBoot整合JDBC
讲到这里,基本上我们就可以使用SpringBoot来开发Web项目视图显示和业务逻辑代码,但是要做一个完成案例,我们还差一点点,就是怎么访问数据库,获取数据,接下来我们就看怎么用SpringBoot整合我们前面已经讲过的…...
XXE靶场
XXE-lab 靶场 靶场网址:http://172.16.0.87/ 第一步我们看到网站有登录框我们试着用 bp 去抓一下包 将抓到的包发到重放器中 然后我们构建palody <!DOCTYPE foo [ <!ENTITY xxe SYSTEM "php://filter/readconvert.base64-encode/resourceC:/flag/fla…...
Elasticsearch:使用 Open Crawler 和 semantic text 进行语义搜索
作者:来自 Elastic Jeff Vestal 了解如何使用开放爬虫与 semantic text 字段结合来轻松抓取网站并使其可进行语义搜索。 Elastic Open Crawler 演练 我们在这里要做什么? Elastic Open Crawler 是 Elastic 托管爬虫的后继者。 Semantic text 是 Elasti…...
Facebook的隐私保护政策:用户数据如何在平台上被管理?
在当今数字化世界,社交平台如何管理用户数据并保护隐私成为了一个热点话题。作为全球最大的社交网络,Facebook(现Meta)在数据隐私方面的政策备受关注。本文将简要介绍Facebook的隐私保护措施,以及用户数据如何在平台上…...
【ETCD】【源码阅读】深入解析 EtcdServer.applySnapshot方法
今天我们来一步步分析ETCD中applySnapshot函数 一、函数完整代码 函数的完整代码如下: func (s *EtcdServer) applySnapshot(ep *etcdProgress, apply *apply) {if raft.IsEmptySnap(apply.snapshot) {return}applySnapshotInProgress.Inc()lg : s.Logger()lg.In…...
HBase是什么,HBase介绍
官方网站:Apache HBase – Apache HBase Home HBase是一个分布式的、面向列的NoSQL数据库,主要用于存储和处理海量数据。它起源于Google的BigTable论文,是Apache Hadoop项目的子项目。HBase设计用于高可靠性、高性能和可伸…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...
