文章信息
本周阅读的论文是题目为《Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting》的一篇2021年发表在AAAI会议上涉及时间序列预测问题的文章。
摘要
在很多实际问题应用中,需要对长时时间序列问题进行预测,例如用电消耗规划。长时时间序列预测(LSTF)要求模型具有较强的预测能力,即能够有效捕捉输出和输入之间的精确长程相关耦合。近期的研究表明,Transformer具有提高预测能力的潜力。然而,Transformer存在一些严重的问题,使其无法直接应用到LSTF问题上,例如二次时间复杂度、高内存使用率以及encoder-decoder体系结构的固有限制。为解决这些问题,我们设计了一个基于Transformer的高效的LSTF模型——Informer,它具有三个显著的特点:
1)ProSparse Self-Attention:在时间复杂度和内存使用率上达到了,在序列的依赖对齐上具有相当的性能。
2)Self-attention:提取通过将级联层输入减半来突出控制注意,并有效地处理超长的输入序列。
3)生成式decoder:尽管概念简单,对长时间序列进行正向预测,而不是一步一步预测,大大提高了长时预测的速度。
在四个大规模数据集上的大量实验表明,Informer的性能明显优于现有的方法,为LSTF问题提供了一种新的解决方案。
介绍
时间序列预测在许多领域都是一个关键的因素,如传感器网络检测、能源和智能电网管理、交通客流预测等。在这些场景中,我们可以利用大量关于过去行为的时间序列数据来进行长期预测,即长时时间序列预测(LSTF)。由于时间序列越来越长,模型的预测能力收到很大限制。目前,LSTF(长时时序预测)面临的主要挑战是提高预测能力,以满足日益增长的长序列需求,这需要卓越的长程较准能力以及对长序列输入输出的高效操作。
近年来,Transformer模型在捕捉长程依赖关系方面展示了比RNN模型更好的预测性能。自注意力机制可以极大缩短时间序列数据传输的路径长度,同时避免循环结构,解决了长程依赖问题。但其本身存在的二次时间复杂度、高内存使用率以及encoder-decoder体系结构的固有限制成为了其在LSTF问题应用上的瓶颈,具体局限如下:
Self-attention的二次计算复杂度:self-attention机制的点乘操作会导致模型每层的时间复杂度和内存使用率达到。
Stacking layers的长时间步输入内存瓶颈:J个encoder/decoder的堆叠会导致内存的使用率为。
预测长时间步输出的速度骤降:动态decoder会导致逐步推理速度变慢。
文章尝试解答以下的问题:Transformer是否可以提高计算、内存和架构效率,以及保持更高的预测能力?
为此,本文明确探讨存在的三个问题,研究了self-attention机制中的稀疏性,对Transformer结构进行改进,并进行大量实验。本文的主要贡献如下:
文章提出Informer模型成功提高了LSTF问题的预测能力,验证了Transformer模型在捕获长时时间序列输出和输入之间的个体长程依赖性的潜在价值;
文章提出了ProbSparse self-attention机制来有效替代常规的self-attention。取得了时间复杂度以及内存使用率;
文章还提出了生成式的Decoder,只需向前一步就可以获取长时序的输出,避免在inference阶段误差的累计传播。
研究准备
1)问题定义
在固定大小窗口的滚动预测设置下,我们定义t时刻的输入为,需要预测输出的相关序列为。LSTF问题鼓励输出一个更长的输出,并且特征维度不再局限于单变量情况。
2)Encoder-decoder architecture
许多流行的模型被设计为把输入“encoder”为一个隐藏状态,并且将输出的表示解码,在推断过程中,通过step-by-step的过程(dynamic decoding),即decoder从前一个状态计算一个新的隐藏状态以及第k步的输出,从而对k+1个序列进行预测。
3)Input Representation
为增强时间序列输入的全局位置上下文和局部时间上下文,给出了统一的输入表示,如下(更详细符号意义可参见原文附录B):
其中,α是在标量投影和局部投影之间平衡大小的因子,如果输入序列已经标准化过了,则推荐值为1,下图是输入表示的直观的概述:
图1 The input representation of Informer
模型方法细节
现有的时序方法预测大致分为两类:1)经典的时间序列模型,如LSTM等;2)RNN及其变体为代表的encoder-decoder结构的深度学习模型。Informer模型基于encoder-decoder结构,目标是解决LSTF问题,其模型结构概览图如下:
图2 Informer model overview
(1)Self-attention机制
传统的self-attention输入为(query,key,value),表示为:
第i个attention被定义为kernel平滑的概率为:
Self-attention需要O(LQLK)的内存以及二次的点积计算代价,这是预测能力的主要缺点。先前的一些研究表明,自注意概率的分布具有潜在的稀疏性,所以在这些研究中,已经针对所有设计了一些“选择性”计数策略。但是,这些方法仅限于采用启发式算法进行理论分析,并使用相同的策略来解决多头自注意的问题,这也缩小了进一步改进的范围。
在论文中,首先对典型自注意的学习注意模型进行定性评估。“稀疏性”self-attention得分形成长尾分布,即少数点积对主要注意有贡献,其他点积可以忽略。论文使用原始Transformer在ETTH数据集研究self-attention的特征图分布,如下图(选用Layer1中的Head1和Head7的分数):
(2)Query Sparsity评估
那么该如何区分得到有贡献的点积呢?
已知第i个查询对所有key的关注度定义为概率,我们定义第i个query sparsity评估为:
其中,第一项是在所有key的Log-Sum-Exp(LSE),第二项是arithmetic均值。
ProbSparse Self-attention:
其中是和q相同大小的稀疏矩阵,它仅包含稀疏评估下M(q, M)的queries,由采样factor c所控制,我们令,可以大大减小计算的复杂度。本文提出了query sparsity评估的近似,即:
具体证明可以查看文章附录D,下图是直观的数值性示例:
在实践中,查询和建的输入长度通常是相等的,即LQ =LK =L,这么做可以将时间和空间复杂度控制到O(LlnL)。
(3)Encoder:允许在内存使用限制下处理更长的顺序输入
Encoder设计用于提取长序列输入鲁棒的long-range相关性,在前面的讨论中可以知道,在输入表示之后,第t个序列输入已表示为矩阵,下面是Encoder的示意图:
图5 The single stack in encoder
为避免encoder的特征映射带来V值得冗余组合,利用distilling对具有支配特征的优势特征进行特权化,并在下一层生成focus self-attention特征映射。它对输入的时间维度进行了锐利的修建,如上图结构所示,n个头部权重矩阵(重叠的红色方块)。受扩展卷积的启发,文章提出的“distilling”过程从第j层往j+1层推进:
其中包含Multi-Head ProbSparse Self-attention以及重要的attention block操作。为了增强distilling操作的鲁棒性,我们构建了halving replicas,并通过一次删除一层(如上图)来逐步减少自关注提取层的数量,从而使它们的输出维度对齐。因此,我们将所有堆栈的输出串联起来,并得到encoder的最终隐藏表示。
(4)Decoder:通过一个正向过程生成长序列输出
此处使用标准的decoder结构,由2个一样的Multi-head attention层,但是,生成式inference被用来缓解速度瓶颈。将Masked Multi-head attention应用于ProbSparse self-attention,将mask的点积设置为负无穷。可以防止每个位置都关注未来的位置,从而避免了自回归。一个完全连接的层获得最终的输出,它的超大小取决于我们是在执行单变量预测还是在执行多变量预测。
(5)Generative Inference
文章从长序列中采样一个,这是在输出序列之前的slice。以图中预测168个点为例(7天温度预测),我们将目标序列已知的前5天的值作为“start token”,并将输入生成式推断Decoder。包含目标序列的时间戳,即目标周的上下文。注意,文章提出的decoder通过一个前向过程预测所有输出,并且不存在耗时的“dynamic decoding”。
总结
本文研究了长序列时间序列预测问题,提出了长序列预测的Informer方法。具体地:
设计了ProbSparse self-attention和提取操作来处理vanilla Transformer中二次时间复杂度和二次内存使用的挑战。
Generative decoder缓解了传统编解码结构的局限性。
通过真实数据的实验,验证了Informer对提高预测能力的有效性。
本篇阅读笔记仅仅对文章的模型结构部分进行了分析,若对真实数据的实验感兴趣的读者,可以阅读原文的实验部分。
Attention
如果你和我一样是轨道交通、道路交通、城市规划相关领域的,可以加微信:Dr_JinleiZhang,备注“进群”,加入交通大数据交流群!希望我们共同进步!