Skip to content

TimeMixer 总览

论文问题与动机

标准 Transformer 将时序视为"一个分辨率"的 token 序列,无法同时捕获粗粒度趋势和细粒度季节波动。早期工作(Autoformer、FEDformer)通过在单一分辨率上分解解决了部分问题,但分解后的趋势与季节成分仍在同一时间尺度混合——高频噪声干扰趋势、低频背景模糊了季节峰值。

TimeMixer 的核心主张:先将时序下采样到多个分辨率,再让趋势和季节各自在最合适的分辨率方向上混合。趋势从粗到细(顶向下),季节从细到粗(底向上),两条路分开走,最终在每个尺度汇合。


核心创新

多尺度输入(Multi-Scale Inputs)

原始序列 (T=24):  [t1, t2, ..., t24]
AvgPool(window=2): [t1+t2/2, t3+t4/2, ..., t23+t24/2]  → 长度 12
AvgPool 再次:       [...]                                 → 长度 6

x_list = [(B,24,N), (B,12,N), (B,6,N)]

细粒度尺度保留完整波动;粗粒度尺度自然平滑噪声、凸显趋势。

PastDecomposableMixing(PDM):双路多尺度混合

x_list 各尺度先做 series_decomp:
  季节成分 season_list = [(B,N,24), (B,N,12), (B,N,6)]   ← 已 permute
  趋势成分 trend_list  = [(B,N,24), (B,N,12), (B,N,6)]   ← 已 permute

季节路(底向上):
  scale0(24) ──Linear(24→12)──> 加到 scale1(12) ──Linear(12→6)──> 加到 scale2(6)
  "细粒度季节信息向上渗透"

趋势路(顶向下):
  scale2(6) ──Linear(6→12)──> 加到 scale1(12) ──Linear(12→24)──> 加到 scale0(24)
  "粗粒度趋势向下广播"

最终:out = season + trend(每个尺度)

Future Multi-scale Mixing(FMM):多尺度并行预测求和

每个尺度独立做:enc_out.T → predict_layer(Linear T→pred_len) → projection(d_model→1)
→ reshape 成 (B, pred_len, N)

三个尺度预测 stack 再 sum:dec_out_list 累加 → 最终 (B, pred_len, N)

跨模型对比表

维度DLinearPatchTSTAutoformerTimeMixer
时序分解静态(移动均值)贯穿编解码每个 PDM 块内分解
多尺度✅ 3层下采样
注意力时间轴(patch)Auto-Correlation❌(纯 MLP mixing)
channel 处理CI(独立)CI混合CI 或 CD(可配)
趋势混合方向单尺度顶向下(粗→细)
季节混合方向单尺度底向上(细→粗)
预测头单路 Linear单路 LinearDecoder 生成每尺度独立 Linear → 求和
复杂度O(L)O(P2)O(LlogL)O(L) mixing

TFB 调用链


文档 BFS 树形索引


论文组件 → 代码对应表

论文组件实现代码精读文档
Multi-Scale InputsTimeMixer.__multi_scale_process_inputs()[[03A-Layer2A-MultiScale]]
Past Decomposable Mixing (PDM)PastDecomposableMixing.forward()[[03B-Layer2B-PDM]]
Bottom-up Season MixingMultiScaleSeasonMixing.forward()[[03B1-Layer3-SeasonMixing]]
Top-down Trend MixingMultiScaleTrendMixing.forward()[[03B2-Layer3-TrendMixing]]
Future Multi-scale Mixing (FMM)TimeMixer.future_multi_mixing()[[03C-Layer2C-FutureMixing]]
Series Decompseries_decomp(来自 Autoformer)[[Autoformer/03D-Layer2D-SeriesDecomp]]
Instance NormalizationNormalize.forward("norm"/"denorm")见 [[02-Layer1-forecast主链]] §norm

全局 Toy 参数

参数含义
B2batch size
seq_len24encoder 输入长度
pred_len6预测步数(= horizon)
label_len12decoder 历史前缀(= seq_len//2,TFB 自动设置)
enc_in3变量数(= dec_in = c_out)
d_model8隐层维度
d_ff16FFN 中间维度
e_layers2PDM 块数
down_sampling_window2每次下采样倍率
down_sampling_layers2下采样层数(共 3 个尺度)
moving_avg3series_decomp 核大小
channel_independence1CI 模式(每变量独立)

多尺度 shape 一览:

尺度时间维原始 shapeCI reshape 后
0(最细)24(2, 24, 3)(6, 24, 1)
112(2, 12, 3)(6, 12, 1)
2(最粗)6(2, 6, 3)(6, 6, 1)

注:CI 模式下 B×N=2×3=6,各变量变为独立样本。


推荐阅读路径

快速了解直觉:[[00-总览]] → [[02-Layer1-forecast主链]] §5.1 宏观逻辑

完整代码精读:[[01-Layer0-接入界面]] → [[02-Layer1-forecast主链]] → [[03A-Layer2A-MultiScale]] → [[03B-Layer2B-PDM]] → [[03B1-Layer3-SeasonMixing]] → [[03B2-Layer3-TrendMixing]] → [[03C-Layer2C-FutureMixing]] → [[04-收束]]

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