【论文阅读】Bi-Mamba+: Bidirectional Mamba for Time Series Forecasting

文章目录

    • 概要
    • 阅读
      • 背景知识
      • 引言
        • 创新之处
      • 研究方法
        • 概述
        • 方法部分的核心模块
            • 多尺度打补丁(Multi-Scale Patching)
            • Mamba:全局模式专家
            • Local Window Transformer(LWT):局部变化专家
            • 长短期路由器(Long-Short Router)
            • 预测模块(Forecasting Module)
            • 方法部分的总结
      • 实验和结果部分
        • 1. 实验设置(Experimental Setup)
        • 2. 基线模型(Baselines)
        • 3. 评价指标(Metrics)
        • 4. 实验结果(Time Series Forecasting Results)
        • 5. 消融实验(Ablation Studies)
        • 6. 内存和速度分析(Memory and Speed Analysis)
      • 实验部分总结:
    • 总结

概要

https://arxiv.org/ pdf/2404.14757
https://github.com/XiongxiaoXu/Mambaformer-in-Time-Series

作者提出了名为Bi-Mamba+的新型时间序列预测模型,这篇论文的目标是解决时间序列预测中的长短期依赖问题。论文指出,传统的时间序列模型在处理长时和短时依赖时存在不足,无法同时有效捕捉全局的长程模式和局部的短程波动。

阅读

背景知识

时间序列预测广泛应用于天气预报、股票预测等领域。论文提到,许多时间序列可以分解为长程的全局模式和短期的局部波动。例如,超级计算机的执行时间可能因网络拥塞而产生极端值,这些局部的短期变化对预测是至关重要的。

举个例子,论文中提到了超级计算机的执行时间,它在长程上呈现出周期性的上升和下降趋势(全局模式),而在短程内可能出现由于网络拥堵而导致的执行时间异常(局部变化)。如果我们只关注其中一种特征,而忽略另一种特征,预测结果将不准确。
在这里插入图片描述

引言

作者提出了一个多尺度的混合模型,称为SST(State Space Transformer),这个模型有两个主要组件:

Mamba模型:这个模块被称为“全局模式专家”,用于从粗粒度的长程时间序列中提取全局模式。
Local Window Transformer(LWT):被称为“局部变化专家”,专注于在精细的短程时间序列中捕捉局部变化。

创新之处

多尺度打补丁方法(Multi-Scale Patching):通过对时间序列数据进行不同尺度的打补丁操作来调整数据的分辨率,使模型能够在不同粒度上进行预测。
长短期路由器:这个模块能动态学习并整合全局模式和局部变化的信息,确保模型能根据时间序列的特征自适应地调整重点。

研究方法

概述

作者在方法部分提出了一个多尺度的混合Mamba-Transformer架构,称为State Space Transformer(SST)。SST模型的核心思想是将时间序列分为长程全局模式和短程局部变化,分别由Mamba模型和Local Window Transformer(LWT)负责处理。为了实现这两者的有效结合,设计了一个长短期路由器来动态调整这两个专家模型的贡献。
在这里插入图片描述

方法部分的核心模块

在这里插入图片描述

多尺度打补丁(Multi-Scale Patching)

由于长程时间序列和短程时间序列在粒度上存在不同,作者引入了“打补丁”的概念来调整时间序列数据的分辨率。具体来说,通过聚合时间步长来形成“补丁”,从而降低或提高时间序列的分辨率。
对于长程时间序列,作者使用较大的补丁长度和较长的步幅,以生成低分辨率的时间序列。这使得模型可以忽略短期波动,专注于捕捉全局模式。
对于短程时间序列,使用较小的补丁长度和较短的步幅,生成高分辨率的时间序列,从而可以捕捉更细微的局部变化。
为什么这一步重要?
多尺度的处理使得模型能够在不同的时间范围内找到最适合的特征,从而更好地进行长短期的区分和分析。

Mamba:全局模式专家

Mamba模型是基于状态空间模型(State Space Models,SSM),专门用于处理长程时间序列中的全局模式。
状态空间模型通过对输入信号进行编码和解码,能够保留长期的相关信息,同时过滤掉短期的噪声。这使得Mamba特别适合用于长程序列的全局模式提取。
核心机制:Mamba依靠其递归机制,通过状态转移矩阵不断更新隐藏状态,保留与全局趋势相关的重要信息。它的复杂度为O(L),即随时间序列的长度线性增加,非常高效。
为什么使用Mamba?
Mamba的优势在于它能够长期保留全局模式,并且复杂度较低,适合处理长时间序列的数据。

Local Window Transformer(LWT):局部变化专家

LWT模型是传统Transformer的一个改进版本,专注于短期时间序列的局部变化。传统的Transformer在处理长时间序列时复杂度较高(O(L^2)),而LWT通过局部窗口机制降低了这种复杂度。
LWT的创新点在于,它使用一个固定大小的滑动窗口,使得每个时刻的输入只会关注局部的几个时间步长,而不是全局信息。这增强了模型对局部变化的敏感性,同时显著降低了计算复杂度。
LWT的复杂度从传统Transformer的O(L^2)降低到了O(wS),其中w是窗口的大小,S是短期时间序列的长度。
为什么使用LWT?
LWT能够专注于短期变化,并且通过窗口机制有效地控制计算成本,适合用于细粒度的短期预测。

长短期路由器(Long-Short Router)

为了将Mamba的长程全局模式和LWT的短程局部变化结合起来,作者设计了一个动态的路由器,称为长短期路由器。这个路由器的主要作用是根据输入时间序列的特点,动态地调整Mamba和LWT的权重,决定两者对预测的贡献。
具体来说,路由器会根据时间序列的输入,生成两个权重值(pL 和 pS),分别代表长程和短程时间序列的贡献比例。然后模型通过这些权重,将Mamba和LWT的输出进行加权平均,得到最终的预测结果。
为什么需要路由器?
不同的时间序列在不同的时间范围内可能需要不同的关注点。通过动态路由器,模型能够自适应地选择最合适的预测策略,从而提高预测的准确性。

预测模块(Forecasting Module)

最后的预测模块将长程时间序列的嵌入(来自Mamba)和短程时间序列的嵌入(来自LWT)进行拼接,并根据路由器的权重加权组合,得到最终的预测值。

方法部分的总结

SST模型通过多尺度打补丁、全局模式专家Mamba、局部变化专家LWT以及长短期路由器,巧妙地结合了长短期时间序列的特点,从而实现了对全局模式和局部变化的综合分析。该模型的核心创新点在于:

Mamba与Transformer的结合:通过让Mamba处理长程全局模式,LWT处理短程局部变化,使模型能同时兼顾两者。
长短期路由器的动态调节:根据输入动态调整模型的关注点,增强了模型的灵活性和泛化能力。

好,我们继续进入实验和结果(Experiments and Results)部分,看看作者是如何验证他们的模型的效果以及如何与其他模型进行比较的。

实验和结果部分

这一部分是论文的核心之一,作者通过一系列实验来验证SST模型在时间序列预测任务中的优越性。实验的目标是展示SST模型在多个数据集上的表现,并与现有的最先进模型(SOTA)进行对比,证明其在准确性、效率和可扩展性方面的优势。

1. 实验设置(Experimental Setup)

作者在实验中使用了七个广泛应用的真实世界数据集,这些数据集涵盖了不同领域的时间序列数据。数据集包括:

  • ETT 数据集(ETTh1、ETTh2、ETTm1、ETTm2):这是电力变压器的历史数据,涵盖了电压、电流、负载等因素。
  • Weather 数据集:包含了气象站每10分钟记录的21种气象变量,如温度、湿度、气压等。
  • ECL 数据集:这是一个电力消耗数据集,提供了321个客户的每小时用电情况。
  • Traffic 数据集:记录了旧金山湾区公路的车流量情况。

通过这些不同类型的数据集,SST模型展示了其在广泛领域中的适用性。
在这里插入图片描述

低分辨率和高分辨率的时间序列: 文中提到使用了不同分辨率来处理长时间序列和短时间序列。具体来说:

在这里插入图片描述

对于长时间序列,使用低分辨率,RP_T_S = 0.43,这里的P_L表示patch的长度为48,Str_L表示stride(步长)为16。这样能够在更大范围内抓取全局的时间序列模式,减少对局部细节的关注。 对于短时间序列,使用高分辨率,RP_T_S = 0.5,这时patch长度为16,步长为8,这样可以更好地捕捉时间序列中的局部变化。

回溯窗口长度: 他们将回溯窗口的长度设为L = 2S = 672,也就是说,每次模型处理的时间序列有672个时间步,其中S => 336,代表短期序列部分。这种设置帮助模型同时关注较长时间的全局模式和较短时间的局部变化。

预测长度: 未来的预测值长度F被设定为96, 192, 336, 和 720这几个不同的值,代表他们进行了不同长度的预测任务。

基准模型设置:
他们的实验基准是参考了最新的SOTA(最先进的)模型——iTransformer的设置,这样可以确保实验结果的公平性和一致性。

2. 基线模型(Baselines)

为了评估SST模型的效果,作者将其与几种最先进的时间序列预测模型进行了比较,包括:

  • S-Mamba:这是基于Mamba的时间序列预测模型,主要用于处理长期依赖。
  • iTransformer:一种用于时间序列的Transformer变体,侧重于改进Transformer在序列数据上的性能。
  • PatchTST:基于打补丁技术的Transformer模型,用于处理长时间序列。
  • Crossformer:一种能够跨维度捕捉时间序列依赖性的模型。
  • DLinearFEDformer:用于长时间序列预测的经典深度学习模型。
3. 评价指标(Metrics)

作者使用了两个广泛使用的评估指标来衡量模型的预测效果:

  • MSE(Mean Squared Error,均方误差):MSE越低,说明预测的误差越小,模型的表现越好。
  • MAE(Mean Absolute Error,平均绝对误差):MAE同样用于衡量预测误差,越低越好。
4. 实验结果(Time Series Forecasting Results)

实验结果表明,SST模型在多个数据集上都优于其他最先进的模型,尤其是在长程和短程时间序列的预测上表现得非常出色。

  • SST vs. S-Mamba:SST模型相比于基于Mamba的模型(S-Mamba)在长程和短程预测中表现更加优异,特别是在更长的预测窗口下(例如,未来720步的预测),SST模型在误差方面减少了13%以上。
  • SST vs. iTransformer:与iTransformer相比,SST在多个数据集上都展示了更低的MSE和MAE,说明其在捕捉全局模式和局部变化方面有更好的平衡。
  • 效率和扩展性:SST模型的线性复杂度使得它在处理大规模时间序列时更加高效,且内存占用较低。相比其他模型,如传统的Transformer,SST模型在输入长度大于3000步的情况下依然可以保持良好的扩展性,而其他模型则容易出现内存溢出问题。
5. 消融实验(Ablation Studies)

在这里插入图片描述

Mambaformer:Mamba模块和Transformer模块交替使用的模型。
Attention-Mamba:首先使用Attention模块,再使用Mamba模块的模型。
Mamba-Attention:首先使用Mamba模块,再使用Attention模块的模型。
SST:SST模型

消融实验的目的是验证SST模型中每个组成部分的重要性。作者进行了以下几种实验:

  • 仅使用Mamba或LWT:实验表明,仅使用Mamba或者LWT时,模型的表现明显不如SST模型,因为它们分别只能捕捉全局模式或局部变化,缺乏对两者的综合处理能力。
  • 去除打补丁机制:去除打补丁机制后,模型在捕捉不同时间尺度上的特征时效果较差,这验证了多尺度打补丁方法在提升预测性能中的关键作用。
  • 去除长短期路由器:如果去掉路由器,模型无法动态调整长程和短程预测的贡献,导致效果下降。

消融实验的结果说明,SST模型(蓝色柱状图)的MSE在所有数据集上的表现均优于Mambaformer家族的其他变体。这表明SST模型的混合架构更适合时间序列预测任务,而Mambaformer家族的交替使用Mamba和Attention的方法没有SST这种专门设计的混合方法效果好。

6. 内存和速度分析(Memory and Speed Analysis)

作者还对SST模型在实际应用中的内存使用计算速度进行了分析。结果表明,SST在处理长时间序列时具有良好的扩展性,并且由于其线性复杂度,在内存和计算时间上都显著优于传统的Transformer模型。例如,当时间序列的长度增加到6000步时,SST依然能够正常运行,而传统Transformer模型早在336步时就因内存问题而失败。
在这里插入图片描述
图 (a) - 内存消耗
这个图表示不同模型在处理不同长度的时间序列时,所消耗的内存(单位:GB)。横轴是输入的时间步长(k代表千个时间步),纵轴是内存消耗(GB)。

蓝线(Vanilla Transformer):在处理时间序列时,Vanilla
Transformer的内存消耗非常快,几乎呈现指数增长。这表明,Vanilla
Transformer的内存复杂度较高,尤其在时间序列长度变长时,很快会遇到内存不足的问题。
橙线(PatchTST):PatchTST模型的内存消耗比Vanilla
Transformer稍微好一些,但随着时间步长的增加,内存消耗也急剧上升。
绿色线(SST):SST模型的内存消耗相对较少,即使在时间步长增加的情况下,内存消耗增长得非常缓慢,表明SST的内存效率较高。
图中的紫色虚线表示内存的最大限制(Max
Memory),如果模型超过这个值,就会出现内存不足(OOM,out-of-memory)的情况。可以看到:

Vanilla Transformer在大约336个时间步时就会出现OOM。 PatchTST在大约3240个时间步时会遇到OOM。
SST模型在大约6480个时间步时才会遇到OOM,说明它的内存效率最佳。

图 (b) - 每个epoch的计算时间

这个图表示每个epoch的计算时间(单位:秒)。横轴是输入的时间步长,纵轴是每个epoch的计算时间。

蓝线(Vanilla Transformer):Vanilla
Transformer的计算时间随着时间步长增加急剧上升,特别是在长时间序列时,它的计算时间非常高,表明计算效率较低。
橙线(PatchTST):PatchTST在处理时间序列时的计算时间比Vanilla
Transformer更好,但在时间步长超过约3k时,它的计算时间也迅速上升。
绿色线(SST):SST模型的计算时间非常稳定,即使在处理长时间序列时,计算时间的增加幅度也很小。这说明SST模型在时间序列长度增加时具有良好的计算效率。

实验部分总结:

  • 性能方面:SST模型在多个数据集上的表现优于现有的最先进模型,尤其是在长程和短程预测任务中。通过引入全局模式和局部变化的专家模型,SST能够平衡不同时间尺度上的特征,从而提高预测的准确性。
  • 效率方面:得益于Mamba模型的递归机制和LWT的局部窗口机制,SST在时间序列长度增加时依然保持了较低的复杂度和良好的扩展性。
  • 创新性方面:SST模型通过多尺度打补丁和动态路由器的结合,成功解决了长短期时间序列的异质性问题,展示了其在大规模时间序列预测中的潜力。

总结

这篇论文通过提出SST模型,创新性地将Mamba的长时依赖提取能力与Transformer的局部变化捕捉能力相结合,解决了时间序列预测中长短期特征难以同时有效处理的问题。通过一系列实验验证,SST模型在预测精度和计算效率上都表现优异,具有良好的应用前景。

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

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

相关文章

Bootstrap Blazor实现多个Select选择器联合选择

Bootstrap Blazor官方目前只提供单个Select选择器,如果要想实现下图所示的多个Select选择器联合选择,则需要通过编写自定义组件来实现。 主要通过Bootstrap的data-bs-toggle属性来实现展开和折叠效果。 .razor文件内容如下: typeparam TValu…

【路径规划】蚁群算法的优化计算——旅行商问题(TSP)优化

摘要 旅行商问题(TSP)是一种经典的组合优化问题,其目标是找到一条遍历所有城市且总路程最短的环路。由于其计算复杂度高,求解大规模TSP问题往往依赖于启发式算法。本文研究了基于蚁群算法(Ant Colony Optimization, A…

034_基于php万怡酒店管理系统

目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍:CodeMentor毕业设计领航者、全网关注者30W群落,InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者,博客领航之星、开发者头条/腾讯云/AW…

python之数据结构与算法(数据结构篇)-- 字典

一、字典的概念 这里我使用“小羊们”举例子,现在我需要去创建一个"羊村小羊们的身高"字典去保存小羊们的身高,对小羊们的身高进行查询、增加、删除、遍历等一系列操作。去更好的理解,字典是个什么东东!!&…

Java根据word 模板,生成自定义内容的word 文件

Java根据word 模板,生成自定义内容的word 文件 背景1 使用技术2 实现方法依赖啊 3 问题4 背景 主要是项目中需要定制化一个word,也就是有一部分是固定的,就是有一个底子,框架,里面的内容是需要填充的。然后填充的内容…

宝塔部署前后端分离若依项目--CentOS7版

准备: CentOS7服务器一台 通过网盘分享的文件:CentOS 7 h 链接: https://pan.baidu.com/s/17DF8eRSSDuj9VeqselGa_Q 提取码: s7x4 大家有需要可以下载这个,密码61 若依前端编译后文件 通过网盘分享的文件:ruoyi-admin.jar 链…

基于SSM网络在线考试系统的设计

管理员账户功能包括:系统首页,个人中心,学生管理,在线考试管理,试题管理,考试管理,系统管理 前台账号功能包括:系统首页,个人中心,在线考试,公告信…

基于微信小程序的购物系统【附源码、文档】

博主介绍:✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&#x1f3…

印章图片怎么抠出透明背景?这4个一键抠图工具建议收藏!

在处理印章图片时,背景色的存在往往成为影响使用效果的一大障碍,特别是在需要将印章与不同背景融合时,不透明的背景色会显得尤为突兀。为了应对这一挑战,市场上涌现了一系列高效的一键抠图工具,它们能够迅速将印章图片…

Scala的继承

Scala中的继承是指在原有的类的基础上定义一个新类,原有的类称为父类,新类成为子类 例: class Animal(){var leg4def run():Unit{println("animal run.....")} } //继承:不劳而获 class Dog extends Animal(){} object…

ORB-SLAM2 ---- Frame中在主函数中被调用的函数

文章目录 一、Frame::isInFrustum1. 函数讲解2. 源码 二、Frame::GetFeaturesInArea1. 函数讲解2. 函数源码 三、Frame::ComputeBoW1. 函数讲解2. 函数源码 四、Frame::UnprojectStereo1. 函数讲解2. 函数源码 五、总结 一、Frame::isInFrustum 1. 函数讲解 此函数判断地图点…

【Linux】进程池

目录 进程池 进程池的概念: 手搓进程池: 1、创建信道和子进程 2、通过channel控制子进程 3、回收管道和子进程 进程池 进程池的概念: 定义一个池子,在里面放上固定数量的进程,有需求来了,就拿一个池中…

YoloV10——专栏目录

摘要 🔥🚀本专栏教你如何嗨翻YoloV10!🚀🔥 💡升级大招:汲取最新论文精华,给你一整套YoloV10升级秘籍!包括但不限于:注意力加持、卷积大换血、Block革新、Ba…

微软运用欺骗性策略大规模打击网络钓鱼活动

微软正在利用欺骗性策略来打击网络钓鱼行为者,方法是通过访问 Azure 生成外形逼真的蜜罐租户,引诱网络犯罪分子进入以收集有关他们的情报。 利用收集到的数据,微软可以绘制恶意基础设施地图,深入了解复杂的网络钓鱼操作&#xff…

使用JMeter进行Spring Boot接口的压力测试

使用 Apache JMeter 对接口进行压力测试是一个相对简单的过程。以下是详细的步骤,包括安装、配置和执行测试计划。 1. 下载和安装 JMeter 下载 JMeter 从 JMeter 官方网站https://jmeter.apache.org/download_jmeter.cgi 下载最新版本的 JMeter。 解压缩 将下载的 …

MATLAB支持的字体

listfonts 列出可用的系统字体 {Adobe Devanagari } {Agency FB } {Algerian } {AlienCaret } {AMS } {Arial } {Arial Black …

炒股VS炒游戏装备,哪个更好做

这个项目,赚个10%都是要被嫌弃的 虽然天天都在抒发自己对股市的看法,但自己自始至终也没有买进任何一支股票。之所以对这个话题感兴趣,着实是因为手上的游戏搬砖项目也是国际性买卖,跟国际形势,国际汇率挂钩&#xff0…

【C++ 11】移动构造函数

文章目录 【 1. 问题背景:深拷贝引起的内存开销问题 】【 2. 移动构造函数 】【 3. 左值的移动构造函数: move 实现 】 【 1. 问题背景:深拷贝引起的内存开销问题 】 拷贝构造函数 在 C 11 标准之前(C 98/03 标准中),…

不再手动处理繁琐任务!Python自动化方案梳理

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 文章内容 📒📝 文件和文件夹操作📝 Web自动化📝 自动化办公任务📝 网络请求和API调用📝 任务调度📝 桌面自动化📝 邮件自动化⚓️ 相关链接 ⚓️📖 介绍 📖 想象一下,只需一个Python程序,就能让你的电脑自…

深度学习--CNN实现猫狗识别二分类(附带下载链接, 长期有效)

1. 代码实现(包含流程解释) 样本量: 8005 # # 1.导入数据集(加载图片)数据预处理# 进行图像增强, 通过对图像的旋转 ,缩放,剪切变换, 翻转, 平移等一系列操作来生成新样本, 进而增加样本容量, # 同时对图片数值进行归一化[0:1] from tensorflow.keras.preprocessing.image …