摘要
本文重点研究利用深度学习求解单变量时间序列点预测问题。本文提出了一种基于前向和后向残差链接和深度全连接层的深度神经网络结构。
该体系结构具有许多令人满意的特性,可解释性强,无需修改即可适用于广泛的目标领域,并且训练速度快。在包含不同领域时间序列的M3、M4和旅游竞赛数据集上对所提出的体系结构进行了测试。
对于所有数据集,我们展示了最先进的性能,在统计基准上提高了11%的预测准确性,在去年的M4比赛中提高了3%,M4比赛是一种领域调整的神经网络和统计时间序列模型之间的手工混合。
模型的第一个配置没有使用任何特定的时间序列组件,其在异构数据集上的性能强烈表明,与传统的观点相反,深度学习基本单元(如残差块)本身就足以解决广泛的预测问题。
最后,我们将演示如何对所提体系结构进行扩充,以提供可解释的输出,而不会造成相当大的准确性损失。
1.介绍
时间序列(TS)预测是机器学习(ML)的一个重要业务问题和富有成效的应用领域。它是现代商业的大多数方面的基础,包括库存控制和客户管理等关键领域,以及从生产和分销到财务和营销的商业计划。
因此,它具有相当大的经济影响,通常,每一个点的预测准确性将产生数百万美元盈利。
然而,不同于计算机视觉或自然语言处理,那里深度学习(DL)技术现在已经根深蒂固;在时许领域,仍然有证据表明ML和DL难以超过经典的统计TS预测方法(Makridakis et al., 2018a;b)。
例如,提交给M4比赛的6种“纯”ML方法的排名是23、37、38、48、54和57,总共60个条目**,大多数最好的排名方法是经典统计技术的集合**(Makridakis et al., 2018b)。
另一方面,M4竞赛获胜者(Smyl, 2020)是基于神经残差/注意力扩张LSTM堆栈与经典Holt- winters统计模型(Holt, 1957;2004;Winters, 1960年)的参数是可学习的。由于Smyl的方法严重依赖于Holt-Winters组件,Makridakis等人(2018b)进一步认为”混合方法和方法组合是提高预测精度和使预测更有价值的前进方向”。
在这项工作中,我们希望通过在TS预测的背景下探索纯DL架构的潜力来挑战这一结论。此外,在可解释DL架构设计的背景下,我们有兴趣回答以下问题:我们能否在模型中注入适当的归纳偏置,使其内部操作更具可解释性,即提取一些可解释的驱动因素,组合起来产生给定的预测?
1.1 贡献总结
- 深度神经体系结构:据我们所知,这是第一个以实践证明,在M3, M4和旅游数据集上,不使用时间序列特定组件的纯深度学习优于成熟的统计方法(在M4上,比统计基准提高11%,比最佳统计条目提高7%,比M4比赛冠军提高3%)。我们认为,这为纯ML在TS预测中的应用提供了一个长期缺失的概念证明,并加强了继续推进该领域研究的动力。
- 时间序列的可解释性深度学习:除了精度方面的好处外,我们还表明,设计一种具有可解释性输出的架构是可行的,这种输出可以被从业者以与传统分解技术(如“季节性趋势水平”方法)非常相似的方式使用(Cleveland et al., 1990)。
2.问题陈述
我们考虑研究离散时间下的单变量点预测问题。给定一个长度为h的预测视界,一个长度为t的观测序列历史
[
y
1
,
…
,
y
T
]
∈
R
T
\left[y_{1}, \ldots, y_{T}\right] \in \mathbb{R}^{T}
[y1,…,yT]∈RT,任务是去预测未来向量值
y
∈
R
H
=
[
y
T
+
1
,
y
T
+
2
,
…
,
y
T
+
H
]
\mathbf{y} \in \mathbb{R}^{H}=\left[y_{T+1}, y_{T+2}, \ldots, y_{T+H}\right]
y∈RH=[yT+1,yT+2,…,yT+H].为简单起见,我们将在后面考虑一个长度为t≤T的回看窗口,以最后一个观测值
y
T
y_T
yT作为模型输入,并表示为
x
∈
R
t
=
[
y
T
−
t
+
1
,
…
,
y
T
]
\mathbf{x} \in \mathbb{R}^{t}=\left[y_{T-t+1}, \ldots, y_{T}\right]
x∈Rt=[yT−t+1,…,yT].我们用y的预测来表示。下面的指标常用来评价预测绩效
这里m表示数据的周期(例如,12表示月序列)。MAPE(平均绝对百分比
误差)、MAPE(对称MAPE)和MASE (Mean Absolute scaling Error)是预测实践中标准的无标度度量: sMAPE用预测和地面真实值之间的平均误差来衡量误差,而MASE用naïve预测器的平均误差来衡量,naïve预测器简单地复制了过去m个周期的观测结果,从而考虑到了季节性.OWA(总体加权平均)是一个M4特定的指标,用于排名比赛(M4队,2018b),其中sape和MASE指标是标准化的,这样一个季节性调整naïve预测得到OWA = 1.0。
3. N-BEATS
我们的架构设计方法依赖于几个关键原则。首先,基础架构应该是简单和通用的,但具有表现力(深度). 第二,架构不应该依赖于特定于时间序列的特性工程或输入缩放。这些先决条件让我们探索在TS预测中纯DL架构的潜力。最后,作为探索可解释性的先决条件,体系结构应该是可扩展的,以使其输出具有可解释性。我们现在讨论如何将这些原则聚合到所提议的体系结构中。
3.1 基本block
提出的基本块具有分支架构,如图1(左)所示。在本节中,我们将重点详细描述第l块的操作(注意,为了简单起见,图1中删除了块索引 l)。’ 第l块接受其各自的输入 x ℓ {\mathbf{x}}_{\ell} xℓ,并输出两个向量 x ^ ℓ \widehat{\mathbf{x}}_{\ell} x ℓ 和 y ^ ℓ \widehat{\mathbf{y}}_{\ell} y ℓ.对于模型中的第一个块,其各自的输入 x ℓ {\mathbf{x}}_{\ell} xℓ是整个模型的输入——一定长度的历史回顾窗口,以最后一次测量的观测结束。我们设置输入窗口是预测视界H的倍数,通常为2H到7H.对于其余的块,它们的输入 x ℓ {\mathbf{x}}_{\ell} xℓ是前一个块的剩余输出。每一个块有两个输出: y ^ ℓ \widehat{\mathbf{y}}_{\ell} y ℓ,前向预测长度为H; x ^ ℓ \widehat{\mathbf{x}}_{\ell} x ℓ,对 x ℓ {\mathbf{x}}_{\ell} xℓ的最佳估计,也被称为‘backcast’给定函数空间约束:block可以用来估计信号。
在内部,基本块由两部分组成。第一部分是全连接网络,用来产生前向 θ ℓ f \theta_{\ell}^{f} θℓf
和后向 θ ℓ b \theta_{\ell}^{b} θℓb的膨胀系数预测器。第二部分由后向 g ℓ b g_{\ell}^{b} gℓb和 g ℓ f g_{\ell}^{f} gℓf基本层组成,用来接收前向 θ ℓ f \theta_{\ell}^{f} θℓf和后向 θ ℓ b \theta_{\ell}^{b} θℓb的膨胀系数。将它们在内部投影到基函数集上,并产生前一自然段定义的backcast x ^ ℓ \widehat{\mathbf{x}}_{\ell} x ℓ和预测输出 y ^ ℓ \widehat{\mathbf{y}}_{\ell} y ℓ。
'l -th块第一部分的运算用下列公式描述:
这里LINEAR层只是简单的线性映射层,如: θ ℓ f = W ℓ f h ℓ , 4 \theta_{\ell}^{f}=\mathbf{W}_{\ell}^{f} \mathbf{h}_{\ell, 4} θℓf=Wℓfhℓ,4,FC层是一个标准的全连接层,具有RELU非线性.以 F C ℓ , 1 \mathrm{FC}_{\ell, 1} FCℓ,1为例,我们有 h ℓ , 1 = RELU ( W ℓ , 1 x ℓ + b ℓ , 1 ) \mathbf{h}_{\ell, 1}=\operatorname{RELU}\left(\mathbf{W}_{\ell, 1} \mathbf{x}_{\ell}+\mathbf{b}_{\ell, 1}\right) hℓ,1=RELU(Wℓ,1xℓ+bℓ,1)。这部分结构的任务之一是去预测前向膨胀系数 θ ℓ f \theta_{\ell}^{f} θℓf,最终的目标是通过混合 g ℓ f g_{\ell}^{f} gℓf提供的基向量来优化局部预测 y ^ ℓ \widehat{\mathbf{y}}_{\ell} y ℓ的准确性。此外,这个子网络用 g ℓ b g_{\ell}^{b} gℓb预测后向扩展系数 θ ℓ b \theta_{\ell}^{b} θℓb,以产生 x ℓ {\mathbf{x}}_{\ell} xℓ的估计。最终目标是帮助下游区块,通过移除他们输入中对预测没有用的成分。
网络的第二部分通过基础层将扩展系数 θ ℓ f \theta_{\ell}^{f} θℓf和 θ ℓ b \theta_{\ell}^{b} θℓb映射到输出, y ^ ℓ = g ℓ f ( θ ℓ f ) and x ^ ℓ = g ℓ b ( θ ℓ b ) \widehat{\mathbf{y}}_{\ell}=g_{\ell}^{f}\left(\theta_{\ell}^{f}\right) \text { and } \widehat{\mathbf{x}}_{\ell}=g_{\ell}^{b}\left(\theta_{\ell}^{b}\right) y ℓ=gℓf(θℓf) and x ℓ=gℓb(θℓb)
其公式描述:
y ^ ℓ = ∑ i = 1 dim ( θ ℓ f ) θ ℓ , i f v i f , x ^ ℓ = ∑ i = 1 dim ( θ ℓ b ) θ ℓ , i b v i b \widehat{\mathbf{y}}_{\ell}=\sum_{i=1}^{\operatorname{dim}\left(\theta_{\ell}^{f}\right)} \theta_{\ell, i}^{f} \mathbf{v}_{i}^{f}, \quad \widehat{\mathbf{x}}_{\ell}=\sum_{i=1}^{\operatorname{dim}\left(\theta_{\ell}^{b}\right)} \theta_{\ell, i}^{b} \mathbf{v}_{i}^{b} y ℓ=i=1∑dim(θℓf)θℓ,ifvif,x ℓ=i=1∑dim(θℓb)θℓ,ibvib
这里 v i f \mathbf{v}_{i}^{f} vif和 v i b \mathbf{v}_{i}^{b} vib是预测和backcast的基向量, θ ℓ , i f \theta_{\ell, i}^{f} θℓ,if是第i个 θ ℓ f \theta_{\ell}^{f} θℓf. g ℓ b g_{\ell}^{b} gℓb和 g ℓ f g_{\ell}^{f} gℓf是提供丰富的集合 { v i f } i = 1 dim ( θ ℓ f ) and { v i b } i = 1 dim ( θ ℓ b ) \left\{\mathbf{v}_{i}^{f}\right\}_{i=1}^{\operatorname{dim}\left(\theta_{\ell}^{f}\right)} \text { and }\left\{\mathbf{v}_{i}^{b}\right\}_{i=1}^{\operatorname{dim}\left(\theta_{\ell}^{b}\right)} {vif}i=1dim(θℓf) and {vib}i=1dim(θℓb).这样,他们各自的输出可以被膨胀系数 θ ℓ f and θ ℓ b \theta_{\ell}^{f} \text { and } \theta_{\ell}^{b} θℓf and θℓb充分表示。如下所示, g ℓ b g_{\ell}^{b} gℓb和 g ℓ f g_{\ell}^{f} gℓf可以选择为可学习的,也可以设置为特定的函数形式,以反映特定问题的归纳偏差,以便适当地约束输出的结构。 g ℓ b g_{\ell}^{b} gℓb和 g ℓ f g_{\ell}^{f} gℓf的具体约束例子参见3.3
3.2 双残差堆叠
经典的残差网络结构在将结果传递给下一层之前,先将层堆栈的输入添加到它的输出中.Huang等人(2017)提出的DenseNet体系结构扩展了这一原理,从每个堆栈的输出引入额外的连接到紧随其后的每个其他堆栈的输入。这些方法在提高深度架构的可训练性方面提供了明显的优势。在这项工作的背景下,它们的缺点是它们导致了难以解释的网络结构。本文提出一种新的分层双残差拓扑,如图1(中间和右边)所示。所提出的体系结构有两个剩余分支,一个运行在每一层的backcast预测上,另一个运行在每一层的预测分支上。其操作用以下公式描述:
x ℓ = x ℓ − 1 − x ^ ℓ − 1 , y ^ = ∑ ℓ y ^ ℓ \mathbf{x}_{\ell}=\mathbf{x}_{\ell-1}-\widehat{\mathbf{x}}_{\ell-1}, \quad \widehat{\mathbf{y}}=\sum_{\ell} \widehat{\mathbf{y}}_{\ell} xℓ=xℓ−1−x ℓ−1,y =∑ℓy ℓ
如前所述,在第一个块的特殊情况下,它的输入是模型级输入x, x1≡x.对于所有其他块,backcast residual 分支 x ℓ \mathbf{x}_{\ell} xℓ可以被认为是运行输入信号的顺序分析。前一个块去掉了信号 x ℓ − 1 \mathbf{x}_{\ell-1} xℓ−1中它能很好近似的部分,使下游块的预测工作更容易。这种结构也有利于更多的流体梯度反向传播。更重要的是,每个块输出的部分预测 y ^ ℓ \widehat{\mathbf{y}}_{\ell} y ℓ首先在堆栈级别(stack level )聚合,然后在整个网络级别(network level)聚合,提供了一种分层分解。最终的预测是所有部分预测的总和。在通用模型上下文中,当栈允许每个层有任意的 g ℓ b g_{\ell}^{b} gℓb和 g ℓ f g_{\ell}^{f} gℓf时,这使得网络对梯度流更加透明。在一种特殊情况下,在堆栈上共享 g ℓ b g_{\ell}^{b} gℓb和 g ℓ f g_{\ell}^{f} gℓf时,通过有意义的部分预测的聚合实现可解释性是至关重要的。
3.3 可解释性
基于 g ℓ b g_{\ell}^{b} gℓb和 g ℓ f g_{\ell}^{f} gℓf的选择,我们提出了两种结构配置。一种是通用DL,另一种则是通过某种归纳偏差来增强其可解释性。
通用体系结构(generic architecture )不依赖于TS-specific 的知识。我们将 g ℓ b g_{\ell}^{b} gℓb和 g ℓ f g_{\ell}^{f} gℓf设置为前一层输出的线性投影。在这种情况下,块l的输出描述为 y ^ ℓ = V ℓ f θ ℓ f + b ℓ f , x ^ ℓ = V ℓ b θ ℓ b + b ℓ b \widehat{\mathbf{y}}_{\ell}=\mathbf{V}_{\ell}^{f} \theta_{\ell}^{f}+\mathbf{b}_{\ell}^{f}, \quad \widehat{\mathbf{x}}_{\ell}=\mathbf{V}_{\ell}^{b} \theta_{\ell}^{b}+\mathbf{b}_{\ell}^{b} y ℓ=Vℓfθℓf+bℓf,x ℓ=Vℓbθℓb+bℓb.
该模型的解释是,图1所示的基本构建块中的FC层,通过网络学习 V ℓ f \mathbf{V}_{\ell}^{f} Vℓf,来预测分解后的部分预测 y ^ ℓ \widehat{\mathbf{y}}_{\ell} y ℓ。矩阵 V ℓ f \mathbf{V}_{\ell}^{f} Vℓf拥有维度 H × dim ( θ ℓ f ) H \times \operatorname{dim}\left(\theta_{\ell}^{f}\right) H×dim(θℓf).因此, V ℓ f \mathbf{V}_{\ell}^{f} Vℓf的第一个维在预测域中具有离散时间index的解释。矩阵的第二维对基函数的指标有解释, θ ℓ f \theta_{\ell}^{f} θℓf是这个基的展开系数。因此, V ℓ f \mathbf{V}_{\ell}^{f} Vℓf的列可以被是为时域的波形分解。由于没有额外的约束作用于 V ℓ f \mathbf{V}_{\ell}^{f} Vℓf,因此,用深度模型学习到的波形变换没有内在的结构(在我们的实验中不明显),这就导致了 y ^ ℓ \widehat{\mathbf{y}}_{\ell} y ℓ“不可解释”.
可解释结构可以重新使用图1中的整体架构方法来构建,并通过在堆栈级别向基本层添加结构来构建。
预测从业者经常将时间序列分解为趋势和季节性,如STL (Cleveland等人,1990年)和X13-ARIMA(美国人口普查局,2013年)。本文建议在模型中设计趋势和季节性分解,以使堆栈输出更容易解释。注意,对于通用模型,栈的概念是不必要的,为了清晰起见,省略了栈级索引。现在我们将考虑堆栈级和块级索引。例如, y ^ s , ℓ \widehat{\mathbf{y}}_{s, \ell} y s,ℓ表示block l 的stack s的部分预测。
趋势模型 趋势的一个典型特征是,大多数时候它是一个单调函数,或者至少是一个缓慢变化的函数。为了模拟这种行为,我们建议约束 g s , ℓ b g_{s, \ell}^{b} gs,ℓb和 g s , ℓ f g_{s, \ell}^{f} gs,ℓf
为小阶次p的多项式,即在预测窗口缓慢变化的函数:
y ^ s , ℓ = ∑ i = 0 p θ s , ℓ , i f t i \widehat{\mathbf{y}}_{s, \ell}=\sum_{i=0}^{p} \theta_{s, \ell, i^{f}}^{t^{i}} y s,ℓ=i=0∑pθs,ℓ,ifti
这里时间向量 t = [ 0 , 1 , 2 , … , H − 2 , H − 1 ] T / H \mathbf{t}=[0,1,2, \ldots, H-2, H-1]^{T} / H t=[0,1,2,…,H−2,H−1]T/H定义在从0到(H−1)/H的离散网格上,提前预测H步.或者,矩阵形式的趋势预测将是:
y ^ s , ℓ t r = T θ s , ℓ f \widehat{\mathbf{y}}_{s, \ell}^{t r}=\mathbf{T} \theta_{s, \ell}^{f} y s,ℓtr=Tθs,ℓf
其中 θ s , ℓ f \theta_{s, \ell}^{f} θs,ℓf是多项式系数,它是由第l层的stack s的FC网络描述的(公式1);
T = [ 1 , t , … , t p ] \mathbf{T}=\left[\mathbf{1}, \mathbf{t}, \ldots, \mathbf{t}^{p}\right] T=[1,t,…,tp]是t的幂矩阵。若p很小,如:p=2或3,这迫使 y ^ s , ℓ r \widehat{\mathbf{y}}_{s, \ell}^{r} y s,ℓr为mimic trend 。
季节性模型 季节性的典型特征是它是一种有规律的、周期性的、反复出现的波动。因此,为了建模季节性,我们建议约束 g s , ℓ b g_{s, \ell}^{b} gs,ℓb和 g s , ℓ f g_{s, \ell}^{f} gs,ℓf,属于周期函数类, i.e. y t = y t − Δ \text { i.e. } y_{t}=y_{t-\Delta} i.e. yt=yt−Δ,其中, Δ \Delta Δ为季节性周期。对周期函数建模的一个自然选择是傅立叶级数: y ^ s , ℓ = ∑ i = 0 ⌊ H / 2 − 1 ⌋ θ s , ℓ , i f cos ( 2 π i t ) + θ s , ℓ , i + ⌊ H / 2 ⌋ f sin ( 2 π i t ) \widehat{\mathbf{y}}_{s, \ell}=\sum_{i=0}^{\lfloor H / 2-1\rfloor} \theta_{s, \ell, i}^{f} \cos (2 \pi i t)+\theta_{s, \ell, i+\lfloor H / 2\rfloor}^{f} \sin (2 \pi i t) y s,ℓ=∑i=0⌊H/2−1⌋θs,ℓ,ifcos(2πit)+θs,ℓ,i+⌊H/2⌋fsin(2πit)
季节性预测的矩阵形式如下: y ^ s , ℓ seas = S θ s , ℓ f \widehat{\mathbf{y}}_{s, \ell}^{\text {seas }}=\mathbf{S} \theta_{s, \ell}^{f} y s,ℓseas =Sθs,ℓf
其中, θ s , ℓ f \theta_{s, \ell}^{f} θs,ℓf是傅里叶系数,该参数通过第l层的stack s 的FC网络描述(公式 1 ) S = [ 1 , cos ( 2 π t ) , … cos ( 2 π ⌊ H / 2 − 1 ⌋ t ) ) , sin ( 2 π t ) , … , sin ( 2 π ⌊ H / 2 − 1 ⌋ t ) ) ] \mathbf{S}=[\mathbf{1}, \cos (2 \pi \mathbf{t}), \ldots \cos (2 \pi\lfloor H / 2-1\rfloor \mathbf{t})), \sin (2 \pi \mathbf{t}), \ldots, \sin (2 \pi\lfloor H / 2-1\rfloor \mathbf{t}))] S=[1,cos(2πt),…cos(2π⌊H/2−1⌋t)),sin(2πt),…,sin(2π⌊H/2−1⌋t))]是一个正弦波矩阵。预测 y ^ s , ℓ seas \widehat{\mathbf{y}}_{s, \ell}^{\operatorname{seas}} y s,ℓseas是一个周期函数,该周期函数模仿典型的季节模式。
整个可解释架构由两个堆栈组成:趋势堆栈之后是季节性堆栈。结合了forecast和backcast的双残差stacking造成了:1.在数据进入季节性堆栈前,趋势成分应该从输入数据x中移除。2.趋势和季节性的部分预测可作为单独的可解释输出。在结构上,每个堆栈由几个块组成,这些块之间连接着图1所示的残余连接,每个块共享各自的、不可学习的 g s , ℓ b g_{s, \ell}^{b} gs,ℓb和 g s , ℓ f g_{s, \ell}^{f} gs,ℓf。趋势和季节性的块数都是3。我们发现,在共享 g s , ℓ b g_{s, \ell}^{b} gs,ℓb和 g s , ℓ f g_{s, \ell}^{f} gs,ℓf的基础上,在堆栈中跨块共享所有权重会带来更好的验证性能。
3.4集成
在m4比赛中,所有的顶级参赛选手都使用了Ensembling 。我们也依靠Ensembling来进行比较。我们发现,集成Ensembling是一种比常用的替代方法(如dropout或l2范数惩罚)更强大的正则化技术。这些方法的加入改善了单个模型,但却损害了整体的性能。 ensemble的核心属性是多样性。我们使用多种多样的资源来构建一个整体。首先,集成模型拟合在三个不同的度量标准上:sMAPE、MASE和MAPE。其次,对于每个视界H,在不同长度的输入窗口上训练单个模型:2H;3H,…,7H,总共6个窗口长度。因此,整个ensemble展示了一个多尺度的方面。最后,我们进行bagging操作(Breiman,1996),通过包括用不同随机初始化训练的模型。我们总共使用180个模型来报告测试集上的结果(集合大小的ablation 请参考附录B)。我们用中值作为集成聚合函数。