• 论文笔记: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) ztL:t+H=z(0)tL:t+H=N=1v()tL:t+H+z(N)tL:t+H,xtL:t=x(0)tL:t=N=1(u()tL:t+v()tL:t)+x(N)tL:t,ˆxt:t+H=ˆx(N)t:t+H=N=1(u()t:t+H+v()t:t+H) \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ϕ 确实可以捕捉到一部分的固有周期性
  • 相关阅读:
    AVL树的插入
    斐波那契数列和斐波那契数
    开发、调试环境搭建实践及把物理机做成虚拟机
    什么是堡垒机
    LeetCode——Weekly Contest 319
    vue中的事件处理
    Python3 语法简明教程
    2022年全球市场品牌保护和安全标签总体规模、主要生产商、主要地区、产品和应用细分研究报告
    5个优秀设计网站,素材、灵感一步到位。
    C#使用NPOI库实现Excel的导入导出操作——提升数据处理效率的利器
  • 原文地址:https://blog.csdn.net/szzheng/article/details/126955602