摘要:
长序列时间序列的预测
优点:
- 自关注机制,在时间复杂度和内存使用方面达到,在序列依赖对齐方面性能较好。
- 自注意蒸馏通过将级联层输入减半来突出主导注意力,并有效地处理极长的输入序列。
- 以一次向前操作的方式预测长序列时间序列,提高了长序列预测的推理速度。
1.简介:
求解缺点:
- 自注意力的二次计算。标准的点积操作,会导致每一层的时间复杂度和内存使用都达到的级别,其中是输入序列的长度。
- 长输入的堆叠层的内存瓶颈。编码器/解码器层的堆叠使得总内存使用量为,这限制了模型在接收长序列输入时的可扩展性。
- 预测长期产出的速度下降。原始的动态解码使得逐步推理与基于的模型一样慢,每个步骤都必须等待前一个步骤完成才能进行。
本文主要内容:
- 提出了来成功地增强问题的预测能力,这验证了类似模型的潜在价值,以捕捉长序列时间序列输出和输入之间的单个长期依赖关系。
- 提出了自注意机制来有效地取代规范的自注意机制,实现了的时间复杂度和的内存使用。
- 提出了自注意力蒸馏操作特权支配堆叠层的注意力分数,并大幅降低总空间复杂度为。
- 提出生成式解码器,只需要向前一步就可以获得长序列输出,同时避免累积错误传播
模型的整体图。左边的部分是,它接收大量的长序列输入(绿色系列)。我们已经用提出的自注意取代了规范的自注意。蓝色梯形是提取支配性注意的自注意蒸馏操作,急剧减小网络规模。层堆叠副本提高了鲁棒性。对于右侧部分,解码器接收长序列输入,将目标元素填充为零,测量特征图的加权注意力组成,并以生成式的方式立即预测输出元素(橙色系列)。
2.预备
定义:在具有固定大小窗口的滚动预测设置下,在时刻的输入为,输出为
编码器-解码器架构被设计用于将输入表示 “编码”为隐藏状态表示 ,并从 中“解码”出输出表示 。推理过程涉及一个名为“动态解码”的逐步过程,其中解码器根据前一个状态 和第 步的其他必要输出,计算新的隐藏状态 ,然后预测第 个序列 。
在这个架构中,编码器负责处理输入数据(例如,一个句子、一段文本、一个图像等),并将其转换为一个或多个隐藏状态向量。这些隐藏状态向量捕获了输入数据的重要信息,这些信息随后被解码器用来生成输出序列。
解码器则负责利用这些隐藏状态向量来生成输出数据。在生成输出时,解码器通常会采用一种序列到序列的方法,即一个步骤接着一个步骤地生成输出序列。在每个步骤中,解码器都会考虑前一个步骤的输出和隐藏状态,来预测下一个输出。
Informer的输入表示,包括标量投影,本地时间戳和全局时间戳嵌入三个部分.jpg
假设我们有个序列输入和种类型的全局时间戳,输入表示后的特征维度为。我们首先通过使用固定位置嵌入来保持低阶上下文,即,
,,其中.。每个全局时间戳由一个可学习的戳嵌入使用,词汇表大小有限(最多个,即以分钟为最细粒度)。也就是说,自注意力的相似度计算可以访问全局上下文,并且在长输入上的计算开销是可以承受的。为了对齐维度,我们使用一维卷积滤波器(核宽度=,步长=)将标量上下文投影-维向量。因此,我们有了如下的f反馈向量:,其中,并且是一个用于平衡标量投影与局部/全局嵌入之间的幅度的因子。如果序列输入已经被标准化了,我们推荐。这里的PE代表位置嵌入,用于捕捉序列中每个位置的信息;而是学习的时间戳嵌入 ,是一个超参数,用于平衡不同的嵌入或投影对最终输入向量的贡献。
3.方法论
高效自我注意机制
自注意力机制接收一个元组输入,并通过缩放点积运算进行运算,表示为,其中 是输入维度。为了进一步讨论自注意力机制,令 , , 分别表示 , , 中的第 行。根据 的公式,第 个查询的注意力被定义为概率形式的核平滑器: 则:
其中, , 是一个核函数。这里我们使用不对称的指数核函数 。自注意力机制通过计算概率$ (p(k_j|q_i)) $来结合值并获取输出。这需要二次时间复杂度的点积计算和 的内存使用,这是提高预测能力的主要缺点。
从方程中,第 个查询对所有键的注意力被定义为一个概率,而输出是其与值的组合。主要的点积对会鼓励对应的查询注意力概率分布远离均匀分布。如果接近均匀分布,那么自注意力就变成了值 的简单和,并且对输入是冗余的。自然地,分布 和之间的“相似性”可以用来区分“重要”的查询。我们通过散度(散度)来测量“相似性”,散度定义为:
我们定义第 个查询的稀疏度测量为:
第一项是所有键上 的,第二项是这些键的算术平均值。如果第个查询获得了较大的 值,那么它的注意力概率 就更加“多样化”,并且有很大可能性包含长尾自注意力分布中头部字段的主要点积对。这里,“多样化”意味着注意力不仅仅集中在少数几个键上,而是相对均匀地分布在多个键上。同时,由于 值较大,该查询的注意力分布更有可能包含那些具有较大点积值的键-查询对,这些对在长尾分布中占据主导地位。
基于所提出的度量标准,我们通过允许每个键仅关注于占主导地位的查询u,从而实现了自注意力机制。
其中,是一个与 相同大小的稀疏矩阵,它仅包含根据稀疏性度量 选择的前 个查询。通过一个常数采样因子 来控制,我们设定,这使得 自注意力机制在每次查询-键查找时只需要计算 个点积,并且层的内存使用保持在 。
简单来说, 自注意力机制通过稀疏化手段,仅对稀疏矩阵中的前 个查询(根据某种稀疏性度量)进行计算,从而降低了计算复杂度和内存使用。这里的 是基于查询数量的对数和一个常数采样因子 来确定的。
然而,为了计算度量 而遍历所有查询需要计算每对点积,即时间复杂度为平方级别的,并且操作存在潜在的数值稳定性问题。鉴于这一点,我们提出了一个查询稀疏性度量的近似方法。
引理一:对于每个查询 和键集中的 在集合 中,我们有边界 。当
根据引理一,我们提出了最大均值测量为:
命题一:假设 ,我们让 表示集合 ,那么对于 ,存在 使得:在区间 内,如果 并且 ,那么
边界放宽下的前 个的顺序在命题(请参阅附录中的证明)中得以保持。在长尾分布下,我们仅需要随机抽取 个点积对来计算,即将其余的点积对填充为零。我们从中选择稀疏的前个作为。在 中的最大值操作对零值不太敏感,并且数值上是稳定的。在实践中,查询和键的输入长度通常是相等的,即 ,这样自注意力的总时间复杂度和空间复杂度都是 。
允许在内存使用限制下处理更长的顺序输入
Informer编码器的架构。 (1)每个水平堆叠代表图2中的编码器副本中的一个独立副本; (2)上面的堆叠是主要堆叠,它接收整个输入序列,而第二个堆叠则接收输入的一半切片; (3)红色层是自注意力机制的点积矩阵,通过在每一层应用自注意力蒸馏技术,这些矩阵的数量逐渐减少; (4)将两个堆叠的特征图合并作为编码器的输出。
该编码器被设计用于提取长序列输入中的稳健长程依赖关系。在输入表示之后,第个序列输入被重塑为一个大小为的矩阵。
自注意力蒸馏作为自注意力机制的自然结果,编码器的特征图包含了冗余的值组合。我们利用蒸馏操作来突出具有主导特征的优势组合,并在下一层生成一个集中的自注意力特征图。这极大地缩减了输入的时间维度,如图中注意力模块的个头权重矩阵(重叠的红色方块)所示。受到空洞卷积的启发,我们的“蒸馏”过程从第层向前传递到第层,作为
其中,该表达式包含多头ProbSparse自注意力机制以及注意力块中的关键操作,其中在时间维度上执行一维卷积滤波器核宽度,并使用作为激活函数。我们在堆叠一层后添加一个步长为的最大池化层,将下采样到其一半的切片,这样可以将整个内存使用量减少到,其中是一个很小的数。为了增强蒸馏操作的鲁棒性,我们构建了主堆栈的减半副本,并通过每次丢弃一层来逐渐减少自注意力蒸馏层的数量,形成一个如图所示的金字塔结构,从而使其输出维度对齐。因此,我们将所有堆栈的输出连接起来,得到编码器的最终隐藏表示。
通过一个前向过程生成长序列输出
我们使用的标准解码器结构,它由两层相同的多头注意力层堆叠而成。然而,为了缓解长预测中速度下降的问题,我们采用了生成式推理。我们将以下向量作为输入提供给解码器:
其中,作为起始令牌。是一个占位符,用于目标序列(将其标量值设为)。在自注意力计算中,应用了掩码多头注意力,通过将掩码的点积设置为来阻止每个位置关注到后续位置,从而避免了自回归性质。一个全连接层获取最终输出,其输出大小 取决于我们是否执行单变量预测或多变量预测。
生成式推断中的起始令牌是自然语言处理中“动态解码”的一种高效技术,我们将其扩展为生成式的方式。我们并没有选择特定的标志作为令牌,而是在输入序列中采样一个长度为的序列,该序列是输出序列之前的一个较早片段。以预测个点为例(即天的温度预测),我们将目标序列之前的已知天作为“起始令牌”,并将这些信息与生成式推断解码器一起输入,表示为。其中,包含目标序列的时间戳,即目标周的背景信息。值得注意的是,我们提出的解码器通过一次前向过程即可预测所有输出,避免了传统编码器-解码器架构中耗时的“动态解码”过程。在计算效率部分,我们给出了详细的性能比较。
我们选择均方误差作为预测值与目标序列之间的损失函数,并将损失从解码器的输出反向传播至整个模型。
4.实验