Skip to content

第十章 神经网络时间序列模型 ​

神经网络是自回归模型的非线性推广。本章讲 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ₜ₋ᵢ 涨到多高,输出都出不了这个范围。

后果:

  1. 若训练期数据在某区间内,模型基本只能在这个区间内预测;
  2. 遇到单边趋势(持续上涨或下跌)时,预测会系统性滞后;
  3. 多步预测时,预测值被反复代回输入,误差会沿同一方向累积。

★ 此外,nnetar 内部会把数据归一化到 [0, 1] 区间再训练,这进一步强化了"输出有界"的性质。所以NNAR 天生不适合有强趋势的序列,除非先做差分或退势。

10.5 缩放与信息泄漏 ​

nnetar 内部对数据做 min-max 归一化:

y' = (y − min) / (max − min)

★ 这里有一个隐蔽的泄漏陷阱:如果对全样本计算 min 和 max,那么训练时就已经用到了测试期的极值信息。正确做法是每个预测原点只使用该原点之前的数据计算 min/max。

这个细节很容易被忽略,因为归一化通常被当作"预处理"而不是"建模步骤"。但在滚动预测中,每个原点的缩放参数都不同,必须逐点重算。

10.6 随机性与可复现 ​

神经网络有三处随机性来源:

  1. 权重初始化(最常见);
  2. 样本顺序(若用随机梯度下降);
  3. 正则化中的随机丢弃(若用 dropout)。

处理办法:

  • 固定随机种子。R 中用 set.seed()。注意 nnetar 内部会多次调用随机数生成器,所以种子的效果依赖调用顺序。
  • 多次重复取平均(repeats)。这既降低方差,也让结果对单次初始化的偶然性不敏感。
  • 种子设计。若做滚动预测,可以让种子随原点变化(如"固定常数 + 原点序号"),既保证每个原点可复现,又避免所有原点用同一组初始权重而产生系统性偏差。

★ 报告里必须写明种子。否则同样的代码在不同机器上会得到不同结果,可复现性无从谈起。

10.7 为什么神经网络在月度经济序列上常输给 ARIMA ​

四个原因:

  1. 样本量不足。月度数据几十年也只有几百个点,而神经网络的有效参数可能有几十个。参数/样本比过高。
  2. 信噪比低。经济与金融序列的随机成分占比高,非线性结构微弱,神经网络容易拟合噪声。
  3. 线性结构占主导。大量实证表明,多数经济时间序列的一阶、二阶矩结构已能被 ARIMA 捕捉,剩下的非线性部分不足以抵消额外的估计方差。
  4. 缺乏外推能力(见 10.4)。有趋势的序列上,这一点是致命伤。

★ 这不是"神经网络不行",而是"在这个数据条件下,简单模型的偏差–方差权衡更优"。M4、M5 竞赛的结论是:组合模型(含统计模型与机器学习的加权组合)表现最好,单一神经网络很少夺冠。

10.8 什么时候 NNAR 有优势 ​

  • 明显的非线性结构:阈值效应、饱和效应、状态依赖(如经济周期的扩张/收缩阶段)。
  • 大样本:高频数据(分钟级、日级)或长历史。
  • 多序列联合建模(global model):把成百上千条相关序列一起训练,共享参数,等效于扩大样本。
  • 作为组合中的一员:即使单独表现不佳,若其误差与其他模型不相关,组合后仍能改善。

要点 ​

  1. NNAR(p,k) 是 AR(p) 的非线性推广,无隐藏层时退化为线性 AR。
  2. 关键超参数是 p(记忆长度)、k(隐藏节点数)、decay(权重衰减)、repeats(重复平均)。
  3. 隐藏层的 sigmoid 使输出有常数上界,因此 NNAR 不做趋势外推,遇单边趋势会系统性滞后。
  4. 归一化的 min/max 必须只用训练前缀计算,否则是信息泄漏。
  5. 必须设随机种子并报告;repeats 取平均既降方差又提高稳健性。
  6. 小样本、低信噪比、强趋势的场景下,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 取平均,降方差、提高稳健性。