深度学习的时间序列预测
摘要
已经开发了许多深度学习架构,以适应跨不同领域的时间序列数据集的多样性。 在本文中,我们调查了用于单步提前和多水平时间序列预测的通用编码器和解码器设计-描述了每个模型如何将时间信息纳入预测。 接下来,我们重点介绍混合深度学习模型的最新进展,该模型将经过深入研究的统计模型与神经网络组件相结合,以改进任一类别中的纯方法。 最后,我们概述了深度学习还可以促进时间序列数据的决策支持的一些方法。
简介
历史上,时间序列建模一直是学术研究的关键领域–构成了在诸如气候建模[1],生物科学[2]和医学[3]以及零售业商业决策[4]等主题中应用的组成部分 ]和财务[5]仅举几例。 传统方法专注于领域专家提供的参数模型,例如自回归(AR)[6],指数平滑[7]或结构时间序列模型[8]),而现代机器学习方法则提供了一种学习模型中时间动态的方法。 纯数据驱动方式[9]。 近年来,随着数据可用性和计算能力的提高,机器学习已成为下一代时间序列预测模型的重要组成部分。
特别是在图像分类[10],自然语言处理[11]和强化学习[12]方面取得了显著成就,尤其是深度学习在近代变得越来越流行。通过结合反映基础数据集细微差别的定制架构假设或归纳偏差[13],深度神经网络能够学习复杂的数据表示形式[14],从而减轻了对人工特征工程和模型设计的需求。开源反向传播框架[15,16]的可用性也简化了网络训练,允许定制网络组件和丢失功能。
考虑到跨领域的时间序列问题的多样性,出现了许多神经网络设计选择。 在本文中,我们总结了使用深度神经网络进行时间序列预测的常用方法。 首先,我们描述了可用于常见预测问题的最新技术,例如多水平预测和不确定性估计。 其次,我们分析了混合模型中一种新趋势的出现,该模型将两种特定领域的定量模型与深度学习组件相结合,以提高预测性能。 接下来,我们概述了两种关键方法,其中可以使用神经网络来促进决策支持,特别是通过可解释性和反事实预测中的方法。 最后,我们总结了深度学习中有关时间序列预测的一些有前途的未来研究方向,特别是以连续时间和分层模型的形式。
用于时间序列预测的深度学习架构
时间序列预测模型预测给定实体在某个时间的目标的未来值。每个实体代表时间信息的逻辑分组-例如来自不同气候气象站的测量值,或来自不同医学患者的生命体征-可以同时观察到。 在最简单的情况下,一步一步的预测模型采用以下形式:
是模型预测,是分别在回溯窗口上对目标输入和外部输入的观察,是与实体相关联的静态元数据(例如传感器位置),是模型学习到的预测函数。 尽管我们在本调查中关注单变量预测(即一维目标),但我们注意到可以将相同的组件扩展到多变量模型而不会失去一般性[17,18,19,20,21]。 为了简化符号,除非明确要求,否则我们在后续章节中省略了实体索引。
基本构建基块
深度神经网络通过使用一系列非线性层构造中间特征表示来学习预测关系[14]。 在时间序列设置中,可以将其视为将相关历史信息编码为潜在变量,而最终预测仅使用即可得出:
其中,分别是编码器和解码器函数。 这些编码器和解码器因此构成了深度学习架构的基本构建块,其中网络的选择确定了我们的模型可以学习的关系类型。 在本节中,我们研究了如图1所示的编码器的现代设计选择,以及它们与传统时间模型的关系。 此外,我们还将探索时间序列预测应用中使用的常见网络输出和损失函数。

图1:使用不同的编码器架构合并时间信息。
卷积神经网络
传统上是为图像数据集设计的,卷积神经网络(CNN)提取在空间维度上不变的局部关系[10,22]。 为了使CNN适应时间序列数据集,研究人员利用了多层因果卷积[23,24,25] –即卷积滤波器,旨在确保仅使用过去的信息进行预测。 对于隐藏层的中间特征,每个因果卷积滤波器采用以下形式:
其中是在时间的层的中间状态,是卷积算子,是层的固定滤波器权重,是激活函数,例如函数,表示任何特定于体系结构的非线性处理 。
考虑到一维情况,我们可以看到等式与数字信号处理中的有限冲激响应(FIR)滤波器非常相似[26]。 这为CNN学习的时间关系带来了两个关键含义。 首先,根据标准CNN的空间不变性假设,时间CNN假设关系是时不变的–在每个时间步长和整个时间使用相同的过滤器权重集。 另外,CNN只能使用其定义的回溯窗口或接受字段中的输入来进行预测。 因此,必须仔细调整接收区域的大小,以确保模型可以利用所有相关的历史信息。 值得注意的是,单个因果CNN层等效于自回归(AR)模型。
膨胀卷积
在需要长期依赖的情况下,使用标准卷积层可能会给计算带来挑战,因为参数的数量直接随接收场的大小扩展。 为了减轻这种情况,现代体系结构经常使用膨胀的卷积层[23,24],它们扩展了等式如下:
其中,是向下取整算子,是特定于层的膨胀率。 因此,膨胀卷积可以解释为较低层特征的下采样版本的卷积-降低分辨率以合并来自遥远过去的信息。 这样,通过增加每一层的扩张率,扩张的卷积可以在不同的时间段逐渐聚集信息,从而允许以有效的方式使用更多的历史记录。 例如,使用[23]的WaveNet架构,在每个层中聚合了相邻时间块时,以2的幂增加了扩展率–允许在层上使用个时间步,如图1a所示。
循环神经网络
递归神经网络(RNN)在历史上一直被用于序列建模[22],在各种自然语言处理任务上都取得了丰硕的成果[27]。 给定时间序列数据作为输入和目标序列的自然解释,已经开发了许多基于RNN的体系结构用于时间预测应用[28,29,30,31]。 RNN单元的核心包含内部存储器状态,该状态充当过去信息的紧凑摘要。 如图1b所示,在每个时间步使用新的观察递归更新内存状态,即:
其中是RNN的隐藏内部状态,是每一步进入RNN的组合输入,是学习的记忆更新功能。 例如,最简单的RNN变体之一Elman RNN [32]将采用以下形式:
其中,分别是网络的线性权重和偏差,而,是网络激活函数。 请注意,根据CNN的情况,RNN不需要明确指定回溯窗口。 从信号处理的角度来看,主循环层因此类似于无限冲激响应(IIR)滤波器的非线性版本。
长短期记忆网络
由于回溯窗口无限,RNN的较旧变体在学习数据中的远程依存关系方面可能会受到限制[33] –由于爆炸和消失梯度的问题[22]。 直观上,这可以看作是记忆状态下的共振形式。 因此,通过改善网络中的梯度流,开发了长期短期记忆网络(LSTM)[34]来解决这些限制。 这是通过使用存储长期信息的单元状态来实现的,该信息通过一系列门进行调制,如下所示:

其中是LSTM的隐藏状态,而是激活函数。 门修改LSTM的隐藏状态和单元状态,如下所示:

其中是单元素(Hadamard)乘积,是激活函数。
与贝叶斯过滤的关系
如[30]中所述,贝叶斯过滤器[35]和RNN在保持隐藏状态方面相似,该隐藏状态会随着时间递归更新。 对于诸如卡尔曼滤波器[36]的贝叶斯滤波器,通过使用一系列状态转换和纠错步骤,通过更新潜在状态的足够统计量来进行推断。 由于贝叶斯滤波步骤使用确定性方程式修改足够的统计量,因此RNN可以看作是两个步骤的同时逼近-记忆向量包含预测所需的所有相关信息。
注意力机制
注意机制的发展[37,38]也带来了长期的依从性学习方面的改进-借助Transformer架构在多种自然语言处理应用程序中实现了最先进的性能[11,39,40]。 注意层使用动态生成的权重来聚合时间特征(请参见图1c),使网络可以直接关注过去的重要时间步,即使它们在回溯窗口中距离很远也是如此。通常,注意权重采用以下形式 :
其中是由较低层网络提取的中间特征,是在时间生成的的关注权重,是关注层的上下文向量输出。
最近的工作还证明了在时间序列预测应用程序中使用注意力机制的好处,与可比较的递归网络相比,性能得到了改善[41,42,43]。 例如,[41]使用注意力来聚合RNN编码器提取的特征,注意权重产生如下:
其中是注意权重的向量,是用于特征提取的LSTM编码器的输出,以及是softmax激活功能。 最近,在[42,43]中也考虑了Transformer架构,该架构将标量点乘积自关注[39]应用于回溯窗口中提取的特征。 从时间序列建模的角度来看,注意力有两个主要好处。 首先,关注的网络能够直接参与发生的任何重大事件。 例如,在零售预测应用程序中,这包括可能对销售产生积极影响的假期或促销期。其次,如[43]所示,基于注意力的网络还可以通过使用不同的注意力权重来学习特定于制度的时间动态。 每个制度的模式。
输出和损失函数
鉴于神经网络的灵活性,通过定制神经网络的解码器和输出层以匹配所需的目标类型,深度神经网络已用于对离散目标[44]和连续目标[28,45]进行建模。 在一步一步预测问题中,这可能很简单,只需将编码器输出(即式(2.2))的线性变换与目标的适当输出激活相结合即可。 无论目标的形式如何,预测都可以进一步分为两类:点估计和概率预测。
点估计
一种常见的预测方法是确定未来目标的预期值。 这实质上涉及使用上述编码器将问题重新格式化为离散输出的分类任务(例如,预测未来事件),以及将连续输出的回归任务重新分类。 对于二进制分类的情况,解码器的最后一层将具有一个具有S型激活函数的线性层,从而使网络能够预测给定时间步长上事件发生的概率。 对于二进制目标和连续目标的一步一步预测,分别使用二进制交叉熵和均方误差损失函数来训练网络:
概率输出
尽管点估计对于预测目标的未来价值至关重要,但了解模型预测的不确定性对于不同领域的决策者可能很有用。 例如,当预测不确定性很大时,模型用户可以在将预测合并到决策中时更加谨慎,或者依赖其他信息来源。 在某些应用程序中,例如财务风险管理,可以使用完整的预测分布,这将使决策者可以在出现罕见事件(例如紧急事件)时优化其操作。 允许风险管理人员隔离投资组合以防止市场崩溃。
建模不确定性的常用方法是使用深度神经网络来生成已知分布的参数[18,28,29]。 例如,高斯分布通常用于预测具有连续目标的问题,网络在每个步骤中为预测分布输出均值和方差参数,如下所示:
其中是网络的最后一层,而softplus 是softplus激活函数,以确保标准偏差仅取正值.
多角度预测模型
在许多应用中,将来获得多个点的预测估计值通常是有益的-允许决策者可视化未来范围内的趋势,并在整个路径上优化其操作。 从统计的角度来看,多水平预测可以看作是一步一步预测问题的轻微修改,如下所示:
其中是一个离散的预测范围,是整个范围内已知的未来输入(例如,日期信息,例如星期几或月份),而xt是可以 仅在历史上可以观察到。 与传统的计量经济学方法[46,47]一致,用于多水平预测的深度学习架构可以分为迭代方法和直接方法–如图2所示,并在下面进行详细说明。

迭代方法
多地平线预测的迭代方法通常利用自回归深度学习体系结构[28,30,31,42] –通过将目标样本递归馈入未来的时间步长来生成多地平线预测(参见图2a)。通过重复该过程以生成多个轨迹,然后在每个步骤使用目标值的采样分布来生成预测。例如,可以使用蒙特卡罗估计 where 来获得预测平均值,其中̃是基于等式。由于以与一步一步预测模型完全相同的方式训练自回归模型,因此迭代方法可轻松将标准模型推广到多步预测。但是,迭代方法的递归结构假定在运行时知道目标以外的所有输入,因此仅需要将目标样本输入到将来的时间步中。在存在观察到的输入的许多实际情况下,这可能是一个局限,激发了对更灵活方法的需求。
直接方法
直接方法通过使用所有可用输入直接生成预测来减轻迭代方法的问题。 他们通常利用序列到序列的体系结构[41,43,45],使用编码器来总结过去的信息(即目标,观察到的输入和先验已知输入),并使用解码器将它们与已知的未来输入结合起来– 如图2b所示。在避免递归的同时,直接方法需要指定最大预测范围(即),并且仅在预定义的离散时间间隔进行预测。
将领域知识与混合模型相结合
尽管它很受欢迎,但从历史上来说,机器学习在时间序列预测方面的有效性一直受到质疑–如预测竞赛(例如M竞赛)[48]所证明。在2018年M4竞赛[49]之前,普遍的智慧是: 这些方法无法产生更准确的预测,而具有集合的简单模型往往会做得更好[50,51,52]。 已经确定了两个主要原因来解释机器方法的性能不佳。 首先,机器学习方法的灵活性可以是一把双刃剑,这使它们易于过度拟合[52]。 其次,类似于统计模型的平稳性要求,机器学习模型可能对输入的预处理方式很敏感[17,28,52],从而确保训练和测试时的数据分布相似。
深度学习的最新趋势是开发可解决这些局限性的混合模型,从而证明在各种应用中其性能优于纯统计或机器学习模型[29,53,54,55]。混合方法将经过深入研究的定量时间序列模型与深度学习相结合-使用深度神经网络在每个时间步生成模型参数。一方面,混合模型使领域专家可以使用先验信息来通知神经网络训练–减少了网络的假设空间并提高了泛化能力。这对于小型数据集尤其有用[29],在这种情况下,过度适合深度学习模型的风险更大。此外,混合模型允许固定和非固定组件的分离,并避免了自定义输入预处理的需要。一个例子是M4竞赛的获胜者,指数平滑RNN(ES-RNN)[53],它使用指数平滑来捕获非平稳趋势并通过RNN学习其他效果。一般而言,混合模型通过两种方式利用深度神经网络:a)为非概率参数模型编码随时间变化的参数[53,54,56],b)为概率模型生成分布参数[29,31, 55]。
非概率混合模型
使用参数时间序列模型,通常可以通过分析定义预测方程,并为将来的目标提供点预测。 因此,非概率混合模型修改了这些预测方程,以结合统计和深度学习组件。 例如,ES-RNN利用Holt-Winters指数平滑模型[57]的更新方程式–将乘数级和季节性分量与深度学习输出组合如下:
其中是进行步超前预报的网络的最后一层,是水平分量,是周期为κ的季节性分量,而是特定于实体的静态系数。 从上面的方程式中,我们可以看到指数平滑分量处理了数据集中的更广泛(例如指数)趋势,从而减少了对额外输入缩放的需求。
概率混合模型
概率混合模型也可以用于分布建模很重要的应用程序中-利用概率生成模型进行时间动力学,例如高斯过程[31]和线性状态空间模型[29]。 概率混合模型没有修改预测方程,而是使用神经网络在每个步骤为预测分布生成参数。 例如,深度状态空间模型[29]对线性状态空间模型的时变参数进行编码,如下所示–通过卡尔曼滤波方程[36]进行推理:
其中是隐藏的潜在状态,是的线性变换,是带有激活的线性变换,并且是标准的正常随机变量。
使用深度神经网络促进决策支持
尽管模型构建者主要关注其预测的准确性,但是最终用户通常使用预测来指导其未来的行为。 例如,医生可以利用临床预测(例如疾病发作和死亡的可能性)来帮助他们确定测试的优先级,以便进行排序,制定诊断和确定治疗方案。 因此,虽然时间序列预测是至关重要的初步步骤,但更好地了解时间动态和模型预测背后的动机可以帮助用户进一步优化其操作。 在本节中,我们探讨了神经网络的扩展方向,以方便使用时间序列数据进行决策支持-重点研究了可解释性和因果推理方法。
对时间序列数据有良好的处理能力
随着在任务关键型应用程序中部署神经网络[58],越来越需要了解模型如何以及为何做出某种预测。 此外,随着最近数据集的规模和复杂性的增长,最终用户可能几乎不了解其数据中存在的关系。 鉴于标准神经网络架构的黑盒性质,用于解释深度学习模型的方法出现了新的研究领域,我们将在下面深入介绍。
事后解释性技术
事后可解释模型被开发来解释训练有素的网络,并在不修改原始权重的情况下帮助识别重要特征或示例。方法主要可以分为两个主要类别。首先,一种可能的方法是在神经网络的输入和输出之间应用更简单的可解释的替代模型,并依靠近似模型进行解释。例如,局部可解释模型不可知性解释(LIME)[59]通过将特定于实例的线性模型拟合到输入的扰动中来识别相关特征,线性系数提供了重要程度的度量。 Shapley加性解释(SHAP)[60]提供了另一种替代方法,该方法利用了合作博弈论中的Shapley值来识别整个数据集的重要特征。接下来,提出了基于梯度的方法(例如显着性图[61,62]和影响函数[63]),该方法分析网络梯度以确定哪些输入特征对损失函数的影响最大。尽管事后互操作性方法可以帮助进行特征归因,但它们通常会忽略输入之间的任何序列依赖性,这使得将它们应用于复杂的时间序列数据集变得困难。
注意权重的内在可解释性
一种替代方法是直接设计具有可解释性组件的体系结构,通常以策略性地放置注意层的形式。由于注意权重是作为层的输出产生的,因此权重被约束为1,即。对于时间序列模型,等式的输出也可以为使用注意层在每个步骤提供的权重,将其解释为时间特征的加权平均值。然后,可以使用注意力权重分析来了解每个时间步长特征的相对重要性。在[42,44,64]中进行了基于实例的互操作性研究,其中作者使用了特定的示例来说明的大小如何指示哪些时间点对预测最为重要。通过分析注意力向量在时间上的分布,[43]还显示了注意力机制如何用于识别数据集中的持久性时间关系,例如季节性模式。
反事实预测和因果推理
除了了解网络学习到的关系之外,深度学习还可以通过在其观测数据集或反事实预测之外产生预测来帮助促进决策支持。 反事实预测对于情景分析应用程序特别有用-允许用户评估不同的动作集如何影响目标轨迹。这既可以从历史角度来看,也可以是有用的,即确定如果发生了不同的情况集会发生什么,以及 从预测的角度,即确定要采取哪些行动来优化未来的结果.
虽然存在大量用于估计静态设置中的因果效应的深度学习方法[65,66,67],但时间序列数据集中的关键挑战是时间依赖性混杂效应的存在。当可能影响目标的动作也取决于目标的观察时,这是由于循环依赖性而产生的。如[68]所示,如果不对依赖于时间的混杂因素进行任何调整,直接的估算技术会导致结果有偏差。最近,基于统计技术的扩展和新损失函数的设计,出现了几种方法来训练深度神经网络,同时调整与时间有关的混杂。借助统计方法,[69]扩展了流行病学中边缘结构模型的治疗加权概率逆(IPTW)方法-使用一组网络来估计治疗应用的概率,并使用序列到序列模型来学习无偏的预测。 [70]中的另一种方法扩展了G计算框架,使用深度学习对目标和动作的分布进行联合建模。另外,在[71]中已经提出了新的损失函数,该函数采用领域对抗训练来学习患者病历的均衡表示。
结论和未来方向
近年来,随着数据可用性和计算能力的增长,深度神经网络体系结构在跨多个领域的问题预测中取得了很大的成功。在本文中,我们调查了用于时间序列预测的主要体系结构-重点介绍了神经网络设计中使用的关键构建块。我们研究了它们如何将时间信息纳入一步一步的预测中,并描述了如何扩展它们以用于多水平预测。此外,我们概述了混合深度学习模型的最新趋势,该模型结合了统计和深度学习组件,在这两个类别中均胜过纯方法。最后,我们总结了可扩展深度学习以随着时间的推移改善决策支持的两种方式,重点是可解释性和反事实预测的方法。
尽管已经为时间序列预测开发了大量的深度学习模型,但是仍然存在一些局限性。首先,深度神经网络通常要求以固定间隔离散时间序列,这使得难以预测可能丢失观测值或以随机间隔到达的数据集。虽然已经通过神经常微分方程对连续时间模型进行了一些初步研究[72],但是还需要进行其他工作来扩展具有复杂输入(例如静态变量)的数据集的工作,并确定现有模型的基准。此外,如[73]所述,时间序列通常具有层次结构,在轨迹之间具有逻辑分组,例如:在零售预测中,同一地区的产品销售可能会受到共同趋势的影响。这样,明确说明此类层次结构的体系结构的开发可能是一个有趣的研究方向,并且可能会提高现有单变量或多变量模型的预测性能。


