社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

【深度学习】Transformer时间序列预测!

机器学习初学者 • 1 年前 • 254 次点击  

【导读】今天带来的这篇文章,提出了一种基于Transformer的用于长期时间序列预测的新方法PatchTST,取得了非常显著的效果。希望这篇文章能对你有所帮助,让你在学习和应用AI技术的道路上更进一步!




自从时间序列预测论文 Are Transformers Effective for Time Series Forecasting?(2022)以一个简单模型(DLinear)打败了复杂的Transformer模型后,关于Transformer是否适用于时间序列预测任务成为学术界的一个主要争论点。来自普林斯顿大学和IBM研究中心的研究人员提出了一种基于Transformer的时序预测和时序表示学习新方法(PatchTST),将时间序列数据转换成类似ViT(Vision Transformer)中的patch形式,取得了非常显著的效果。它成功超过了DLinear模型,也证明了关于Transformer可能不适合于序列预测任务的讨论是值得商榷的。

论文标题:A TIME SERIES IS WORTH 64 WORDS: LONG-TERM FORECASTING WITH TRANSFORMERS

论文作者:Yuqi Nie, Nam H. Nguyen, Phanwadee Sinthong, Jayant Kalagnanam

发表期刊:ICLR(International Conference on Learning Representations,国际学习表征会议),深度学习领域的顶级会议之一




1.介绍 



    预测是时间序列分析中的关键任务之一。随着深度学习模型的迅速发展,有关时间序列预测的研究也大大增加。深度模型不仅在预测任务中表现出色,而且在表征学习方面也表现出优异的性能。它能够提取抽象的表征,并将其转移到各种下游任务中,如分类和异常检测,以达到SOTA的精确度。

    在深度学习模型中,Transformer得益于其注意力机制,可以自动学习序列中元素之间的关联,因此成为序列建模任务的理想选择。在这篇文章中,作者提出了一种基于Transformer设计的有效模型,用于多变量时间序列预测和自监督表征学习。该模型基于两个关键部分:

    (1)Patching:将时间序列分割成子序列级patch,作为Transformer的输入token。其优势在于:

  • 保留局部语义信息。时间序列预测的目的是了解不同时间步的数据之间的相关性,但是单个时间步的数据并不像句子中的一个单词那样具有语义信息,因此提取局部语义信息对于分析它们之间的关联至关重要。

  • 关注更长的历史信息。以前的工作大多是将每个时间步的数据输入模型,这种方式在序列比较长的时候运行效率太低,导致无法引入更长的历史序列信息,而patch操作可以在输入token数量相同的情况下获得更长的回视窗口。

  • 降低模型计算量和内存使用量。原始Transformer在时间和空间上的复杂度为  ,其中N为输入token的数量。如果不进行预处理,N将与输入序列长度L具有相同的值。通过应用patch,可以将N缩小(N≈L/S,S为步长)。

    (2)Channel-independence:多变量时间序列是一个多通道信号,模型的输入token可以由来自单通道或多通道的数据表示。Channel-independence意味着每个通道仅包含一个单变量时间序列,它们共享相同的嵌入和Transformer权重。这已被证明适用于CNN和线性模型,但尚未应用于基于Transformer的模型中。





2.方法



    考虑以下问题:给定一个多变量时间序列样本集合:  ,回视窗口长度为L,其中每个  是对应于时间步t的M维向量,想要预测未来T个值  


2.1 模型结构

  文章提出的PatchTST(Patch Time Series Transformer)结构图如下所示,其中模型使用了Transformer编码器作为其核心结构。


2.2 时序预测

  • 前向过程(Forward Process)

    将多变量时间序列中的第i个序列表示为  ,i=1,...,M。因此,输入   被分割成M个单变量序列  ,根据Channel-independence设置,每个序列都独立地进入Transformer骨干网络。之后,Transformer将提供预测结果  ,如上图(a)所示。


  • Patching

    每个输入的单变量时间序列  首先被划分为N个patch,这些patch可以是有重叠的,也可以是不重叠的。

    设每个patch长度为P,两个连续patch之间的不重叠区域记为S,那么产生的patch序列为  。通过patch操作,输入模型的token数量减少。因此,在训练时间和GPU内存的限制下,patch设计可以让模型看到更长的历史序列,从而显著提高预测性能。


  • Transformer编码器

    模型使用普通的Transformer编码器,将观察到的信号映射为潜在表征。

    作者通过一个可训练的线性投影  ,将这些patch映射到D维的Transformer潜在空间,并使用一个可学习的位置编码  来标记各个patch的顺序。最终送入Transformer编码器的输入表示为   ,其中  

    多头注意力输出  计算公式:


    多头注意力模块还包括BatchNorm层和一个具有残差连接的前馈网络,如上图(b)所示。最后,利用一个带有线性头的展平层得到预测结果  。


  • 实例归一化(Instance Normalization)

    该技术最近被提出,用于缓解训练数据和测试数据之间的分布偏移效应。它通过使用简单的零均值和单位标准差,将每个时间序列实例  归一化。而在实际操作中,作者在patch之前对每个  进行归一化处理,然后将平均值和偏差加回到输出预测中,得到最后的预测结果。


  • 损失函数

    使用MSE损失来衡量预测结果与真实值之间的差异。计算每个通道的损失,并在M个时间序列上进行平均,得到总体目标损失:



2.3 自监督表征学习

    自监督表征学习目前已成为一种从无标签数据中提取高级抽象表征的流行方法。作者在这里利用掩码自编码器(Masked AutoEncoder,MAE)技术,基于PatchTST模型来获得多变量时间序列的有用表示,并将其应用到预测任务中,如上图(c)所示。MAE技术在概念上很简单:有意地随机删除输入序列的一部分,然后训练模型来恢复丢失的内容。

    具体来说,文章采用随机mask的方式,对patch进行零值掩码。然后利用MSE损失对模型进行训练,以还原被mask掉的patch。与预测任务不同的是,在表征学习阶段,patch的划分只能是无重叠的,以防止信息的泄露。

    之前基于Transformer的表征学习方法,大都是在单个时间步级别上应用mask。但是,单个时间步的masked值可以很容易地根据相邻点插值来推断,而不需要对整个序列有高层次的理解,这影响了预训练阶段的学习能力。文章在patch级别上应用mask,是一个更困难的任务,可以让模型更好地进行表征学习。





3.实验 



3.1 实验设置

  • 数据集

   天气、交通、电力、ILI和4个ETT数据集(ETTh1、ETTh2、ETTm1、ETTm2)

  • 基线

  FEDformer、Autoformer、Informer、Pyraformer、LogTrans,以及非基于Transformer的DLinear模型


  • 评估指标

     MSE(均方误差)、MAE(平均绝对误差)


  • 模型变体

     PatchTST/64:输入patch的数量为64,回视窗口长度L = 512

     PatchTST/42:输入patch的数量为42,默认回视窗口L = 336

     两者均使用patch长度P = 16,步长S = 8


3.2 多变量长期预测实验结果

  • 与基于Transformer的模型所能提供的最佳结果相比:

    PatchTST/64在MSE上总体降低了21.0%,在MAE上降低了16.7%;PatchTST/42在MSE上总体降低了20.2%,在MAE上总体降低了16.4%。

  • 与线性模型DLinear相比:

    PatchTST在总体上仍然优于它,特别是在大型数据集(天气、交通、电力)和ILI数据集上。

  • 此外,使用更长的历史序列信息也会提升预测效果。


3.3 掩码自监督学习实验结果

高掩码率:40%的patch被mask为零值

Fine-tuning:端到端微调

Lin. Prob.:线性层微调

Sup.:监督学习

根据实验结果,模型取得了出色的微调性能:

  • 通过对模型头进行微调(线性层微调),预测性能已经可以与从头开始监督训练整个网络相媲美,并且优于DLinear模型。

  • 通过端到端微调可以观察到最好的结果。


3.4 消融实验

P:patching

CI:Channel-independence

实验结果表明:patching和Channel-independence都是提高预测性能的重要因素。





4.总结



该文通过引入两个关键部分:Patching和Channel-independence,提出了一种有效的基于Transformer的时间序列预测模型。与以前的工作相比,它可以捕捉局部语义信息,并从更长的回视窗口中受益。文章不仅证明了PatchTST模型在监督学习方面优于其他基线,而且还证明了它在自监督表征学习方面的良好能力。




- E N D -


文章来源:时空数据智能实验室
论文链接:https://arxiv.org/pdf/2211.14730.pdf



    
往期精彩 回顾





Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/159217
 
254 次点击