Informer: Beyond Efficient Transformer for Long SequenceTime-Series Forecasting

news/2024/10/20 20:54:26/

博客贡献人

谷雨

作者

Haoyi Zhou, Shanghang Zhang, Jieqi Peng, Shuai Zhang, Jianxin Li,  Hui Xiong, Wancai Zhang

标签

时序预测,Transformer,自注意力蒸馏

摘要

        许多实际应用需要预测长序列时间序列,例如用电量规划。长序列时间序列预测 (LSTF) 要求模型具有很高的预测能力,即能够有效地捕获输出和输入之间的精确长程依赖耦合。最近的研究表明,Transformer 有可能提高预测能力。但是,Transformer 存在几个严重问题,使其无法直接应用于 LSTF,包括二次时间复杂度、高内存使用率和编码器-解码器架构的固有限制。为了解决这些问题,作者为 LSTF 设计了一种高效的基于 transformer 的模型,名为 Informer,具有三个显著的特点:(i) ProbSparse 自注意力机制,在时间复杂度和内存使用上实现了 O(Llog L),并且在序列的依赖关系对齐方面具有可比的性能。(ii) 自我注意力提取通过将级联层输入减半来突出主导注意力,并有效地处理极长的输入序列。(iii) 生成式解码器虽然在概念上很简单,但可以一次性向前操作而不是逐步预测长时间序列,这大大提高了长序列预测的推理速度。在四个大规模数据集上的广泛实验表明,Informer 的性能明显优于现有方法,并为 LSTF 问题提供了新的解决方案。

介绍

        LSTF 的主要挑战是提高预测能力以满足日益增长的长序列需求,这需要 (a) 非凡的长程对齐(long-range alignment)能力和 (b) 长序列输入和输出的高效操作。

        而Transformer 相较于RNN结构模型表现出了更强的捕获长程依赖关系的能力,可以避免递归循环结构,提高效率。

        但是,自注意力机制违反了要求 (b),对于长度为 L 的序列来说需要 L^{2}的计算复杂度和内存使用,虽然在一些NLP任务上取得了较好的成效但是也消耗了大量的资源。

(a) LSTF 可以覆盖比短序列预测更长的时间,在政策规划和投资保护方面具有重要区别。(b) 现有方法的预测能力限制了 LSTF 的性能。例如,从 length=48 开始,MSE 上升得高得令人无法接受,并且推理速度迅速下降。

使用Transformer 在解决 LSTF 问题时有三个明显的局限性:

1. 自注意力的二次计算。自注意力机制的原子操作,即规范点积,导致每层的时间复杂度和内存使用量为 O(L^{2})。

2. 长输入堆叠层的内存瓶颈。J层编码器/解码器堆栈使总内存使用量为 O(J\cdot L^{2}),这限制了模型在接收长序列输入时的可扩展性。

3. 预测长输出的速度急剧下降。原版 Transformer 的动态解码使逐步推理与基于 RNN 的模型一样慢(图 (1b))。

        为了提高self-attention的效率,已有一些前人的工作,提出了一些改进Transformer的模型。Sparse Transformer,LogSparse Transformer,Longformer使用启发式的方法试图解决限制1,将每层复杂度降到了 O(LlogL) ,不过这些模型效果的增益是有限的;Reformer使用locally sensitive hashing self-attention同样达到了 O(LlogL) 的复杂度,不过其只对非常长的序列才能起到效果; Linformer达到了线性复杂度 O(L) ,不过对于真实世界的长序列数据不能固定映射矩阵,因而有退化到 O(L^{2}) 的风险;Transformer-XL和Compressive Transformer使用辅助隐状态来捕获长程依赖关系,因而有可能放大限制1,不利于打破效率瓶颈。

        所有这些工作主要集中在限制 1 上,而限制 2 和 3 在 LSTF 问题中仍未解决。

本文的贡献总结如下:

• Informer模型增强了对LSTF问题的预测容量,这一点验证了Transformer-like的模型的潜在价值,即其能够捕获长序列时间序列输入与输出之间的长程依赖关系。

• 提出了 ProbSparse 自我注意机制来有效地替代规范的自注意力。它实现了依赖对齐的 O(Llog L) 时间复杂度和 O(Llog L) 内存使用。

• 提出了自我注意力蒸馏操作,以在 J 层堆叠层中优先获得主导注意力分数,并且将总空间复杂度大幅降低为 O((2 − \epsilon)Llog L),这有助于接收长序列输入。

• 提出了生成式解码器,只需一个前向的步骤即可获取长序列输出,同时避免了推理阶段的累积误差传播。

LSTF 问题定义

        在具有固定大小窗口的滚动预测设置下,作者在时间 t 有输入 \mathcal{X}^{t} = \left\{ x_{1}^{t}, \ldots, x_{L_{x}}^{t} \mid x_{i}^{t} \in \mathbb{R}^{d_{x}} \right\},输出是预测相应的序列 \mathcal{Y}^{t} = \left\{ y_{1}^{t}, \ldots, y_{L_{y}}^{t} \mid y_{i}^{t} \in \mathbb{R}^{d_{y}} \right\}。相较于之前的工作,LSTF要求预测一个 Ly 更大的序列,并且这里并不限定仅预测单变量,即 d_{y}\geq 1

编码器-解码器架构 许多流行的模型被设计为将输入 \mathcal{X}^{t}编码成隐状态序列 \mathcal{H}^{t} = \left\{ h_{1}^{t}, \ldots, h_{L_{h}}^{t} \right\},之后再将\mathcal{H}^{t}解码为\mathcal{Y}^{t}。其中,解码涉及一个名为 “动态解码” 的分步过程:

        在第 k 步中,decoder会利用前一个时刻的隐状态 h_{k}^{t}以及其他必要的前一时刻的输出来计算一个新的隐状态 h_{k+1}^{t},然后来预测当前时刻的输出 y_{k+1}^{t} 。在Transformer中也沿用了类似的动态解码的过程(在预测时需要动态解码,在训练时不需要,因为在训练时直接使用ground truth即可),而在本文提出的Informer中同样沿用了encoder-decoder架构,但舍弃了动态解码过程,而采用一种生成式的解码过程一次性解码出整个序列 \mathcal{Y}^{t}

方法论

现有的时间序列预测方法大致可分为两类。经典时间序列模型是时间序列预测的可靠主力,深度学习技术主要通过使用 RNN 及其变体来开发编码器-解码器预测范式。作者提出的 Informer 在针对 LSTF 问题的同时保留了编码器-解码器架构。请参考图2了解概述,以下部分了解详细信息。

图 2:Informer 模型概述。左:编码器接收大量长序列输入(绿色系列)。作者用提议的 ProbSparse 自我注意替换规范的自我注意。蓝色梯形是自注意力蒸馏操作,提取主导注意力,急剧缩小网络规模。层堆叠副本提高了稳健性。右:解码器接收长序列输入,将目标元素填充为零,测量特征图的加权注意力构成,并立即以生成式方式预测输出元素(橙色系列)。

基于RNN的模型依靠其本身的循环结构来学习时间序列,而很少依赖时间戳。在Transformer中,时间戳作为局部的位置信息。然而在LSTF中,为了捕获长程依赖关系需要提供全局的时间信息,比如hierarchical time stamps(周、月、年等)以及agnostic time stamps(假期、时间)。为了能够输入这些信息,本文提出了一种统一的输入表示,如下图所示:

作者有第 t 个序列输入 X^{t}和 p 个类型的全局时间戳,并且模型的输入维度为 d_{model},首先使用固定的位置编码 PE 来表示局部的位置信息,即:

P E_{(\text{pos}, 2j)} = \sin\left(\frac{\text{pos}}{(2 L_{x})^{2j / d_{\text{model}}}}\right)

P E_{(\text{pos}, 2j+1)} = \cos\left(\frac{\text{pos}}{(2 L_{x})^{2j / d_{\text{model}}}}\right)

其中,j \in \left\{1, \cdots, \left\lfloor \frac{d_{\text{model}}}{2} \right\rfloor\right\}

每种类型的全局时间戳都被分配了一个可学习的时间戳embedding S E_{(\text{pos})} ,每种embedding都有一个固定的vocab size(最大是60,也就是以分钟作为最细的粒度)。另外为了对齐维度,作者使用一维卷积(卷积核宽度为3,步长为1)将 x_{i}^{t}映射到 d_{model} 维的 u_{i}^{t} 。最终输入到模型中的序列为:

X_{\text{feed}[i]}^{t} = \alpha u_{i}^{t} + P E_{\left(L_{x} \times (t-1) + i, \right)} + \sum_{p}\left[S E_{\left(L_{x} \times (t-1) + i\right)}\right]_{p}

其中,i \in \left\{1, \cdots, L_{x}\right\}

 \alpha是一个超参数,用来平衡 u_{i}^{t}和位置编码以及时间戳embedding,如果输入已经被标准化,那么建议 α=1 。

高效的自注意力机制

Transformer中定义的self-attention接收3个输入query、key和value,然后计算它们的scale dot-product,即:

A(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d}}\right)V

其中,\quad Q \in \mathbb{R}^{L_{Q} \times d}, \quad K \in \mathbb{R}^{L_{K} \times d}, \quad V \in \mathbb{R}^{L_{V} \times d}

这里的 d 指输入的维度。这里使用q_{i},k_{i},v_{i} 分别表示 Q,K,V 的第 i 行,那么第 i 个query的attention就被定义为一个概率形式的核平滑方法(kernel smoother):

\mathcal{A}\left(q_{i}, K, V\right) = \sum_{j} \frac{k\left(q_{i}, k_{j}\right)}{\sum_{l} k\left(q_{i}, k_{l}\right)} v_{j} = E_{p\left(k_{j} \mid q_{i}\right)}\left[v_{j}\right]

其中 p\left(k_{j} \mid q_{i}\right) = \frac{k\left(q_{i}, k_{j}\right)}{\sum_{l} k\left(q_{i}, k_{l}\right)}k\left(q_{i}, k_{j}\right) 选择不对称指数核 \exp\left(\frac{q_{i} k_{j}^{\top}}{\sqrt{d}}\right)

首先对规范自我注意的习得注意力模式进行定性评估。“稀疏性” 自我注意分数形成一个长尾分布(详见附录 C),即一些点积对有助于主要关注,而其他对产生微不足道的关注。那么,下一个问题是如何区分它们呢?第 i 个查询对所有键的关注被定义为概率p\left(k_{j} \mid q_{i}\right),输出是它与值 v 的组合。占主导地位的点积对鼓励相应查询的注意力概率分布远离均匀分布。如果 p\left(k_{j} \mid q_{i}\right) 接近均匀分布q\left(k_{j} \mid q_{i}\right) = \frac{1}{L_{K}},则自注意力成为值 V 的微不足道之和,并且对于住宅输入来说是多余的。自然,分布 p 和 q 之间的 “相似性” 可用于区分 “重要” 查询。作者通过 Kullback-Leibler 散度 K L(q \| p) = \ln \sum_{l=1}^{L_{K}} e^{\frac{q_{i} k_{l}^{\top}}{\sqrt{d}}} - \frac{1}{L_{K}} \sum_{j=1}^{L_{K}} \frac{q_{i} k_{j}^{\top}}{\sqrt{d}} - \ln L_{K}。删除常量,作者将第 i 个查询的稀疏度量定义为

M\left(q_{i}, K\right)=\ln\sum_{j=1}^{L_{K}} e^{\frac{q_{i} k_{j}^{\top}}{\sqrt{d}}}-\frac{1}{L_{K}}\sum_{j=1}^{L_{K}}\frac{q_{i} k_{j}^{\top}}{\sqrt{d}}

其中,第一项是所有键上 qi 的 Log-Sum-Exp (LSE),第二项是键上的算术平均值。如果第 i 个查询获得较大的 M\left(q_{i}, K\right),则其注意力概率 p 更加“多样化”,并且很有可能在长尾自注意力分布的 header 字段中包含占主导地位的点积对。

ProbSparse 自注意力

基于所提出的测量方法,作者通过允许每个键只处理u个占主导地位的查询,实现了ProbSparse的自注意力:

\mathcal{A}(Q, K, V)=\operatorname{Softmax}\left(\frac{\overline{Q} K^{\top}}{\sqrt{d}}\right) V

其中 \bar{Q} 是 q 大小相同的稀疏矩阵,它仅包含稀疏度量 M(q, K)的 Top-u 查询。由常数采样因子 c 控制,作者设置 u = c \cdot \ln L_Q,这使得 ProbSparse 自注意只需要为每个查询键查找计算 O(\ln L_Q) 点积,并且层内存使用保持 O(L_K \ln L_Q)。在多头视角下,这种关注会为每个头生成不同的稀疏查询键对,从而避免了严重的信息丢失。然而,遍历测量 M(qi , K) 的所有查询需要计算每个点积对,即二次 O(L_K L_Q),此外 Log-Sum-Exp(LSE)操作存在潜在的数值稳定性问题。受此启发,作者提出了一种经验近似方法,用于高效获取查询稀疏性度量。

引理 1.对于键集 K 中的每个查询 q_i \in \mathbb{R}^dk_j \in \mathbb{R}^d,作者的边界为 \ln L_K \leq M(q_i, K) \leq\max_j \left\{ \frac{q_i k_j^\top}{\sqrt{d} } \right\} - \frac{1}{L_K} \sum_{j=1}^{L_K} \left\{ \frac{q_i k_j^\top}{\sqrt{d} } \right\} + \ln L_K。当 q_i \in K 时,它也成立。根据引理 1(证明在附录 D.1 中给出),作者建议最大均值测量为

\bar{M}\left(q_{i}, K\right)=\max_{j}\left\{\frac{q_{i} k_{j}^{\top}}{\sqrt{d}}\right\}-\frac{1}{L_{K}}\sum_{j=1}^{L_{K}}\frac{q_{i} k_{j}^{\top}}{\sqrt{d}}

Top-u 的范围大约在命题 1 的边界松弛中成立(参见附录 D.2)。在长尾分布下,只需要随机采样 U = L_K \ln L_Q 点积对来计算 M\left(q_{i}, K\right),即用零填充其他对。然后,作者从中选择稀疏 Top-u 作为 Q。M\left(q_{i}, K\right)中的 max-operator 对零值不太敏感,并且数值稳定。在实践中,查询和键的输入长度在自注意力计算中通常是相等的,即 L_Q = L_K = L,使得 ProbSparse 自注意力时间复杂度和空间复杂度的总和 O(L\ln L)。

图 3:Informer 编码器中的单个堆栈。(1) 水平堆栈代表图 1 中编码器副本中的一个单独的(2) 所呈现的那个是接收整个输入序列的主堆栈。然后,第二个堆栈采用 input 的一半切片,然后重复后续堆栈。(3) 红色层是点积矩阵,通过对每一层进行自注意力蒸馏,它们得到级联递减。(4) 将所有堆栈的特征图连接起来作为编码器的输出。

编码器:允许在内存使用限制下处理更长的顺序输入

        编码器旨在提取长序列输入的鲁棒长程依赖性。在输入表示之后,第 t 个序列输入\mathcal{X}^{t}已形成矩阵X_{\text{en}}^{t} \in \mathbb{R}^{L_{x} \times d_{\text{model}}}。作者在图 3 中给出了编码器的草图。

        自注意力蒸馏作为 ProbSparse 自注意力机制的自然结果,编码器的特征图具有值 V 的冗余组合。作者使用蒸馏操作来优先选择具有主导性质的优势特征,并在下一层构建一个集中的自注意力特征图。它大幅修剪了输入的时间维度,如图(3)中Attention块的n头权重矩阵(重叠的红色方块)所示。受离散卷积的启发,作者的“蒸馏”过程从第 j 层推进到第 (j + 1)层,如下所示:

X_{j+1}^{t}=\operatorname{MaxPool}\left(\operatorname{ELU}\left(\operatorname{Conv} 1~d\left(\left[X_{j}^{t}\right]_{AB}\right)\right)\right)

        其中 [\cdot ]_{AB} 表示注意力块。它包含多头 ProbSparse 自注意力和基本操作,其中 Conv1d(·) 使用 ELU(·) 激活函数在时间维度上执行一维卷积滤波器(内核宽度=3)。作者添加一个步幅为 2 的最大池化层,并在堆叠层后将 X^{t} 下采样到其半切片中,这将整个内存使用量减少到 O((2−\epsilon )Llog L),其中\epsilon是一个小数。为了增强提取操作的鲁棒性,作者使用减半的输入构建主堆栈的副本,并通过一次丢弃一层来逐步减少自关注提取层的数量,如图(2)中的金字塔,使它们的输出维度对齐。最终,将所有堆栈的输出连接起来,得到编码器的最终隐藏表示。

解码器:通过一个前向过程生成长顺序输出

        作者在图(2)中使用了一个标准的解码器结构,它由两个相同的多头注意力层堆叠而成。然而,生成推理被用来缓解长期预测中的速度骤降。向解码器提供以下向量:

X_{de}^{t}=\operatorname{Concat}\left(X_{\text{token}}^{t}, X_{0}^{t}\right)\in \mathbb{R}^{\left(L_{\text{token}}+L_{y}\right)\times d_{\text{model}}}

        其中 X_{token}^{t} \in \mathbb{R}^{L_{\text{token}} \times d_{\text{model}}}是起始标记,X_0^t \in \mathbb{R}^{L_y \times d_{\text{model}}}是目标序列的占位符(将标量设置为 0)。通过将掩蔽点积设置为-∞,将掩蔽多头注意力应用于ProbSparse自注意力计算。它防止每个职位都关注即将到来的职位,从而避免了自回归。一个完全连接的层获取最终输出,其大小取决于是执行单变量预测还是多变量预测。

生成推理开始令牌在NLP的“动态解码”中得到了有效的应用,作者将其扩展为生成方式。作者并没有选择特定的标志作为标记,而是对输入序列中的Ltoken长序列进行采样,例如输出序列之前的较早切片。以预测 168 个点为例(实验部分的 7 天温度预测),作者将已知的目标序列前 5 天作为 “starttoken”,并用 X_{\text{de}} = \left\{ X_{5d}, X_0 \right\}喂入生成式推理解码器。X_0 包含目标序列的时间戳,即目标周的上下文。然后,作者提出的解码器通过一个正向过程预测输出,而不是传统编码器-解码器架构中耗时的“动态解码”。计算效率部分给出了详细的性能比较。

损失函数 作者在预测目标序列时选择 MSE 损失函数,损失从解码器的输出传播回整个模型。

实验

数据集 作者对 4 个数据集进行了广泛的实验,包括 2 个收集的 LSTF 真实数据集和 2 个公共基准数据集。

ETT(变压器温度): ETT 是电力长期部署中的关键指标。作者从中国两个独立的县收集了 2 年的数据。为了探索 LSTF 问题的粒度,作者创建了单独的数据集,作为 {ETTh1, ETTh2} 用于 1 小时级别,ETTm1 用于 15 分钟级别。每个数据点由目标值“油温”和 6 个电力负载特征组成。train/val/test是 12/4/4 个月。

ECL (用电负荷):它收集 321 个客户端的用电量 (kWh)。由于数据缺失,作者将数据集转换为 2 年的每小时消费量,并将 'MT 320' 设置为目标值。train/val/test是 15/3/4 个月。

Weather :该数据集包含从 2010 年到 2013 年的 4 年间近 1,600 个美国地点的当地气候数据,每 1 小时收集一次数据点。每个数据点由目标值 “wet bulb” 和 11 个气候特征组成。train/val/test是 28/10/10 个月。

实验细节

Baselines: 作者选择了五种时间序列预测方法作为比较,包括 ARIMA、Prophet、LSTMa、LSTnet和 DeepAR。为了更好地探索 ProbSparse 自我注意在 Informer 中的表现,作者在实验中加入了规范自注意力变体Informer† 、高效变体 Reformer和最相关的工作 LogSparse 自注意力。

超参数调整:Informer在编码器中包含一个3层堆栈和一个1层堆栈(1/4输入),以及一个2层解码器。作者提出的方法使用Adam优化器进行了优化,其学习率从1e-4开始,每个epoch衰减0.5倍。通过适当的提前停止,epoch的总数为8。作者依据实验设置了比较方法,批量为32。设置:每个数据集的输入都是零均值归一化的。在LSTF设置下,作者逐步延长预测窗口大小L_y,即{ETTh、ECL、Weather}中的{1d、2d、7d、14d、30d、40d},ETTm中的{6h、12h、24h、72h、168h}。指标:作者使用两个评估指标,包括 \text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2\text{MAE} = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i|在每个预测窗口(多变量预测的平均值)上,并使用 stride = 1 滚动整个集。平台:所有模型都在单个 Nvidia V100 32GB GPU 上进行了训练/测试。源代码可在 https://github.com/zhouhaoyi/Informer2020 获取。

表 1:四个数据集上的单变量长序列时间序列预测结果(5 个案例)

表 2:四个数据集上的多变量长序列时间序列预测结果(5 个案例)

结果和分析

        表 1 和表 2 总结了所有方法在 4 个数据集上的单变量/多变量评估结果。作为对预测能力的更高要求,作者逐渐延长了预测范围,其中 LSTF 问题设置被精确控制,以便在每种方法的单个 GPU 上易于处理。最佳结果以粗体突出显示。

单变量时间序列预测 在此设置下,每种方法都以时间序列上的单个变量的形式获得预测。从表 1 中,可以可以观察到:(1) 作者提出的模型 Informer 显著提高了所有数据集的推理性能(最后一列的获胜计数),并且它们的预测误差在不断增长的预测范围内平稳而缓慢地上升,这表明 Informer 在提高 LSTF 问题中的预测能力方面取得了成功。(2) Informer 击败了其规范降级的 Informer†主要是在获胜计数上,即 32>12,这支持了查询稀疏性假设,提供了可比较的注意力特征图。作者提出的方法也优于最相关的工作 LogTrans 和 Reformer。可以注意到,Reformer 保持动态解码并且在 LSTF 中表现不佳,而其他方法则受益于生成式解码器作为非自回归预测器。(3) Informer 模型显示的结果明显优于递归神经网络 LSTMa。作者的方法的 MSE 降低了 26.8%(168 处)、52.4%(336 处)和 60.1%(720 处)。这表明,与基于 RNN 的模型相比,自注意力机制中较短的网络路径获得了更好的预测能力。(4) 所提出的方法在 MSE 上的表现优于 DeepAR、ARIMA 和 Prophet,平均下降了 49.3%(168)、61.1%(336)和 65.1%(720)。在 ECL 数据集上,DeepAR 在较短的范围内表现更好 (≤ 336),而作者的方法在较长的范围内表现更好。可以将其归因于一个特定示例,其中预测容量的有效性反映在问题的可扩展性上。

多变量时间序列预测 在此设置中,一些单变量方法是不合适的,而 LSTnet 是最先进的baseline。相反,作者提出的 Informer 很容易通过调整最终的 FCN 层从单变量预测变为多变量预测。从表2中,可以观察到:(1)提出的模型Informer大大优于其他方法,并且在单变量设置中的发现1和2仍然适用于多变量时间序列。(2) Informer 模型显示出比基于 RNN 的 LSTMa 和基于 CNN 的 LSTnet 更好的结果,并且 MSE 降低了平均 26.6%(168 分)、28.2%(336 分)、34.3%(720 分)。与单变量结果相比,压倒性的性能降低了,这种现象可能是由特征维度预测能力的各向异性引起的。ETTm1(分钟级别)的序列 {96, 288, 672} 与 ETTh1(小时级别)的 {24, 48, 168} 对齐。即使序列处于不同的粒度级别,Informer 的性能也优于其他baseline。

图4:Informer中三个组件的参数灵敏度

参数敏感性

        作者在单变量设置下对 ETTh1 上提出的 Informer 模型进行敏感性分析。输入长度:见图(4a) 时,当预测短序列(如 48)时,最初增加编码器/解码器的输入长度会降低性能,但进一步增加会导致 MSE 下降,因为它会带来重复的短期模式。但是,在预测长序列(如 168)时,MSE 会随着输入时间的增加而降低。因为较长的 encoder input 可能包含更多的依赖项,而较长的 decoder token 具有丰富的本地信息。采样因子: 采样因子ProbSparse自注意力中的信息带宽。作者从小因子 (=3) 开始到大因子,总体性能略有增加,最后在图 4b 中稳定下来。它验证了作者的查询稀疏性假设,即自注意力机制中存在冗余的点积对。作者在实践中设置样本因子 c = 5 (红线)。层堆叠的组合:层的副本与自我注意力蒸馏相辅相成,作者在图 4c 中研究了每个堆栈 {L, L/2, L/4} 的行为。较长的堆栈对输入更敏感,部分原因是接收到更多的长期信息。作者选择的方法是红线,即连接 L 和 L/4,是最稳健的策略。

表 3:ProbSparse 自我注意机制的消融研究

表 4:每层的 L 相关计算复杂度。

消融研究:Informer 的效果如何?

        作者还对 ETTh1 进行了额外的实验,并考虑了消融。

        ProbSparse自注意机制的性能在总体结果表1和表2中,作者限制了问题设置,以使内存使用对规范自注意力适用。在本研究中,作者将Informer与 LogTrans 和 Reformer 进行了比较,并彻底探索了它们的极限性能。为了隔离内存效率问题,作者首先将设置减少为 {batch size=8, heads=8, dim=64},并在单变量情况下保持其他设置。在表 3 中,ProbSparse 自我注意显示出比对应物更好的性能。LogTrans 在极端情况下会得到 OOM,因为它的公共实现是full-attention 的掩码,它仍然有 O(L^{2} ) 内存使用率。作者提出的ProbSparse自注意避免了查询稀疏性假设带来的简单性,参考了附录E.2中的伪代码,并实现了更小的内存使用。

表 5:自注意力蒸馏的消融研究。

表 6:生成式解码器的消融研究。

自注意力蒸馏的性能 在本研究中,作者使用 Informer† 作为基准来消除 ProbSparse 自我注意的额外影响。另一个实验设置与单变量 Time-series 的设置一致。从表 5 中,Informer † 已经完成了所有实验,并在利用长序列输入后获得了更好的性能。比较方法 Informer‡ 消除了蒸馏操作,并以更长的输入达到 OOM (> 720)。关于长序列输入在 LSTF 问题中的好处,作者得出结论,自我注意蒸馏是值得采用的,特别是当需要更长的预测时。

生成式解码器的性能 在这项研究中,作者证明了他们的解码器在获得“生成”结果方面的潜在价值。与现有方法不同,标签和输出在训练和推理中被迫对齐,作者提出的解码器的预测完全依赖于时间戳,时间戳可以通过偏移量进行预测。从表 6 中,可以看到 Informer‡ 的一般预测性能随着偏移量的增加而抵抗,而对应的预测性能在动态解码方面失败。它证明了解码器能够捕获任意输出之间的单个长距离依赖关系并避免错误累积。

计算效率 在多元设置和所有方法目前最好的实现下,我们在图(5)中进行了严格的运行时比较。在训练阶段,Informer(红线)在基于Transformer的方法中实现了最佳的训练效率。在测试阶段,我们的方法比其他具有生成式解码的方法快得多。表4总结了理论时间复杂性和内存使用的比较。Informer的性能与运行时实验一致。请注意,LogTrans侧重于改进自我注意机制,我们在LogTrans中应用了我们提出的解码器进行公平比较(表4中的)。

结论

        本文研究了长序列时间序列预测问题,并提出了 Informer 预测长序列的方法。具体来说,我们设计了 ProbSparse 自注意力机制和蒸馏操作,以应对原版 Transformer 中二次时间复杂度和二次内存使用的挑战。此外,精心设计的生成式解码器减轻了传统编码器-解码器架构的局限性。在真实世界数据上的实验证明了 Informer 在提高 LSTF 问题预测能力方面的有效性。

[启发]

  • 通过对中间数据进行详细的数学分析,把握其分布特征,可以更好地对模型进行优化
  • 可以尝试套用采样-筛选-计算的方法提高模型效率

Bib Tex

@inproceedings{zhou2021informer,title={Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting},author={Zhou, Haoyi and Zhang, Shanghang and Peng, Jieqi and Zhang, Shuai and Li, Jianxin and Xiong, Hui and Zhang, Wancai},booktitle={The Thirty-Fifth AAAI Conference on Artificial Intelligence (AAAI-21)},year={2021},organization={Association for the Advancement of Artificial Intelligence (www.aaai.org)}
}


http://www.ppmy.cn/news/1538701.html

相关文章

【QT Quick】C++交互:与QML类型转换

在本节课中,我们将讨论C与QML之间的数据类型转换。这种转换非常重要,因为在许多应用程序中,C生成的数据需要传递给QML,同时QML中的数据也需要被C访问和处理。我们将重点关注基本数据类型、数组类型和对象(map&#xff…

Ubuntu 启动引导如何修复(直接进入grub怎么办)

如果 Ubuntu 系统启动时直接进入 GRUB 界面,而不是直接启动操作系统,原因是: GRUB 配置文件丢失或损坏 解决方法 一、手动引导系统(临时方案) GRUB 的配置文件(/boot/grub/grub.cfg)损坏。通…

uni-app 打包成app时 限制web-view大小

今天对接一个uni-app的app 内置对方h5 web-view的形式 需要对方在web-view顶部加点东西 对方打的app的web-view始终是全屏的状态,对方表示做不到我要的效果 emmmmmm。。。。。。 于是乎 自己搭了个demo 本地h5跑起来审查了下代码,发现web-view是给绝对定…

MySQL 之锁机制

在 MySQL 数据库中,锁机制是保证数据一致性和并发控制的重要手段。不同类型的锁在不同的场景下发挥着关键作用,下面将详细解释 MySQL 中的行锁、GAP 锁(间隙锁)、临键锁的作用和实现原理。 一、行锁 作用: 行锁是对数…

大数据-160 Apache Kylin 构建Cube 按照日期构建Cube 详细记录

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

Starrocks的表引擎选择及表属性的设置详细说明

表引擎选择 OLAP引擎 特点与适用场景: 这是StarRocks中用于数据分析场景的主要引擎。它针对海量数据的复杂分析查询进行了优化,能够高效地处理聚合、分组、排序等操作。例如,在数据仓库场景下,当需要对销售数据进行按地区、时间等…

iOS NSString 使用Copy修饰,而不使用Strong修饰

其实老实讲, 定义property 属性,“使用Copy修饰,而不是用Strong修饰”这句话也不完全正确.因为如果他们对接的是不可变字符串,那么无论使用哪个都一样. 问题就出现在,如果他们对接的是可变字符串NSMutableString,那就得用copy 定义两个NSString 属性: interface ViewControl…

利用编程思维做题之将两个有序的单链表合并成一个新的有序单链表

1. 理解问题 将两个有序的单链表合并成一个新的单链表,并且保持有序。每个链表的元素按照升序排列,合并后的链表也需要保持升序。 示例: 假设我们有两个有序链表: 链表 1:1 -> 3 -> 5链表 2:2 -&g…