新闻  |   论坛  |   博客  |   在线研讨会
用于时间序列预测的最佳深度学习模型总结(1)
数据派THU | 2023-07-09 19:39:24    阅读:588   发布文章

时间序列预测在最近两年内发生了巨大的变化,尤其是在kaiming的MAE出现以后,现在时间序列的模型也可以用类似MAE的方法进行无监督的预训练。


Makridakis M-Competitions系列(分别称为M4和M5)分别在2018年和2020年举办(M6也在今年举办了)。对于那些不了解的人来说,m系列得比赛可以被认为是时间序列生态系统的一种现有状态的总结,为当前得预测的理论和实践提供了经验和客观的证据。


2018年M4的结果表明,纯粹的“ ML”方法在很大程度上胜过传统的统计方法,这在当时是出乎意料的。在两年后的M5[1]中,最的高分是仅具有“ ML”方法。并且所有前50名基本上都是基于ML的(大部分是树型模型)。这场比赛看到了LightGBM(用于时间序列预测)以及Amazon's Deepar [2]和N-Beats [3]的首次亮相。N-Beats模型于2020年发布,并且优于M4比赛的获胜者3%!


最近的 Ventilator Pressure Prediction比赛展示了使用深度学习方法来应对实时时间序列挑战的重要性。比赛的目的是预测机械肺内压力的时间顺序。每个训练实例都是自己的时间序列,因此任务是一个多个时间序列的问题。获胜团队提交了多层深度架构,其中包括LSTM网络和Transformer 块。


在过去的几年中,许多著名的架构已经发布,如MQRNN和DSSM。所有这些模型都利用深度学习为时间序列预测领域贡献了许多新东西。除了赢得Kaggle比赛,还给我们带来了更多的进步比如:


  • 多功能性:将模型用于不同任务的能力。

  • MLOP:在生产中使用模型的能力。

  • 解释性和解释性:黑盒模型并不那么受欢迎。


本文讨论了5种专门研究时间序列预测的深度学习体系结构,论文是:


  1. N-BEATS (ElementAI)

  2. DeepAR (Amazon)

  3. Spacetimeformer [4]

  4. Temporal Fusion Transformer or TFT (Google) [5]

  5. TSFormer(时间序列中的MAE)[7]


N-BEATS


这种模式直接来自于(不幸的)短命的ElementAI公司,该公司是由Yoshua Bengio联合创立的。顶层架构及其主要组件如图1所示:


图片


N-BEATS是一个纯粹的深度学习架构,它基于集成前馈网络的深度堆栈,这些网络也通过正向和反向的相互连接进行堆叠。


每一个块只对由前一个的backcast产生的残差进行建模,然后基于该误差更新预测。该过程模拟了拟合ARIMA模型时的Box-Jenkins方法。


以下是该模型的主要优势:


表达性强且易于使用:该模型易于理解,具有模块化结构,它被设计为需要最小的时间序列特征工程并且不需要对输入进行缩放。


该模型具有对多个时间序列进行概括的能力。换句话说,分布略有不同的不同时间序列可以用作输入。在N-BEATS中是通过元学习实现的。元学习过程包括两个过程:内部学习过程和外部学习过程。内部学习过程发生在块内部,并帮助模型捕获局部时间特征。外部学习过程发生在堆叠层,帮助模型学习所有时间序列的全局特征。


双重残差叠加:残差连接和叠加的想法是非常巧妙的,它几乎被用于每一种类型的深度神经网络。在N-BEATS的实现中应用了相同的原理,但有一些额外的修改:每个块有两个残差分支,一个运行在回看窗口(称为backcast),另一个运行在预测窗口(称为forecast)。


每一个连续的块只对由前一个块重建的backcast产生的残差进行建模,然后基于该误差更新预测。这有助于模型更好地逼近有用的后推信号,同时最终的堆栈预测预测被建模为所有部分预测的分层和。就是这个过程模拟了ARIMA模型的Box-Jenkins方法。


可解释性:模型有两种变体,通用的和可解释性的。在通用变体中,网络任意学习每个块的全连接层的最终权值。在可解释的变体中,每个块的最后一层被删除。然后将后推backcast和预测forecast分支乘以模拟趋势(单调函数)和季节性(周期性循环函数)的特定矩阵。


注意:原始的N-BEATS实现只适用于单变量时间序列。


DeepAR


结合深度学习和自回归特性的新颖时间序列模型。图2显示了DeepAR的顶层架构:


图片


以下是该模型的主要优势:


DeepAR在多个时间序列上工作得非常好:通过使用多个分布略有不同的时间序列来构建全局模型。也适用于许多现实场景。例如电力公司可能希望为每个客户推出电力预测服务,每个客户都有不同的消费模式(这意味着不同的分布)。


除了历史数据,DeepAR还允许使用已知的未来时间序列(自回归模型的一个特点)和额外的静态属性。在前面提到的电力需求预测场景中,一个额外的时间变量可以是月份(作为一个整数,值在1-12之间)。假设每个客户都与一个测量功耗的传感器相关联,那么额外的静态变量将是sensor_id或customer_id之类的东西。


如果莫熟悉使用MLPs和rnn等神经网络架构进行时间序列预测,那么一个关键的预处理步骤是使用标准化或标准化技术对时间序列进行缩放。这在DeepAR中是不需要手动操作的,因为底层的模型对每个时间序列i的自回归输入z进行缩放,缩放因子为v_i,即该时间序列的平均值。具体而言,论文基准中使用的比例因子方程如下:


图片


但是在实践中,如果目标时间序列的大小差异很大,那么在预处理过程中应用自己的缩放还是很有必要的。例如,在能源需求预测场景中,数据集可以包含中压电力客户(例如小工厂,按兆瓦单位消耗电力)和低压客户(例如家庭,按千瓦单位消耗电力)。


DeepAR进行概率预测,而不是直接输出未来值。这是以蒙特卡洛样本的形式完成的。这些预测被用来计算分位数预测,通过使用分位数损失函数。对于那些不熟悉这种损失类型的人,分位数损失不仅用来计算一个估计,而且用来计算围绕该值的预测区间。


Spacetimeformer


在单变量时间序列中时间依赖性是最重要的。但是在多个时间序列场景中,事情就没那么简单了。例如假设我们有一个天气预报任务,想要预测五个城市的温度。让我们假设这些城市属于一个国家。鉴于目前所看到的,我们可以使用DeepAR并将每个城市作为外部静态协变量进行建模。


换句话说,该模型将同时考虑时间和空间关系。这便是Spacetimeformer的核心理念:使用一个模型来利用这些城市/地点之间的空间关系,从而学习额外的有用依赖,因为模型将同时考虑时间和空间关系。


深入研究时空序列


顾名思义,这种模型在内部使用了基于transformers的结构。在使用基于transformers的模型进行时间序列预测时,一种流行的产生时间感知嵌入的技术是通过Time2Vec[6]嵌入层传递输入(对于NLP任务是使用位置编码向量来代替Time2Vec)。虽然这种技术对于单变量时间序列非常有效,但对于多变量时间输入却没有任何意义。可能是在语言建模中,句子中的每个单词都用嵌入表示,单词本质上是一个是词汇表的一部分,而时间序列则没那么简单。


在多元时间序列中,在给定的时间步长t,输入的形式为x_1,t, x2,t, x_m,t其中x_i,t是特征i的数值,m是特征/序列的总数。如果我们将输入通过一个Time2Vec层,将产生一个时间嵌入向量。这种嵌入真正代表什么?答案是它将把整个输入集合表示为单个实体(令牌)。因此模型将只学习时间步之间的时间动态,但将错过特征/变量之间的空间关系。


Spacetimeformer解决了这个问题,它将输入扁平化为一个大向量,称为时空序列。如果输入包含N个变量,组织成T个时间步,则生成的时空序列将具有(NxT)标记。下图3更好地显示了这一点:


图片


论文指出:“(1)包含时间信息的多元输入格式。****输入缺少(“?”)值,在进行预测时设置为零。(2)时间序列通过一个Time2Vec层,生成一个代表周期性输入模式的频率嵌入。(3)二进制嵌入表示该值是作为上下文给出的还是需要预测的。(4)将每个时间序列的整数索引映射到一个具有查找表嵌入的“空间”表示。(5)利用前馈层投影每个时间序列的Time2Vec嵌入和变量值。(6)将值和时间,变量和给定的嵌入求和会导致使MSA在时间和可变空间之间以更长的序列作为输入。


换句话说,最后的序列编码了一个包含了时间、空间和上下文信息统一的嵌入。但是这种方法的一个缺点是,序列可能会变得很长导致资源的二次增长。这是因为根据注意机制,每个令牌都要对另一个进行检查。作者使用了一种更有效的体系结构,称为Performer注意机制,适用于更大的序列。


Temporal Fusion Transformer


Temporal Fusion Transformer(TFT)是由Google发布的基于Transformer的时间序列预测模型。TFT比以前的模型更加通用。


图片


TFT的顶层架构如图4所示。以下是该模型的主要优势:  


与前面提到的模型一样,TFT支持在多个异构时间序列上构建模型。


TFT支持三种类型的特征:i)具有已知的未来输入的时变数据ii)仅到目前为止已知的时变数据iii)分类/静态变量,也被称为时不变特征。因此TFT比以前的型号更通用。在前面提到的电力需求预测场景中,我们希望使用湿度水平作为一个时变特征,这是到目前为止才知道的。这在TFT中是可行的,但在DeepAR中不行。


图5显示了如何使用所有这些特性的示例:

图片
TFT非常强调可解释性。具体地说,通过利用Variable Selection组件(如上图4所示),模型可以成功地度量每个特性的影响。因此可以说模型学习了特性的重要性。

另一方面,TFT提出了一种新的可解释的多头注意机制:该层的注意权重可以揭示在回顾期间哪些时间步是最重要的。这些权重的可视化可以揭示整个数据集中最显著的季节模式。


预测区间:与DeepAR类似,TFT通过使用分位数回归输出预测区间和预测值。


综上所述,深度学习无疑彻底改变了时间序列预测的格局。上述所有模型除了无与伦比的性能之外,还有一个共同点:它们充分利用多重、多元的时间数据,同时它们使用外生信息,将预测性能提高到前所未有的水平。但是在自然语言处理(NLP)任务中多数都利用了预训练的模型。NLP任务的feed大多是人类创造的数据,充满了丰富而优秀的信息,几乎可以看作是一个数据单元。在时间序列预测中,我们可以感觉到缺乏这种预先训练的模型。为什么我们不能像在NLP中那样在时间序列中利用这个优势呢?


这就引出了我们要介绍的最后一个模型TSFormer,该模型考虑了两个视角,我们讲从输入到输出将其为四个部分,并且提供Python的实现代码(官方也提供了),这个模型是刚刚发布不久的,所以我们才在这里着重介绍它。


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客