Informer
长序列时序预测(LSTF),要求模型有捕捉输入与输出之间长跨度的“依赖相关性”。
transformer在LSTF上的几个问题:
- 二次复杂度,内存(显存)要求过高;
- 继承了一些encoder-decoder框架的一些局限性。
Informer如何解决这些问题:
- ProbSparse自注意力机制,降低时间复杂度,降低内存要求。还在序列依存对齐上有相当不错的性能。
- 通过减半联合层输入,注意力蒸馏可以突出显示其主要的注意力。这能让它处理很长的序列。
- 生成式的decoder不需要一步一步的方式,直接一次前向的操作就可以。可以极大的提高其推理速度。
- introduction
领域:传感器网络,电网,经济
现有的是短序列时序预测,一般少于48个点。
超过48个点,LSTM网络的MSE误差就会逐渐爬升到一个不能接受的高度,同时推理速度也会逐渐下降。
越来越长的序列长度要求模型有:
- 非常的长跨度对齐能力
- 对长序列输入和输出有有效的处理。
(矛盾点)self-attention可以将网络信号的最大路径长度减少到理论最短,避免了递归结构。
但self-attention对于L长度的输入输出就有L次的复杂度,和对应的显存要求。
总结出一个问题:
是否可以将transformer改为计算,存储以及结构高效,同时又保留其较高的预测能力呢?
朴素transformer在LSTF问题上,在计算复杂度,显存要求(self-attention的占用,以及堆叠),和推理速度三个方面有问题。’
解决这一问题的已有的方案:
Sparse Transformer, LogSparse Transformer Longformer 使用启发式的方法来解决,但它们的效率提升程度都受限。
Reformer, Levskaya使用局部哈希自注意力机制,但只适用于非常长的序列。
Linformer可以有线性复杂度,但其映射矩阵对于实际情况来说可能不是固定的,所以这个算法有可能恶化到二次复杂度。
Transformer-XL, Compressive Transformer适用辅助隐藏状态,来捕获长跨度依赖,这可能会放大算法的时间复杂度,不利于突破效率瓶颈。
本文的工作:
- informer说明了transformer类的模型有捕捉长跨度依赖的潜在能力。
- 提出了ProbSparse自注意力机制,可以实现时间复杂度和空间复杂度的降低。O(L log L)
- 对特权占优的注意力分数进行自注意力蒸馏操作,可以降低空间复杂度。
- 生成式的解码器,只需一个feedfoward就可以得到长序列输出,避免了迭代误差,提高了推理速度。
2.初步的基础
定义问题:
input: {x1, xLx}
output: {y1, yLy}
这里的输出可以比短序列预测长很多(lstm)
编码器,解码器架构:
编码器将输入从x到h,解码器从h到y。
从hk到hk+1,是一步一步推过去的。
一种统一的输入表示:可以增强理解输入在全局的位置和局部的位置
- 方法
介绍了经典的自注意力机制。有二次计算复杂度,这也是在预测空间变大时,自注意力机制的主要问题。
自注意力机制的概率分布有潜在的稀疏性,有选择性的计数策略没有显著地影响性能。
Sparse Transformer 包括行输入和列输出,其中的稀疏性来自分离的空间相关性。
LogSparse Transformer 注意到自注意力中的周期性模式,并以指数步长强迫每个单元格关注其前一个单元格。
Longformer 将前两项工作扩展到更复杂的稀疏配置。
这几个工作都局限于启发式方法进行理论分析,而且对每个多头注意力都使用相同的策略处理。
首先对典型自注意力的学习注意力模式,做了定性分析。“稀疏性”自注意力分数形成一个长尾分布,即少数点决定了主要注意力,其他的产生次要注意力。
问题就转化为如何区分这些点?
查询稀疏度度量:KL散度
定义:第i的查询对所有键的关注度定义为p(kj|qi), 输出为其与value的组合(类似加权的方式)
占优的点积对,会让对应的查询的注意力分布远离均匀分布。
如果p接近于均匀分布q,那子注意力就变成了V值的简单地相加,对residential的输入是冗余的。
自然可以想到,p和q之间的相似性或者说差异性可以用作表征“重要”的查询。它们的这种“相似性”或者“差异性”,可以用kl散度来度量:
KL散度 (Kullback-Leibler divergence) - 知乎(kl散度越大,差异越大)
第一项是所有键的第i个查询的lse,第二项是它们的算术平均。
如果第i个查询获得更大的M(散度),它的注意力概率就会更离散。主导点积对很有可能在长尾自注意力分布的头部字段。
probsparse 自注意力
基于刚才提出的度量,每个键只关注前u个占优的查询:
Q平 是一个与查询同型的矩阵,只包括了其前u个占优的查询。排序依据是前面的kl散度。
u = c * ln LQ,这就让整个算法的复杂度大大下降。
计算O ( ln LQ )个点积,层内存使用量保持为O( LK ln LQ)。
每次计算kl散度,都会历遍所有的查询,这是一个二次复杂度问题。另外,lse也会导致稳定性问题。
理论近似:
编码器:一定内存下,允许使用更长的序列
经过输入表征之后,第t的序列的输入xt, shape 成xten 的矩阵
注意力蒸馏:
对上层占优的特征进行蒸馏,,并在下一层创建了一个聚焦的自注意力特征图。
大幅降低了输入的时间复杂度,如上如的红色部分。
蒸馏模块:
为了增强蒸馏的鲁棒性,减半的输入构建主堆栈的副本,并减少一层attention block(每个block减半)。这样每个副本的输出维度就可以对齐了。将所有堆栈的输出串联,作为编码器的最终隐藏表示。
解码器:通过一个前序过程产生长序列输出。
这里的解码器使用的是标准的解码器结构由两个相同的多头自注意力层堆叠而成。使用生成式的推理可以缓解长序列带来的推理速度的骤降。
掩码多头注意力 被 用在probsparse自注意力的计算,通过将掩码点积设为负无穷。它防止每个位置都参与到即将到来的位置,从而避免了自回归。
最后用一个全连接层来得到最终的output,它的大小取决于我们是执行单变量预测还是多变量预测。
生成式推理:
NLP的动态编码中 有效地使用了起始的token,我们希望把这种做法放到生成式的方法中。没有采用选取一个特殊的token,而是在输入序列中进行长序列采样。
使用输出序列的“5天”作为初始token。
这样就可以使用一个前向过程的生成式的预测方式来代替原有框架中的动态编码,以提高效率。
损失函数:MSE
实验
数据集:
ETT: 变压器温度
ETTh:每小时的
ETTm:每15分钟的
ECL: 电力负载
缺失数据比较多,这转成了每小时的
Weather: 天气
每小时的
实验细节:
baselines:
ARIMA, Prophet, LSTMa, LST-net, DeepAR
超参微调:
网格搜索超参
编码器:三层堆栈,1/4输入的情况下还有一层堆栈
解码器:两层堆栈
使用Adam 优化器进行优化,初始学习率是1e-4, 每个epoch减半。
合适的早停epoch是8. batch_size = 32,
0值标准化, 慢慢的增长预测长度
(1d, 2d, 7d, 14d, 30, 40d)- ETTh, ECL, Weather
(6h, 12h, 24h, 72h, 168h) - ETTm
指标: MSE MAE
结果与分析
单变量时间序列预测
- informer能显著提升推理性能,并且随着预测区间的提升,其预测误差下降到很慢,也很平缓。这说明其对LSTF问题的预测能力提升很大。
- informer在wining-counts中胜过经典的退化informer, 这支持了查询稀疏度假设,在提供一个可观的注意力特征map。
同时,优于最近提出的LogTrans 和Reformer。我们注意到Reformer 保持了动态解码并且在长时序预测过程中表现很差。然而,其他方法受益于生成式风格的解码器作为非自回归预测因子。
- informer比LSTMa这种循环神经网络(rnn)模型的结果有着显著提升。这说明,自注意力机制,在最短网络路径这方面,比基于rnn的模型更有优势。
- informer比DeepAR, ARIMA,Prophet模型在mse上表现更好。
在ECL数据集上,DeepAR在短的范围更优,但在长的范围内informer更优。
多变量时间序列预测
当使用多变量预测的时候,很多单变量的模型会失效。多变量预测的baseline是LSTnet。
但对于informer,只需要改变最终的全连接层就能从单变量预测变成多变量预测。
informer在多变量时间预测任务上优于 基于rnn的LSTMa和 基于cnn的LSTnet,mse有明显下降。
相比于informer对其他单变量模型的压倒性优势,informer对其他多变量模型的优势并不那么明显。这种现象可以归因于特征维度预测能力的各向异性。
考虑粒度的长时序预测问题
粒度:这里简单的具体的理解就是相邻两个样本(两条数据)的实际时间间隔。
The sequences f96, 288, 672g of ETTm1 (minutes-level) are aligned(相同) with f24, 48, 168g of ETTh1 (hour-level).
参数敏感性
encoder的input长度与时序预测的input长度不是一个东西!! ????
了解self-attention的结构,
输入长度:
预测短序列时,增加初始编码器的输入长度会让mse上升然后下降。mse下降的原因可能是输出长度的增加会带来重复的短期模式。
预测长序列时,增加~~~,会让mse下降。因为较长的编码器可能包含更多的依赖关系,而较长的解码器会包含更多的局部信息。
采样因素:
不同采样的结果没有出现随采样频率出现单调的上升或下降趋势,更多的是无序的。这证明采样频率对算法影响不大,这与查询稀疏性假设相呼应(印证)。都认为自注意力机制存在冗余的点积对。
层(取半)堆叠的组合:
这种层的“取半重复”是对自注意力蒸馏的一个补充。
以此选择了一个最鲁棒的策略。
消融实验
probsparse self-attention 的性能
batch size = 8, heads = 8,dim = 64
在单变量模式下,informer比logtrans和reformer的表现要好。
logtrans都爆内存了。
注意力蒸馏
去掉注意力蒸馏后,内存占用提高
生成式的解码器性能
强迫标签和输出的对齐:生成式模型预测性能随着偏移的增加而上升,而对应的动态编码的性能我们认为是不可接受的。
证明解码器的能力是捕捉任意输出之间的个体长程依赖,并且避免累计误差。
计算效率
多变量
训练阶段,informer在基于transformer的模型中表现最好;
推理阶段,遥遥领先
结论:
为了解决长时间序列预测问题,提出了informer。
设计了probsparse 自注意力机制和注意力蒸馏操作来解决 原始 transformer 的二次时间与空间复杂度问题。
提出的生成式解码器架构缓解了原始transformer encoder-decoder的结构的限制。