Skip to content

DLinear 学习目的与阅读建议

Abstract

这篇不是主线文档,而是 DLinear/ 目录下的工作台。

它回答三件事:

  1. 为什么现在要学 DLinear
  2. 读这组文档时应该抱什么主问题
  3. 读到什么程度,才算已经能开始动代码或跑实验

1. 为什么现在要学 DLinear

当前学 DLinear,不是为了收集又一个模型名字,而是为了建立两个坐标系。

1.1 模型坐标系

你可以从 模型 这条主线去学:

  • DLinear 的创新点是什么
  • 它和 Informer 差别是什么
  • 它为什么能作为强 baseline

1.2 组件坐标系

你也可以从 组件 这条主线去学:

  • 分解模块是怎么做的
  • 滑动平均扮演什么归纳偏置
  • 线性头怎样做时间维映射

但这两条最后都指向同一个第一性:

学模型,是为了建立“读代码 -> 改代码 -> 跑实验 -> 解释结果”的能力。

2. 你现在学习模型的第一性到底是什么

如果把“学模型”压缩成最核心的两点,就是:

2.1 代码实现与实验能力

你需要知道:

  • 模型怎样接到 TFB 里
  • 输入输出怎样对齐
  • 改哪里最小且有效
  • 改完怎样跑实验和检查结果

2.2 模块与理论积累

你也需要逐渐积累:

  • 分解模块为什么有用
  • attention 为什么有用
  • embedding 为什么存在
  • 这些组件在不同模型里怎样重组

所以:

  • 短期第一性:代码实现、跑实验、会改动
  • 长期第一性:逐渐沉淀出模块级认知和理论直觉

3. 为什么 DLinear 很适合作为当前阶段的模型

因为 DLinear 让你能先把这些问题稳定下来:

  1. 一个 forecasting 模型最小需要哪些输入输出?
  2. 一个模型怎样在没有 attention 的情况下也能预测?
  3. 什么叫“模型主体真的很简单,但实验上依然有价值”?
  4. 哪些是框架壳,哪些才是模型自己的代码?

4. 这组 DLinear 文档该怎么读

第一轮:只读运行主线

  1. 01-Level1-配置进入DLinear
  2. 02-Level2-数据进入DLinear
  3. 03-Level3-forward主链
  4. 09-DLinear全览流程图收束

这一轮只回答:

  • 当前命令怎样进 DLinear
  • 当前 batch 怎样进 DLinear
  • DLinear 最后怎样返回 (B, pred_len, C)

第二轮:读模型主体

  1. 04-Level4-encoder分解与线性预测总览
  2. 04A-series_decomp与moving_avg
  3. 04B-SeasonalTrend线性头

这一轮只回答:

  • encoder(...) 到底在干什么
  • trend / seasonal 怎么拆
  • 两路线性头怎样预测未来

第三轮:查附录补洞

5. 什么叫“已经可以开始动 DLinear 代码了”

如果你已经能不看代码回答下面 6 句话,就够开始动最小改动了:

  1. 当前命令怎样一路变成 DLinear(config)
  2. _process(...) 怎样把 batch 四元组送进 DLinear。
  3. forecasting 任务里 forward(...) 真实走 forecast(x_enc)
  4. encoder(...) 在 DLinear 里是主运算体,不是 Transformer encoder。
  5. series_decomp 先提取 trend,再留下 seasonal。
  6. Linear_Seasonal + Linear_Trend 最终怎样组成预测输出。

6. 读完 DLinear 后最值得做什么

最值得做的是两个动作:

  1. 和 Informer 做对照

    • 哪些是框架壳相同
    • 哪些是模型内部完全不同
  2. 做一次最小改动实验

    • moving_avg
    • 或改 individual
    • 或改 seq_len / pred_len

这样你才会从“会读文档”变成“会动模型”。

7. 最后压成一句话

学 DLinear 的第一性,不是为了背一个简单模型,而是为了建立最小模型的代码实现能力、实验能力和对照坐标系。

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