文章全名:Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting
来源:AAAI 2021 best paper
完成单位:北京航空航天大学、加州大学伯克利分校、罗格斯大学、北京国网富达科技发展有限责任公司
长时预测需要模型有着较高的预测能力,这种能力能够捕捉到输出和输入之间精确的长期依赖耦合。
近期研究发现Transformer能够提升预测能力,但是由于其存在的一些问题导致它无法直接应用于长时预测。问题包括:二次的时间复杂度,高内存消耗,编解码器结构内在的一些限制。
因此本文设计了一种基于Transformer的长时预测模型,包含了三个独特的成分。
ProbSparse 自注意机制,达到了 O ( L l o g L ) \mathcal O(LlogL) O(LlogL)的时空复杂度,表现也很好。
自注意力蒸馏通过将级联层输入减半,突出显示主导注意力,并有效处理极长的输入序列。
生成式解码器,能够以一个正向操作预测长时间序列,而不是一步一步的方式,这大大提高了长序列预测的推理速度。
简介的主要内容和摘要类似,主要介绍了Transformer的一些缺陷,导致它无法有效地进行长时预测。
总结了如下三个最大的限制:
目前大部分的工作都致力于解决限制1,比如说Reformer、Linformer,都是为了解决时间复杂度,但是限制2和限制3仍处于未被解决的状态。
本文所做的贡献如下:
本文提出的Informer在长时预测任务表现良好,说明了Transformer结构的模型在捕获长序列依赖上有着很大的潜力。
本文提出的ProbSparse自注意力机制能够有效取代原来的自注意力机制,时空复杂度均为 O ( L l o g L ) \mathcal O(LlogL) O(LlogL)
本文提出自注意力蒸馏操作,来突出那些占主导作用的自注意力,进一步将空间复杂度限制在了 O ( ( 2 − ϵ ) L l o g L ) \mathcal O((2-\epsilon)LlogL) O((2−ϵ)LlogL)
本文提出了生成式解码器,只需要一步前向步骤就可以获得输出,这样也能避免推理过程中传播过程可能存在的累计误差这一问题。
首先是模型的整体结构
A ( q i , K , V ) = ∑ j k ( q i , k j ) ∑ l k ( q i , k l ) v j = E p ( k j ∣ q i ) [ v j ] \mathcal{A}\left(\mathbf{q}_i, \mathbf{K}, \mathbf{V}\right)=\sum_j \frac{k\left(\mathbf{q}_i, \mathbf{k}_j\right)}{\sum_l k\left(\mathbf{q}_i, \mathbf{k}_l\right)} \mathbf{v}_j=\mathbb{E}_{p\left(\mathbf{k}_j \mid \mathbf{q}_i\right)}\left[\mathbf{v}_j\right] A(qi,K,V)=j∑∑lk(qi,kl)k(qi,kj)vj=Ep(kj∣qi)[vj]
如上式所示,第i个查询在所有键的注意力可以被定义为一个可能性 p ( k j ∣ q i ) p\left(\mathbf{k}_j \mid \mathbf{q}_i\right) p(kj∣qi),输出就是每个可能性乘上对应v的和。占主导地位的点积对鼓励对应查询的注意力概率分布远离均匀分布。如果p趋近于一个均匀分布 q ( k j ∣ q i ) = 1 L k q(k_j|q_i)=\frac{1}{L_k} q(kj∣qi)=Lk1,那么自注意力就变成一个普通的和,这样的话这个输出对于残差输入就是冗余的,因为这两个东西是一样的。所以通过每个查询对应的 p ( k j ∣ q i ) p\left(\mathbf{k}_j \mid \mathbf{q}_i\right) p(kj∣qi)与 q ( k j ∣ q i ) q(k_j\mid q_i) q(kj∣qi)的相似性可以用来判别那些查询是重要的。
判断两个分布相似度的方法是KL散度。
K
L
(
q
∥
p
)
=
ln
∑
l
=
1
L
K
e
q
i
k
l
⊤
/
d
−
1
L
K
∑
j
=
1
L
K
q
i
k
j
⊤
/
d
−
ln
L
K
K L(q \| p)=\ln \sum_{l=1}^{L_K} e^{\mathbf{q}_i \mathbf{k}_l^{\top} / \sqrt{d}}-\frac{1}{L_K} \sum_{j=1}^{L_K} \mathbf{q}_i \mathbf{k}_j^{\top} / \sqrt{d}-\ln L_K
KL(q∥p)=lnl=1∑LKeqikl⊤/d−LK1j=1∑LKqikj⊤/d−lnLK
将常量删掉,最终定义第i个查询的稀疏度为:
M
(
q
i
,
K
)
=
ln
∑
j
=
1
L
K
e
q
i
k
j
⊤
d
−
1
L
K
∑
j
=
1
L
K
q
i
k
j
⊤
d
M\left(\mathbf{q}_i, \mathbf{K}\right)=\ln \sum_{j=1}^{L_K} e^{\frac{\mathbf{q}_i \mathbf{k}_j^{\top}}{\sqrt{d}}}-\frac{1}{L_K} \sum_{j=1}^{L_K} \frac{\mathbf{q}_i \mathbf{k}_j^{\top}}{\sqrt{d}}
M(qi,K)=lnj=1∑LKedqikj⊤−LK1j=1∑LKdqikj⊤
这个公式的前半部分是对数和Log-Sum-Exp(LSE),后半部分是算术平均和,LSE 会增强较大的数值对结果的影响,即较大的数值会对结果产生较大的贡献。而算术平均对所有数值都有相等的贡献。
基于稀疏度衡量方法,本文提出了如下的自注意力,让每个键只关注于最占主导地位的
u
u
u个查询。
A
(
Q
,
K
,
V
)
=
Softmax
(
Q
‾
K
⊤
d
)
V
\mathcal{A}(\mathbf{Q}, \mathbf{K}, \mathbf{V})=\operatorname{Softmax}\left(\frac{\overline{\mathbf{Q}} \mathbf{K}^{\top}}{\sqrt{d}}\right) \mathbf{V}
A(Q,K,V)=Softmax(dQK⊤)V
Q
‾
\overline{\mathbf{Q}}
Q是一个和
q
q
q相同大小的稀疏矩阵,只包含稀疏度衡量最高的
u
u
u个查询的信息。
u
=
c
⋅
ln
L
Q
u=c \cdot \ln L_Q
u=c⋅lnLQ,这样时间空间复杂度都会下降。本文也使用了多头注意的机制,这种注意为每个头部生成不同的稀疏查询键对,从而避免了严重的信息损失
但是计算稀疏度的时候还是需要遍历所有的 q i q_i qi,进行点积运算,这样运算复杂度达到了 O ( L Q L K ) \mathcal O(L_QL_K) O(LQLK),于是本文提出了一种经验近似方法来更高效的获得查询的稀疏度。
文章给出了一个引理:(具体的证明放在了附录中)
ln
L
K
≤
M
(
q
i
,
K
)
≤
max
j
{
q
i
k
j
⊤
/
d
}
−
1
L
K
∑
j
=
1
L
K
{
q
i
k
j
⊤
/
d
}
+
ln
L
K
\ln L_K \leq M\left(\mathbf{q}_i, \mathbf{K}\right) \leq \max _j\left\{\mathbf{q}_i \mathbf{k}_j^{\top} / \sqrt{d}\right\}-\frac{1}{L_K} \sum_{j=1}^{L_K}\left\{\mathbf{q}_i \mathbf{k}_j^{\top} / \sqrt{d}\right\}+\ln L_K
lnLK≤M(qi,K)≤jmax{qikj⊤/d}−LK1j=1∑LK{qikj⊤/d}+lnLK
从而给出了一种最大-平均的稀疏度评估方法。
M
ˉ
(
q
i
,
K
)
=
max
j
{
q
i
k
j
⊤
d
}
−
1
L
K
∑
j
=
1
L
K
q
i
k
j
⊤
d
\bar{M}\left(\mathbf{q}_i, \mathbf{K}\right)=\max _j\left\{\frac{\mathbf{q}_i \mathbf{k}_j^{\top}}{\sqrt{d}}\right\}-\frac{1}{L_K} \sum_{j=1}^{L_K} \frac{\mathbf{q}_i \mathbf{k}_j^{\top}}{\sqrt{d}}
Mˉ(qi,K)=jmax{dqikj⊤}−LK1j=1∑LKdqikj⊤
首先给出encoder的整体结构:
encoder的特征图中有很多 V V V值的冗余组合,所以本文使用了蒸馏操作来优先选择具有主导特征的优越特征,并在下一层中生成一个带有聚焦的自注意力特征图。
蒸馏的计算方式如下:
X
j
+
1
t
=
MaxPool
(
ELU
(
Conv1d
(
[
X
j
t
]
A
B
)
)
)
\mathbf{X}_{j+1}^t=\operatorname{MaxPool}\left(\operatorname{ELU}\left(\operatorname{Conv1d}\left(\left[\mathbf{X}_j^t\right]_{\mathrm{AB}}\right)\right)\right)
Xj+1t=MaxPool(ELU(Conv1d([Xjt]AB)))
[
⋅
]
A
B
[\cdot]_{AB}
[⋅]AB表示注意力块,包含多头ProbSparse自注意力和其它基本运算。
为了增强蒸馏操作的鲁棒性,本文使用输入减半构建主堆叠的副本,并逐渐减少自注意力蒸馏层的数量,一次丢弃一层,就像Figure2中的金字塔一样,使它们的输出维度对齐。因此,本文将所有堆叠的输出连接起来,得到编码器的最终隐藏表示。
本文使用了原Transformer的解码器结构,但是采用了生成推理来缓解长时间预测中的速度下降。
decoder的输入如下式所示:
X
d
e
t
=
Concat
(
X
token
t
,
X
0
t
)
∈
R
(
L
token
+
L
y
)
×
d
model
\mathbf{X}_{\mathrm{de}}^t=\operatorname{Concat}\left(\mathbf{X}_{\text {token }}^t, \mathbf{X}_{\mathbf{0}}^t\right) \in \mathbb{R}^{\left(L_{\text {token }}+L_y\right) \times d_{\text {model }}}
Xdet=Concat(Xtoken t,X0t)∈R(Ltoken +Ly)×dmodel
X
token
t
∈
R
L
token
×
d
model
\mathbf{X}_{\text {token }}^t \in \mathbb{R}^{L_{\text {token }} \times d_{\text {model }}}
Xtoken t∈RLtoken ×dmodel 是开始的token,
X
0
t
∈
R
L
y
×
d
model
\mathbf{X}_0^t \in \mathbb{R}^{L_{y} \times d_{\text {model }}}
X0t∈RLy×dmodel 是目标序列的占位符,设置为0。
ProbSparse自注意力采用了掩蔽多头自注意力,将需要掩盖的位置的点积都设置为负无穷。它组织了每个位置会注意那些即将到来的位置,从而来避免自回归的情况。最终输出是靠全连接层输出, d y d_y dy的大小取决于是执行单变量预测或多变量预测。
不同于选择特定的flag作为token,本文从输入序列中选择了 L t o k e n L_{token} Ltoken这么长的序列作为token。
比如说我们要预测七天的气温数据,那么我们就可以选择已知的五天的气温数据作为start token,那么输入decoder的内容就是 X d e = { X 5 d , X 0 } X_{de}=\{X_{5d},X_0\} Xde={X5d,X0}, X 0 X_0 X0包含目标序列的时间戳,即目标周的上下文。然后,本文提出的解码器通过一个前向过程来预测输出,而不是在传统的编码器-解码器架构中耗时的"动态解码"。
本模型采用了MSE损失函数。
ETT:电力变压器温度数据,数据来源是中国两个不同县两年的数据,为了探索长时预测的粒度问题,本文将数据分为1-小时级别和15-分钟级别这两种粒度的数据,每个数据点包含了目标值“oil temperature”和六种电力特征。训练验证测试集分别为12、4、4个月
ECL:电力消耗数据,包含321个客户的用电数据,一共有两年的数据,以小时为级别,训练验证测试集分别为15、3、4个月
天气:该数据集包含了近1600个美国地点的本地气候数据,时间跨度为2010年到2013年,数据点每小时采集一次。每个数据点包含了目标值"wet bulb"和11个气候特征。训练/验证/测试的时间分配为28个月/10个月/10个月。
有关超参数的设置可以参考论文。
衡量预测效果的指标有两个
M
A
E
=
1
n
∑
i
=
1
n
∣
y
−
y
^
∣
\mathrm{MAE}=\frac{1}{n} \sum_{i=1}^n|\mathbf{y}-\hat{\mathbf{y}}|
MAE=n1i=1∑n∣y−y^∣
M S E = 1 n ∑ i = 1 n ( y − y ^ ) 2 \mathrm{MSE}=\frac{1}{n} \sum_{i=1}^n(\mathbf{y}-\hat{\mathbf{y}})^2 MSE=n1i=1∑n(y−y^)2
作用在每个预测窗口,对于多变量预测就取平均。
本文的模型在所有数据集上都表现良好,并且当需要预测的长度变长时,模型的预测误差也是平滑且缓慢的上升,说明模型的预测能力很优秀。
Informer相较于没有采用sparse策略的Informer表现要更好,说明对查询进行稀疏操作也是能够生成合理的注意力图的。
Reformer因为使用的是动态解码,在长时预测任务中表现很差,其它使用生成式解码器的非自回归的解码器表现就更好一些。
本文提出的方法要比使用循环神经网络的方法表现好很多。
整体表现和单变量时序预测类似,仍然能超过其它baseline,并且比基于RNN的方法要好
与单变量结果相比,相较其它模型优势的压倒性有所降低。这种现象可能是由于特征维度的预测能力的异性所导致的。本文没有再做更多的研究和探讨。
ETT分钟级别的序列{96,288,672}和ETT小时级别的序列{24,48,168}是对齐的。当数据的粒度不同时,Informer仍都能够比其它的baseline表现更好。