论文标题:iCROSSFORMER : TRANSFORMER UTILIZING CROSS DIMENSION DEPENDENCY FOR MULTIVARIATE TIME SERIES FORECASTING
开源代码:https://github.com/Thinklab-SJTU/Crossformer
前言
Crossformer是一篇非常典型的在transformer基础上魔改注意力机制的文章,这虽然现在时间序列中的多尺度、注意力基本已经做到头了,但是作为一篇学习论文,质量很高,值得阅读。另外,这篇文章也算是为patch找到了依据。Transformer的核心之一是注意力机制,而基础Transformer时序预测的注意力机制主要建模同一变量不同时刻的相关性(文中称跨时间依赖,如下图b),却忽视了不同变量之间的依赖性(文中称之为跨维度依赖,如下图c)。为了填补这一空缺,本文提出了 Crossformer,利用跨维度依赖性进行多变量时序预测。
图1
Crossformer 中,输入多维变量通过DSW(Dimension-Segment-Wise )过程嵌入为2D向量数组,保留时间和维度信息。然后提出TSA(Two-Stage Attention)两阶段注意力机制捕获跨时间和跨维度的依赖关系。利用DSW嵌入和TSA层,Crossformer建立了一个分层编码器-解码器(HED),以使用不同尺度的信息进行最终预测。对六个真实世界数据集的广泛实验结果表明,Crossformer相对于以往的最新技术的有效性。
上图中图c显示本文是不同时间、不同维度进行嵌入。
本文工作
1、DIMENSION - SEGMENT-WISE EMBEDDING(DSW)
本文的第一个创新点在于时序数据的embedding,我们先看图1。图1(a)显示了用于多变量时间序列预测的原始Transformer的典型注意力分数图。我们可以看到,注意力值有一种分段的趋势,即相邻的数据点具有相似的注意力权重。
基于以上两点,作者认为嵌入向量应该表示单个维度的一系列segment,如图1(c),而不是单个时间步中所有维度的值,图1(b)。为此作者提出Dimension-Segment-Wise(DSW)嵌入,其中每个维度中的点被分成长度为 L seg 的段。
直观上理解,这是一种类似patch的分段策略,将嵌入的一维向量序列分成段以计算段相关性,以增强局部性并减少计算复杂性。
2、TWO-STAGE ATTENTION LAYER
这一部分作者提出两阶段注意力(TSA)层,以捕获二维向量数组之间的跨时间和跨维度依赖关系,如图2(a)所示:
跨时间步注意力机制(Cross-Time Stage)
作者直接对每个维度应用了多头自注意力,我们使用Z_i,: 来表示在时间步i时所有维度的向量,用Z:,d 表示在维度d中所有时间步的向量。
MLP 表示多层(本文中为两层)前馈网络;MSA(Q, K, V) 表示多头自注意力层,其中Q, K, V 分别充当查询、键和值矩阵。所有维度(1 ≤ d ≤ D)共用相同的 MSA 层。Z^time 表示MSA和MLP输出的结果。
跨时间阶段的计算复杂度是O(DL^2)。在这一阶段之后,同一维度中时间段之间的依赖关系被捕捉在Z^time中。然后Z^time成为跨维度阶段的输入,以捕获跨维度的依赖关系。
图2
跨维度注意力机制
在跨维度注意力机制阶段,作者没有简单地分割维度并直接应用多头自注意力机制(MSA)。因为这将导致计算复杂度达到O(D^2)(如图2(b)所示),D代表特征的个数,D相当大的数据集来说开销过大。为了应对这个问题,作者提出了一种路由器机制。如图2(c)所示,作者为每个时间步长i,设置了一个固定的(远小于D)的可学习向量作为路由器,公式中的R。首先使用这些路由器作为查询Q,利用注意力机制从所有维度收集信息,其中所有维度的向量充当K和V。然后,路由器将收集到的信息按照维度分发,这一过程中采用维度向量作为Q,而聚合的信息作为K和V。通过此方法,作者构建了D个维度间的全面连接关系。
3、HIERARCHICAL ENCODER-DECODER
Crossformer中带有3层编码器的层次编解码器结构。每个向量的长度表示所涵盖的时间范围。编码器(左侧)使用TSA层和部分合并来捕捉不同尺度上的依赖性:上层中的向量涵盖更长的范围,从而在较粗略的尺度上形成依赖性。通过探索不同的尺度,解码器(右侧)通过在每个尺度上进行预测并将它们相加来做出最终预测。
实验结果
Crossformer在大多数数据集上展示了领先的性能,在不同的预测长度设置上,它在总共58个案例中取得了36个第一名和51个第二名的成绩。