# 04 · 时间序列预测应用 > 学习笔记 04/05 · by 小小叶 🍃 > 把 Transformer 从"翻译句子"接到"预测时序"。 --- ## 一、核心洞察:时序也是序列 时间序列(股价、气温、电力负荷……)本质就是**一串有序的数值点**,和句子同构。注意力的"加权平均"思想可以完美迁移。 ### 类比映射表 | NLP(句子) | 时间序列 | |---|---| | 一个单词 | 一个时间点(或一段 patch) | | 单词 Embedding | 把数值点投影成向量 `Linear(1 → d_model)` | | 位置 Embedding | 时间位置编码(第几天/几点/星期几) | | "它"指代"小猫" | "今天"关注"上周同一天""去年今天" | --- ## 二、加权平均在时序里"平均"什么? 预测**明天**时,模型对历史每一天算权重,然后加权混合: ``` 明天的表示 = w₁·V(昨天) + w₂·V(前天) + ... + w₇·V(上周同天) + ... ``` - 数据有**周周期** → 模型自动给"上周同一天"高权重 ⭐ - 近期有突变 → 给**最近几天**高权重 - **权重分布 = 模型自己发现的"哪些历史时刻对预测明天最重要"** > 这正是时序 Transformer 比 RNN 强的地方:**能跨越很长时间,直接"加权"到关键历史点**,不会像 RNN 把远期信息传丢。 --- ## 三、为什么 Transformer 适合时序?三大优势 ### ✅ 优势 1:长程依赖一步到位 - 时序常有长周期规律("去年今天""每周一峰值") - RNN 要一步步传 365 步才能联系到去年,信息早丢了 - Transformer **一次看全历史**,"今天"直接和"去年今天"建立注意力连接 ### ✅ 优势 2:自动发现"哪些时刻重要" - 注意力权重自动学到:"预测明天,前 7 天和上周同一天最重要" - 不用人工设计特征,**模型自己挑关键时刻** ### ✅ 优势 3:并行训练快 - 长序列一次性吞进去算,比 RNN 快得多 --- ## 四、两个必须处理的关键点 ### ⚠️ 关键点 1:位置编码不能省 - 自注意力本身无序,但**时序顺序至关重要**(打乱时间就废了) - 必须加 sin/cos 位置编码,或时间戳特征(星期/小时/节假日) ### ⚠️ 关键点 2:自回归预测必须加因果 Mask - 预测未来**绝不能偷看未来**! - 预测第 t 点时,加权平均**只能用 t 之前**的点 - 未来位置在 softmax 前设 -∞ → 权重变 0 - 否则:训练好看、实测崩盘(数据穿越 / 用了未来信息) --- ## 五、完整数据流图 ``` 历史序列 [x₁,x₂,...,xₜ](数值) │ Linear(1→d) ← 对应"单词Embedding" ▼ 向量序列 + 位置编码 ← 补上顺序信息 │ ▼ ┌─────────────────────────┐ │ Self-Attention │ ← 核心:加权平均 │ 1.Q·Kᵀ→softmax 得权重 │ │ 2.权重·V 得新表示 │ │ (+Mask 防偷看未来) │ ← 自回归时必加 ├─────────────────────────┤ │ Add & Norm + FeedForward│ └─────────────────────────┘ × N 层 │ ▼ 取最后时刻表示 Linear → 预测 [x̂ₜ₊₁, ...] ``` --- ## 六、时间序列专用的 Transformer 变种 直接套原版 Transformer 做时序有缺陷(O(n²) 计算量、对数值型不友好),所以有一堆改进: | 模型 | 核心改进 | |---|---| | **Informer** | 稀疏注意力(ProbSparse),降低长序列计算量 O(n²)→O(n·logn) | | **Autoformer** | 序列分解 + 自相关机制,抓周期性 | | **FEDformer** | 频域注意力,更好处理趋势/季节 | | **PatchTST** | 把时序切成"片段(patch)"当 token,效果强且简单 | | **iTransformer** | 把"变量"当 token(2024 年很火) | > 💡 **重要提醒**:2023 年论文《Are Transformers Effective for Time Series Forecasting?》指出,简单线性模型 **DLinear** 在不少基准上能打赢复杂 Transformer。 > **别迷信复杂模型**——时序里简单方法常常很能打,要做对比实验。 --- ## 七、本节小结 > 时序也是序列 → 注意力加权平均**自动发现该参考哪些历史时刻**(上周同天、近期趋势)。 > 两条铁律:**必加位置编码**(保住顺序)+ **自回归必加因果 Mask**(不偷看未来)。 > 📌 下一篇 `05_代码实战与可视化.md`:可运行代码 + 真实实验结果,亲眼看到加权平均。