鱼C论坛

 找回密码
 立即注册
查看: 27|回复: 1

[技术交流] xPatch:长时间序列预测下一种低成本的Transformer有力竞争者

[复制链接]
回帖奖励 40 鱼币 回复本帖可获得 2 鱼币奖励! 每人限 1 次(中奖概率 80%)
发表于 11 小时前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 yinda_peng 于 2026-5-29 11:56 编辑



论文标题:xPatch: Dual-Stream Time Series Forecasting with Exponential Seasonal-Trend Decomposition




核心内容:
  • 提出新型双流架构 xPatch,基于指数分解思想
  • 引入季节-趋势指数分解模块,受经典指数平滑启发
  • 设计 MLP 线性流与 CNN 非线性流协同建模
  • 在非 Transformer 模型中探索分块(patching)与通道独立(channel-independence)技术
  • 构建鲁棒的反正切(arctangent)损失函数,缓解过拟合
  • 采用 Sigmoid 形式的学习率调整策略,提升训练稳定性与预测性能

  作者介绍:Artyom Stitsyuk (第一作者)韩国科学技术院 KAIST 统计人工智能实验室 SAIL 的核心成员,专注于时间序列预测、可解释AI等前沿领域
            Jaesik Choi (通讯作者), KAIST 统计人工智能实验室 SAIL 有个人页面https://sail.kaist.ac.kr/members/jaesik/



一、研究背景





Long-term time series forecasting (LTSF) 长时间序列预测方面,基于Transformer的模型(Vaswani等,2017)彻底改变了长期时间序列预测(LTSF)任务,使强大的人工智能系统得以实现当前最优性能。Transformer架构被认为在捕捉长序列中各元素间的语义关联方面极为有效。Transformer 中采用的自注意力机制具有排列不变性。尽管位置编码等技术能在一定程度上保留顺序信息,但如何有效保持时间信息仍是基于 Transformer 的模型所面临的一大挑战。这一局限性会对处理连续点集的长时序预测(LTSF)任务性能产生不利影响。因此,一种仅使用多层感知机(MLP)网络的简单线性方法(Zeng 等,2023)已对 Transformer LTSF 任务中的有效性提出了质疑。令人惊讶的是,一个名为 DLinear 的简单线性模型已超越此前所有基于 Transformer 模型的最先进预测性能,由此引发了一个根本性问题:“Transformer 是否真正适用于长时序预测?”





二、分解方法


本研究引入了指数型季节-趋势分解技术。此外,我们提出了一种结合权重衰减的鲁棒反正切损失函数,以及一种可提升训练适应性的新型学习率调整策略。同时,我们设计了xPatch,一种全新的双流网络架构,该架构融合了卷积神经网络(CNN)、多层感知机(MLP)、分块处理、通道独立性、指数型季节-趋势分解以及双流预测机制。

2.1 简单移动平均(SMA)的缺陷

SMA是一种用于分解时间序列数据的方法,可以将一个时间序列分解为趋势性成分XT和季节性成分XS,趋势指的就是数据曲线的走向,上升下降,季节也很好理解,是一种周期性的特征,比如我们知道春天多雨,夏天热,秋天干燥,冬天冷。大多数情况下,季节性成分是非线性的且平稳的,而趋势成分则是线性的且非平稳的图中给出了SMA的计算方法,就是一个简单的滑动窗口,窗口长度为k,默认步长取1,对窗口内的数据进行求平均值的操作得到XT的数据点st熟悉滑动窗口的小伙伴都知道,对一列数据进行滑窗分解之后,得到的数据点很可能少于原始数据个数。为了解决数据个数不一致的问题,SMA使用的是Padding操作,即重复第一个数据点以及最后一个数据点以达到分解后仍保留足够的数据点个数,这样季节性成分就可以用原始数据点减去st一一对应得到。

QQ截图20260529100001.png

QQ截图20260529101054.png

SMA有这样的缺陷:

1.会丢失重要的趋势特征,从Figure1可以看出来上面的蓝色趋势性成分曲线很明显在反映上升的过程时丢失了原数据迅速爬升的特征
   2.对齐操作需在序列两端填充,易扭曲首尾部分

   3.简单移动平均(SMA)生成的趋势过于简单、特征贫乏

4.SMA 导致季节性模式复杂难解,故需探索替代分解方法


2.2 指数移动平均EMA

指数移动平均不需要进行填充操作,很大程度上避免了特征丢失和扭曲的问题。图中的计算公式可以看到,分解的第一个点等于第一个数据点x0随后的分解点基于前一个分解点和当前的原始数据点计算得来,其中α是一个参数,介于0和1之间,分解点依旧是趋势性成分,季节性成分的计算与SMA一致。容易想到的是,α越大,趋势性成分越接近于原始数据,而季节性成分就越趋于零。从Figure2可知,对于这个序列数据,α取0.3就可以达到很好的效果。

QQ截图20260529101701.png

QQ截图20260529102348.png

指数法能更精准地调控趋势成分和季节性成分的行为。由于数据可能呈现多种模式,包括具有不同周期和行为特征的平稳与非平稳特性,因此指数分解方法在特征提取方面更具适应性。与简单移动平均法相比,指数移动平均法在分解过程中展现出更高的灵活性,其权重分配机制基于数据点的指数衰减规律。这种适应性使指数移动平均法能更有效地捕捉趋势变化,因而特别适用于具有动态性和演化性模式的时间序列。


评分

参与人数 1荣誉 +3 鱼币 +5 贡献 +3 收起 理由
~风介~ + 3 + 5 + 3 鱼C有你更精彩^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 11 小时前 | 显示全部楼层
好的,鱼油!我是FishC的计算机教育专家。刚看完你分享的这篇关于xPatch的论文,它确实是一个很有意思的工作。下面我用通俗的语言,帮你拆解一下这个模型的核心思路,以及它为什么能成为Transformer的“低成本”对手。

一、xPatch解决了什么问题?

在长时间序列预测任务中,Transformer虽然很强大,但它有个天生的“弱点”:自注意力机制不考虑数据点的顺序。尽管可以加位置编码,但这个处理方式在捕捉时间连续性上并不完美。而像DLinear这样的简单线性模型,反而能取得更好的效果,这让人们开始怀疑:对于时间序列,是不是根本不需要那么复杂的Transformer?

xPatch就是在这个背景下诞生的。它想用更轻量、更高效的结构,达到甚至超越Transformer的性能。

二、xPatch的四个核心创新(看懂这四点,你就掌握了它的精髓)

  • 1. 指数分解(Exponential Decomposition)
    传统的分解方法(简单移动平均SMA)有个毛病:它会在数据两端进行填充,这会扭曲序列的起始和结尾部分,而且提取的趋势太“粗糙”。xPatch采用的是指数移动平均(EMA),它不需要填充,并且通过一个参数α就能灵活控制趋势和季节成分的分离程度。你可以想象成:EMA给近期的数据更多“关注”,给远期的数据更少“关注”,这样提取的趋势既平滑又保留了局部变化。比如,你有风速数据,EMA能更自然地分离出风速的“总体趋势”(如逐渐增强)和“季节波动”(如昼夜变化)。
  • 2. 双流架构:一条“线性流” + 一条“非线性流”
    这是xPatch最巧妙的地方。它将分解后的数据分成两路处理:
       

         
    • 线性流(MLP流):专门处理趋势成分。用多层全连接层,中间故意不用激活函数,搭配平均池化和层归一化。目的是只保留最核心的线性特征,像一把“剃刀”剔除噪声。
         
    • 非线性流(CNN流):专门处理季节成分。先把数据切成小块(Patching),然后用深度可分离卷积和逐点卷积去捕捉块之间的复杂模式。因为季节成分往往包含大量零值和周期重复,所以用了GELU激活函数来保持平滑。最后再通过一个MLP展平。
         

    最后把两路提取的特征拼起来,模型就能灵活权衡线性与非线性的重要性了。这就像请了两个专家:一个擅长看“长期走势”,一个擅长看“周期细节”,最后综合他们的意见做决策。
  • 3. 反正切(Arctan)损失函数
    传统均方误差(MSE)对所有预测点一视同仁。但长期预测中,越远的时间点不确定性越大。如果硬让模型去拟合远期的随机噪声,容易过拟合。xPatch采用反正切形式的衰减损失:对近期的预测误差给予更大惩罚,对远期的预测误差自动“放宽”要求。这就像考试时,老师允许你最后一题错得不那么严厉,因为知道它更难。
  • 4. S型学习率调整策略
    很多模型用指数衰减学习率,下降太快;或者带预热的衰减,但不够灵活。xPatch用了一种Sigmoid函数组合的方法:先让学习率缓慢上升(预热),达到峰值后又缓慢下降,并且可以通过两个参数(k和s)控制上升和下降的陡峭程度。这种“光滑的倒V形”学习率,能让训练更稳定,尤其适合需要更多epoch(比如100轮)的模型。


三、总结:为什么xPatch是“低成本有力竞争者”?

“低成本”体现在:
  • 模型主要由MLP和轻量级CNN组成,没有Transformer中昂贵的自注意力计算。
  • 参数较少,训练速度快,显存占用低。


“有力”体现在:
  • 指数分解比SMA更灵活。
  • 双流架构能分别提取线性趋势和非线性周期特征,结构更适配时间序列的“趋势+季节”本质。
  • 损失函数和学习率调整策略都考虑了预测任务的特点,训练更稳定、泛化更好。


[xcode]
# 以下是xPatch核心思路的简化伪代码(仅示意逻辑)
def xPatch_forward(x):  # x形状: (batch, var_len, time_steps)
    # 指数分解
    trend = EMA_decompose(x, alpha=0.3)
    seasonal = x - trend
   
    # 线性流处理趋势
    linear_features = MLP_linear(trend)  # 无激活函数
   
    # 非线性流处理季节
    patches = Patching(seasonal)        # 分块
    cnn_features = DepthwiseConv1D(patches)
    cnn_features = PointwiseConv1D(cnn_features)
    nonlinear_features = MLP_flatten(cnn_features)
   
    # 特征拼接并预测
    combined = Concatenate([linear_features, nonlinear_features])
    output = FinalLinear(combined)      # 输出未来预测
    return output
[/xcode]

总之,xPatch不追求“堆砌复杂”,而是通过“对症下药”的组件设计,用简单、高效的方式赢得了性能。它给我们的启示是:有时候,针对数据特性设计专门的模块,比盲目套用通用大模型更划算。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-5-29 23:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表