Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting论文笔记

Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting

AAAI2021 Best paper

Informer 的主要工作是使用 Transfomer 实现长序列预测(Long Sequence Time-Series Forecasting),以下称为 LSTF。针对 Transfomer 在长序列预测中的不足(平方时间复杂度、高内存占用和现有编解码结构的局限性),提出 ProbSparse 注意力机制、自注意力蒸馏技术和生成式解码器等模块解决或缓解上述问题。

Motivation

  1. LSTF任务具有重要的研究意义,对政策计划和投资避险等多种需要长时预测的任务至关重要。
  2. 目前现有方法多专注于短期预测,模型缺乏长期预测能力。
  3. Transformer具有较强的捕获长距离依赖的能力,但是,在计算时间复杂度、空间复杂度以及如何加强长序列输入和输出的关联上都需要优化。即传统Transformer解决LSTF有以下三点不足:
    1. Self-attention的平方级的计算时间复杂度。
    2. Transformer通常需要堆叠多层网络,导致内存占用瓶颈。
    3. step-by-step解码预测,使得推理速度慢。

Contribution

  1. 提出ProbSparse Self-attention,能够筛选出所有最重要的一部分query,能够大大的减少计算的时间复杂度和空间复杂度。
  2. 提出了一个Self-attention Distilling操作,通过卷积和池化操作减少维度和网络参数量。
  3. 提出Generative Style Decoder,只需一步即可得到所有预测结果。

Preliminary

  1. 输入输出形式化表示

    输入: X t = { x 1 t , ⋯   , x L x t ∣ x i t ∈ R d x } \mathcal{X^t}=\left\{x_1^t,\cdots,x_{L_x}^t|x_i^t\in \mathbb{R}^{d_x}\right\} Xt={x1t,,xLxtxitRdx}

    输出: Y t = { y i t , ⋯   , y L y t ∣ y i t ∈ R d y } \mathcal{Y^t}=\left\{y_i^t,\cdots,y_{L_y}^t | y_i^t\in \mathbb{R^{d_y}}\right\} Yt={yit,,yLytyitRdy}

  2. Encoder-Decoder架构

    将输入 X t \mathcal{X^t} Xt编码为隐藏状态 H t \mathcal{H^t} Ht,然后将 H t \mathcal{H^t} Ht解码为输出表示 Y t \mathcal{Y^t} Yt。通常推理阶段采用step-by-step模式,即动态解码。

  3. 输入表示

    为增强时间序列输入的全局位置上下文和局部时间上下文,给出了统一的输入表示

    X f e e d [ i ] t = α u i t + P E ( L x × ( t − 1 ) + i , ) + ∑ p [ S E ( L x × ( t − 1 ) + i ) ] p \mathcal{X_{feed[i]}^t}=\alpha u_i^t+PE_{(L_x\times (t-1)+i,)}+\sum\limits_p[SE_{(L_x\times(t-1)+i)}]_p Xfeed[i]t=αuit+PE(Lx×(t1)+i,)+p[SE(Lx×(t1)+i)]p

    其中, α \alpha α是在标量投影和局部投影之间平衡大小的因子,如果输入序列已经标准化过了,则该值为1,下图为输入表示的直观表示:

Method

现有的时序方法预测大致分为两类:1):经典的时间序列模型;2):RNN及其变体为代表的encoder-decoder结构的深度学习模型。Informer模型基于encoder-decoder结构,目标是解决LSTF问题,其模型结构概览图如下:

  1. 高效的self-attention机制

    传统的self-attention输入为(query,key,value),表示为: A ( Q , K , V ) = S o f t m a x ( Q K T d ) A(Q,K,V)=Softmax(\frac{QK^T}{\sqrt{d}}) A(Q,K,V)=Softmax(d QKT),其中 Q ∈ R L Q × d Q\in \mathbb{R}^{L_Q\times d} QRLQ×d, K ∈ R L k × d K\in \mathbb{R}^{L_k\times d} KRLk×d, V ∈ R L k × d V\in \mathbb{R}^{L_k\times d} VRLk×d,d是输入维度。

    进而,第i个query的注意力可以定义为核平滑的概率形式:

    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 ] A(q_i,K,V)=\sum\limits_j\frac{k(q_i,k_j)}{\sum_lk(q_i,k_l)}v_j=E_{p(k_j|q_i)}[v_j] A(qi,K,V)=jlk(qi,kl)k(qi,kj)vj=Ep(kjqi)[vj].

    其中 p ( k j ∣ q i ) = k ( q i , k j ) ∑ l k ( q i , k l ) p(k_j|q_i)=\frac{k(q_i,k_j)}{\sum_lk(q_i,k_l)} p(kjqi)=lk(qi,kl)k(qi,kj),计算该概率的时间复杂度为平方级,并且需要 O ( L Q L K ) O(L_QL_K) O(LQLK)的空间复杂度,这是限制预测能力的主要原因。
    作者通过实验去验证原自注意力机制存在稀疏性,即自注意力特征图的长尾分布现象。也就是说只有少部分的点积对注意力得分又贡献,而其余的点积可以忽略。那么就只需要筛选出重要那的那一部分点积进行计算即可

    根据这个特性,作者首先提出一个Query稀疏程度的度量方法,然后筛选出重要的Query,提出ProbSparse Self-attention计算注意力得分。

    作者认为是突出的点积对(重要部分)导致对应的 query 的注意力概率分布远离均匀分布。若 p ( k j ∣ q i ) p(k_j|q_i) p(kjqi)接近均匀分布 ,那么其概率分布应该为 p ( k j ∣ q i ) = 1 L K p(k_j|q_i)=\frac{1}{L_K} p(kjqi)=LK1。要度量两种分布的距离,自然想到使用 KL 散度来度量。

    从而得到第i个Query的稀疏性度量公式为:

    M ( q i , K ) = ln ⁡ ∑ j = 1 L K e q i k j T d − 1 L k ∑ j = 1 L k q i j j T d M(q_i,K)=\ln{\sum\limits_{j=1}^{L_K}e^{\frac{q_ik_j^T}{\sqrt{d}}}}-\frac{1}{L_k}\sum\limits_{j=1}^{L_k}\frac{q_ij_j^T}{\sqrt{d}} M(qi,K)=lnj=1LKed qikjTLk1j=1Lkd qijjT

    如果第 i 个 query 的 M 值较大,说明它的注意力概率 p 相较其他部分差异性较大,比较大可能性是重要性部分.

    基于上述度量方法,ProbSparse 自注意力计算方式可以表示为: A ( Q , K , V ) = S o f t m a x ( Q ˉ K T d ) A(Q,K,V)=Softmax(\frac{\bar{Q}K^T}{\sqrt{d}}) A(Q,K,V)=Softmax(d QˉKT),其中 Q ˉ \bar{Q} Qˉ为稀疏矩阵包含 TOP u 个 query。

  2. 编码器

    目标:在内存占用限制内,允许编码器处理更长的序列输入。

编码器的主要功能是捕获长序列输入之间的长范围依赖。将输入送至自注意力模块,这里采用的是自注意力蒸馏操作,可以减少网络参数,并且随着堆叠层数增加,不断”蒸馏“突出特征。

具体而言,”蒸馏”操作主要为使用 1D 卷积和最大池化,将上一层的输出送至魔改后的多头注意力模块之前做维度修剪和降低内存占用。

  1. 解码器

    目标:一次前向计算,预测长序列输出。采用标准解码器结构,即堆叠两个相同的多头注意力层。不同的是,本文采用的是生成式预测直接一步输出多步预测结果,而不是传统的step-by-step方式。

    采用标准的decoder结构,但decoder的输入改写为:

    X f e e d d e t = C o n c a t ( X t o k e n t , X 0 t ) ∈ R L ( t o k e n + L y ) × d m o d e l \mathcal{X_{feed_de}^t}=Concat(X_{token}^t,X_0^t)\in R^{L_{(token+L_y)\times d_{model}}} Xfeeddet=Concat(Xtokent,X0t)RL(token+Ly)×dmodel

    其中, 表示 X 0 t X_0^t X0t占位符(预测值); X t o k e n t ∈ R L ( t o k e n + L y ) × d m o d e l X_{token}^t\in R^{L_{(token+L_y)\times d_{model}}} XtokentRL(token+Ly)×dmodel表示开始“字符”。

Experiments

  1. 数据集

    使用两个作者整理的真实数据集和两个公开评测数据集。1. ETT(电力变压器温度)数据集,从中国两个不同的城市收集的两年数据,采样粒度包括 {1 小时,15 分钟};2. ECL(耗电量),收集了 321 个客户端的用电消耗,共22个月的数据;3. 天气数据集,美国 1600 各地区 4 年的气象数据,采样粒度为1小时。

  2. 实验结果

从上表中,我们可发现:

  • 所提出的模型Informer极大地提高了所有数据集的推理效果(最后一列的获胜计数),并且在不断增长的预测范围内,它们的预测误差平稳而缓慢地上升。
  • query的稀疏性假设在很多数据集上是成立的;
  • Informer在很多数据集上远好于LSTM和ERNN

你可能感兴趣的:(人工智能,深度学习,人工智能)