Skip to content

DLinear 论文原理与代码桥接

Abstract

这篇不是主线文档。

它只做一件事:

把 DLinear 论文里的核心直觉,挂回当前代码链。

1. 论文第一性

DLinear 的第一性可以压成一句话:

不用复杂注意力机制,先把序列拆成 trend / seasonal,再对这两部分分别做最简单的线性外推。

它要表达的立场是:

  • 复杂结构不一定总是必要
  • 对时间序列预测,强 baseline 可以来自更简单的归纳偏置

2. 论文直觉怎么挂回当前代码

2.1 分解思想

论文里:

  • 先做序列分解

代码里(04-Level4-encoder全链精读.md §5):

  • series_decomp(kernel_size):位于 layers/Autoformer_EncDec.py
  • 内部先用 moving_avg 做滑动平均得到 trend,再用 x - trend 得到 seasonal

2.2 trend / seasonal 分开预测

论文里:

  • 两部分分别建模

代码里(04-Level4-encoder全链精读.md §6):

  • Linear_Seasonal = nn.Linear(seq_len, pred_len) — 外推季节性成分
  • Linear_Trend = nn.Linear(seq_len, pred_len) — 外推趋势成分
  • 两者并行独立计算,最后相加

2.3 线性预测是核心,不是附属

论文里:

  • 线性层不是随便加一下,而是主预测器

代码里:

  • nn.Linear(self.seq_len, self.pred_len)
  • 直接把历史长度映射到未来长度

3. 和 Informer 的对照

Informer 的论文主线是:

  • ProbSparse attention
  • distilling
  • generative decoder

DLinear 的论文主线是:

  • decomposition
  • seasonal/trend split
  • linear extrapolation

所以 DLinear 的价值不是”更复杂”,而是:

提供一个结构极简、但很有竞争力的 forecasting baseline。

4. 当前最该记住的映射

论文术语当前代码对象代码位置
series decompositionseries_decomplayers/Autoformer_EncDec.py
trendmoving_mean(AvgPool1d 结果)04-Level4 §5
seasonalx - moving_mean04-Level4 §5
linear predictionLinear_Seasonal / Linear_Trend04-Level4 §6
final forecastseasonal_output + trend_output04-Level4 §4 步骤4

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