系列文章链接
论文一:2020 Informer:长序列数据预测
论文二:2021 Autoformer:长序列数据预测
文章地址:https://arxiv.org/abs/2012.07436
github地址:https://github.com/zhouhaoyi/Informer2020
参考解读:论文阅读 | AAAI21最佳论文:Informer
视频解读参考:Informer原理及代码解析
这篇文章是北航提出的一篇预测论文,在实际预测过程中,大多数需要基于长期的数据,否则根据短期数据预测出来的结果是不置信的,近年来的研究表明,transformer在时序序列预测上的潜力。但是单纯使用transformer存在二次时间复杂度、高内存使用量和编码器-解码器体系结构固有的局限性,基于这个背景作者提出了一个新模型Informer,具体创新点如下:
- ProbSparse self-attention:传统的self-attention会将每个点位和其他点位一起做权重分布计算,但在实际预测过程中,真正对当前点位预测造成影响的只有小部分,因此提出了一种概率稀疏注意力机制,把关注点关注在对当前值影响较大的点位上,以消除长尾数据的影响,权重计算复杂度从
O
(
L
2
)
O(L^2)
O(L2)降低至
O
(
l
∗
l
o
g
L
)
O(l*logL)
O(l∗logL),具体计算步骤如下:
(1) 为每个 q u e r y query query都随机采样部分 k e y key key,默认为 5 ∗ l n L 5*lnL 5∗lnL;
(2) 计算每个 q u e r y query query稀疏性得分, M ( q i ∗ k ) M(q_i*k) M(qi∗k);
(3) 选择得分最高的 N N N个 q u e r y query query, N N N默认值为 5 ∗ l n L 5*lnL 5∗lnL;
(4) 只计算topN的 q u e r y query query和 k e y key key的点积结果,从而得到attention的结果;
(5) 剩下的 L − N L-N L−N个 q u e r y query query就采用均值 m e a n ( V ) mean(V) mean(V)作为输出,来保证大小的一致性;
该部分值用在了self-attention部分,没有用在cross-attention部分;
作者表明,对于其他的self-attention机制而言,当前机制相当于对于每个head进行基于采样的稀疏表示,相当于针对每个head的优化策略就存在差异,这种处理比常规的相同的处理更具优势; - 一步Decoder:正常情况下,多点预测会基于上一个点的预测结果去预测下一个点位,但是当前模型可以一次性输出多个点位的预测结果;在预测时会将历史数据作为Decoder的输入的一部分,包括数据的位置信息和时间点信息,将向量输入全连接层得到预测结果,placeholder位置就会有对应的输出值,计算损失的时候只计算预测部分的位置对应损失;
在Decoder中是双层的结构。在第一层掩码稀疏自注意力模块中,采用了掩码机制避免预测数据的时候关注到未来点位的信息,在对当前点位进行预测时,未来点位的数据设置为 − ∞ -\infty −∞,这样计算注意力的时候就不会关注到未来点位的信息,避免了自回归;第二层为一个多头交叉注意力模块,用于输出最终同维度的向量,进行目标序列和源序列的交互(512->2048->512);