码住!基于深度学习的时间序列预测方法总结

前言

时间序列建模历来是学术和工业界的关键领域,比如用于气候建模、生物科学和医学等主题应用,零售业的商业决策和金融等。虽然传统的统计方法侧重于从领域专业知识层面提供参数模型,比如自回归 (AR) 、指数平滑或结构时间序列模型,但现代机器学习方法提供了一种以纯数据驱动的方式对时间序列进行动态分析学习的方法。随着近年来数据可用性和计算能力的不断提高,机器学习已成为下一代时间序列预测模型的重要组成部分。

受图像分类 、自然语言处理和强化学习方面显著成就的启发,深度学习最近特别受欢迎。通过结合反映基础数据集细微差别的定制架构假设(或归纳偏差),深度神经网络能够学习复杂的数据表示,从而减轻了对手动特征工程和模型设计的需求。 开源反向传播框架(如 tensorflow)的可用性也简化了网络训练,允许对网络组件和损失函数进行定制。

鉴于各个领域时间序列问题的多样性,在时间序列问题上出现了许多神经网络设计选择。学术界已经有很多深度学习模型来适应不同领域的时间序列数据集的多样性。本文通过调研大量前沿深度学习文献,描述每个模型如何将时间信息合并到预测中。考虑到云智慧在运维领域面临的实际预测落地场景,本文主要涉及三类深度学习模型:一步预测和多指标预测中使用的常见编码器和解码器设计,描述每个模型如何将时间信息合并到预测中;混合深度学习模型的发展;深度学习也可以通过时间序列数据促进决策支持的一些方法。

一、时间序列预测的深度学习架构

时间序列预测模型预测目标yi,t(指定第 i 个指标在 t 时刻)的未来值,其中每个指标代表时间信息的逻辑分组 。 例如来自气候学中不同气象站的测量值,或医学中不同患者的生命体征,并且可以同时观察。在最简单的情况下,一步法预测模型采用以下形式:

其中公式左侧为模型预测值,公式右侧分别是在回溯窗口上对目标和外生输入的观察,si是与实体相关的静态元数据(例如传感器位置),f(.)是模型学习的预测函数。虽然我们在本黑板报中专注于单变量预测(即一维目标),但我们注意到相同的组件可以不失一般性地扩展到多变量模型。简单起见,除非明确要求,否则在后续部分中省略了实体索引 i。

基本结构模块

深度神经网络通过使用一系列非线性层来构建中间特征表示来学习预测关系。在时间序列设置中,这可以被视为将相关历史信息编码到隐变量zt中,并单独使用zt生成最终预测:

其中genc(.)和gdec(.)分别是编码器和解码器函数。编码器和解码器构成了深度学习架构的基本构建块,网络的选择决定了模型可以学习的关系类型。 此处将研究编码器的现代设计架构,以及它们与传统时间模型的关系,如下图所示。此外我们探索了时间序列预测应用中常用的网络输出和损失函数。

  1. 卷积神经网络

卷积神经网络 (CNN)传统上为图像数据集设计网络提取跨空间维度不变的局部关系。为了使 CNN 适应时间序列数据集,研究人员利用了多层因果卷积——即旨在确保仅使用过去信息进行预测的卷积滤波器。 对于隐藏层 l 的中间特征,每个因果卷积滤波器采用以下形式:

其中(1)式中 h 是网络结构中第 i 层在时刻 t 的内部状态。*是卷积操作,W 是第 l 层指定的过滤权重,A(.)为激活函数,例如 sigmoid,用以处理任何特定架构的非线性表征。

考虑一维情况,我们可以看到(2)与数字信号处理中的有限脉冲响应(FIR)滤波器非常相似。这对 CNN 学习的时间关系产生了两个关键影响。首先与标准 CNN 的空间不变性假设一致,时间 CNN 假设关系是时间不变的,即在每个时间步长和所有时间使用相同的滤波器权重集。此外 CNN 只能使用其定义的回溯窗口或接受域内的输入来进行预测。 因此需要仔细调整感受野大小 k 以确保模型可以利用所有相关的历史信息。值得注意的是,单个因果 CNN 层等效于自回归 (AR) 模型。

膨胀卷积 使用标准卷积层在长期依赖性很重要的情况下可能具有计算挑战性,因为参数的数量直接与感受野的大小成比例。 为了缓解这种情况,现代架构经常使用扩展的共卷积层,于是将(2)扩展如下:

其中└.┘是向前取整操作,dl是特定层的膨胀率。因此膨胀卷积可以解释为下层特征下采样版本的卷积,即降低分辨率以合并来自遥远过去的信息。因此通过增加每一层的膨胀率,膨胀卷积可以逐渐聚合不同时间块的信息,从而以有效的方式使用更多的历史。例如 WaveNet 架构的膨胀率在相邻时间块聚合在每层中以 2 的幂增加,即允许在第 l 层使用 2l 时间步长(上图 a)。

  1. 循环神经网络

循环神经网络 (RNN) 历来被用于序列建模,在各种自然语言处理任务上取得了很好的效果。鉴于时间序列数据作为输入和目标序列的自然解释,许多基于 RNN 的架构已被开发用于时间预测应用程序。在其核心为 RNN 单元包含一个内部记忆状态,作为过去信息的概述。在每个时间步使用新的观测值递归更新内存状态(如上图 b 所示),即:

其中zt是 RNN 的隐状态,x˜t=[xt,tt,s]是每一步进入 RNN 的组合输入,ν(.)是学习到的记忆更新函数。例如最简单的 RNN 变体采用以下形式:

其中W和b分别是网络的线性权重和偏差,γyγz是激活函数。请注意,RNN 不需要像 CNN 那样明确指定回溯窗口。从信号处理的角度来看,主要的循环层(方程 3)类似于无限脉冲响应 (IIR) 滤波器的非线性版本。

LSTM 由于无限的回溯窗口,旧的 RNN 变体在学习数据中的长期依赖关系时可能会受到梯度爆炸和消失的问题的限制。 直观来看,这可以看作是记忆状态中的一种共振形式。因此长短期记忆网络 (LSTM)通过改善网络内的梯度流来解决这些限制。具体是通过使用存储长期信息的细胞状态ct结合一系列门进行调制来实现,如下所示:

其中ht−1是 LSTM 的隐藏状态,σ(.)是 sigmoid 激活函数。LSTM 的隐藏和单元状态如下:

其中⊙是逐元素 (Hadamard) 乘积,tanh(.)是 tanh 激活函数。

有相关文献也描述了 LSTM 与贝叶斯滤波器的关系,贝叶斯滤波器和 RNN 在维护隐藏状态方面是相似的,该隐藏状态随时间递归更新。对于贝叶斯滤波器,例如卡尔曼滤波器,通过更新潜在状态的足够统计数据来执行推理,即使用一系列状态转换和纠错步骤。由于贝叶斯过滤步骤使用确定性方程来修改足够的统计数据,因此可以将 RNN 视为两个步骤的同时逼近:记忆向量包含预测所需的所有相关信息。

  1. Attention 机制

注意力机制的发展通过改进 Transformer 导致长期依赖学习的改进。架构在多个自然语言处理应用程序中实现了最先进的性能。注意层使用动态生成的权重聚合时间特征(见上图 c),允许网络直接关注过去的重要时间步长,即使它们在回溯窗口中很远。 通常注意力权重采用以下形式:

其中htτ是网络较低层提取的中间特征,α(t,τ)∈[0,1]是tτ在时刻 t 生成的 attention 权重;h˜t是 attention 层的上下文矢量输出。

在时间序列预测应用程序中使用注意力机制与循环网络相比具有更高的性能。 例如使用注意力来聚合由 RNN 编码器提取的特征,产生的注意力权重如下:

其中α(t)=[α(t,0),...,α(t,k)]是 attention 权重向量,h˜t−1,h˜t是用于特征提取的 LSTM 编码器的输出,softmax(.) 是 softmax 激活函数。最近一些工作也考虑了 Transformer 架构,它利用 self-attention 的标量内积在回顾窗口中提取特征。从时间序列建模的角度来看,注意力提供了两个关键的好处。首先具有注意力的网络能够直接关注发生的任何重大事件。 例如在零售预测应用中,这包括可能对销售产生积极影响的假期或促销期。其次基于注意力的网络还可以通过为每个架构使用不同的注意力权重模式学习特定架构的时间动态。

  1. 输出和损失函数

鉴于神经网络的灵活性,深度神经网络已被用于对离散和连续目标进行建模,即通过定制神经网络的解码器和输出层以匹配所需的目标类型。在提前一步预测问题中,这可以简化为编码器输出线性变换的组合,与目标的输出通过激活函数相结合。无论目标的形式如何,预测可以进一步分为两个不同的类别:点估计和概率预测。

点估计 一种常见的预测方法是确定未来目标的预期值。这主要涉及将问题重新表述为使用上述编码器离散输出的分类任务(例如预测未来事件)和连续输出的回归任务。 对于二元分类情况,解码器的最后一层具有带有 sigmoid 激活函数的线性层,即允许网络在给定的时间步长预测事件发生的概率。对于二元和连续目标的一步超前预测,网络分别使用二元交叉熵和均方误差损失函数进行训练:

概率输出虽然点估计对于预测目标的未来价值至关重要,但了解模型预测的不确定性对于不同领域的决策者也很有用。 例如当预测的不确定性很大时,模型用户在将预测纳入决策时可以更加谨慎,或者依赖其他信息来源。在某些应用程序中,例如金融风险管理,访问完整的预测分布将允许决策者在出现罕见事件时优化他们的行动,例如允许风险管理人员保护投资组合免受市场崩盘的影响。

对不确定性建模的常用方法是使用深度神经网络生成已知分布的参数。例如高斯分布通常用于预测具有连续目标的问题,网络在每个步骤输出预测分布的均值和方差参数:

其中htL是网络的最后一层,softplus(.) 是 softplus 激活函数,以确保标准差仅取正值。

多步预测模型

在许多应用程序中,获得未来多个点预测值的估计非常重要,其允许决策者可视化未来范围内的趋势,并在整个路径上优化他们的行动。从统计学的角度来看,多步预测可以看作是对单步预测问题轻微修改,即:

其中τ∈[1,...,τmax]是预测的离散范围,xt为整个时间线已知的特征输入(例如日期信息,例如星期几或月份),且是只能在历史上观察到的输入。与传统的计量经济学方法一致,用于多步预测的深度学习架构可以分为迭代法和直接法,如下图所示(后续详细描述):

  1. 迭代法

多步预测的迭代方法通常利用自回归深度学习架构,即通过递归地将目标样本输入未来时间步长来生成多层次预测(上图 a)。通过重复该过程以生成多个轨迹,然后使用每个步骤的目标值的抽样分布生成预测。例如可用蒙特卡罗估计获得预测平均值y˜t+τj=1Jt+τ(j)/J,其中y˜t+τ(j)是基于模型方程(4)的采样结果。由于自回归模型的训练方式与一步法预测模型完全相同,因此迭代方法可以轻松地将标准模型推广到多步预测。然而迭代法的递归架构要求除了目标之外的所有输入在运行时都是已知的,即只需要将目标的样本送入未来的时间步长。在存在观测输入的许多实际场景中,这可能是一个限制,促使需要更灵活的方法。

  1. 直接法

直接法通过直接使用所有可用输入生成预测来缓解迭代方法的问题。 他们通常使用序列到序列架构,使用编码器来总结过去的信息(即目标、观察到的输入和先验的已知输入),并使用解码器将它们与已知的未来输入相结合(如上图 b 所示)。在避免递归的同时,直接方法需要指定最大预测范围(即τmax),且预测仅在预定义的离散间隔内进行。

二、将领域知识与混合模型相结合

尽管机器学习很受欢迎,但历史上其在时间序列预测中的有效性一直受到质疑,正如 M 竞赛等预测竞赛所证明的那样。在 2018 年的 M4 竞赛之前,普遍的看法是复杂的方法不会产生更准确的预测,而带有集成学习的简单模型往往会做得更好。这里有两个关键原因来解释机器方法的性能不佳。首先机器学习方法的灵活性可能是一把双刃剑,容易过拟合。其次类似于统计模型的平稳性要求,机器学习模型对输入的预处理方式很敏感,而正确的数据预处理可以确保训练和测试时的数据分布相似。

深度学习的最新趋势是发展解决这些限制的混合模型,在各种应用中展示出优于纯统计或机器学习性能的模型。混合方法将经过充分研究的定量时间序列模型与深度学习相结合,即使用深度神经网络在每个时间步生成模型参数。混合模型一方面允许领域专家告知使用先验信息进行神经网络训练以减少网络的假设空间并提高泛化能力。这对小数据集尤其有用,因为深度学习模型过拟合的风险更大。此外混合模型允许分离静态和非静态分量,并避免对自定义输入预处理的需要。这方面的例子是 M4 竞赛的获胜者——指数平滑 RNN (ES-RNN),它使用指数平滑来捕捉非平稳趋势并使用 RNN 学习其他效果。通常混合模型以两种方式使用深度神经网络:非概率参数模型编码时变参数与概率模型生成分布参数。

非概率混合模型

使用参数化的时间序列模型,预测方程通常定义为解析地,并为未来目标提供点预测。因此非概率混合模型修改了这些预测方程,以结合统计和深度学习组件。 例如 ES-RNN 利用 Holt-Winters 指数平滑模型的更新方程,即将乘法因子和季节性分量与深度学习输出相结合,如下所示:

其中hi,t+τL是第τ步预测的网络的最后一层,li,t步长分量,γi,t是周期为κ的季节性分量,β1(i)和β2(i)是实体特定的静态系数。从上述等式中,我们可以看到指数平滑组部分(li,t,γi,t)处理数据集中更广泛的(例如指数)趋势,从而减少了对额外输入缩放的需求。

概率混合模型

概率混合模型同样可用于分布建模很重要场景的应用,比如利用概率生成模型进行时间动态,如高斯过程和线性状态空间模型。概率混合模型不是修改预测方程,而是使用神经网络为每一步的预测分布生成参数。 例如深度状态空间模型为线性状态空间模型编码时变参数,通过卡尔曼滤波方程执行推理:

其中lt是隐状态,a(.),F(.),q(.)是hi,t+τL,ϕ(.),Σ(.)的线性变换,是具有 softmax 激活的线性变换,并且 t ∼ N(0, 1),ϵtN(0,1),ΣtN(0,I)是标准正态随机变量。

三、使用深度神经网络促进决策支持

尽管模型构建者主要关心他们预测的准确性,但最终用户通常使用预测来指导他们未来的行动。 例如医生可用临床预测(例如疾病发作和死亡率的概率)来帮助他们确定要订购的测试的优先级、制定诊断并确定治疗方案。因此,虽然时间序列预测是关键的初步步骤,但更好地了解时间动态和模型预测背后的动机可以帮助用户进一步优化他们的行动。接下来探索了神经网络扩展以促进对时间序列数据的决策支持的两个方向——重点是可解释性和因果推理的方法。

时序数据的可解释性

随着神经网络在关键任务应用程序中的部署,越来越需要了解模型如何以及为何做出特定预测。此外随着数据集的规模和复杂性在最近不断增长,最终用户可能对其数据中存在的关系知之甚少。鉴于标准神经网络架构的黑盒性质,在解释深度学习模型的方法中出现了新的研究主体,将在下面深入介绍。

Post-hoc 可解释性技术 Post-hoc 可解释模型被开发用于解释训练有素的网络,并有助于在不修改原始权重的情况下识别重要特征或示例。方法主要可以分为两大类。首先,一种可能的方法是在神经网络的输入和输出之间应用更简单的可解释代理模型,并依靠近似模型来提供解释。例如局部可解释模型不可知解释 (LIME) 通过将特定于实例的线性模型拟合到输入的扰动中来识别相关特征,线性系数提供了重要性的度量。Shapley 附加解释 (SHAP) 提供了另一种替代方法,它利用合作博弈论中的 Shapley 值来识别数据集中的重要特征。接下来,已经提出了基于梯度的方法,例如显著图和影响函数,它分析网络梯度以确定哪些输入特征对损失函数的影响最大。虽然事后可解释性方法可以帮助处理特征属性,但它们通常会忽略输入之间的任何序列依赖关系,因此很难将它们应用于复杂的时间序列数据集。

具有注意力权重的固有可解释性 另一种方法是直接设计具有可解释组件的架构,通常以战略性放置注意力层的形式。当注意力权重作为 softmax 层的输出产生时,限制权重总和为 1,即Στ=0(t,τ)=1。对于时间序列模型,预测方程的输出因此也可以是解释为时间特征的加权平均值,使用注意力层在每一步提供的权重。然后可以使用对注意力权重的分析来了解每个时间步长特征的相对重要性。在进行的实例可解释性研究中,研究人员使用特定示例来展示α(t,τ)的大小如何指示哪些时间点对预测最重要。通过分析注意力向量随时间的分布,还展示了如何使用注意力机制来识别数据集中的持续时间关系,例如季节性模式。

反事实预测和因果推断

除了理解网络学习到的关系之外,深度学习还可以通过在观察数据集之外产生预测或反事实预测来帮助促进决策支持。反事实预测对于场景分析应用程序特别有用,即允许用户评估不同的动作集如何影响目标轨迹。从历史角度(即确定发生不同情况时会发生什么)和预测角度(即确定采取哪些行动来优化未来结果)来看,这都非常有用。

虽然存在一大类深度学习方法来估计静态环境中的因果效应,但时间序列数据集中的关键挑战是存在时间相关的混杂效应。这由于影响目标的动作与对目标的观察为条件的循环依赖引起的。没有对时间相关的混杂因素进行任何调整,直接的估计技术可能会导致有偏差的结果。 最近基于统计技术和设计的扩展,出现了几种方法来训练深度神经网络,同时调整时间相关的混杂因素新的损失函数。使用统计方法,扩展流行病学中边缘结构模型的逆治疗概率加权 (IPTW)方法,使用一组网络来估计治疗应用概率,并使用序列到序列模型来学习无偏预测。另一种方法是扩展 G 计算框架,使用深度学习联合建模目标和动作的分布。此外还有研究提出了新的损失函数,它采用领域对抗训练来学习患者病史的平衡表示。

总结与展望

随着数据可用性和计算能力的增长,深度神经网络架构在跨域预测问题方面取得了很大成功。本黑板报中调查了用于时间序列预测的主要架构,重点介绍了神经网络设计中使用的关键架构模块。研究了它们如何将时间信息合并到一步预测中,并描述了它们如何扩展以用于多步预测。此外结合了统计和深度学习组件概述了混合深度学习模型的最新趋势,在任一类别中都优于纯方法。最后总结了两种可以扩展深度学习以改善决策支持的方法,重点是可解释性和反事实预测方法。

迄今为止学术界尽管已经开发了大量用于时间序列预测的深度学习模型,但仍然存在一些局限性。首先,深度神经网络通常需要以固定间隔离散化时间序列,因此很难预测可能会丢失观测值或以随机间隔到达的数据集。虽然已有研究通过神经常微分方程对连续时间模型进行了一些初步研究,但还需要做更多的工作来扩展具有复杂输入(例如静态变量)的数据集的这项工作,并将它们与现有模型进行基准测试。此外时间序列通常具有层次结构,轨迹之间具有逻辑分组,例如在零售预测中,同一地区的产品销售可能会受到共同趋势的影响。因此,明确解释此类层次结构的架构的开发可能是一个有趣的研究方向,并有可能提高现有单变量或多变量模型的预测性能。

开源福利

云智慧已开源数据可视化编排平台 FlyFish 。通过配置数据模型为用户提供上百种可视化图形组件,零编码即可实现符合自己业务需求的炫酷可视化大屏。 同时,飞鱼也提供了灵活的拓展能力,支持组件开发、自定义函数与全局事件等配置, 面向复杂需求场景能够保证高效开发与交付。

点击下方地址链接,欢迎大家给 FlyFish 点赞送 Star。参与组件开发,更有万元现金等你来拿。

GitHub 地址: https://github.com/CloudWise-OpenSource/FlyFish

Gitee 地址:https://gitee.com/CloudWise/fly-fish

万元现金活动: http://bbs.aiops.cloudwise.com/t/Activity

微信扫描识别下方二维码,备注【飞鱼】加入AIOps社区飞鱼开发者交流群,与 FlyFish 项目 PMC 面对面交流~

{{o.name}}
{{m.name}}

猜你喜欢

转载自my.oschina.net/yunzhihui/blog/5534433