Appearance
收束 — 端到端流程 + Tensor 汇总
1. 端到端流程图(含 subgraph)
2. Tensor 变化汇总表
| 步骤 | 操作 | 输入 shape | 输出 shape | 关键参数 |
|---|---|---|---|---|
| dec_input 构造 | cat(历史, zeros) | (3,5,6) + (3,7,6) | (3,12,6) | label_len=5, pred_len=7 |
| enc_embedding | TokenEmb+TimeEmb+PosEmb | (3,10,6) + (3,10,4) | (3,10,8) | d_model=8 |
| dec_embedding | 同上 | (3,12,6) + (3,12,4) | (3,12,8) | d_model=8 |
| EncoderLayer[0] | ProbSparse self-attn + FFN | (3,10,8) | (3,10,8) | L=10, u=3 |
| ConvLayer | Conv1d(k=3,p=2) + MaxPool(k=3,s=2,p=1) | (3,10,8) | (3,6,8) | 10→12→6 |
| EncoderLayer[1] | ProbSparse self-attn + FFN | (3,6,8) | (3,6,8) | L=6, u=2 |
| Encoder LayerNorm | LayerNorm(8) | (3,6,8) | (3,6,8) | — |
| DecoderLayer self | ProbSparse masked self-attn | (3,12,8) | (3,12,8) | mask_flag=True, u=3 |
| DecoderLayer cross | ProbSparse cross-attn | Q:(3,12,8) K/V:(3,6,8) | (3,12,8) | mask_flag=False, L_Q=12, L_K=6 |
| DecoderLayer FFN | Conv1d(k=1)×2 | (3,12,8) | (3,12,8) | d_ff=24 |
| Decoder LayerNorm | LayerNorm(8) | (3,12,8) | (3,12,8) | — |
| projection | Linear(8→6) | (3,12,8) | (3,12,6) | c_out=6 |
| 输出切片 | [:,-7:,:] | (3,12,6) | (3,7,6) | pred_len=7 |
3. 核心设计决策回顾
ProbSparse Attention — 活跃度筛选
| 方面 | 标准 Transformer | Informer ProbSparse |
|---|---|---|
| 复杂度 | O(L²) | O(L log L) |
| 计算方式 | 所有 L_Q 个 query 都算完整注意力 | 只有 top-u = factor×ceil(ln L_Q) 个活跃 query 精算 |
| 懒 query 输出 | — | mean(V) 近似(encoder)/ cumsum(V)(decoder masked) |
| 活跃度度量 | — | M = max(采样点积) - sum(采样点积)/L_K |
Distilling — 序列压缩
| 方面 | 描述 |
|---|---|
| Conv1d(k=3, p=2, circular) | 序列长度 +2(circular 填充不缩短序列) |
| MaxPool(k=3, s=2, p=1) | 步长 2 下采样:floor((L+2-3)/2+1) = floor(L/2)+1 |
| toy 效果 | seq=10 → Conv1d → 12 → MaxPool → 6 |
| 目的 | 逐层减小序列,后层注意力矩阵更小 |
Generative Decoder — 并行预测
| 方面 | Autoregressive(传统) | Generative(Informer) |
|---|---|---|
| 推理次数 | pred_len 次 forward | 1 次 forward |
| decoder 输入 | 逐步扩展 | 历史+零 一次性输入 |
| 预测质量 | 误差积累(exposure bias) | 没有误差累积 |
4. 与同类模型的结构对比
| 模型 | 注意力复杂度 | 解码方式 | 时间嵌入 | 特色 |
|---|---|---|---|---|
| Informer | O(L log L) ProbSparse | 并行 Generative Decoder | TimeFeatureEmbedding + PositionalEmbedding | 稀疏注意力 + 蒸馏 |
| Transformer | O(L²) full attention | 并行(非 autoregressive 训练) | 同上 | 基线 |
| DLinear | 无注意力 | Linear 直接映射 | 无时间嵌入 | 极简线性,速度最快 |
| PatchTST | O(P²) patch-level | 无 decoder | PatchEmbedding | channel-independent patch |
5. 文档索引 + 下一步建议
| 文档 | 覆盖内容 | tensor 入/出 |
|---|---|---|
| 00-总览 | 论文动机、3 个创新 ASCII 图、BFS 索引树、toy 参数 | — |
| 01-Layer0-接入界面 | config 映射、_process() dec_input 构造、forward() 分支 | (3,10,6) 进 → (3,7,6) 出 |
| 02-Layer1-forecast主链 | long/short 路径、embedding、encoder、decoder 调用链 | (3,10,8) enc → (3,6,8) 压缩 → (3,12,6) 输出 |
| 03A-Layer2A-DataEmbedding | 三路嵌入:TokenEmb + TimeFeatureEmb + PositionalEmb | (3,L,enc_in) → (3,L,8) |
| 03B-Layer2B-Encoder | ConvLayer 蒸馏(seq 10→6)、EncoderLayer 双残差、ProbSparse 调用 | (3,10,8) → (3,6,8) |
| 03C-Layer2C-Decoder | 三段式:masked self-attn + cross-attn + FFN,projection | (3,12,8) → (3,12,6) |
| 03B1-Layer3-EncoderLayer | 双残差块:ProbAttention self-attn + FFN (Conv1d k=1) | (3,L,8) → (3,L,8) |
| 03C1-Layer3-DecoderLayer | 三段式:masked self-attn + cross-attn + FFN | (3,12,8) → (3,12,8) |
| 04-Layer4-AttentionLayer | d_model ↔ 多头格式桥梁;Q/K/V Linear 投影;4 种调用场景 | (B,L,d_model) → (B,L,d_model) |
| 04A-Layer5-ProbAttention | _prob_QK M 分数、_get_initial_context、_update_context | (B,L,H,D) → (B,H,L,D) |
已覆盖所有核心组件,无需进一步下钻。
如果下一步想深入,可参考:
- Informer 原论文:Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting
- 与 Autoformer 对比:Autoformer 用 Auto-Correlation(频域)替代 ProbSparse
- 与 FEDformer 对比:FEDformer 用傅里叶/小波变换做频域注意力