【译文】Time Series Forecasting With Deep Learning: A Survey
为了适应不同领域的时间序列数据集的多样性,许多深度学习架构被开发出来。在这篇文章中,我们调研了一般的用于单步和多步预测的encoder-decoder设计,描述了时间信息是如何被组合到每个模型的预测当中的。接下来,我们突出介绍了混合深度学习的最新进展。混合深度学习结合了充分研究的统计模型和神经网络结构,以提高两种单一方法的表现。最后,我们概述了一些深度学习用于帮助利用时间序列数据做决策的方式。
1. Introduction
时间序列建模有史以来就是学术研究的关键领域——构成了气候建模,生命科学和医药,以及商业决策和金融等领域应用不可分割的一部分。虽然传统方法专注于利用了领域专业知识的参数模型——比如自回归,指数平滑或者结构化时间序列模型——现代机器学习方法提供了一种完全数据驱动的学习时间变化的方法。随着最近的数据可获得性和算力的增长,机器学习已经成为下一代时间序列预测模型的重要组成部分。
受到图像分类,自然语言处理和强化学习的显而易见的成功的激励,深度学习最近流行起来。通过利用反映了基础数据集的微小差别的bespoke architectural假设——或者inductive bias,深度神经网络可以学习复杂的数据表示,这减轻了对人工特征工程和模型设计的需要。可利用的开源反向传播框架也简化了网络训练,允许了网络结构和损失函数的客制化。
考虑到不同领域的时间序列问题的多样性,出现了许多神经网络设计选择。本文中,我们总结了运用深度神经网络做时间序列预测的一般方法。首先,我们描述了最先进的一般预测问题的技术——比如多步预测和不确定性预测。第二,我们分析了新出现的混合模型,该模型结合了特别领域的数量模型和深度学习组件,以提高预测表现。接下来,我们总结了两种关键的将神经网络用于帮助决策的方法,就是通过可解释性和反事实预测方法。最后,我们总结了一些有希望的利用深度学习做时间序列预测的未来研究方向——也就是以连续时间和分等级模型的形式。
虽然我们竭尽全力去提供综合的现代深度学习方法的概述,我们要说明,我们的综述不可能无所不包。事实上,丰富的自动化时间序列预测方法已经存在——包括自动化参数模型选择,传统机器学习方法比如核回归和支持向量回归。此外,高斯过程已经被广泛用于时间序列预测——以及最近的扩展包括深度高斯过程和深度学习中通过神经过程的并行。此外,之前的神经网络模型历史上也被用于时间序列应用。
2. Deep Learning Architectures for Time Series Forecasting
时间序列预测模型预测未来的目标值\(y_{i,t}\),也即时刻\(t\)的实体\(i\)的值。每个实体代表一个逻辑的时间信息的聚合——比如气候学中单一气象站的度量,或者医药学中不同患者的重要标志——并且可以同时被观测到。举个简单的例子,单步预测模型有如下形式:
该公式中,\(\hat{y}_{i,t+1}\)是模型预测值,\(y_{i,t-k:t}=\{y_{i,t-k},...,y_{i,t}\}\),\(\mathbf{x}_{i,t-k:t}=\{\mathbf{x}_{i,t-k},...,\mathbf{x}_{i,t}\}\)分别是回看窗口\(k\)上的目标的观测和外来输入,\(s_i\)是静态的实体相关的元数据(比如:传感器位置),\(f(.)\)是模型学习到的预测函数。虽然在这篇综述中我们关注于单变量预测(也就是单一目标值),我们要说明,在不损失一般性的情况下,同样的组件可以扩展到多变量模型。为了简化标注,我们在之后的部分中省略掉实体的下标\(i\),除非有明确的要求。
(a) Basic Building Blocks
通过利用一系列的非线性层以构建间接的特征表示,深度神经网络学习到预测关系。在时间序列的设定下,这可以被看作将相关历史信息编码到隐变量\(z_t\),而最终产生的预测结果仅仅使用了\(\mathbf{z}_t\):
该公式中,\(g_{enc}(.)\),\(g_{dec}(.)\)分别是编码和解码函数,值得一提的是下标\(i\)被移除了以简化标注(举个例子,\(y_{i,t}\)用\(y_t\)取代)。这些编码器和解码器因此组成了深度学习架构的基本构件,对网络的选择决定了我们的模型可以学习到的关系种类。在这一部分,我们检查了现代编码器的设计选择(如图),以及他们和传统时间模型的关系。另外,我们探索了一般的时间序列预测应用中的网络输出和损失函数。
(i) Convolutional Neural Networks
传统上CNN(卷积神经网络)提取空间维度上不变的局部关系。为了使CNN适用于时间序列数据集,研究人员使用多层的因果卷积——换句话说,为保证只有过去的信息用于预测的卷积滤波。对一个隐藏层\(l\)的中间特征,每个因果卷积滤波有如下的形式:
该公式中,\(\mathbf h_t^l \in R^{H_{in}}\)是\(l\)层在时间\(t\)的中间状态,\(*\)是卷积操作符,\(\mathbf W(l,\tau)\in R^{H_{out}\times H_{in}}\)是\(l\)层确定的滤波权重,\(A(.)\)是一个激活函数,比如sigmoid函数,表示任何特别架构的非线性处理。对一共使用\(L\)个卷积层的CNN来说,我们要说明,编码器输出是\(\mathbf z_t=\mathbf h_t^L\)。
考虑到一维的情况,我们可以看到因果卷积和数字信号处理中的有限冲激响应十分相似。这导致CNN学到了时间关系上的两个含义。首先,符合标准CNN的空间不变性假设,时序CNN假设关系是具有时间不变性的——所有时间里在每个时间步用同样的滤波器权重集合。另外,CNN只能够用确定的回看窗口,或者感受野,做出预测。因此,感受野大小\(k\)需要被小心地调整以确保模型可以利用所有相关的历史信息。毫无价值的是,加上线性激活函数的单一的因果CNN层和自回归模型相同。
Dilated convolutions
当长期依赖很明显时,使用标准卷积层在计算上很具有挑战性,因为参数数量和感受野大小直接相关。为了减轻这种情况,现代架构经常使用空洞卷积,扩展公式如下:
在公式中,\(\lfloor. \rfloor\)是下取整操作符,\(d_l\)是特别层的空洞率。空洞卷积因此可以被看作低一层特征的下采样版本的卷积——减小分辨率以合并之前远处的信息。因此,通过提高每一层的空洞率,空洞卷积可以逐渐地聚集不同时间块的信息,允许更多的历史更高效地被利用。以WaveNet的架构为例,空洞率以2的指数增加,并且每一层相邻时间块聚集起来——允许在\(l\)层利用到\(2^l\)时间步。
(ii) Recurrent Neural Networks
RNN(循环神经网络)在历史上被用于序列建模,在各种自然语言处理任务上结果很强。考虑到时间序列数据自然地被认为是输入和目标序列,许多基于RNN的方法被开发用于时间预测应用。核心上,RNN包含一个内部记忆状态,它扮演着过去信息的简单总结。每个时间步遇到新的观测值时,记忆状态被递归更新,也就是说:
该公式中,\(\mathbf z_t\in R^H\)是RNN的隐内部状态,\(v(.)\)是学习到的记忆更新函数。举个例子,Elman RNN,作为为最简单的RNN种类,有下面的形式:
该公式中,\(\mathbf W_.\),\(\mathbf b_.\)分别是网络的线性权重和偏移,\(\gamma_y(.)\)和\(\gamma_z(.)\)是网络激活函数。值得一提的是,RNN不需要像CNN那样明确要求回看窗口。从信号处理的角度,主要的循环层——换句话说,上面的公式——因此类似于非线性版本的无限冲激响应滤波。
Long Short-term Memory
由于无限会看窗口,过去的RNN种类深受数据中长期依赖限制的困扰——由于梯度爆炸和梯度弥散。直观来说,这可以看作记忆状态的一种共鸣形式。LSTM(长短期记忆网络)因此被开发出来,通过改善梯度流以处理这些限制。通过使用细胞状态(cell state)存储长期信息达到这一点,细胞状态通过以下一系列门调制出来:
该公式中,\(\mathbf z_{t-1}\)是LSTM的隐状态,\(\sigma(.)\)是sigmoid激活函数。这些门如下修改隐状态和细胞状态:
该公式中,\(\odot\)是逐元素(哈达玛)乘法,\(\tanh(.)\)是tanh激活函数。
Relationship to Bayesian Filtering
贝叶斯滤波和RNN在对隐状态递归更新上很相似。贝叶斯滤波,比如Kalman滤波,通过对充足的隐状态数据更新进行推演——利用一系列状态转移和错误矫正步骤。由于贝叶斯滤波步骤使用确定性方程来修改充足的统计数据,RNN可以被看作同时对两个步骤作估计——记忆向量包含所有相关的用于预测的信息。
(iii) Attention Mechanisms
注意力机制的发展,也导致了长期依赖学习的提升——Transformer架构在许多自然语言处理应用上达到了最优的表现。注意力层通过动态生成的权重聚合时间特征,允许网络直接关注于过去具有显著意义的时间步——即使他们在回看窗口很远的地方。从概念上讲,注意力是一种基于给定查询的键值查找机制,有如下的形式:
该公式中,键\(\mathbf k_t\),查询\(\mathbf q_\tau\)和值\(\mathbf v_{t-\tau}\)是低层网络不同时间步产生的中间特征。更进一步地说,\(\alpha(\mathbf k_t,\mathbf q_t)\in[0,1]\)是时间\(t\)对\(t-\tau\)的注意力权重,\(\mathbf h_t\)是注意力层输出的上下文向量。值得一提的是,多个注意力层可以按照CNN同时使用,最后一层的输出组成了编码隐向量\(\mathbf z_t\)。
最近的工作也阐述了在时间序列预测应用中使用注意力机制的好处,包括想对循环神经网络更好的表现。举个例子,使用注意力聚合RNN编码器提取的特征,注意力权重按如下方式生成:
该公式中,\(\mathbf \alpha(t)=[\alpha(t,0),...,\alpha(t,k)]\)是注意力权重的向量,\(\mathbf k_{t-1}\),\(\mathbf q_t\)是用于特征提取的LSTM编码器的输出,\(softmax(.)\)是softmax激活函数。最近,Transformer架构也被考虑,其将标量积自注意力应用到回看窗口提取的特征上。从一个时间序列建模的角度,注意力提供了两个关键的增益。首先,注意力网络可以直接获取发生的重要事件。在零售预测应用中,举个例子,这包括对销售额有正面影响的假期和促销活动。第二,基于注意力机制的网络可以学习到特定实体的时间动态——对每个实体使用不同的注意力权重模式。
(iv) Outputs and Loss Functions
考虑到神经网络的灵活性,深度神经网络被用于建模离散和连续的目标——通过定制神经网络的解码器和输出层以匹配确定的目标种类。在单步预测问题中,这可以简化为对编码器输出做一个线性变换和一个合适的输出激活。不考虑目标形式,预测可以分成两个不同的种类——点估计和概率预测。
Point Estimates
预测的一般方法是确定未来目标的期待值。有必要重新将问题定义为离散输出分类任务(比如预测未来事件)和连续输出的回归任务——使用上面提到的编码器。对于二分类任务,解码器最后一层使用一个线性层和一个sigmoid激活函数——允许网络预测给定时间步时间的发生概率。对于单步二分类和连续目标预测,网络分别使用交叉熵和均方误差进行训练:
虽然上述的损失函数在各种应用中很常见,我们要说明,神经网络的灵活性也允许采用更多复杂的损失——举个例子,分位数回归和多分类的损失函数。
Probabilistic Outputs
虽然点估计在预测未来目标值很重要,在不同的领域理解模型预测的不确定性也很有用。当预测不确定性很大时,举个例子,模型使用者在利用预测值做决定时会更小心,或者依赖于其他信息来源。在某些应用中,比如金融风险管理,得到完整的预测分布允许决策者针对很少发生的事件时优化决策——比如,允许风险管理者隔离投资以防止市场崩溃。
一般的建模不确定性的方法是使用深度神经网络生成已知分布的参数。举个例子,高斯分布典型地被用于预测连续目标,每一步网络输出预测分布的均值和方差:
该公式中,\(\mathbf h_t^L\)是网络最后一层,\(softplus(.)\)是softplus激活函数以确保标准差只有正值。
(b) Multi-horizon Forecasting Models
在许多应用中,预测多个未来点的估计是有用的——允许决策者看到未来范围的趋势,并且在整条路上优化行动。从统计学的角度,多范围的预测可以看作是单步预测的一个微小修改,如下:
该公式中,\(\tau\in\{1,...,\tau_{max}\}\)是一个离散预测范围,\(\mathbf u_t\)是所有范围已知的未来输入(比如日期信息,比如星期几或月份),\(\mathbf x_t\)是仅能在历史被观测到的变量。符合传统经济学方法,多范围预测的深度学习架构可以被分为迭代和直接方法——如图所示,接下来详细讨论。
(i) Iterative Methods
多范围预测的典型迭代方法利用自回归深度学习架构——通过递归地将目标值作为未来时间步产生多范围预测。通过重复产生多轨迹的步骤,每一步目标值的采样分布被用于生成预测。举个例子,预测方法可以采用蒙特卡洛估计\(\hat y_{t+\tau}=\sum_{j=1}^J\tilde y_{t+\tau}^{(j)}/J\),该公式中\(\tilde y_{t+\tau}^{(j)}\)是概率预测模型的采样。由于自回归模型和单步预测模型以相同的方式训练(换句话说,通过时间反向传播),迭代方法允许标准模型向多步预测的简单泛化。然而,由于每个时间步都会产生一个很小的误差,迭代模型的递归结构可以导致更长预测范围的较大误差累积。另外,迭代模型假设除目标值之外的所有输入运行时可见——要求只有目标值采样输入未来的时间步。当可观测到输入时,在许多实际场景中这会是一种限制,也激发了对更灵活的方式的需求。
(ii) Direct Methods
通过利用所有可获得的输入产生输出,直接方法减轻了迭代方法的问题。它们通常利用Seq2seq架构,使用一个编码器总结过去的信息(换句话说,目标值,观测到的输入和先验输入),以及一个结合已知未来输入的解码器——如图所示。一个替代方法是使用简单一些的模型直接产生匹配要求预测范围固定长度的向量。然而这要求确定一个最大的预测范围(换句话说,\(\tau_{max}\)),以预测预设好的区间。
3. Incorporating Domain Knowledge with Hybrid Models
尽管很流行,时间序列预测机器学习方法的效能历史上就被质疑——像预测竞赛比如M竞赛证实的那样。在2018年M4竞赛之前,主流的观点是精密的方法并不能产生更准确的结果,简单模型的集成有做得更好的趋势。机器学习方法表现欠佳有两个被认同的关键原因。首先,机器学习方法是一把双刃剑——是他们易于过拟合。因此,简单模型在少量数据场景下可能会表现更好,而在预测问题中少量历史观测是很常见的(比如,季度宏观经济预测)。第二,和统计模型的稳定性需求相似,机器学习模型对输入的预处理很敏感,这保证了训练和测试时数据分布相似。
最近深度学习的趋势是开发混合模型以处理这些限制,在一系列应用中展示了相对纯统计或机器学习模型更好的方法。混合方法结合了精心研究的统计时间序列模型和深度学习——使用深度学习网络生成每一时间步的模型参数。在另一方面,混合模型允许领域专家利用先验信息改善神经网络训练——减少网络假设空间并提升泛化能力。这对小数据集尤其有用,这种情况下深度学习模型有很大的过拟合风险。而且,混合模型允许区分稳定的和不稳定的成分,避免定制的输入预处理。一个例子是ES-RNN(指数平滑RNN),M4竞赛的赢家,使用指数平滑捕捉不稳定的趋势并且学习RNN的附带影响。总的来说,混合模型以两种方式使用深度神经网络:a)为非概率参数模型编码时间参数,b)为概率模型产生参数分布。
(a) Non-probabilistic Hybrid Models
使用参数化时间序列模型,预测方程通过分析确定,提供未来目标的点预测。非概率混合模型因此修改预测方程以结合统计和深度学习成分。用ES-RNN举个例子,使用Holt-Winters指数平滑模型的更新方程——用深度学习结合乘法和周期性成分如下:
该公式中,\(\mathbf h_{i,t+\tau}^L\)是网络对\(\tau\)步预测最后一层的输出,\(l_{i,t}\)是等级成分,\(\gamma_{i,t}\)是\(k\)区间周期成分,\(\beta_1^{(i)}\),\(\beta_2^{(i)}\)是指定实体的固定参数。从上述方程,我们可以看到指数平滑成分\((l_{i,t},\gamma_{i,t})\)处理数据集更广阔的趋势,减少额外输入放缩的需要。
(b) Probabilistic Hybrid Models
概率混合模型可以被用于分布建模很重要的场合——使用时间动态的概率生成模型如高斯过程和线性状态空间模型。概率混合模型使用神经网络产生每一步的预测分布的参数,而不是修改预测方程。举个例子,深度状态空间模型编码如下为线性状态空间模型编码参数——通过Kalman滤波方程进行推演:
该公式中,\(\mathbf l_t\)是隐状态,\(\mathbf a(.)\),\(\mathbf F(.)\),\(\mathbf q(.)\)是\(\mathbf h_{i,t+\tau}^L\)的线性变换,\(\phi(.)\),\(\mathbf \Sigma(.)\)是带softmax激活的线性变换,\(\epsilon_t\sim N(0,1)\)是单变量残差,\(\mathbf \Sigma_t\sim N(0,1)\)是多变量正态随机变量。
4. Facilitating Decision Support Using Deep Learning Neural Networks
尽管模型建造者主要关心预测的准确性,最终用户通常使用预测以指导未来行动。举个例子,医生可以利用医学预测(比如,疾病袭击和死亡的概率)来帮助他们优先准备,规划诊断方法并确定治疗方案。因此,虽然时间序列预测是一个重要的开始步骤,对时间动态和模型预测背后的动力更好的理解可以帮助用户更好地优化他们的行动。在这个章节,我们探索两个神经网络帮助时间序列决策的方向——关注于方法的可解释性和因果推理。
(a) Interpretability With Time Series Data
在特定任务的神经网络部署时,人们更加需要理解“如何”和“为什么”一个模型做出这样的预测。而且,由于最近数据集在大小和复杂度上变大,终端用户几乎不了解数据呈现的关系。考虑到标准神经网络架构的黑盒性质,一个新的研究方向产生了,关注可解释深度学习模型。我们接下来展示一个概述——引导读者更深入地分析调研。
Techniques for Post-hoc Interpretability
因果可解释性模型被开发用于解释训练好的神经网络,帮助识别重要的特征或样例而不用修改原来的权重。方法可以主要分成两个主要种类。首先,一个可能的方法是在神经网络输入和输出之间,应用较简单的可解释代理模型,并且依赖近似模型提供解释。举个例子,LIME通过用给定样例的线性模型拟合输入扰动,用先行参数提供重要性度量。SHAP提供了另一种代理方法,使用从合作游戏理论得到的Shapley值识别跨数据集的重要特征。其次,基于梯度的方法——比如saliency maps和influence functions——已经被提出,通过分析网络梯度以确定哪个输入特征对损失函数有最大的影响。虽然因果可解释性方法可以处理特征属性,它们通常忽视任何输入的序列依赖——使将它们应用到时间序列数据集上很困难。
Inherent Interpretability with Attention Weights
一个替代方法是直接设计有可解释性成分的架构,通常以战略性摆放的注意力层。由于注意力权重从softmax层输出,权重被限制为和为1,换句话说,\(\sum_{\tau=0}^k\alpha(t,\tau)=1\)。对时间序列模型,这可以被解释为时间特征的加权平均值,使用每一步的注意力层的权重。注意力权重的分析可以被用于理解每一时间步相关重要性。样例层面的可解释性已经被提出,作者使用特殊例子以展示\(\alpha(t,\tau)\)如何指示哪个时间点对预测最有意义。通过分析注意力向量分布,也展示了注意力机制如何被用于识别连续性时间关系——比如季节性模式——在数据集中。
(b) Counterfactual Predictions & Causal Inference Over Time
除了理解网络学习到的关系,深度学习可以通过提供观测数据集之外的预测,或反事实预测帮助决策。反事实预测在场景分析应用中特别有用——允许用户评估不同行动集合如何影响目标轨迹。这很有用,不论从历史角度,换句话说,决定不同情况下什么会发生,还是从预测角度,换句话说,采取什么行动以优化未来输出。
虽然很多种用于估计静态设定下因果效应的深度学习方法已存在,时间序列数据集的关键挑战是依赖时间的混淆效应。这由影响目标的行动也由目标控制的循环依赖引发。如果没有任何时间依赖混淆关系的调整,直接的估计方法可以导致有偏差的结果。最近,一些训练深度神经网络的方法出现,基于统计方法的扩展和新的损失函数设计以调整混淆依赖。统计学方法扩展了流行病学结构化模型——使用一系列网络估计治疗应用概率,和一个Seq2seq模型学习无偏差的预测。另外一种方法扩展了G-computation框架,使用深度学习同时建模目标和行动的分布。另外,新的损失函数也被提出,采用领域对抗训练以学习病人历史的平衡表示。
5. Conclusions and Future Directions
随着最近数据可获得性和计算能力的增长,深度神经网络结构在许多领域的预测问题上获得了许多成功。本文中,我们调研了用于时间序列预测的主流架构——强调了神经网络设计使用的关键组件。我们检验了它们如何利用时间信息用于单步预测,并且描述了它们如何可以被扩展到多范围预测中。而且,我们概述了最近混合深度学习模型的趋势,结合统计和深度学习成分以超过单一模型的表现。最后,我们总结了两种深度学习可以扩展用于决策帮助的方法,关注于可解释性和反事实预测方法。
尽管大量时间序列预测的深度学习模型被开发出来,一些限制依然存在。首先,深度神经网络通常要求时间序列是规律间隔离散化的,是的预测观测丢失或随机间隔的数据集很困难。虽然之前的一些连续时间模型的研究也通过神经常微分方程做了,更多的工作需要用于扩展到复杂输入(比如,静态变量)的数据集并且和现有模型比较。另外,时间序列在逻辑组别上由轨迹上的层次结构——比如,在零售预测上,同一地理区域的商品销售额可能受同意趋势影响。因此,显式地建模这种层次结构的架构可能是一个有趣的研究方向,有可能提升单变量或多变量模型的预测表现。