DEPTS: Deep Expansion Learning for Periodic Time Series Forecasting
文章目录
现有研究中遇到的问题
目前周期性时间序列 (PTS) 预测存在两大阻碍:
- 复杂周期依赖性 (complicated periodic dependencies):时间序列信号对相邻历史数据和固有周期性由复杂依赖现象;而现有的研究多忽略了信号的周期性,或是仅用一些简单的模型建模
- 多周期叠加性 (diversified periodic compositions):真实世界的时间序列多由多个振幅、频率不同的周期性信号叠加而来,现有研究多要求在确定参数前,事先确定周期长度
本文提出的DEPTS模型就是为了解决这两个问题而设计的。
DEPTS模型
解耦公式
x t : t + H = f θ ( x t − L : t , z t − L : t + H ) + ϵ t : t + H , z t = g ϕ ( t ) (3) \mathbf x_{t:t+H} = f_\theta(\mathbf x_{t-L:t},\mathbf z_{t-L:t+H})+\mathbf{\epsilon}_{t:t+H},\quad z_t = g_\phi(t) \tag{3} xt:t+H=fθ(xt−L:t,zt−L:t+H)+ϵt:t+H,zt=gϕ(t)(3)
其中:
- z t ∈ R 1 z_t \in \mathbb R^1 zt∈R1:标量(与单变量时间序列中的 x t x_t xt 保持一致)
- ϵ t : t + H = [ ϵ t , ⋯ , ϵ t + H − 1 ] \mathbf{\epsilon}_{t:t+H} = [\epsilon_t,\cdots,\epsilon_{t+H-1}] ϵt:t+H=[ϵt,⋯,ϵt+H−1]:iid高斯噪声矢量
- 扩展模块 f θ : R L × R L + H → R H f_\theta:\R^L \times \R ^{L+H} \rightarrow \R^H fθ:RL×RL+H→RH:用来建模未来信号 x t : t + H \mathbf x_{t:t+H} xt:t+H 对观测值 x t − L : t \mathbf x_{t-L:t} xt−L:t 以及相应的周期状态 z t − L : t + H \mathbf z_{t-L:t+H} zt−L:t+H 的复杂依赖性
- 周期模块 g ϕ : R 1 → R 1 g_\phi:\R^1 \to \R^1 gϕ:R1→R1:用来产生时刻 t t t 的周期状态 z t z_t zt
扩展模块 f θ f_\theta fθ
残差分支
f θ f_\theta fθ 共包含 N N N 层。对于其中的第 ℓ \ell ℓ 层,有3个残差分支:
- x t − L : t ( ℓ ) \mathbf x^{(\ell)}_{t-L:t} xt−L:t(ℓ): x t − L : t \mathbf x_{t-L:t} xt−L:t 经过 ℓ \ell ℓ 层扩展后的残差项
- z t − L : t + H ( ℓ ) \mathbf z^{(\ell)}_{t-L:t+H} zt−L:t+H(ℓ): z t − L : t + H \mathbf z_{t-L:t+H} zt−L:t+H 经过 ℓ \ell ℓ 层扩展后的残差项
- x ^ t : t + H ( ℓ ) \hat{\mathbf x}^{(\ell)}_{t:t+H} x^t:t+H(ℓ): ℓ \ell ℓ 层过后的累计预测值
这3个残差分支由2个参数化块指定:
- 局部块 f θ l ( ℓ ) l f_{\theta_l(\ell)}^l fθl(ℓ)l(其中 θ l ( ℓ ) \theta_l(\ell) θl(ℓ) 为对应的参数)
- 周期块 f θ p ( ℓ ) p f^p_{\theta_p(\ell)} fθp(ℓ)p(其中 θ p ( ℓ ) \theta_p(\ell) θp(ℓ) 为对应的参数)
扩展模块的设计
初始化
- x t − L : t ( 0 ) = x t − L : t \mathbf x^{(0)}_{t-L:t}=\mathbf x_{t-L:t} xt−L:t(0)=xt−L:t
- z t − L : t + H ( 0 ) = z t − L : t + H \mathbf z^{(0)}_{t-L:t+H}=\mathbf z_{t-L:t+H} zt−L:t+H(0)=zt−L:t+H
- x ^ t : t + H ( 0 ) = 0 \hat{\mathbf{x}}_{t: t+H}^{(0)}=\mathbf 0 x^t:t+H(0)=0
周期状态的更新
-
将上一层的周期状态 z t − L : t + H ( ℓ − 1 ) \mathbf z^{(\ell-1)}_{t-L:t+H} zt−L:t+H(ℓ−1) 输入周期块 f θ p ( ℓ ) p f^p_{\theta_p(\ell)} fθp(ℓ)p,得到周期状态的第 ℓ \ell ℓ 个扩展项 v t − L : t + H ( ℓ ) \mathbf v^{(\ell)}_{t-L:t+H} vt−L:t+H(ℓ)
-
v t − L : t + H ( ℓ ) \mathbf v^{(\ell)}_{t-L:t+H} vt−L:t+H(ℓ) 分为两部分:
- 回看分量 v t − L : t ( ℓ ) \mathbf v^{(\ell)}_{t-L:t} vt−L:t(ℓ):通过 ( x t − L : t ( ℓ − 1 ) − v t − L : t ( ℓ ) ) \left(\mathbf x^{(\ell-1)}_{t-L:t} - \mathbf v^{(\ell)}_{t-L:t}\right) (xt−L:t(ℓ−1)−vt−L:t(ℓ)),移除观测值中的周期效应,并送入局部块 f θ p ( ℓ ) p f^p_{\theta_p(\ell)} fθp(ℓ)p 中
- 预测分量 v t : t + H ( ℓ ) \mathbf v^{(\ell)}_{t:t+H} vt:t+H(ℓ):作为第 ℓ \ell ℓ 个周期块的预测部分
-
更新周期状态: z t − L : t + H ( ℓ ) = z t − L : t + H ( ℓ − 1 ) − v t − L : t + H ( ℓ ) \mathbf z^{(\ell)}_{t-L:t+H} = \mathbf z^{(\ell-1)}_{t-L:t+H} - \mathbf v^{(\ell)}_{t-L:t+H} zt−L:t+H(ℓ)=zt−L:t+H(ℓ−1)−vt−L:t+H(ℓ)
观测值的更新
- 将
x
~
t
−
L
:
t
(
ℓ
)
=
x
t
−
L
:
t
(
ℓ
−
1
)
−
v
t
−
L
:
t
(
ℓ
)
\tilde{\mathbf{x}}_{t-L: t}^{(\ell)}=\mathbf{x}_{t-L: t}^{(\ell-1)}-\mathbf{v}_{t-L: t}^{(\ell)}
x~t−L:t(ℓ)=xt−L:t(ℓ−1)−vt−L:t(ℓ) 输入局部块
f
θ
l
(
ℓ
)
l
f_{\theta_l(\ell)}^l
fθl(ℓ)l,得到:
- 第 ℓ \ell ℓ 层的局部回看分量 u t − L : t ( ℓ ) \mathbf u^{(\ell)}_{t-L:t} ut−L:t(ℓ)
- 第 ℓ \ell ℓ 层的局部预测分量 u t : t + H ( ℓ ) \mathbf u^{(\ell)}_{t:t+H} ut:t+H(ℓ)
- 更新观测值: x t − L : t ( ℓ ) = x t − L : t ( ℓ − 1 ) − v t − L : t ( ℓ ) − u t − L ( ℓ ) \mathbf{x}_{t-L: t}^{(\ell)}=\mathbf{x}_{t-L: t}^{(\ell-1)}-\mathbf{v}_{t-L: t}^{(\ell)}-\mathbf{u}_{t-L}^{(\ell)} xt−L:t(ℓ)=xt−L:t(ℓ−1)−vt−L:t(ℓ)−ut−L(ℓ)
累积预测值的更新
x ^ t : t + H ( ℓ ) = x ^ t : t + H ( ℓ − 1 ) + u t : t + H ( ℓ ) + v t : t + H ( ℓ ) \hat{\mathbf{x}}_{t: t+H}^{(\ell)}=\hat{\mathbf{x}}_{t: t+H}^{(\ell-1)}+\mathbf{u}_{t: t+H}^{(\ell)}+\mathbf{v}_{t: t+H}^{(\ell)} x^t:t+H(ℓ)=x^t:t+H(ℓ−1)+ut:t+H(ℓ)+vt:t+H(ℓ)(目的是将第 ℓ \ell ℓ 层的预测拆分为两部分)
扩展模块的输出
z t − L : t + H = z t − L : t + H ( 0 ) = ∑ ℓ = 1 N v t − L : t + H ( ℓ ) + z t − L : t + H ( N ) , x t − L : t = x t − L : t ( 0 ) = ∑ ℓ = 1 N ( u t − L : t ( ℓ ) + v t − L : t ( ℓ ) ) + x t − L : t ( N ) , x ^ t : t + H = x ^ t : t + H ( N ) = ∑ ℓ = 1 N ( u t : t + H ( ℓ ) + v t : t + H ( ℓ ) ) (4) \begin{aligned} \mathbf{z}_{t-L: t+H}&=\mathbf{z}_{t-L: t+H}^{(0)}=\sum_{\ell=1}^N \mathbf{v}_{t-L: t+H}^{(\ell)}+\mathbf{z}_{t-L: t+H}^{(N)}, \\ \mathbf{x}_{t-L: t}&=\mathbf{x}_{t-L: t}^{(0)}=\sum_{\ell=1}^N\left(\mathbf{u}_{t-L: t}^{(\ell)}+\mathbf{v}_{t-L: t}^{(\ell)}\right)+\mathbf{x}_{t-L: t}^{(N)}, \\ \hat{\mathbf{x}}_{t: t+H}&=\hat{\mathbf{x}}_{t: t+H}^{(N)}=\sum_{\ell=1}^N\left(\mathbf{u}_{t: t+H}^{(\ell)}+\mathbf{v}_{t: t+H}^{(\ell)}\right) \end{aligned} \tag{4} zt−L:t+Hxt−L:tx^t:t+H=zt−L:t+H(0)=ℓ=1∑Nvt−L:t+H(ℓ)+zt−L:t+H(N),=xt−L:t(0)=ℓ=1∑N(ut−L:t(ℓ)+vt−L:t(ℓ))+xt−L:t(N),=x^t:t+H(N)=ℓ=1∑N(ut:t+H(ℓ)+vt:t+H(ℓ))(4)
其中,
- z t − L : t + H ( N ) \mathbf{z}_{t-L: t+H}^{(N)} zt−L:t+H(N) 和 x t − L : t ( N ) \mathbf{x}_{t-L: t}^{(N)} xt−L:t(N) 为与预测无关的余项
- ∑ ℓ = 1 N v t : t + H ( ℓ ) \sum_{\ell=1}^N\mathbf{v}_{t: t+H}^{(\ell)} ∑ℓ=1Nvt:t+H(ℓ) 表示仅根据周期状态做出的的预测 → global periodicity
- ∑ ℓ = 1 N u t : t + H ( ℓ ) \sum_{\ell=1}^N\mathbf{u}_{t: t+H}^{(\ell)} ∑ℓ=1Nut:t+H(ℓ) 表示根据局部历史观测值做出的预测 → local momenta
扩展模块的神经网络结构
局部块
- 输入:排除掉了周期效应后的第 ℓ \ell ℓ 层的局部观测值 x ~ t − L : t ( ℓ ) = x t − L : t ( ℓ − 1 ) − v t − L : t ( ℓ ) \tilde{\mathbf{x}}_{t-L: t}^{(\ell)}=\mathbf{x}_{t-L: t}^{(\ell-1)}-\mathbf{v}_{t-L: t}^{(\ell)} x~t−L:t(ℓ)=xt−L:t(ℓ−1)−vt−L:t(ℓ)
- 将 x ~ t − L : t ( ℓ ) \tilde{\mathbf{x}}_{t-L: t}^{(\ell)} x~t−L:t(ℓ) 传入全连接层(4层)
- 通过两个线性映射函数得到回看系数 c b ( ℓ ) \mathbf c^{(\ell)}_{\mathrm b} cb(ℓ) 和预测系数 c f ( ℓ ) \mathbf c^{(\ell)}_{\mathrm f} cf(ℓ)
- 分别送入基本层(文中选用线性映射函数),得到回看分量 u t − L : t ( ℓ ) \mathbf u^{(\ell)}_{t-L:t} ut−L:t(ℓ) 和局部预测分量 u t : t + H ( ℓ ) \mathbf u^{(\ell)}_{t:t+H} ut:t+H(ℓ)
周期块
- 输入:上一层的周期状态 z t − L : t + H ( ℓ − 1 ) \mathbf z^{(\ell-1)}_{t-L:t+H} zt−L:t+H(ℓ−1)
- 将 z t − L : t + H ( ℓ − 1 ) \mathbf z^{(\ell-1)}_{t-L:t+H} zt−L:t+H(ℓ−1) 传入全连接层(单层)
- 通过两个线性映射函数得到回看分量 v t − L : t ( ℓ ) \mathbf v^{(\ell)}_{t-L:t} vt−L:t(ℓ) 和预测分量 v t : t + H ( ℓ ) \mathbf v^{(\ell)}_{t:t+H} vt:t+H(ℓ)
周期模块 g ϕ g_\phi gϕ
基本思想
将 g ϕ g_\phi gϕ 建模为 K K K 个余弦函数之和: g ϕ ( t ) = A 0 + ∑ k = 1 K A k cos ( 2 π F k t + P k ) g_\phi(t)=A_0+\sum_{k=1}^K A_k \cos \left(2 \pi F_k t+P_k\right) gϕ(t)=A0+∑k=1KAkcos(2πFkt+Pk)
参数初始化
-
构造代替函数: g ϕ M ( t ) = A 0 + ∑ k = 1 K M k ⋅ A k cos ( 2 π F k t + P k ) g^M_\phi(t)=A_0+\sum_{k=1}^K M_k \cdot A_k \cos \left(2 \pi F_k t+P_k\right) gϕM(t)=A0+∑k=1KMk⋅Akcos(2πFkt+Pk),其中 M k ∈ { 0 , 1 } M_k \in \{0,1\} Mk∈{0,1}, M = { M 1 , ⋯ , M k } M = \{M_1,\cdots,M_k\} M={M1,⋯,Mk}
-
两步最优化:
M ∗ = arg min ∥ M ∥ 1 < = J L D val ( g ϕ ∗ M ( t ) ) , ϕ ∗ = arg min ϕ L D train ( g ϕ ( t ) ) (5) M^*=\underset{\|M\|_1<=J}{\arg \min }\ \mathcal{L}_{D_{\text {val}}}\left(g_{\phi^*}^M(t)\right), \quad \phi^*=\underset{\phi}{\arg \min } \ \mathcal{L}_{D_{\text {train}}}\left(g_\phi(t)\right) \tag{5} M∗=∥M∥1<=Jargmin LDval(gϕ∗M(t)),ϕ∗=ϕargmin LDtrain(gϕ(t))(5)- 内层:在训练集 D train D_{\text {train}} Dtrain 上,获取使得 z t z_t zt 与 x t x_t xt 差异最小的一组参数 ϕ ∗ \phi^* ϕ∗
- 外层:在验证集 D val D_{\text {val}} Dval 上,获取能选择具有良好泛化的某些周期掩码 M ∗ M^* M∗(超参数 J J J 控制最多选择多少个周期)
参数初始化的近似算法
-
将完整的PTS信号划分为训练集 D train = x 0 : T v D_{\text {train}}=\mathbf x_{0:T_\mathrm v} Dtrain=x0:Tv 和验证集 D val = x T v : T D_{\text {val}} =\mathbf x_{T_\mathrm v:T} Dval=xTv:T
-
对训练集执行DCT变换,选取振幅最大的 K K K 个余弦基底,将参数合并起来作为 ϕ ~ ∗ = { A ~ 0 ∗ } ∪ { A ~ k ∗ , F ~ k ∗ , P ~ k ∗ } k = 1 K \tilde{\phi}^*=\left\{\tilde{A}_0^*\right\} \cup\left\{\tilde{A}_k^*, \tilde{F}_k^*, \tilde{P}_k^*\right\}_{k=1}^K ϕ~∗={A~0∗}∪{A~k∗,F~k∗,P~k∗}k=1K
-
初始化 M ~ ∗ = { 0 , ⋯ , 0 } \tilde M^*=\{0,\cdots,0\} M~∗={0,⋯,0}
-
按振幅值降序遍历 K K K 个余弦基底,采用贪婪策略,根据第 k k k 个周期能否进一步减少验证集上的损失来来为 M k M_k Mk 分配1或0。
具体来说,假设按振幅值降序排列的 K K K 个余弦基底索引为 k k k,对于贪婪算法的第 j j j 步( j = 1 , 2 , ⋯ , K j = 1,2,\cdots, K j=1,2,⋯,K),替代函数:
g ϕ ∗ M j ( t ) = M j ⋅ A j ∗ cos ( 2 π F j ∗ t + P j ∗ ) + [ A 0 ∗ + ∑ k = 1 j M ~ k ∗ ⋅ A k ∗ cos ( 2 π F k ∗ t + P k ∗ ) ] (9) g^{M_j}_{\phi^*}(t)=M_j \cdot A^*_j\cos\left(2πF^*_j t +P^*_j\right) + \left[A^*_0+\sum_{k=1}^j \tilde M^*_k \cdot A^*_k \cos \left(2 \pi F^*_k t+P^*_k\right)\right] \tag{9} gϕ∗Mj(t)=Mj⋅Aj∗cos(2πFj∗t+Pj∗)+[A0∗+k=1∑jM~k∗⋅Ak∗cos(2πFk∗t+Pk∗)](9)
其中, M ~ 1 ∗ , M ~ 2 ∗ , ⋯ , M ~ j − 1 ∗ \tilde M^*_1,\tilde M^*_2,\cdots,\tilde M^*_{j-1} M~1∗,M~2∗,⋯,M~j−1∗ 是在前面的贪婪步骤中确定的;当前步骤的目标是通过下面的公式确定 M j M_j Mj:
M ~ j ∗ = arg min M j ∈ { 0 , 1 } L D v a l ( g ϕ ∗ M j ( t ) ) (10) \tilde M ^*_j=\underset{M_j\in \{0,1\}}{\arg\min}\ \mathcal L_{D_{\mathrm{val}}}\left(g^{M_j}_{\phi^*}(t)\right) \tag{10} M~j∗=Mj∈{0,1}argmin LDval(gϕ∗Mj(t))(10)
其中 L \mathcal L L 为Dynamic Time Warping。
最终贪婪算法在选取了 J J J 个周期(或遍历了全部 K K K 个周期)后停止,自此获得了 M ~ ∗ \tilde M^* M~∗ 的近似解。 -
令 M = M ~ ∗ M = \tilde M^* M=M~∗, ϕ = ϕ ~ ∗ \phi = \tilde \phi^* ϕ=ϕ~∗
-
按照解耦公式 ( 3 ) (3) (3) 对 ϕ \phi ϕ 和 θ \theta θ 进行联合学习
实验结果
实验要回答的问题
- 为什么要根据PTS信号的固有周期性来建模PTS信号的复杂依赖性?
- 与SOTA模型相比,使用DEPTS预测能获得多少额外的收益?
- 如何解释 f θ f_\theta fθ 和 g ϕ g_\phi gϕ 的作用?
评估指标
Normalised deviation & normalised root mean square error:
nd
=
1
∣
Ω
∣
∑
(
i
,
t
)
∈
Ω
∣
x
t
i
−
x
^
t
i
∣
1
∣
Ω
∣
∑
(
i
,
t
)
∈
Ω
∣
x
t
i
∣
,
nrmse
=
1
∣
Ω
∣
∑
(
i
,
t
)
∈
Ω
(
x
t
i
−
x
^
t
i
)
2
1
∣
Ω
∣
∑
(
i
,
t
)
∈
Ω
∣
x
t
i
∣
(6)
\text{nd}=\frac{\frac{1}{|\Omega|} \sum_{(i, t) \in \Omega}\left|x_t^i-\hat{x}_t^i\right|}{\frac{1}{|\Omega|} \sum_{(i, t) \in \Omega}\left|x_t^i\right|}, \quad \text { nrmse }=\frac{\sqrt{\frac{1}{|\Omega|} \sum_{(i, t) \in \Omega}\left(x_t^i-\hat{x}_t^i\right)^2}}{\frac{1}{|\Omega|} \sum_{(i, t) \in \Omega}\left|x_t^i\right|} \tag{6}
nd=∣Ω∣1∑(i,t)∈Ω∣
∣xti∣
∣∣Ω∣1∑(i,t)∈Ω∣
∣xti−x^ti∣
∣, nrmse =∣Ω∣1∑(i,t)∈Ω∣
∣xti∣
∣∣Ω∣1∑(i,t)∈Ω(xti−x^ti)2(6)
合成数据集上的实验结果
- 对N-BEATS和DEPTS都进行了调优,但N-BEATS与DEPTS仍有较大的性能差距 → 证明了周期性建模的重要性
- 随着周期依赖变得更加复杂(从线性到立方),DEPTS的领先幅度逐渐增加 → 进一步证明了建模高阶周期效应的重要性
真实数据集上的实验结果
根据数据集的周期效应的复杂度的不同,DEPTS相对于N-BEATS的领先幅度也有所不同,但多数时间里DEPTS都能给出稳定的性能增益。
解读
- DEPTS有两种不同的分解策略:最终预测可能更多来自于global periodicity,也可能更多来自于local momenta
- g ϕ g_\phi gϕ 确实可以捕捉到一部分的固有周期性