ms-Mamba: Multi-scale Mamba for Time-Series Forecasting 时序论文阅读

ms-Mamba: Multi-scale Mamba for Time-Series Forecasting

在这里插入图片描述

关于Transformer模型在时间预测任务中的局限性

1、注意力机制局限性:难以捕捉关键的时间依赖关系

虽然Transformer模型最初是为NLP设计的,并因其自注意力机制在捕获长程依赖关系方面的出色表现而被应用于时间序列预测任务,但在处理时间序列数据时,其基于内容的注意力机制暴露了关键缺陷

  • 难以检测关键的时间依赖关系:Transformer的注意力机制是基于内容(content-based)的,这意味着它主要根据序列中不同元素之间的相似性来建立连接,而不是明确地建模时间结构
  • 依赖关系随时间减弱的问题:这种基于内容的机制在处理那些依赖关系随时间逐渐减弱(vanishing correlations over extended horizons)的序列时,表现不佳。
  • 强季节性模式问题:当时间序列数据中**存在强大的季节性模式**(strong seasonal patterns)时,Transformer的标准注意力机制也难以有效检测或处理这些模式

2、计算复杂度,二次方复杂度限制了长序列处理能力

Transformer模型的另一个主要限制是其自注意力机制的二次方复杂度

  • 复杂度与序列长度的关系:对于长度为 L 的输入序列,标准的自注意力机制的计算成本和内存使用量是 O(L2L^2L2),即与序列长度的平方成正比。
  • 对长序列的影响:在时间序列预测中,处理长输入序列(long input sequences)以捕获长期模式是很常见的需求,但二次方复杂度极大地增加了计算成本和内存使用,成为模型应用的一个限制因素

时间序列预测线性模型发挥的作用:

1、线性模型的优势:简洁与效率

线性模型(通常使用多层感知机,MLPs)的优点:它们架构更简单、速度更快,相比于基于Transformer的模型具有更高的效率

2、线性模型的局限性:缺乏复杂的建模能力

为了追求速度和简洁性,线性模型牺牲了关键的建模能力:

  • 难以处理非线性依赖关系:这些模型通常难以处理复杂的非线性依赖关系(non-linear dependencies)。
  • 不适用于复杂模式:在涉及**高度波动(highly volatile)或非平稳(non-stationary)**模式的场景中,线性模型的性能往往不佳。
  • 难以捕捉全局依赖关系:与Transformer模型相比,线性架构在**捕捉全局依赖关系(global dependencies)**方面效率较低

3、局限性带来的计算成本悖论

线性模型缺乏全局依赖关系捕捉能力的后果,反而抵消了其“更快”的优势:

  • 对长输入序列的需求:由于线性架构不能像Transformer那样高效地捕捉全局信息,为了达到可比较的预测性能,它需要更长的输入序列(longer input sequences)。
  • 计算成本增加:对更长输入序列的需求,即使模型本身是线性的,也会增加整体的计算成本

多尺度 Mamba 层(Multi-scale Mamba Layer)的结构

传统的SSMs、Mamba 及其变体(如 S-Mamba)在处理时间序列数据时,通常只使用一个可学习的采样率 Δ。然而,时间序列数据本质上包含多个时间尺度的信号和模式。

ms-Mamba 的目标: ms-Mamba 旨在解决这一不足,通过在不同的采样率 下处理输入,从而更好地捕捉和利用时间序列数据的多尺度特性。

实现机制: ms-Mamba 是通过**组合多个 Mamba 模块(Mamba blocks)**来实现的,每个模块都配置了不同的采样率 ΔiΔ_iΔi​

对于第 l 层的输出嵌入 ElE^lEl,ms-Mamba 层将其分解并进行并行处理:
Eml=Avg(Mamba(El;Δ1),…,Mamba(El;Δn)) E^l_m=Avg(Mamba(E_l;Δ_1),…,Mamba(E_l;Δ_n)) Eml​=Avg(Mamba(El​;Δ1​),…,Mamba(El​;Δn​))
这意味着:

  1. 输入嵌入 ElE^lEl 被送入 n 个并行的 Mamba 模块。
  2. 每个 Mamba 模块使用一个特定的采样率 ΔiΔ_iΔi​​ 进行处理。
  3. 最终的输出 EmlE^l_mEml​​ 是这 n 个并行处理结果的平均值(Avg)
  4. 获取不同采样率 ΔiΔ_iΔi​​ 的三种策略

为了得到用于并行 Mamba 模块的不同采样率 ΔiΔ_iΔi​ ,ms-Mamba 探索了三种不同的策略:

策略 1:固定时间尺度(Fixed temporal scales)

​ 在这种方法中,只有基础采样率 Δ1 是可学习的(类似于原始 Mamba 模型)。而其他的采样率 Δ2,Δ3,…,Δn 则通过 Δ1 乘以固定的超参数(hyper-parameters)αiα_iαi​ 来获得:
Δi=αi×Δ1,i∈{2,…,n} Δ_i=α_i×Δ_1,i∈\{2,…,n\} Δi​=αi​×Δ1​,i∈{2,…,n}
特点:αiα_iαi​ 是超参数。通过消融实验发现,系数 α=(1,2,4,8) 在不同数据集上表现最佳。这种方法引入了额外的需要调优的超参数,是一个限制。

策略 2:可学习时间尺度(Learnable temporal scales)

​ 在这种方法中,所有的采样率 ΔiΔ_iΔi​ 都被定义为独立的可学习变量,就像原始 Mamba 模型中的 Δ 一样。

特点: 这种方法通常能提供略优于最佳固定尺度版本的结果,并且避免了对 αiα_iαi​ 超参数的调优,因此可能是更优选的选项。

策略 3:动态时间尺度(Dynamic temporal scales)

​ 这是最灵活的方法,其中所有的采样率 ΔiΔ_iΔi​ 都是通过一个**多层感知机(MLP)**根据当前的输入嵌入 ElE_lEl​ 动态估计出来的:
Δi=MLP(Flatten(El)) Δ_i=MLP(Flatten(E_l)) Δi​=MLP(Flatten(El​))
实现细节:

  1. Flatten(·):首先将输入张量 ElE_lEl​(维度为 L×DeL×D_eL×De​​,其中 L 是序列长度, DeD_eDe​​ 是嵌入维度)展平为一个维度为 L∗DeL*D_eL∗De​​ 的向量。
  2. MLP(·):该 MLP 由两个线性层组成,中间夹着一个 ReLU 激活函数:MLP(x)=W2∗max(0,W1x+b1)+b2MLP(x)=W_2*max(0,W_1x+b_1)+b_2MLP(x)=W2​∗max(0,W1​x+b1​)+b2​​。
  3. MLP 的作用是将展平后的输入映射到 n 个不同的采样率 Δi​。

Read more

微服务项目->在线oj系统(Java-Spring)----6.0

微服务项目->在线oj系统(Java-Spring)----6.0

创建token 在oj-common-security中引入依赖 创建jwt⼯具类: package com.bite.common.security.utils; import com.bite.common.core.comtains.JwtContains; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import java.util.HashMap; import java.util.Map; public class JwtUtils { /** * 生成令牌 * * @param claims 数据 * @param secret 密钥 * @return 令牌 */ public

By Ne0inhk
基于Java的不固定长度字符集在指定宽度和自适应模型下图片绘制生成实战

基于Java的不固定长度字符集在指定宽度和自适应模型下图片绘制生成实战

目录 前言 一、需求介绍 1、指定宽度生成 2、指定列自适应生成 二、Java生成实现 1、公共方法 2、指定宽度生成 3、指定列自适应生成 三、总结 前言         在当今数字化与信息化飞速发展的时代,图像的生成与处理技术正日益成为众多领域关注的焦点。从创意设计到数据可视化,从游戏开发到人工智能辅助创作,高效、精准且具有高度适应性的图像生成方案有着广泛而迫切的需求。Java 作为一种强大、稳定且广泛应用的编程语言,在图像绘制领域也发挥着不可忽视的作用。         在GIS领域,比如图例的生成就会面对以上的问题。由于在进行字符标注时无法预测文本的长度,因此我们需要能有一种自适应文本长度的生成方法,但是同时,也有可能我们需要指定一种宽度从而对字符文本进行绘制的需要。如下两图所示: 自适应宽度生成示意图 指定宽度生成示意图          本实战旨在深入探讨基于 Java 的不固定长度字符集在指定宽度和自适应模型下图片绘制生成的方法与技巧。不固定长度字符集为图片绘制带来了独特的挑战与机遇。一方面,其灵活多变的字符组合方式能够创造出丰富多

By Ne0inhk
IDEA安装教程配置java环境(超详细)_idea配置java,零基础入门到精通,收藏这篇就够了

IDEA安装教程配置java环境(超详细)_idea配置java,零基础入门到精通,收藏这篇就够了

引言 IntelliJ IDEA 是一款功能强大的集成开发环境(IDE),广泛用于 Java 开发,但也支持多种编程语言,如 Kotlin、Groovy 和 Scala。本文将为你提供一步一步的指南,帮助你在 Windows 系统上顺利安装 IntelliJ IDEA。 一、安装 JDK 1.1下载JDK 1.访问 JDK 下载页面 打开浏览器,访问Oracle JDK 下载页面. Java Downloads | Oraclehttps://www.oracle.com/java/technologies/downloads/#java22 2.选择版本 选择适合你的 JDK 版本(例如 JDK17或JDK21

By Ne0inhk
从 “Hello AI” 到企业级应用:Spring AI 如何重塑 Java 生态的 AI 开发

从 “Hello AI” 到企业级应用:Spring AI 如何重塑 Java 生态的 AI 开发

🔥个人主页:@草莓熊Lotso 🎬作者简介:C++研发方向学习者 📖个人专栏: 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》 ⭐️人生格言:生活是默默的坚持,毅力是永久的享受。 前言:当大模型浪潮席卷软件开发领域时,Java 开发者常常面临一个困境:一边是 PyTorch、LangChain 等 Python 生态的 AI 工具链蓬勃发展,一边是企业现有系统中大量的 Spring 技术栈难以快速接入 AI 能力。而 Spring AI 的出现,恰好打破了这层壁垒 —— 它将 Spring 生态的 “约定优于配置”、依赖注入、声明式编程等核心思想,与大模型交互、向量数据库集成、AI 工作流编排等能力深度融合,让 Java 开发者能以熟悉的方式拥抱 AI。今天,

By Ne0inhk