三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

《给第一次学模型的小白:时间序列预测全模型通俗演义》

《给第一次学模型的小白:时间序列预测全模型通俗演义》

目录

《准备工作:时间序列 + 神经网络零件》

一、MLP 多层感知机——最直白,但“脸盲”

1.1 生活类比

1.2 它到底怎么做的

1.3 为什么说“致命短板:分不清先后顺序”

二、RNN 循环神经网络——有记忆,但像“传话游戏”

2.1 生活类比

2.2 核心思想

2.3 致命缺陷:梯度消失

2.4 数模忠告

三、LSTM 长短期记忆网络——给记忆装上三道“闸门”

3.1 通俗原理

3.2 为什么它解决了梯度消失?

3.3 特点

四、GRU——LSTM 的精简高效版

4.1 通俗原理

4.2 对比 LSTM

4.3 使用建议

五、Seq2Seq + Attention——为多步预测而生

5.1 为什么需要它

5.2 编码器(Encoder)

5.3 解码器(Decoder)

5.4 Attention 注意力机制(提分神器)

六、TCN 时序卷积网络——并行高速抓特征

6.1 为什么 LSTM/GRU 的串行慢?

6.2 核心技巧:因果卷积 + 膨胀卷积

6.3 优点

6.4 缺点

七、Transformer / Informer / Autoformer——超长时序的天花板

7.1 核心创新:自注意力(Self-Attention)

7.2 例子

7.3 为什么要变体?

7.4 Informer

7.5 Autoformer

八、N-BEATS 和 DeepAR——另辟蹊径的利器

8.1 N-BEATS(纯全连接,专门单变量)

8.2 DeepAR(概率预测,高分杀招)

九、总结:小白如何记忆和使用这些模型


《准备工作:时间序列 + 神经网络零件》

(1) 时间序列数据
就是按照时间顺序记下来的数字。比如:每 15 分钟的电网负荷、每日销售额、每小时的温度。格式就是:

时间点1数值, 时间点2数值, ……, 时间点 t 数值

(2)滑动窗口(极其重要)
预测的时候,我们不会把全部历史都扔进去,而是截取一段“回看窗口”去预测“未来一段”。
比如:用过去 24 小时的负荷,预测未来 12 小时的负荷

  • look_back = 24(回看步长)

  • predict_step = 12(预测步长)

这是所有时序预测的通用操作,可以理解为:我只能看过去连续一段的录像,然后猜接下来发生什么

(3)神经元、权重和偏置

  • 一个神经元就是个最简单的计算单元:接收几个数字,加权求和,再加个偏置,最后通过“开关”(激活函数)输出一个新数字。

  • 权重 W 和偏置 b就是模型的记忆,训练就是反复调整这些数字让预测变准

(4)激活函数

  • Sigmoid:把数字压到 0~1 之间,适合当“门”的控制信号。0 代表关,1 代表开

  • Tanh:把数字压到 -1~1 之间,常用来生成记忆内容或输出

(5)逐元素相乘
不是矩阵乘法是两个形状一样的矩阵,相同位置的数字两两相乘。这种操作在门控里面频繁出现,用来决定“保留多少、丢掉多少”。

有了这些基础,我们就可以把每个模型剖开来看。


一、MLP 多层感知机——最直白,但“脸盲”

1.1 生活类比

想象你把 24 张照片一次性扔进一个黑箱机器,机器不看照片顺序,只看所有照片的整体色彩分布,然后猜下一张照片是什么
即使你把第 1 张和第 24 张对调,机器的猜测几乎不变——因为它根本不知道“先后”这个概念。

1.2 它到底怎么做的

把过去 24 小时的数值直接“摊平”成一串长向量,塞进网络:

输入层 → 隐藏层 1 → 隐藏层 2 → 输出未来 12 小时的预测值。

整个过程没有任何按时间处理的结构,仅仅是一些矩阵乘法和激活函数的叠加。(如图所示)

1.3 为什么说“致命短板:分不清先后顺序”

因为输入的顺序被彻底忽略了。时间序列的核心就是趋势和先后关联,MLP 完全无视这一点。

  • 优点:代码简单,训练飞快,几乎不会报错。特别适合做比赛的“基线模型”,用来证明你后面复杂模型确实比最简单的好。

  • 缺点:没有时间观念,长序列预测一塌糊涂。

  • 什么时候用:极短期的预测(比如只预测下一步),或者数据量极小时可以作为保底方案。


二、RNN 循环神经网络——有记忆,但像“传话游戏”

2.1 生活类比

你正在一部连续剧,每看一集就根据之前记得的剧情来猜下一集
看第1集 → 生成记忆;
看第2集 →带着第1集的记忆一起看,更新记忆
看第3集 →带着前2集的记忆继续更新……
这就叫“按时间顺序,一步一步读取”。

2.2 核心思想

RNN 的公式里总有一个“隐藏状态 h(如图的Hidden Layer),这个 h 就是记忆。每个时间步,"新输入与旧记忆结合,产生新记忆,然后再输出"
所以它天然就能捕捉时间先后信息。

2.3 致命缺陷:梯度消失

还是用传话游戏举例:

30 天前的一句话经过上千个人悄悄话传递,到最后已完全走样,再也无法影响今天的预测。

在数学上,早期数据的梯度在反向传播时被连续相乘变得极小,模型根本学不到很久以前的信息

2.4 数模忠告

比赛千万别直接上原生 RNN,直接跳到它的改进版 LSTM 或 GRU。


三、LSTM 长短期记忆网络——给记忆装上三道“闸门”

3.1 通俗原理

LSTM 不光有短时记忆 h,还有一个专门运载长期记忆的“细胞状态 C”。它设计了三个门来控制记忆:

  1. 遗忘门:决定旧记忆里哪些要丢掉。就像忘记上周无关的琐碎小事。

  2. 输入门:挑选此刻重要的新信息,写入长期记忆 C。

  3. 输出门:根据当前情况,从长期记忆 C 里挑选此刻需要输出的部分,生成短时记忆,并用来做预测。

门的工作原理就是:Sigmoid 输出 0~1 的信号,与向量逐元素相乘,0 代表“完全丢掉”,1 代表“完全保留”。

3.2 为什么它解决了梯度消失?

因为细胞状态 C 在时间上可以像一条高速公路,梯度可以几乎无损地往回传几百步。重要的长期记忆被“锁”住,不被反复冲刷稀释。这就是为什么 LSTM 能记住很久以前的关键信息。

3.3 特点

  • 三个门,参数多,训练稍慢。

  • 在复杂、数据量足够的情况下精度上限高。

  • 曾是时序预测绝对的主力。


四、GRU——LSTM 的精简高效版

4.1 通俗原理

工程师发现,遗忘门和输入门有点重复,就把它们合并成一个“更新门”,再加上一个“重置门”。

  • 更新门:一次性决定“保留多少旧记忆,纳入多少新信息”。

  • 重置门:决定“在生成新候选记忆之前,先丢掉多少过时的旧记忆”。

相当于把 LSTM 的三个开关简化成两个开关,细胞状态和隐藏状态也合并了,结构更轻便。

4.2 对比 LSTM

  • LSTM:3 个门,参数多,训练更耗时,但复杂数据集可能上限更高。

  • GRU:2 个门,参数减少近一半,训练更快;在绝大多数普通时序任务上,效果几乎和 LSTM 一样,甚至有时更好。

4.3 使用建议

如果数据不是特别极端,从 GRU 开始往往性价比最高。比赛里常把 LSTM 和 GRU 都试一下,择优选择。


五、Seq2Seq + Attention——为多步预测而生

5.1 为什么需要它

前面说的 LSTM/GRU 如果直接输出未来 12 步,有两种简单做法:

  • 一次输出 12 个值,效果一般

  • 一步一步递推(用上一步预测值作为下一步输入),容易误差累积

Seq2Seq 提供了一种更优雅的“编码-解码”框架,专门用于输入一个序列,输出另一个序列

5.2 编码器(Encoder)

一个 LSTM 或 GRU 把过去 24 小时的数据全部读完,最后打包成一个“上下文向量”(记忆总结)。

5.3 解码器(Decoder)

另一个 LSTM,以上下文向量为起点,逐步生成未来 12 小时的值每生成一步,都可以把前一步预测当作输入,维持时序连贯性

5.4 Attention 注意力机制(提分神器)

注意力机制是一种让模型聚焦于输入中重要信息的技术,通过加权方式突出关键特征,从而提升模型性能。

单纯把全部记忆压成一个固定向量,长序列时会丢失细节

Attention 让解码器在生成未来第 k 步时,可以自动回看编码器所有时间步的记忆并给重要的时刻打高分。

例子:预测国庆节用电量,模型会自己学会重点看去年国庆那几天的数据,而忽略普通工作日。
这种动态加权,极大地提升了长序列多步预测的精度。


六、TCN 时序卷积网络——并行高速抓特征

6.1 为什么 LSTM/GRU 的串行慢?

LSTM 必须按时间顺序从第1步算到第24步,每一步都等上一步完成,无法并行,速度受限。
TCN 说:我用卷积也能抓时间依赖,而且能同时算所有时间点。

6.2 核心技巧:因果卷积 + 膨胀卷积

  • 因果卷积:严格保证在计算 t 时刻输出时,绝不会偷看 t+1 及以后的未来数据。

  • 膨胀(空洞)卷积:通过在卷积核里跳着采样,让感受野指数级增大
    比如膨胀系数 d=4,卷积核会取第 1, 5, 9, 13 时刻的数据,一步就跨过很长时间间隔。

6.3 优点

  • 所有时间步可以并行计算,训练速度远快于 LSTM/GRU

  • 中等长度的时序预测,效果优秀,结构稳定。

6.4 缺点

  • 对于上千步的超长序列,它的感受野虽大,但建模全局依赖仍不如自注意力机制。


七、Transformer / Informer / Autoformer——超长时序的天花板

7.1 核心创新:自注意力(Self-Attention)

不再需要一步一步传递记忆,而是让每个时间点直接和所有时间点建立联系。
计算“查询 Query、键 Key、值 Value”,通过注意力分数矩阵,每个位置都可以从整个序列里提取上下文。

7.2 例子

预测 8 月 8 日用电量,自注意力会一下子参考去年 8 月 8 日、上月 8 日、上周 8 日的数据,不受距离限制。

7.3 为什么要变体?

原版 Transformer 计算量和内存消耗都是 O(L²),L 是序列长度,几千步时直接爆显存。

7.4 Informer

针对长序列,它利用注意力分数的稀疏性——其实只有少数时间点起关键作用。通过稀疏注意力机制大幅降低计算开销,让几千步超长时序变得可行。

7.5 Autoformer

专门为带有明显周期性(如每天峰谷、四季变化)的序列设计。
它主张把时间序列拆成三部分:

  • 长期趋势

  • 周期波动

  • 随机噪声
    用深度分解模块分别预测再合并,在电力负荷、气象等强周期数据上表现极佳。

⚠️ 笔记忠告:样本少于 1500 条,千万不要上手 Transformer 类模型。它们参数多、易过拟合,训练集效果完美,测试集一塌糊涂。


八、N-BEATS 和 DeepAR——另辟蹊径的利器

8.1 N-BEATS(纯全连接,专门单变量)

结构像一个人工拆解趋势的流水线:

  • 第一个块去拟合整体“上涨/下跌”趋势;

  • 拟合完,把这个趋势从原序列里减掉,残差交给下一个块;

  • 下一个块去拟合每天的周期性起伏;

  • 再交给下一个块抓残余的噪声……
    最后把所有块的预测叠加起来。
    它完全不使用 RNN 或自注意力,只靠全连接层和特殊的残差连接。
    适合场景:只有一条时序曲线,比如单条每日用电量、单品种销量预测,往往效果惊人。

8.2 DeepAR(概率预测,高分杀招)

普通模型只会输出一个固定数值:“明天负荷 = 130kW”。
DeepAR 不输出定值,而是预测一个高斯分布的参数:均值 μ 和标准差 σ。
训练时使用高斯对数似然损失,让模型学习数据的波动范围。
预测时你不仅得到期望值,还能直接得到95% 置信区间,比如“负荷大概率在 125~135 之间”。
对比赛的价值:涉及库存规划、风险预警、灾害评估的赛题,加入置信区间直接拉高论文深度。评委眼前一亮。


九、总结:小白如何记忆和使用这些模型

模型一句话记忆法推荐使用场景
MLP摊平即扔,无视顺序基线对照、极短预测
RNN按顺序读,但记忆越传越丢不要用,直接学 LSTM/GRU
LSTM三道门锁住长期记忆复杂长时间序列,精度优
GRU两道门,更轻更快大多数场景,效果≈LSTM,速度更快
Seq2Seq+Attn编码读取,解码输出,注意力自动找重点多步预测,比如预测未来12小时/天
TCN膨胀卷积并行抓远距离关系需要训练快、中等长度序列
Transformer全连接全局视野,但吃数据大数据超长序列,要求最高精度
Informer注意力精简化,专治几千步长序超长时序预测
Autoformer趋势+周期分解,对季节周期极度敏感强周期数据,如负荷、气温
N-BEATS逐块扣趋势、周期、噪声,纯 MLP 结构单变量清晰周期序列
DeepAR输出分布和置信区间,不是单点值需要概率预测、风险量化的任务
← 返回列表