Abstract

我们专注于利用深度学习解决单变量时间序列点预测问题。我们提出了一种深度神经架构,该架构基于后向和前向残差链接以及非常深的全连接层栈。该架构具有一系列理想特性:可解释、无需修改即可适用于广泛的目标领域、训练速度快。我们在几个著名的数据集上测试了所提出的架构,包括M3、M4和TOURISM竞赛数据集,其中包含来自不同领域的时间序列。我们展示了N-BEATS的两种配置在所有数据集上的一流性能,其预测准确率比统计基准提高了11%,比去年M4竞赛的冠军提高了3%,M4竞赛是神经网络和统计时间序列模型之间经过领域调整的手工制作的混合模型。我们模型的第一种配置没有采用任何特定于时间序列的组件,它在异构数据集上的表现有力地表明,与公认的观点不同,残差块等深度学习原语本身就足以解决各种预测问题。最后,我们展示了如何对所提出的架构进行扩展,以提供可解释的输出,而不会在准确性方面造成相当大的损失。

Background

时序预测方法在金融、工业等方面有着很多的应用,但是与计算机视觉和自然语言处理这样的深度学习技术已经很成熟的领域相比,在时序预测问题上,深度学习、机器学习方法目前仍无法超越传统的统计学方法,目前的SOTA模型依然是DL与统计学方法的混合模型。在这项工作中,作者希望探索纯深度学习方法在时序预测问题上的潜力,并试图通过向模型中添加适当的归纳偏置来使所提出的模型更具可解释性。

Contributions

  1. 深度神经架构:这是第一项通过经验证明在M3、M4和TOURISM数据集上不使用时间序列特定组件的纯DL优于成熟统计方法的工作,这为在 TS 预测中使用纯 ML 提供了长期缺失的概念证明,并增强了继续推进该领域研究的动力。
  2. 时间序列的可解释DL:除了准确性方面的优势,该文章的工作还了表明设计一种具有可解释输出的架构是可行的,可以用与传统分解技术(如 "季节性-趋势性"方法)相同的方式来使用这种架构。

Approach

模型架构
本文所提出的模型结构如上图所示,主要由基本块(左)堆叠而成,基本块堆叠得到一个栈,其输出由所有块的输出相加得到;多个栈串联得到完整的模型,最终输出为所有栈输出之和。模型训练输入采用长度为$nH$的滑动窗口,输出为长度为$H$的预测序列。

Basic Block

本文设计了简单且通用的基本块结构。第一个块的输入为原始的输入序列$x_{0}$,而后续的块的输入均为前一个块的残差$x_{l-1} - \hat{x}_{l-1}$($x_{l}$表示第$l$个块,$\hat{x_{{l}}}$表示第$l$个块的输出)。块内分为两个部分,输入的序列首先会经过一个全连接网络,该部分会产生拓展系数的后向预测器$\theta^b$和前向预测器$\theta^f$。所得的预测器接下来会分别进入到各自的基函数层$g^f$和$g^b$,这一部分会从训练数据中学习到各自的一组基函数,然后将拓展系数投影到不同的空间中得到最终的输出$\hat{x}$和$\hat{y}$。

$$ \begin{array} h_{1} = FC(x_{l}), \quad h_{2} = FC(h_{1}), \quad h_{3} = FC(h_{2}), \quad h_{4} = FC({h_{3}}) \\ \theta^f = \mathop{Linear}^f(h_{4}), \theta^b=\mathop{Linear}^b(h_{4}) \\ \hat{x_{l}} = g^b(\theta^b), \quad \hat{y_{l}} = g^f(\theta^f) \end{array} $$

这里的$FC$是标准的全连接层,其中采用了$\mathrm{ReLU}$激活函数。
该模块的设计目标如下:

  1. 预测前向拓展系数$\theta^f$,通过对$g^f$所提供的基向量加权来预测部分序列$\hat{y}$
  2. 预测后向拓展系数$\theta^b$,通过对$g^b$所提供的基向量加权来生成对输入$x$的估计值$\hat{x}$,以达到序列分解的目的,帮助下游块进行学习。

    Doubly Residual Stacking

    本文还设计了双残差堆叠的结构(中)。除了模型中的第一个块,下游的块所接收的输入全都是前一区块的残差;一个栈的最终结果由其中所有块的预测输出相加所得,表示如下:

    $$ x_{l} = x_{l-1} - \hat{x}_{l-1}, \quad y = \sum_{i=0}^{l} \hat{y}_{i} $$

    可以后向传播的过程看做是对序列的层次分解过程。前一个区块会学习如何近似输入的信息,得到h后向输出$\hat{x}_{l-1}$,因此$x_{l-1} - \hat{x}_{l-1}$所表示的就是当前块没有很好地拟合的部分,下游模块继续处理这些残差序列可以大大简化其预测任务。每一个块都会生成一个局部的预测结果,这些结果先是聚合为栈的结果,然后聚合为最终的输出结果,时序数据在这个过程中被从上至下地分层分解。

    Interpretability

    本文提出了两种架构,分别是通用的纯DL架构和引入了时序先验信息的可解释模型。

Genetic Architecture

在通用架构下,$g^f$和$g^b$仅仅是用于将FC层的输出进行投影的线性层,第$l$个块的输出可以表示如下:

$$ \hat{x}_{l} = V_{l}^b\theta_{l}^b + b_{l}^b, \quad \hat{y}=V_{l}^f\theta_{l}^f + b_{l}^f $$

FC层的输出基于线性层所学习到的一组基向量来预测分解后的部分序列,矩阵$V_{l}^f$的形状为$H \times \mathop{dim}(\theta_{l}^f)$,其中$H$代表预测域中的每一个离散时间点,$\mathop{dim}(\theta^f)$为基向量的索引,每一列是线性层所学习到的基向量,这些基向量都可以看作是时域下的波形,拓展系数将这些波形进行线性组合,得到预测的波形。由于没有对$V_{l}^f$施加任何的约束,这些波形完全是由网络自助学习到的,没有特定的形式,因此不具备可解释性

Interpretable Architecture

可解释性架构基于上述的通用架构,在其基础之上为基函数层引入了支持时间序列分解的先验信息。

  1. 趋势性:时间序列中的趋势性具有单调、波动小的特点,本论文将基函数层$g^f,g^b$约束为一个低阶(高阶多项式容易过拟合)的多项式函数来模拟这种特点

    $$ \hat{y} = \sum_{i=0}^p\theta^f $$

  2. 季节性:时间序列的季节性呈现出有规律的周期性波动的特点,本文使用傅里叶级数作为基函数来建模这种特点

    $$ \hat{y}_{s} = \sum_{i=0}^{\lfloor H / 2 - 1 \rfloor } \theta_{s}^f\cos(2\pi it) + \theta_{s}^f\sin(2\pi it) $$

    可解释性架构由两个栈组成:趋势性栈和季节性栈。基于前述的双残差堆叠方法,在经过第一个栈的时候,时间序列中的趋势性信息会被移除,使得两个栈可以专注处理自己的部分,并且趋势性和季节性的预测可以作为单独的输出,最终预测结果由两部分叠加得到。

Result

指标对比
模型指标对比结果
可视化预测结果:-G代表通用模型,-I代表可解释性模型
模型预测结果

Summary

NBeats是较早采用全MLP结构进行时间序列建模的模型,在网络中采用了MLP网络、残差拟合和basis建模的方法。模型包括多个stack,每个stack包含多个block,block是该网络的基本单元,每个block由多个全连接层构成,时间序列输入在一个block中首先被映射为expansion coeffecients,然后在通过basis映射回时间序列,最终输出一个预测的序列,通过为basis引入时序先验信息还可以实现模型的可解释性。每个块接受的输入都是上一层block的输入减去输出,以使每一层需要处理的都是上一侧无法正确拟合的残差,最终达到时间序列逐层分解的效果,每一层都会预测时间序列的一部分,最终的结果由各层输出叠加得到。

最后修改:2024 年 10 月 08 日
如果觉得我的文章对你有用,请随意赞赏