Skip to content

TimeMixer 深度学习笔记

TimeMixer: Decomposable Multiscale Mixing for Time Series Forecasting(ICLR 2024)

一句话定位

TimeMixer = 多尺度分解 + 季节 Bottom-Up 混合 + 趋势 Top-Down 混合 + 多预测器集成 → 解决真实时序中细/粗尺度信息纠缠、无法同时捕捉微观季节与宏观趋势的问题

核心洞见:时间序列在不同采样尺度下呈现不同模式——细粒度含高频季节细节,粗粒度含低频宏观趋势。将二者分离并双向融合,比直接混合多尺度更有效。


零、前置知识

0.1 必须了解(缺少则看不懂正文)

概念关键内容推荐入口
序列分解 (Seasonal-Trend Decomp)用移动平均将时序拆成趋势项和季节项;Autoformer 引入深度学习[[Autoformer-深度学习笔记]]
MLP-Mixer 思想用纯线性层在 token 维和 channel 维交替混合;不依赖注意力[MLP-Mixer, NeurIPS 2021]
下采样 / 均值池化AvgPool 将序列长度减半,粒度变粗;PyTorch: nn.AvgPool1d
残差连接输出 = 输入 + f(输入),防止梯度消失
长期/短期预测评估指标MSE/MAE (长期);SMAPE/MASE/OWA (短期 M4)

0.2 推荐了解

概念为什么推荐
PatchTST同期 SOTA;TimeMixer 在 Weather 上以 9.4% MSE 优势超越它
DLinear极简线性分解基线;TimeMixer 改变了纯线性思路,加入多尺度
TimesNet将 1D 时序变换为 2D 处理;对比理解"多尺度"的不同实现方式
Pyraformer / SCINet同为多尺度方法,但不使用历史信息的多尺度表征

0.3 背景:前作留下了什么问题

分解派(Autoformer, DLinear):只在单一尺度做季节-趋势分解,忽略了不同采样频率下模式的本质差异。

多尺度派(Pyraformer, SCINet):虽然引入了多尺度,但不同尺度的预测能力没有被显式地互补利用——各尺度信息提取和未来预测是割裂的。

核心矛盾:真实时序(如流量数据)的小时粒度记录日内变化,日粒度则突出假日波动,宏观经济趋势主导年粒度——单尺度视角必然丢失信息。TimeMixer 要解决的正是:如何同时利用多尺度的互补信息,且在历史提取和未来预测两个阶段都有效?


一、问题定义

给定多变量时间序列 xRP×CP 为历史长度,C 为变量数),预测未来 x^RF×C

符号含义
P历史观测长度(look-back window)
F预测长度(prediction horizon)
C变量数(variates)
M下采样尺度数(长期取 3,短期取 1)
LPDM 堆叠层数(默认 2)
dmodel隐藏维度(16 ~ 128)
xmm 个尺度的序列,xmRP/2m×C
Xll 层 PDM 后的多尺度特征集合

二、整体架构鸟瞰

论文 Figure 1:TimeMixer 整体架构,由三部分组成。 (a) 多尺度时间序列:输入经过均值池化下采样 M 次,得到从细粒度(scale 0,完整序列)到粗粒度(scale M,最短序列)共 M+1 个尺度。 (b) Past-Decomposable-Mixing (PDM):对每个尺度做季节-趋势分解,季节成分做 Bottom-Up(细→粗)混合,趋势成分做 Top-Down(粗→细)混合,再加前馈残差;叠加 L 层。 (c) Future-Multipredictor-Mixing (FMM):每个尺度独立使用线性预测器,最终求和集成为预测结果。

颜色说明:蓝=输入,橙=下采样/嵌入,红=序列分解,紫=季节 Bottom-Up 混合,棕=趋势 Top-Down 混合,青=前馈残差,绿=预测器/输出。

数据流简述

x ∈ ℝ^(P×C)
  ↓  AvgPool × M
{x₀, x₁, ..., x_M}  多尺度序列
  ↓  Embedding(线性投影到 d_model 维)
X⁰  初始多尺度特征
  ↓  PDM × L 层
     每层:SeriesDecomp → S-Mix(bottom-up) + T-Mix(top-down) → FeedForward → 残差
X^L  混合后的多尺度过去表征
  ↓  FMM(M+1 个独立预测器,求和集成)
x̂ ∈ ℝ^(F×C)  最终预测

三、多尺度混合架构(Multiscale Mixing)

3.1 下采样生成多尺度

对历史观测 xRP×C 做均值池化(stride=2),得到多尺度集合:

X={x0,x1,,xM},xmRP/2m×C
  • x0=x:最细粒度,保留全部高频细节
  • xM:最粗粒度,长度仅 P/2M,只剩宏观趋势

嵌入X0=Embed(X),每个尺度用独立线性层映射到 dmodel 维。

3.2 堆叠 PDM 块

(1)Xl=PDM(Xl1),l{0,,L}

四、Past-Decomposable-Mixing (PDM) 详解

PDM 是 TimeMixer 的核心创新,其设计动机是:即使在最粗尺度,季节性和趋势性仍然共存,直接混合会互相干扰。因此,先分解再分别用合适方向混合。

l 个 PDM 块的完整公式

sml,tml=SeriesDecomp(xml),m{0,,M}(3)Xl=Xl1+FeedForward(S-Mix({sml}m=0M)+T-Mix({tml}m=0M))

4.1 序列分解 (SeriesDecomp)

借用 Autoformer 的移动平均核:

tml=MovingAvg(xml),sml=xmltml
  • 趋势项 = 移动平均(低频,平滑)
  • 季节项 = 残差(高频,周期性波动)

4.2 季节混合 (Seasonal Mixing, Bottom-Up ↑)

为什么 Bottom-Up? 从季节分析角度,大周期是小周期的聚合(Box & Jenkins, 1970):周流量 = 7 个日流量的叠加。细粒度季节信息对粗粒度有补充作用。

公式

(4)for m:1M:sml=sml+Bottom-Up-Mixing(sm1l)

Bottom-Up-Mixing() = 两层线性 + GELU,沿时间维操作:

  • 输入维度:P/2m1(细粒度序列长度)
  • 输出维度:P/2m(粗粒度序列长度)

论文 Figure 2:三种线性混合层的示意图。(a) 季节混合(Bottom-Up):底层(细粒度)节点向上连接到更粗的尺度,每个粗粒度节点汇聚细粒度的局部季节信息;连线密集且呈现周期重复的模式(对应论文 Figure 3(a) 中的对角条纹权重矩阵)。(b) 趋势混合(Top-Down):顶层(粗粒度)节点向下广播,每个细粒度节点受粗粒度全局趋势引导;连线集中在对角线(对应 Figure 3(b) 的黄色对角线)。(c) 未来预测:FMM 中每个尺度独立用线性层回归未来序列。

数值示例:季节 Bottom-Up 混合(M=2,P=8)

参数:P=8,M=2,d=1(单特征,不计嵌入维度,仅演示时间维混合)

输入季节成分(经过分解后,带周期规律的序列):

尺度序列长度值(体现日内周期,2步一周期)
s₀ (scale 0)8[2, -2, 2, -2, 2, -2, 2, -2]
s₁ (scale 1)4[-1, 1, -1, 1](粗粒度,高频被均值池化平滑)
s₂ (scale 2)2[0.5, -0.5]

Step 1:混合 s₀ → 更新 s₁(Bottom-Up-Mixing 把长 8 映射到长 4)

假设学到的线性层权重等价于"对相邻 2 步取均值后保留相位":

BU-Mix([2,2,2,2,2,2,2,2])[2,2,2,2]

更新:s1[1,1,1,1]+[2,2,2,2]=[1,1,1,1]

粗粒度 s₁ 增强了季节振幅:从幅度 1 提升到幅度 1(此例相加后),实际上细粒度提供了准确的相位信息。

Step 2:混合 s₁ → 更新 s₂(Bottom-Up-Mixing 把长 4 映射到长 2)

BU-Mix([1,1,1,1])[1,1]

更新:s2[0.5,0.5]+[1,1]=[1.5,1.5]

验证
  • s₂(最粗)的季节振幅从 0.5 → 1.5,增大了 3 倍 ✓
  • 细粒度的高频季节信息成功"渗透"到粗粒度,补充了被均值池化抹去的细节 ✓
  • 方向 bottom-up:信息流 scale0 → scale1 → scale2,聚合微观到宏观 ✓

4.3 趋势混合 (Trend Mixing, Top-Down ↓)

为什么 Top-Down? 细粒度趋势项受局部噪声影响,容易出现虚假抖动;粗粒度趋势才是真正的宏观走势。用粗粒度引导细粒度,相当于"全局约束局部"。

公式

(5)for m:(M1)0:tml=tml+Top-Down-Mixing(tm+1l)

Top-Down-Mixing() = 两层线性 + GELU,沿时间维操作:

  • 输入维度:P/2m+1(粗粒度序列长度)
  • 输出维度:P/2m(细粒度序列长度)

数值示例:趋势 Top-Down 混合(M=2,P=8)

输入趋势成分(单调上升的宏观趋势):

尺度序列长度值(上升趋势)
t₀ (scale 0)8[1.0, 1.2, 0.9, 1.5, 1.1, 1.8, 1.0, 2.0](含噪声抖动)
t₁ (scale 1)4[1.1, 1.2, 1.5, 1.5](AvgPool,噪声减少)
t₂ (scale 2)2[1.15, 1.50](最平滑,纯宏观趋势)

Step 1:混合 t₂ → 更新 t₁(Top-Down-Mixing 把长 2 映射到长 4)

You can't use 'macro parameter character #' in math mode

FeedForward 的作用:在通道维度(C 个变量之间)进行信息交互,弥补 S-Mix/T-Mix 只在时间维操作的不足。


五、Future-Multipredictor-Mixing (FMM) 详解

经过 L 层 PDM,得到最终多尺度过去表征 XL={x0L,,xML}

为什么需要多个预测器? 不同尺度的序列主导的时序模式不同(细粒度擅长季节细节,粗粒度擅长趋势)。让每个尺度独立预测,再集成,相当于集成学习(Ensemble)

每个预测器m{0,,M}):

(6a)x^m=Predictorm(xmL),x^mRF×C

其中 Predictorm() = 一层线性层,将时间维 P/2mF,再投影到 C 个变量。

集成

(6b)x^=m=0Mx^mRF×C

采用求和而非平均:二者等价(模型可自行学习每个预测器输出的幅度),但求和更直接。


六、训练细节

超参数长期预测短期预测
尺度数 M31
PDM 层数 L22(PEMS)/ 4(M4)
dmodel16 ~ 12832 ~ 128
批大小8 ~ 12832 ~ 128
学习率102102 ~ 103
损失函数MSEMSE(PEMS)/ SMAPE(M4)
优化器Adam (β1=0.9,β2=0.999)同左
训练轮数10 ~ 2010 ~ 50
硬件NVIDIA A100 80GB同左

设计决策:M 随序列长度增大而增大(性能提升但计算增加);对短序列(M4 输入极短),M=1 避免过度下采样。


七、实验结果

7.1 长期预测(18 个基准)

论文 Figure 5:GPU 内存与运行时间的效率对比。(a) GPU 内存:在所有序列长度(192~3072)下,TimeMixer 仅用 ~1000~1400 MiB,远低于 PatchTST(1919~16119 MiB)和 FEDformer(2567~12485 MiB),接近 DLinear 的极简内存占用。(b) 运行时间:TimeMixer 速度与 DLinear 相当(全 MLP 架构优势),约为 PatchTST 的 1/6,Autoformer 的 1/15。

关键数字(Table 2,长期预测,4 个预测长度均值)

数据集TimeMixer MSEPatchTST MSE提升幅度
Weather0.2400.265-9.4%
Solar-Energy0.2160.287-24.7%
Electricity0.1820.216-15.7%
Traffic0.4840.529-8.5%
ETTh10.4470.516-13.4%
ETTm20.2750.290-5.2%

TimeMixer 在低可预测性数据集(Solar-Energy, ETT)上仍表现优秀,说明多尺度混合对复杂时序具有鲁棒性。

7.2 短期预测

论文 Figure 4:不同尺度预测器的输出可视化(ETTh1,input-96-predict-96)。(a) 多尺度集成结果:最终预测(橙线)紧贴真实值(蓝线),精确捕捉了峰值和低谷。(b) Scale 0(细粒度):捕捉季节细节和短周期波动,但趋势漂移明显。(c)(d) Scale 1/2(中间尺度):平衡细节与趋势。(e) Scale 3(粗粒度):主要捕捉长期宏观趋势,细节模糊。集成后互补,优于任何单一尺度。

短期预测(M4 数据集,OWA 指标,越低越好)

频率TimeMixerTimesNetN-HiTS
Yearly0.7760.7860.851
Quarterly0.8250.8900.899
Monthly0.8690.8990.880
Weighted Avg0.8400.8510.855

八、消融实验

论文 Figure 3:时间线性层权重可视化(ETTh1,input-96-predict-96)。(a) 季节混合权重矩阵(bottom-up,96→48):呈现周期重复的蓝色对角条纹,说明模型学到了"以局部聚合的方式传递季节信息",权重矩阵的周期结构与时序季节性吻合。(b) 趋势混合权重矩阵(top-down,48→96):主要能量集中在黄色主对角线,说明粗粒度趋势被均匀地广播到细粒度,体现"全局平均"的趋势注入。(c) 多尺度季节和趋势预测:细粒度(Scale 0)季节项波动密集,趋势项含噪声;粗粒度(Scale 3)季节项平滑,趋势项清晰上升——验证了不同尺度的功能分工。

消融结果(Table 5,M4/PEMS04/ETTm1 三个基准,越低越好)

Case分解季节混合趋势混合多预测器M4 OWA说明
① 官方设计Bottom-Up↑Top-Down↓0.840最优
② 去除多预测器0.925FMM 贡献显著
③ 去除季节混合0.962季节混合最关键
④ 去除趋势混合0.941趋势混合也重要
⑤ 同向混合(均↑)0.871方向错误降性能
⑦ 完全反向(均↓/↑)0.954反向最差之一
⑩ 无分解+无混合0.916无 PDM 大幅下降

核心结论

  1. FMM(多预测器)缺失导致 OWA 从 0.840 升至 0.925(+10.1%),是第一重要模块
  2. 季节 Bottom-Up 混合比趋势 Top-Down 混合更重要(去除季节损失更大)
  3. 方向性是关键:反转方向(case ⑦)导致严重性能下降,验证了"季节 bottom-up + 趋势 top-down"设计的合理性

九、与同类模型横向对比

模型架构混合机制分解多尺度长期 SOTA短期 SOTA
TimeMixer纯 MLP时间维(季节↑趋势↓)+ 通道 FeedForward季节-趋势✓(M+1 尺度)
PatchTSTTransformerToken-Mixing(Patch 级自注意力)✗(单尺度)次优一般
TimesNetCNN2D 卷积(时间→周期二维化)隐式(多周期)一般✓(M4 次优)
DLinear纯线性无混合季节-趋势(预处理)曾 SOTA
AutoformerTransformerAuto-Correlation(频域注意力)季节-趋势旧 SOTA
SCINetCNN奇偶分裂 + 交互✓(二叉树)一般✓(PEMS 曾 SOTA)
PyraformerTransformer金字塔注意力✓(层级式)

TimeMixer 的差异化优势

  1. 唯一将多尺度信息融入历史提取(PDM)+ 未来预测(FMM)双阶段的模型
  2. 纯 MLP 架构 → 无注意力的二次复杂度,内存/速度优势显著
  3. 分离季节和趋势做方向对立的混合 → 避免噪声相互干扰

十、局限性与未来方向

局限性描述可能方向
参数随输入长度线性增长时间维线性层的参数量 ∝ P,移动端不友好注意力/CNN 替代线性混合层
未建模变量间依赖仅在 FeedForward 中有通道交互,无显式变量关系建模将变量维 Mixing 纳入设计
理论分析缺失没有理论证明 bottom-up/top-down 设计的最优性谱分析或信息论框架
DFT 分解未被充分探索论文测试了 DFT 分解但性能略差,放弃了未来高频/低频分解可能更准确

思考问题

  • [ ] 为什么季节成分适合 Bottom-Up 而趋势成分适合 Top-Down?能否从频域角度给出更严格的解释?
  • [ ] TimeMixer 的 Predictor_m 对各尺度等权求和——是否应该根据各尺度的预测置信度动态加权?
  • [ ] 在极端低可预测性数据集(如 Solar-Energy,forecastability=0.33)上,多尺度混合为何仍有效?各尺度贡献是否均等?
  • [ ] TimeMixer 未处理变量间空间依赖(如 PEMS 交通传感器的图结构),能否引入图神经网络增强 FeedForward?
  • [ ] PDM 中 SeriesDecomp 使用移动平均,对非平稳序列(股票价格)效果有限——能否用自适应分解(如 EMD)替代?
  • [ ] 多尺度下采样(AvgPool)是否损失了过多高频信息?对于噪声大的数据集,是否应在细粒度保留更多历史?
  • [ ] TimeMixer 在 M4 竞赛数据(包含 Yearly/Monthly 等多频率)上表现一致最优,这是否说明多尺度本质上是在解决频率泛化问题?

关联笔记

  • [[Autoformer-深度学习笔记]] — TimeMixer 直接复用了 Autoformer 的移动平均分解块
  • [[PatchTST-深度学习笔记]] — 长期预测主要竞争对手;TimeMixer 在 Weather 上超越 9.4%
  • [[DLinear]] — 极简线性基线;TimeMixer 在多尺度上扩展了纯线性思路
  • ![[TimeMixer.pdf#page=1|TimeMixer 论文]]

*记录并在线阅读我的笔记*