当解决长序列时间序列预测问题时,Transformer会存在三个问题:
1)self attention的平方计算:self-attention中的原子点积,导致了每层时间和空间复杂度为
2)长输入时堆叠层的内存瓶颈:J层编码/解码的堆叠使内存使用为,限制了模型在接收长序列输入时的可扩展性。
3)预测长期输出的速度降低:Transformer的动态解码与RNN一样慢。
本文的贡献如下:
-
提出了Informer提升长序列时间预测预测问题的预测能力;
-
提出了ProbSparse self-attention,实现了时间和空间的
的复杂度;
-
提出了self-attention蒸馏操作,提取J层堆叠层的主要attention分数,并将空间复杂度降低至
;
-
提出了生成风格解码器,仅需一步前向操作,同时避免了推理阶段的累积误差。
Informer的模型架构如下:
高效self-attention机制
Transformer中的self-attention分数为,利用概率形式的核平滑器定义第i个查询的注意力:
,其中
,且kernel选择了不对称指数内核
。
首先对典型自我注意的习得注意模式进行定性评估,发现“稀疏性”self-attention得分形成长尾分布。
query稀疏性度量
定义第i个query的稀疏性度量为,若该指标越大,则表示attention概率p分布更多样化,且在长尾self-attention分布的头部有很大几率含有点积对的主要成分。
ProbSparse self-attention
基于上述query稀疏性度量,提出了ProbSparse self-attention,允许每个key仅关注u个主要的query:,其中
为与q相同大小的稀疏矩阵,仅包含稀疏性度量M(q,K)最高的u个query,设置
。
编码器:在内存使用限制下允许处理更长的序列输入
self-attention 蒸馏
利用蒸馏操作,将具有主导特征的优势特征赋予优先级,并在下一层生成一个集中的自注意特征图。从j层到j+1层的蒸馏操作如下:
其中为attention block。
解码器:通过一次前向过程生成长序列输出
在长时间预测中,利用生成推理来缓解速度骤降的问题。向解码器输入如下向量:
其中为起始token,
为目标序列的占位符。 ProbSparse self-attention通过将masked点积设置为-无穷,应用了Masked multi-head attention。
生成式推理
将的序列作为起始token,例如,需要预测7天的序列,则将目标序列前面已知的5天序列作为起始token:
。
包含目标序列的时间戳。这样,仅通过一次前向过程就可以进行推理。
Loss
选择MSE为loss函数。