深色模式
第十章 神经网络时间序列模型
神经网络是自回归模型的非线性推广。本章讲 NNAR 的结构与超参数、为什么它不做趋势外推,以及它在小样本经济序列上常输给 ARIMA 的原因。
10.1 NNAR 的结构
NNAR(p, k) 指"自回归神经网络":用 p 个滞后作为输入,k 个隐藏节点,输出 1 个预测值。
数学形式为
ŷₜ = β₀ + Σⱼ₌₁ᵏ βⱼ · σ( aⱼ₀ + Σᵢ₌₁ᵖ aⱼᵢ yₜ₋ᵢ )
其中 σ 是激活函数(通常是 sigmoid:σ(z) = 1/(1 + e⁻ᶻ)),a 是输入层到隐藏层的权重,β 是隐藏层到输出层的权重。
结构层次:
- 输入层:p 个节点,对应 yₜ₋₁, …, yₜ₋p;
- 隐藏层:k 个节点,每个节点对输入做加权求和再过激活函数;
- 输出层:1 个节点,对隐藏层输出做线性加权求和。
若含季节项,则记为 NNAR(p, P, k)_m,输入增加季节滞后 yₜ₋m, yₜ₋₂m, …。
10.2 与 AR 模型的关系
★ NNAR 是 AR 模型的非线性推广,两者关系可以这样理解:
- 若没有隐藏层(或隐藏层只有 1 个节点且激活函数为恒等),NNAR 退化为线性 AR(p);
- 有隐藏层且激活函数非线性时,模型可以逼近任意连续函数(万能逼近定理);
- 因此 NNAR 的能力上限高于 AR,但需要更多样本才能实现。
这也解释了为什么 NNAR 在小样本上常常不如 ARIMA:它的参数更多、假设更弱,但数据量不足以支撑这种灵活性。
10.3 关键超参数
| 参数 | 含义 | 典型设置 | 影响 |
|---|---|---|---|
| p | 输入滞后个数(记忆长度) | 由线性 AR 的 AIC 最优阶给出,或网格搜索 | 太小则记忆不足,太大则参数爆炸 |
| k(size) | 隐藏节点数 | 常见默认 ≈ (p + P + 1)/2 | 控制非线性容量;太大易过拟合 |
| decay | 权重衰减系数(L2 正则) | 0 到 0.1 | 抑制过拟合,等价于对权重的惩罚 |
| maxit | 最大迭代次数 | 100 到 500 | 太小则未收敛,太大则耗时 |
| repeats | 重复训练次数 | 20 | 每次随机初始化,取平均以降方差 |
★ k 的选择是偏差–方差权衡的典型体现。 k 太小,模型接近线性,无法捕捉非线性;k 太大,参数过多,在有限样本上严重过拟合。经验做法是从 k ≈ (p+1)/2 开始,在验证集上比较几个候选。
★ decay 的作用。它给权重的平方和加上惩罚项,使权重倾向于取小值。效果是让网络输出更平滑、更接近线性,从而降低过拟合风险。代价是可能欠拟合。
10.4 为什么 NNAR 不做趋势外推
这是一个结构性特征,不是训练不足。
机制:隐藏层的输出经过 sigmoid,被压缩在 (0, 1) 区间内。输出层是线性组合,因此
ŷ ∈ [ β₀ − Σⱼ|βⱼ| , β₀ + Σⱼ|βⱼ| ]
这是一个与输入无关的常数界。 无论输入 yₜ₋ᵢ 涨到多高,输出都出不了这个范围。
后果:
- 若训练期数据在某区间内,模型基本只能在这个区间内预测;
- 遇到单边趋势(持续上涨或下跌)时,预测会系统性滞后;
- 多步预测时,预测值被反复代回输入,误差会沿同一方向累积。
★ 此外,nnetar 内部会把数据归一化到 [0, 1] 区间再训练,这进一步强化了"输出有界"的性质。所以NNAR 天生不适合有强趋势的序列,除非先做差分或退势。
10.5 缩放与信息泄漏
nnetar 内部对数据做 min-max 归一化:
y' = (y − min) / (max − min)
★ 这里有一个隐蔽的泄漏陷阱:如果对全样本计算 min 和 max,那么训练时就已经用到了测试期的极值信息。正确做法是每个预测原点只使用该原点之前的数据计算 min/max。
这个细节很容易被忽略,因为归一化通常被当作"预处理"而不是"建模步骤"。但在滚动预测中,每个原点的缩放参数都不同,必须逐点重算。
10.6 随机性与可复现
神经网络有三处随机性来源:
- 权重初始化(最常见);
- 样本顺序(若用随机梯度下降);
- 正则化中的随机丢弃(若用 dropout)。
处理办法:
- 固定随机种子。R 中用
set.seed()。注意nnetar内部会多次调用随机数生成器,所以种子的效果依赖调用顺序。 - 多次重复取平均(repeats)。这既降低方差,也让结果对单次初始化的偶然性不敏感。
- 种子设计。若做滚动预测,可以让种子随原点变化(如"固定常数 + 原点序号"),既保证每个原点可复现,又避免所有原点用同一组初始权重而产生系统性偏差。
★ 报告里必须写明种子。否则同样的代码在不同机器上会得到不同结果,可复现性无从谈起。
10.7 为什么神经网络在月度经济序列上常输给 ARIMA
四个原因:
- 样本量不足。月度数据几十年也只有几百个点,而神经网络的有效参数可能有几十个。参数/样本比过高。
- 信噪比低。经济与金融序列的随机成分占比高,非线性结构微弱,神经网络容易拟合噪声。
- 线性结构占主导。大量实证表明,多数经济时间序列的一阶、二阶矩结构已能被 ARIMA 捕捉,剩下的非线性部分不足以抵消额外的估计方差。
- 缺乏外推能力(见 10.4)。有趋势的序列上,这一点是致命伤。
★ 这不是"神经网络不行",而是"在这个数据条件下,简单模型的偏差–方差权衡更优"。M4、M5 竞赛的结论是:组合模型(含统计模型与机器学习的加权组合)表现最好,单一神经网络很少夺冠。
10.8 什么时候 NNAR 有优势
- 明显的非线性结构:阈值效应、饱和效应、状态依赖(如经济周期的扩张/收缩阶段)。
- 大样本:高频数据(分钟级、日级)或长历史。
- 多序列联合建模(global model):把成百上千条相关序列一起训练,共享参数,等效于扩大样本。
- 作为组合中的一员:即使单独表现不佳,若其误差与其他模型不相关,组合后仍能改善。
要点
- NNAR(p,k) 是 AR(p) 的非线性推广,无隐藏层时退化为线性 AR。
- 关键超参数是 p(记忆长度)、k(隐藏节点数)、decay(权重衰减)、repeats(重复平均)。
- 隐藏层的 sigmoid 使输出有常数上界,因此 NNAR 不做趋势外推,遇单边趋势会系统性滞后。
- 归一化的 min/max 必须只用训练前缀计算,否则是信息泄漏。
- 必须设随机种子并报告;repeats 取平均既降方差又提高稳健性。
- 小样本、低信噪比、强趋势的场景下,NNAR 常输给 ARIMA,这是偏差–方差权衡的结果。
自测 3 问
Q1:NNAR(p,k) 和 AR(p) 是什么关系?
点开看答案
NNAR(p,k) 是 AR(p) 的非线性推广:输入是前 p 个滞后值,隐藏层有 k 个节点。
没有隐藏层时,它就退化成线性 AR。
Q2:NNAR 为什么不能做趋势外推?
点开看答案
隐藏层的 sigmoid 输出有上下界,所以网络输出也有常数上界。
遇到单边趋势时,预测会系统性滞后,跟不上趋势。
Q3:为什么在小样本月度经济序列上,NNAR 常常输给 ARIMA?
点开看答案
这是偏差–方差权衡的结果:小样本、低信噪比、强趋势的场景下,神经网络参数多、方差大,又不能外推趋势。
另外要注意两点:归一化的 min/max 只能用训练段计算;要设随机种子并用 repeats 取平均,降方差、提高稳健性。