论文笔记:DEPTS: Deep Expansion Learning for Periodic Time Series Forecasting

DEPTS: Deep Expansion Learning for Periodic Time Series Forecasting

现有研究中遇到的问题

目前周期性时间序列 (PTS) 预测存在两大阻碍:

  • 复杂周期依赖性 (complicated periodic dependencies):时间序列信号对相邻历史数据和固有周期性由复杂依赖现象;而现有的研究多忽略了信号的周期性,或是仅用一些简单的模型建模
  • 多周期叠加性 (diversified periodic compositions):真实世界的时间序列多由多个振幅、频率不同的周期性信号叠加而来,现有研究多要求在确定参数前,事先确定周期长度

本文提出的DEPTS模型就是为了解决这两个问题而设计的。

DEPTS模型

image-20220915215915833

解耦公式

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θ(xtL:t,ztL:t+H)+ϵt:t+H,zt=gϕ(t)(3)

其中:

  • z t ∈ R 1 z_t \in \mathbb R^1 ztR1:标量(与单变量时间序列中的 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+H1]:iid高斯噪声矢量
  • 扩展模块 f θ : R L × R L + H → R H f_\theta:\R^L \times \R ^{L+H} \rightarrow \R^H fθ:RL×RL+HRH:用来建模未来信号 x t : t + H \mathbf x_{t:t+H} xt:t+H 对观测值 x t − L : t \mathbf x_{t-L:t} xtL:t 以及相应的周期状态 z t − L : t + H \mathbf z_{t-L:t+H} ztL:t+H 的复杂依赖性
  • 周期模块 g ϕ : R 1 → R 1 g_\phi:\R^1 \to \R^1 gϕ:R1R1:用来产生时刻 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} xtL:t() x t − L : t \mathbf x_{t-L:t} xtL:t 经过 ℓ \ell 层扩展后的残差项
  • z t − L : t + H ( ℓ ) \mathbf z^{(\ell)}_{t-L:t+H} ztL:t+H() z t − L : t + H \mathbf z_{t-L:t+H} ztL: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() 为对应的参数)
image-20220916164129563
扩展模块的设计
初始化
  • x t − L : t ( 0 ) = x t − L : t \mathbf x^{(0)}_{t-L:t}=\mathbf x_{t-L:t} xtL:t(0)=xtL: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} ztL:t+H(0)=ztL: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} ztL: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} vtL:t+H()

  • v t − L : t + H ( ℓ ) \mathbf v^{(\ell)}_{t-L:t+H} vtL:t+H() 分为两部分:

    • 回看分量 v t − L : t ( ℓ ) \mathbf v^{(\ell)}_{t-L:t} vtL: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) (xtL:t(1)vtL: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} ztL:t+H()=ztL:t+H(1)vtL: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~tL:t()=xtL:t(1)vtL:t() 输入局部块 f θ l ( ℓ ) l f_{\theta_l(\ell)}^l fθl()l,得到:
    • ℓ \ell 层的局部回看分量 u t − L : t ( ℓ ) \mathbf u^{(\ell)}_{t-L:t} utL: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)} xtL:t()=xtL:t(1)vtL:t()utL()
累积预测值的更新

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} ztL:t+HxtL:tx^t:t+H=ztL:t+H(0)==1NvtL:t+H()+ztL:t+H(N),=xtL:t(0)==1N(utL:t()+vtL:t())+xtL:t(N),=x^t:t+H(N)==1N(ut:t+H()+vt:t+H())(4)

其中,

  • z t − L : t + H ( N ) \mathbf{z}_{t-L: t+H}^{(N)} ztL:t+H(N) x t − L : t ( N ) \mathbf{x}_{t-L: t}^{(N)} xtL: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
扩展模块的神经网络结构
image-20220919100914442
局部块
  • 输入:排除掉了周期效应后的第 ℓ \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~tL:t()=xtL:t(1)vtL:t()
  • x ~ t − L : t ( ℓ ) \tilde{\mathbf{x}}_{t-L: t}^{(\ell)} x~tL: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} utL: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} ztL:t+H(1)
  • z t − L : t + H ( ℓ − 1 ) \mathbf z^{(\ell-1)}_{t-L:t+H} ztL:t+H(1) 传入全连接层(单层)
  • 通过两个线性映射函数得到回看分量 v t − L : t ( ℓ ) \mathbf v^{(\ell)}_{t-L:t} vtL:t() 和预测分量 v t : t + H ( ℓ ) \mathbf v^{(\ell)}_{t:t+H} vt:t+H()

周期模块 g ϕ g_\phi gϕ

image-20220919103749661
基本思想

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=1KMkAkcos(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=M1<=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)=MjAjcos(2πFjt+Pj)+[A0+k=1jM~kAkcos(2πFkt+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~j1 是在前面的贪婪步骤中确定的;当前步骤的目标是通过下面的公式确定 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)Ω xtix^ti , nrmse =∣Ω∣1(i,t)Ω xti ∣Ω∣1(i,t)Ω(xtix^ti)2 (6)

合成数据集上的实验结果

image-20220920145653332
  • 对N-BEATS和DEPTS都进行了调优,但N-BEATS与DEPTS仍有较大的性能差距 → 证明了周期性建模的重要性
  • 随着周期依赖变得更加复杂(从线性到立方),DEPTS的领先幅度逐渐增加 → 进一步证明了建模高阶周期效应的重要性

真实数据集上的实验结果

image-20220920151745142

根据数据集的周期效应的复杂度的不同,DEPTS相对于N-BEATS的领先幅度也有所不同,但多数时间里DEPTS都能给出稳定的性能增益。

解读

image-20220920152840464
  • DEPTS有两种不同的分解策略:最终预测可能更多来自于global periodicity,也可能更多来自于local momenta
  • g ϕ g_\phi gϕ 确实可以捕捉到一部分的固有周期性
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值