Transformer如何应用于时间序列预测一直是近期探讨的一个核心问题,这里包括多变量建模的处理方式、Transformer的结构等。在DLinear中,提出了用线性模型打败Transformer模型;在后来的PatchTST等工作中,又验证了Transformer的有效性。那么,到底如何使用Transformer进行时间序列预测效果最好呢?
近期华南理工大学发表了PETFormer,这篇文章主要从两个角度探索了Transformer如何应用于时间序列预测,一方面是Transformer的结构上,提出了Placeholder-enhanced结构;另一方面是多变量关系建模上,探索了最有效的建模方式。
下面,将从输入数据构建、Transformer结构、多变量关系建模3个角度介绍一下本文的核心工作。
论文标题:PETformer: Long-term Time Series Forecasting via Placeholder-enhanced Transformer
下载地址:https://arxiv.org/pdf/2308.04791v1.pdf
1、输入数据构造
时间序列和NLP不同,NLP每个token就有明确的语义含义,而时间序列每个点并没有明确含义,需要结合上下文信息才能体现出来。因此,本文仍然沿用了PatchTST的方式,将时间序列分成多个patch,每个patch分别生成embedding。和PatchTST的差别是,文中使用了更大的子序列长度,这样一方面可以提升运算效率,另一方面也让每个patch的语义信息更加明确。
此外,文中也使用RevIN的方式,对输入序列进行了归一化处理。
2、Transformer结构
在Transformer结构上,本文提出了placeholder-enhanced的方式。在原来的Encoder-Decoder结构中,预测序列和历史序列被分割成两个部分分别由Encoder和Decoder建模,再通过cross-attention建立联系。这个过程会使历史序列的信息出现损失,无法完美应用到Decoder中。
为了解决这个问题,文中采用了placeholder-enhanced的方式,在Decoder部分使用几个可学习的向量作为输入,不再区分Encoder和Decoder,而是拼接到历史序列的token上,一起输入到统一Transformer,让待预测部分可以更自然的获取历史序列信息。
在attention的计算方式上,文中尝试了如下4种attention计算方式:
Full attention:每个节点做双向attention
No inter-future attention:未来序列部分内部不做attention
No inter-history attention:历史序列部分不做attention,相当于未来序列和历史序列每个token独立进行attention
Only future focuses on history:只有未来序列和历史序列做attention,未来序列和历史序列内部都不做attention
3、多变量建模方法
在上述的过程中,每个变量是独立建模的,建模过程中没有考虑到各个变量之间的关系,和PatcchTST类似。但是,各变量的关系是有额外信息增益的,因此本文增加了一个Inter-channel Interaction模块,在每个变量独立进行时间维度建模后,再进行一次多变量间关系建模。
具体的建模方式,文中也尝试了4种类型:
No channel interaction:每个变量独立,不建模变量间关系
Self-attention:变量间使用self-attention建模
Channel identifier:每个channel用一个可学习的向量,和token计算关系
Cross-attention:结合每个channel的token和identifier进行attention
4、实验结果
文中对多个组件进行了消融实验,分析不同模块设计对最终效果的影响。
在模型结构方面,整体结果如下表,使用PET的方式比Encoder-Decoder等结构效果要好,同时full attention的方式要优于其他attention方式。
对于patch内子序列长度的选择,可以看出子序列长度越大,整体效果越好:
对于多变量关系建模方面,直接将channel融合到一起输入Transformer的效果最差,而其他的各种将channel间信息交互与时序建模分开的方式效果基本不相上下。但是整体来看仍然是不用channel间交互的方式效果会稍好一些。文中认为channel间关系难以建模是导致引入channel间关系建模效果效果提升不明显的原因。