程序员学长 | 快速学会一个算法,xLSTM

news2025/4/7 15:16:39

本文来源公众号“程序员学长”,仅用于学术分享,侵权删,干货满满。

原文链接:快速学会一个算法,xLSTM

今天给大家分享一个超强的算法模型,xLSTM。

xLSTM(Extended Long Short-Term Memory)是对传统 LSTM(Long Short-Term Memory)模型的扩展和改进,旨在提升其在处理时间序列数据和序列预测任务中的性能。

传统的 LSTM 模型通过引入遗忘门、输入门和输出门,解决了标准 RNN(Recurrent Neural Network)在长序列数据中存在的梯度消失和梯度爆炸问题。然而,LSTM 仍然存在一些局限性,尤其是在处理非常长的序列或需要更高维度特征提取时。xLSTM 的提出是为了克服这些限制。

xLSTM 中的核心增强功能

具体改进包括如下几个方面。

  1. 指数门控

    xLSTM 论文中引入的指数门控机制是对 LSTM 中使用的传统 S 形门控的重大改进。通过对输入门和遗忘门采用指数激活,xLSTM 增强了模型在处理新信息时有效修改和更新其记忆的能力。

    在传统的 LSTM 中,S 型门控函数限制了模型对记忆单元状态进行重大改变的能力,尤其是当函数值接近 0 或 1 时。这种限制阻碍了 LSTM 快速适应新数据的能力,并可能导致内存更新不理想。

    xLSTM 通过将 S 型激活替换为指数激活来解决此问题。指数门控允许记忆细胞状态发生更明显的变化,使模型能够快速整合新信息并相应地调整其记忆。规范化器状态有助于稳定指数门控并保持输入门和遗忘门之间的平衡。

  2. 先进的内存结构

    xLSTM 采用了 sLSTM 和 mLSTM 等先进的内存设计,它们分别使用了新的混合技术和基于矩阵的内存。这些结构允许更好的并行处理能力和更高效的数据存储和检索,这对于处理大规模数据至关重要。

  3. 残差连接

    通过在 LSTM 单元内集成残差块,xLSTM 可以维持甚至增强整个网络的梯度流,这对于有效训练更深层的模型至关重要。

  4. 可并行架构

    xLSTM 论文中最重要的进步之一是引入了可并行化的架构,这解决了传统 LSTM 的一个主要限制。

    在传统的 LSTM 中,标记的处理是按顺序进行的,每个标记一次处理一个,这限制了模型利用并行性的能力,并导致训练和推理时间变慢。

    xLSTM 架构引入了 mLSTM(矩阵内存 LSTM)和 sLSTM(标量 LSTM)块的灵活组合,从而实现了对 token 的并行处理。mLSTM 块旨在同时对整个 token 序列进行操作,从而实现与 Transformer 模型实现的并行性类似的高效并行计算。

    mLSTM 模块利用了前面讨论过的矩阵内存机制,使其能够并行捕获和处理所有 token 中丰富的高维信息。这种并行处理能力显著加快了训练和推理过程,使得 xLSTM 比传统 LSTM 具有更高的计算效率。

    另一方面,sLSTM 块保留了传统 LSTM 的顺序处理特性,使模型能够捕获对特定任务可能很重要的某些顺序依赖关系。

    在 xLSTM 架构中,可以灵活地以不同的比例组合 mLSTM 和 sLSTM 块,从而在并行性和顺序建模之间取得平衡,从而能够适应各种语言建模任务。

关于 xLSTM 更详细的说明,请参考对应的论文

https://arxiv.org/pdf/2405.04517

LSTM 基础知识

为了解释 xLSTM,我们首先简单回顾一下 LSTM。

原始 LSTM 的计算涉及几个关键组件:输入门、遗忘门、输出门和单元状态。

以下是 LSTM 单元的标准计算步骤。

xLSTM 解释

之所以被称为 xLSTM,是因为它将原始 LSTM 扩展为 LSTM 的多种变体,例如 sLSTM 和 mLSTM,每种变体都针对特定的性能和功能进行了优化,以处理各种复杂的序列数据问题。

1.sLSTM

sLSTM 在 LSTM 的基础上添加了标量更新机制。该设计通过对内部存储单元进行细粒度控制来优化门控机制,使其更适合处理具有细微时间变化的序列。

sLSTM 通常利用指数门控和归一化技术来提高处理长序列数据的稳定性和准确性。通过这种方法,sLSTM 能够提供与更复杂模型相当的性能,同时保持较低的计算复杂度,使其特别适合资源受限的环境或需要快速响应的应用程序。

2.mLSTM

mLSTM(矩阵 LSTM)通过将原始 LSTM 中的向量运算扩展为矩阵运算,显著增强了模型的内存容量和并行处理能力。

在 mLSTM 中,每个状态不再是单个向量,而是一个矩阵。这使得它能够在单个时间步内捕获更复杂的数据关系和模式。mLSTM 特别适合处理大规模数据集或需要识别高度复杂数据模式的任务。

将矩阵引入状态表示使得 mLSTM 能够更自然、更有效地处理多维数据。通过以矩阵形式处理数据,mLSTM 可以同时处理多个数据点,从而提高吞吐量和学习过程的速度。这种能力在图像和视频处理等领域尤其有价值,因为这些领域的数据本质上以矩阵形式存在。

效率与性能分析

xLSTM 论文对所提架构的效率和性能进行了全面分析,突出了其相对于基于 Transformer 的模型的优势。作者进行了一系列实验和比较,以证明 xLSTM 卓越的计算效率和建模能力。

xLSTM 的一个关键效率优势在于其时间和内存复杂度。传统的基于 Transformer 的模型相对于序列长度 N 表现出 O(N²) 的二次方时间和内存复杂度。这意味着随着序列长度的增加,Transformer 的计算成本和内存需求呈二次方增长,使其处理长序列的效率较低。

相比之下,xLSTM 实现了线性时间复杂度 O(N) 和恒定内存复杂度 O(1)(相对于序列长度)。这比 Transformers 有了显著的改进,因为它允许 xLSTM 更有效地处理更长的序列,而无需二次方增加计算成本和内存使用量。线性时间复杂度可以缩短训练和推理时间,而恒定内存复杂度确保即使对于长序列,内存需求仍然是可控的。

为了验证效率和性能声明,作者通过在包含 150 亿个 token 的大规模数据集上训练多个模型进行了比较评估。评估中包括的模型是基于 Transformer 的语言模型 (LLM)、RWKV 模型和 xLSTM 的不同变体。

评估结果为 xLSTM 的卓越性能提供了有力证据。特别是,由一个 mLSTM 块和零个 sLSTM 块组成的 xLSTM[1:0] 变体在所有测试模型中实现了最低的困惑度。困惑度是语言建模中广泛使用的指标,用于衡量模型预测序列中下一个标记的能力。困惑度越低,语言建模性能越好。

下面是 xLSTM 的开源实现链接

https://github.com/muditbhargava66/PyxLSTM

感兴趣的小伙伴可以尝试一下。

THE END !

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

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

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

相关文章

AI大模型的智能心脏:向量数据库的崛起

在人工智能的飞速发展中,一个关键技术正悄然成为AI大模型的智能心脏——向量数据库。它不仅是数据存储和管理的革命性工具,更是AI技术突破的核心。随着AI大模型在各个领域的广泛应用,向量数据库的重要性日益凸显。 01 技术突破:向…

水箱高低水位浮球液位开关工作原理

工作原理 水箱高低水位浮球液位开关是一种利用浮球随液位升降来实现液位控制的设备。其基本原理是浮球在液体的浮力作用下上下浮动,通过磁性作用驱动与之相连的磁簧开关的开合,从而实现液位的高低控制和报警。当液位升高时,浮球上浮&#xf…

Jmeter实现接口自动化

自动化测试理论知识 什么是自动化测试? 让程序或工具代替人为执行测试用例什么样的项目适合做自动化? 1、项目周期长 --多长算长?(自己公司运营项目) 2、需求稳定(更多具体功能/模块) 3、需要…

LabVIEW机器视觉系统中的图像畸变、校准和矫正

在机器视觉应用中,图像畸变、校准和矫正是确保图像准确性的关键步骤。LabVIEW作为一种强大的图像处理和分析工具,提供了一系列功能来处理这些问题。以下是对图像畸变、校准和矫正的详细介绍。 图像畸变 图像畸变 是指由于摄像镜头的光学特性或拍摄角度问…

昇思25天学习打卡营第3天|MindSpore张量

# 打卡 目录 # 打卡 类 涉及知识点 1. 创建张量的4种方式 运行例子 2. 张量属性和索引 运行例子 3. 张量运算 运行例子 4. Tensor 与 Numpy 转换 5. 稀疏张量:CSR和COO CSRTensor 运行例子 COOTensor 运行例子 RowTensor 类 import mindspore from…

CMD命令详细介绍 | 超详细版本!

文章目录 启动cmd命令用户启动使用管理员的账号启动 文件夹命令网络命令其他常用命令介绍常用快捷方式程序员相关命令 本文参考了博客园一篇帖子,ULR:cmd常用命令介绍(可收藏) - Mrwhite86 - 博客园 (cnblogs.com) CMD是Windows操作系统自带的命令行解释…

【Linux】打包命令——tar

打包和压缩 虽然打包和压缩都涉及将多个文件组合成单个实体,但它们之间存在重要差异。 打包和压缩的区别: 打包是将多个文件或目录组合在一起,但不对其进行压缩。这意味着打包后的文件大小可能与原始文件相同或更大。此外,打包…

【工具分享】Gophish

文章目录 Gophish安装方式功能简介 Gophish Gophish 是一个开源的网络钓鱼框架,它被设计用于模拟真实世界的钓鱼攻击,以帮助企业和渗透测试人员测试和评估他们的网络钓鱼风险。Gophish 旨在使行业级的网络钓鱼培训对每个人都是可获取的,它易…

文件存储的方法一

文章目录 概念介绍实现方法示例代码 我们在上一章回中介绍了"如何实现本地存储"相关的内容,本章回中将介绍如何实现文件存储.闲话休提,让我们一起Talk Flutter吧。 概念介绍 我们在上一章回中介绍的本地存储只能存储dart语言中基本类型的数值…

鲨疯了,免费的Viva又能画图,又能做视频,又能......

theme: smartblue 点赞 关注 收藏 学会了 本文简介 众所周知,Midjourney擅长画画,Runway擅长做视频(Sora也说它可以做)。 Viva:我不是针对你,我只想说在座的各位都是乐色~ 注意,它叫Viva,不是…

Java引用的4种类型:强、软、弱、虚

在Java中,引用的概念不仅限于强引用,还包括软引用、弱引用和虚引用(也称为幻影引用)。这些引用类型主要用于不同的内存管理策略,尤其是在垃圾收集过程中。以下是对这四种引用类型的详细解释: 1. 强引用&am…

GD32实战篇-双向数控BUCK-BOOST-BUCK降压理论基础

本文章基于兆易创新GD32 MCU所提供的2.2.4版本库函数开发 向上代码兼容GD32F450ZGT6中使用 后续项目主要在下面该专栏中发布: https://blog.csdn.net/qq_62316532/category_12608431.html?spm1001.2014.3001.5482 感兴趣的点个关注收藏一下吧! 电机驱动开发可以跳转…

论文解析——FTRANS: Energy-Efficient Acceleration of Transformers using FPGA

作者及发刊详情 Li B , Pandey S , Fang H ,et al.FTRANS: energy-efficient acceleration of transformers using FPGA[J].ACM, 2020.DOI:10.1145/3370748.3406567. 摘要 正文 主要工作贡献 与CPU和GPU在执行Transformer和RoBERTa相比,提出的FTRANS框架获得了…

计算云服务2

第二章 裸金属服务器 什么是裸金属服务器(BMS) 裸金属服务器(Bare Metal Server,BMS)是一款兼具虚拟机弹性和物理机性能的计算类服务为用户以及相关企业提供专属的云上物理服务器,为核心数据库、关键应用系统、高性能计算、大数据等业务提供卓越的计算…

买的Google账号登录,修改辅助邮箱收不到验证码?可能是个简单的错误

这篇文章分享一个案例,购买了谷歌账号以后如何修改辅助邮箱,修改辅助邮箱的一些要点,以及常见的一个错误。 一、案例回放 这个朋友昨天在我的一个视频下面留言说买了谷歌账号以后,想修改辅助邮箱地址,但是输入了辅助…

µCOS-III 任务同步机制-任务信号量

1. 什么是任务信号量 任务信号量是一种用于任务间同步和通信的计数器,通常用于解决任务间的竞争条件和资源共享问题。在C/OS-III中,任务信号量提供了二进制信号量和计数信号量两种类型: 二进制信号量:只能取值0或1,适…

VSCode神仙插件——Codeium (AI编程助手)

1、安装&登录插件 安装过程中会让你登录Codeium账户,可以通过Google账户登录,或者可以注册一个Codeium账户(如果没有弹出让你登录账户的界面,可以等安装结束后在右下角找到登录的地方) 右下角显示如下图所示&#…

大模型面试题目

1.为什么需要做位置编码 位置编码(Positional Encoding)在变换器(Transformer)模型中非常重要,因为变换器架构本身没有内置的顺序信息。变换器使用的是自注意力机制,它能够捕捉输入序列中所有词之间的相关性…

opencv_C++学习笔记(入门30讲)

文章目录 1.配置开发环境2.图像读取与显示3.图像色彩空间转换4.图像对象的创建与赋值5.图像像素的读写操作6.图像像素的算数操作7.滚动条-调整图像亮度8.滚动条-调整对比度和亮度9.键盘响应操作10.图像像素的逻辑操作11.图像的通道分离和合并12.图像色彩空间转换13.图像的像素值…

vue3+antd 实现点击按钮弹出对话框

格式1&#xff1a;确认对话框 按钮&#xff1a; 点击按钮之后&#xff1a; 完整代码&#xff1a; <template><div><a-button click"showConfirm">Confirm</a-button></div> </template> <script setup> import {Mod…