Skip to content

Non-stationary Transformer 总览

一、论文动机

Phase 1 因果链中的位置:Informer 解决了 O(L2) 效率问题,Autoformer 引入了时序周期分解,FEDformer 将分解扩展到全局频域——但这三篇论文都默认对输入做了归一化(Instance Norm),把均值和方差"减掉"。Non-stationary Transformer(NeurIPS 2022)指出这造成了过平稳化(Over-stationarization)

x^t=xtμσ

归一化后,模型看到的是一个"去趋势、去波动"的序列。均值 μ(趋势)和标准差 σ(波动幅度)携带的非平稳分布信息被永久丢失。当测试集的分布与训练集不同时,模型无法感知这种变化。

解决方案:不拒绝归一化(归一化对训练稳定性是必要的),而是用可学习的 Projector 从原始信号的统计量中提取两个因子,在注意力计算时把非平稳信息重新注入:

  • τ(tau):调整注意力的集中程度(温度因子)
  • δ(delta):为每个 key 位置引入可学习偏置(位置偏移因子)

二、核心创新:DSAttention

标准 Attention 与 DSAttention 的公式差别

标准:
  score = QK^T
  A = softmax(score / sqrt(E))

DSAttention:
  score = QK^T · τ + δ
  A = softmax(score / sqrt(E))
         ↑           ↑
    tau 缩放整体   delta 按 key 位置偏移

τRB×1×1×1(标量,广播到全局)
δRB×1×1×S(向量,按 key 位置差异化偏移)

两个因子由同一结构的 Projector(x_raw, stats) 中学出,x_raw 是归一化前的原始信号。

跨模型对比

维度InformerAutoformerFEDformerNon-stationary
注意力类型ProbSparseAuto-Correlation(FFT)频域稀疏DSAttention(全局,加 τ/δ)
归一化处理Instance Norm序列分解序列分解Instance Norm + 统计量恢复
非平稳信息丢失丢失(趋势由 decomp 保留)丢失由 τ/δ 恢复到 Attention
新增参数2 个 Projector(MLP + Conv1d)
Encoder 骨架标准 Transformer无 distilling频域标准 Transformer
token 语义时间步时间步时间步时间步
复杂度O(LlogL)O(LlogL)O(LlogL)O(L2)(标准 attention)

三、架构图(论文原理层)


四、TFB 调用链


五、文档 BFS 树形索引


六、论文组件 → 代码对应表

论文组件代码位置精读文档
Instance Normalizationforecast() L171–176[[02-Layer1-forecast主链]]
Projector(τ learner)Projector.__init__ / forward[[03A-Layer2A-Projector]]
Projector(δ learner)同上,output_dim=seq_len[[03A-Layer2A-Projector]]
De-stationary AttentionDSAttention.forward[[03B-Layer2B-DSAttention]]
AttentionLayer(Q/K/V 投影)AttentionLayer.forward[[03B-Layer2B-DSAttention]]
Encoder(标准,无 distilling)Encoder.forward(conv_layers=None)[[02-Layer1-forecast主链]]
Decoder(标准)Decoder.forward[[02-Layer1-forecast主链]]
DataEmbeddingDataEmbedding(含 PositionalEmbedding)参见 [[Informer]] 文档
De-normalizationforecast() L201[[02-Layer1-forecast主链]]

七、全局 Toy 参数

参数含义
B2batch size
seq_len12encoder 输入长度
label_len6decoder 历史前缀
pred_len4预测步数
dec_len10= label_len + pred_len
enc_in = dec_in = c_out5变量数 N
d_model8隐层维度
n_heads4注意力头数
d_keys = d_values2= d_model / n_heads
d_ff16FFN 隐层
e_layers2Encoder 层数
d_layers1Decoder 层数
time_dims4时间标记维度(ETTh1:hour/day/weekday/month)
p_hidden_dims[32]Projector MLP 隐层维度
p_hidden_layers1Projector MLP 层数

维度唯一性说明:主要语义维度 seq_len(12) / label_len(6) / pred_len(4) / dec_len(10) / enc_in(5) / d_model(8) / d_ff(16) 互不相同。d_keys=2 与 B=2 数值相同,但语义和张量位置完全不同,不会造成追踪混淆。


八、推荐阅读路径

快速了解直觉:本文 §一~§二 + [[03B-Layer2B-DSAttention]] §5.1 宏观逻辑

完整代码精读

  1. [[01-Layer0-接入界面]] — 了解 TFB 如何传参、p_hidden_dims 从哪来
  2. [[02-Layer1-forecast主链]] — 归一化/反归一化 + tau/delta 注入流程
  3. [[03A-Layer2A-Projector]] — Conv1d 聚合时序信息的非常规用法
  4. [[03B-Layer2B-DSAttention]] — 实际代码与公式的对应
  5. [[04-收束]] — 端到端 shape 汇总 + 与已学模型对比

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