A TIME SERIES IS WORTH 64 WORDS: LONG-TERM FORECASTING WITH TRANSFORMERS
A TIME SERIES IS WORTH 64 WORDS: LONG-TERM FORECASTING WITH TRANSFORMERS
本文提出一种基于transformer的多变量时间序列预测和自监督表示学习模型的有效设计。它基于两个关键部分:(i)将时间序列分割为子序列级的补丁,这些补丁作为Transformer的输入标记;(ii)通道独立性,其中每个通道包含一个单一的单变量时间序列,在所有序列中共享相同的嵌入和Transformer权重。补丁设计自然有三个好处:嵌入中保留了局部语义信息;给定相同的回视窗口,注意力图的计算和内存使用二次减少;并且模型可以参与更长的历史。与基于SOTA Transformer的模型相比,通道无关的patch time series Transformer (PatchTST)可以显著提高长期预测精度。将该模型应用于自监督预训练任务,并实现了出色的微调性能,在大型数据集上优于监督训练。将一个数据集上的掩码预训练表示迁移到其他数据集上也可以产生SOTA的预测精度。
关键设计
本文试图通过提出一种通道无关的patch time series Transformer (PatchTST)模型来回答这个问题,该模型包含两个关键设计:
1.Patching
具体来说,它们都是将时间序列分成若干个时间段(Preformer里用的术语是segment,本文用的是patch,实际上是差不多的),每一个时间段视为一个token(这不同于很多Transformer-based模型将每一个时间点视为一个token)。
patch的结构如下图所示。对于一个单变量序列(为什么是单变量,可以看下一小节Channel-independence中的介绍),将其划分为 N 个patch(可以是有重叠的,也可以是无重叠的,无重叠的情况就相当于Preformer中的均匀分段),每个patch的长度为 P 。然后将每个patch视为一个token,进行embedding以及加上位置编码,即可直接输入到普通的Transformer中(图中的Transformer Encoder)。最后将向量展平之后输入到一个预测头(Linear Head),得到预测的单变量输出序列

通过使用patch,输入token的数量可以从L减少到大约L/S。这意味着注意图的内存使用量和计算复杂度以s的倍数二次下降。因此,在训练时间和GPU内存受限的情况下,patch设计可以让模型看到更长的历史序列,这可以显著提高预测性能
2. Channel-independence
很多Transformer-based模型采用了channel-mixing的方式,指的是,对于多元时间序列(相当于多通道信号) ,直接将时间序列的所有维度形成的向量投影到嵌入空间以混合多个通道的信息。Channel-independence意味着每个输入token只包含来自单个通道的信息。本文就采用了Channel-independence,DLinear中也采用了这种方式。

如上图,本文将多元时间序列(维度为 MM )中每一维单独进行处理,即将每一维分别输入到Transformer Backbone中,将所得预测结果再沿维度方向拼接起来。这相当于将不同维度视为独立的,但embedding和Transformer的权重在各个维度是共享的。这样的话,每个Transformer Backbone只需要处理单变量序列。
3. REPRESENTATION LEARNING
这就很直观了,直接mask掉一些patch然后进行重建即可。对于每一个token(patch),它通过Transformer Encoder后输出维度是 D ,由于该patch本身的长度是 P ,因此要重建它的话,再加上一个 D×P 的Linear层即可。作者还说明了分patch对mask重建来进行自监督学习的好处:mask一个时间点的话,直接根据相邻点插值就可以重建,这就完全没必要学习了,而mask一个patch来重建的话则更有意义更有难度 。
先进行自监督训练再微调下游预测任务,效果会比直接训练下游预测任务要好。


