目录
一、摘要
二、传统transformer的局限性
三、本文的贡献
四、模型总体架构
五、Self-attention Mechanism
六、衡量Query稀疏度
七、ProbSparse Self-attention
八、Encoder
Self-attention Distilling
九、Decoder
十、Experiment
消融实验
编辑
Computation Efficiency
十一、Reference
许多实际应用需要长序列时间序列的预测,如电力消耗计划。长序列时间序列预测(LSTF)要求模型具有较高的预测能力,即能够有效地捕捉输出和输入之间精确的远程依赖耦合。最近的研究显示了Transformer在提高预测能力方面的潜力。然而,Transformer存在一些严重的问题,使其无法直接应用于LSTF,包括二次元时间复杂度、高内存使用量和编码器-解码器体系结构的固有限制。为了解决这些问题,我们设计了一个高效的基于Transformer的LSTF模型,命名为Informer,该模型具有三个显著特征:(i) ProbSparse自注意机制,在时间复杂度和内存使用方面达到,并在序列依赖对齐方面具有相当的性能。(ii)自我注意蒸馏通过将级联层输入减半来突出支配性注意,并有效地处理极长的输入序列。(iii)生成式解码器虽然概念简单,但对长时间序列序列进行一次正向预测,而不是一步一步的预测,大大提高了长序列预测的推理速度。在四个大规模数据集上的大量实验表明,Informer方法明显优于现有方法,为LSTF问题提供了一种新的解决方案。
Vanilla Transformer在解决LSTF问题时有三个显著的局限性:
1. 自我注意的二次计算。自注意机制的原子操作,即规范点积,使每层的时间复杂度和内存使用量为O()。
2. 为长输入堆叠层时的内存瓶颈。J个编码器/解码器层的堆栈使得总内存使用量为O(J·),这限制了模型在接收长序列输入时的可扩展性。
3.预测长输出时的速度骤降。Vanilla Transformer的动态解码使得逐步推理与基于RNN的模型一样慢。
如上图所示,(a) 表示LSTF比短序列预测能涵盖较长的时期,在政策规划和保护投资方面具有重要区别。(b)现有方法的预测能力限制了LSTF的性能。例如,从length=48开始,MSE上升到不可接受的高度,推理速度急剧下降。
1. 在LSTF问题中,作者提出了Informer来成功地提高预测能力,从而验证了类transformer模型在捕获长序列时间序列输出和输入之间的单个远程依赖性方面的潜在价值。
2. 作者提出ProbSparse自注意机制来有效地取代规范的自注意。它在依赖对齐上实现了O(LlogL)时间复杂度和O(LlogL)内存使用。
3. 作者提出了自我注意蒸馏操作,以特权占主导地位的注意力得分在j堆叠层和将总空间复杂度大幅降低为O((2−)LlogL),便于接收长序列输入。
4. 作者提出了生成式解码器,以获得长序列输出,只需要一个向前的步骤,同时避免在推理阶段累积误差扩散。
左:编码器接收大量的长序列输入(绿色序列)。作者用提出的ProbSparse自我注意来取代传统的自我注意机制。蓝色梯形为自注意蒸馏操作,提取支配性注意,大幅缩小网络规模。层堆叠副本增加了鲁棒性。右:解码器接收长序列输入,将目标元素填充为零,测量特征图的加权注意组成,并以生成式的方式即时预测输出元素(橙色序列)。
传统的自注意力机制表示为:
其中,,自我注意结合这些值,并根据计算概率获得输出。它需要二次乘点积计算和内存使用,这是提高预测能力的主要缺点。
作者首先对传统自我注意的习得性注意模式进行了定性评估。“稀疏性”自我注意评分形成长尾分布(如下图所示),即少数点积对贡献主要注意,其他点积对产生琐碎注意。那么,下一个问题是如何区分它们?
从传统的自注意力公式中,第i个查询在所有键上的注意被定义为概率,输出是它与值v的组合。优势点积对促使相应查询的注意概率分布远离均匀分布。如果接近于均匀分布 ,那就说明这个query是“Lazy”的,没法选出重要的那些key,反之就说明该query是“active”的。那么自我注意就变成了V值的和,对有些输入是多余的。由于active的query对自注意力贡献很大,而lazy的query贡献很小,所以作者尽可能的选出那些active的query。分布p和q之间的“相似性”可以用来区分“重要的”queries。作者通过KL散度来度量“相似度”。去掉常数项,作者定义第i个查询的稀疏度量为:
所以对于第i个query的“稀疏度度量”,该值越大,说明概率分布和均匀分布差异越大,该query越活跃,得到了一个衡量query的标准。
基于上面提出的度量方法,通过允许每个键只关注u个主要查询,我们得出ProbSparse Self-attention:
其中是一个与q大小相同的稀疏矩阵,它只包含稀疏度量M(q, K)下的Top-u个queries,对于没有被选中的那些的score值取mean(V),来保证输入和输出序列长度都是L。在恒定的采样因子c控制下,作者设定,这使得ProbSparse Self-attention每次查询键查找只需要计算点积,层内存使用即时间复杂度保持。在多头透视图下,这种注意为每个头生成不同的稀疏查询键对,从而避免了严重的信息丢失。
然而,遍历度量M(, K)的所有查询需要计算每个点积对,即二次计算复杂度,此外,LSE操作有潜在的数值稳定性问题。基于此,我们提出了一个有效获取查询稀疏性度量的经验近似。即用代替之前的,具体原理(该引理的证明在原论文附录 D.1和2)如下图所示:
所以作者用一种近似改进了公式如下(如上图中用上界来代替那个LSE):
在自注意计算中,查询和键的输入长度通常是等价的,即, 所以通过上面的改进之后使得ProbSparse Self-attention总时间复杂度和空间复杂度为由减小为。
注意:ProbSparse Attention 在为每个query随机采样key时,每个head的采样结果是相同的,也就是采样的key是相同的。但是由于每一层self-attention都会先对Q、K、V做线性转换,这使得序列中同一个位置上不同head对应的query、key向量不同,所以每个head的同一个query的sparsity measurement都不相同,这就使得每个head中得到的前u个measurement 最高的query也是不同的。这也等价于每个head都采取了不同的优化策略。
编码器的设计目的是提取长序列输入的健壮的远程依赖性。编码器的草图如下图所示:
上图给出的是接收整个输入序列的主栈。然后第二个堆栈接受输入的一半切片,随后的堆栈重复。其中红色层为点积矩阵,通过对每层进行自注意蒸馏得到级联递减。最后将所有栈的特征映射连接成编码器的输出。
作者使用自注意蒸馏操作,以支配特征优先于优势特征,在下一层生成一个集中的自注意特征映射。它大幅修剪了输入的时间维度,如上图所示,注意块的n个头权重矩阵(重叠的红色方块)。受扩张卷积的启发,我们的“蒸馏”过程从第j层向前推进到第j+1层:
其中[·]AB表示注意块。它包含多头ProbSparse自注意和基本操作,其中Conv1d(·)使用ELU(·)激活函数在时间维度上执行一维卷积滤波器(核宽度=3)。我们在堆叠一层后,添加一个最大池化层,stride为2,向下采样到它的半片,这将整个内存使用量减少到O((2−)LlogL),是一个很小的数字。为了增强蒸馏操作的鲁棒性,作者构建了输入减半的主堆栈副本,并通过每次下降一层来逐步减少自我注意蒸馏层的数量,就像上图中的金字塔,这样它们的输出维度是对齐的。最后作者将所有堆栈的输出连接起来,得到编码器的最终隐藏表示。
作者使用标准解码器结构,它由两个相同的多头注意层组成。而生成推理则是用来缓解长时间预测的速度骤降。我们向解码器输入以下向量为:
其中为start token,为需要预测的部分(初始化为0),通过将掩模点积设置为−∞,将掩模多头注意应用于ProbSparse自注意计算。它可以防止每个位置指向下一个位置,从而避免自回归。一个完全连接的层获得最终的输出,它的外值取决于我们执行的是单变量预测还是多元预测。
Generative Inference 的原理如下图所示:
由上图可知,该解码器的关键部分在于两个注意力机制,作者这里使用的是ProbSparse Self-attention和Full-attention。需要注意的是,第一个attention层中的query、key、value都是根据Decoder输入的embedding乘上权重矩阵得到的,而第二个attention层中的query是根据前面attention层的输出乘上权重矩阵得到的,key和value是根据Encoder的输出乘上权重矩阵得到的。
dataset:ETT (Electricity Transformer Temperature), ECL (Electricity Consuming Load),Weather
baslines: ARIMA, Prophet, LSTMa, LST-net, DeepAR, LogTrans, Reformer
上图为单变量的预测结果,Informer显著提高了预测效果,Informer+是将所有的ProbSparse Attention换成标准的self-attention,我们可以看到,很多情况下,Informer效果比Informer+
要更好,作者认为这说明ProbSparse self-attention去掉了一些冗余的信息。
The performance of ProbSparse self-attention mechanism
由表3我们可以看到,当输入序列长度为1440时,中间两个模型已经无法处理了,而Informer和Reformer依然保持稳定,但是Informer效果要好很多;以及输入越长,效果比Reformer更明显。
The performance of self-attention distilling
如表5所示,Informer++模型是使用原始self-attention并移除卷积蒸馏操作,在输入长度为720时取得了好的效果,但是无法处理更长的输入。而Informer+对于更长的预测,更长的输入带来的性能提升更加明显。说明卷积蒸馏操作对于长时间序列的预测发挥重要作用。
The performance of generative style decoder
在本研究中,作者证明了解码器在获得“生成”结果方面的潜在价值。不同于现有的方法,标签和输出在训练和推理中被迫对齐,作者提出的解码器的预测完全依赖于时间戳,它可以通过偏移进行预测。从表6可以看出,随着偏移量的增加,‡算法的一般预测性能有抵抗性,而对动态解码而言,‡算法失败。它证明了解码器能够捕获任意输出之间的独立远程依赖关系并避免错误积累。
通过多元设置和所有方法当前的最佳实现,作者在图(5)中进行了严格的运行时比较。在训练阶段,基于transformer的方法中,Informer(红线)的训练效率最好。在测试阶段,作者的方法比使用生成式解码的其他方法快得多。理论时间复杂度和内存使用情况的比较如表4所示。Informer的性能与运行时实验一致。注意,LogTrans专注于改进自我注意机制,所以作者在LogTrans中应用他提出的解码器进行公平的比较(如表4)。
1. 细读informer与项目学习
2.Informer讲解PPT介绍【超详细】--AAAI 2021最佳论文:比Transformer更有效的长时间序列预测
3. 论文链接:PRELIMINARY VERSION DO NOT CITE (aaai.org)
4. 源代码链接:https://github.com/zhouhaoyi/Informer2020