【论文阅读】基于深度学习的时序预测——Informer

文章介绍了多篇长时序数据预测论文,重点解读北航提出的Informer模型。该模型针对transformer在时序预测中的局限进行创新,提出ProbSparse self - attention机制降低权重计算复杂度,采用一步Decoder可一次性输出多点位预测结果,Decoder为双层结构避免自回归。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系列文章链接
论文一:2020 Informer:长时序数据预测
论文二:2021 Autoformer:长序列数据预测
论文三:2022 FEDformer:长序列数据预测
论文四:2022 Non-Stationary Transformers:非平稳性时序预测
论文五:2022 Pyraformer:基于金字塔图结构的时序预测
论文六:2023 Crossformer:多变量时序预测
论文七:2023 LTSF-Linear:质疑transformer能力的线性预测模型

文章地址:https://arxiv.org/abs/2012.07436
github地址:https://github.com/zhouhaoyi/Informer2020
参考解读:论文阅读 | AAAI21最佳论文:Informer
视频解读参考:Informer原理及代码解析

这篇文章是北航提出的一篇预测论文,在实际预测过程中,大多数需要基于长期的数据,否则根据短期数据预测出来的结果是不置信的,近年来的研究表明,transformer在时序序列预测上的潜力。但是单纯使用transformer存在二次时间复杂度、高内存使用量和编码器-解码器体系结构固有的局限性,基于这个背景作者提出了一个新模型Informer,具体创新点如下:
在这里插入图片描述

  1. ProbSparse self-attention:传统的self-attention会将每个点位和其他点位一起做权重分布计算,但在实际预测过程中,真正对当前点位预测造成影响的只有小部分,因此提出了一种概率稀疏注意力机制,把关注点关注在对当前值影响较大的点位上,以消除长尾数据的影响,权重计算复杂度从 O ( L 2 ) O(L^2) O(L2)降低至 O ( l ∗ l o g L ) O(l*logL) O(llogL),具体计算步骤如下:
    (1) 为每个 q u e r y query query都随机采样部分 k e y key key,默认为 5 ∗ l n L 5*lnL 5lnL;
    (2) 计算每个 q u e r y query query稀疏性得分, M ( q i ∗ k ) M(q_i*k) M(qik)
    (3) 选择得分最高的 N N N q u e r y query query N N N默认值为 5 ∗ l n L 5*lnL 5lnL;
    (4) 只计算topN的 q u e r y query query k e y key key的点积结果,从而得到attention的结果;
    (5) 剩下的 L − N L-N LN q u e r y query query就采用均值 m e a n ( V ) mean(V) mean(V)作为输出,来保证大小的一致性;
    该部分值用在了self-attention部分,没有用在cross-attention部分;
    在这里插入图片描述
    作者表明,对于其他的self-attention机制而言,当前机制相当于对于每个head进行基于采样的稀疏表示,相当于针对每个head的优化策略就存在差异,这种处理比常规的相同的处理更具优势;
  2. 一步Decoder:正常情况下,多点预测会基于上一个点的预测结果去预测下一个点位,但是当前模型可以一次性输出多个点位的预测结果;在预测时会将历史数据作为Decoder的输入的一部分,包括数据的位置信息和时间点信息,将向量输入全连接层得到预测结果,placeholder位置就会有对应的输出值,计算损失的时候只计算预测部分的位置对应损失;
    在这里插入图片描述
    在Decoder中是双层的结构。在第一层掩码稀疏自注意力模块中,采用了掩码机制避免预测数据的时候关注到未来点位的信息,在对当前点位进行预测时,未来点位的数据设置为 − ∞ -\infty ,这样计算注意力的时候就不会关注到未来点位的信息,避免了自回归;第二层为一个多头交叉注意力模块,用于输出最终同维度的向量,进行目标序列和源序列的交互(512->2048->512);
### 深度学习时序预测模型的输入结构设计 深度学习中的时序预测模型通常需要精心设计其输入结构,以便有效地捕捉时间序列数据中的特征和模式。以下是几种常见的时序预测模型及其输入结构的设计方法: #### 1. Informer 的输入结构设计 Informer 是一种专门针对长时间序列预测优化的 Transformer 变体[^1]。它的输入结构主要关注如何高效处理高维时间序列数据并减少计算开销。具体来说: - **输入长度控制**:为了降低内存消耗,Informer 使用了一种称为 Probabilistic Sparse Self-Attention (稀疏概率自注意力) 的机制,允许模型仅关注部分重要的历史时刻而非整个时间窗口。 - **多尺度表示**:通过引入生成对抗网络(GANs),Informer 能够自动提取不同频率下的特征。 #### 2. Autoformer 的输入结构设计 Autoformer 提出了一个新的框架来解决长期时间序列预测问题[^3]。它利用了序列分解技术以及增强版的自相关机制来进行更精确的数据建模: - **序列分解模块**:将原始信号分为趋势项和季节性波动两部分分别处理后再重新组合起来作为最终输出的一部分; - **自回归组件与外部变量支持**:除了常规的历史观测值外还可以加入额外的相关因素比如节假日效应或者气象条件等辅助信息进一步提升准确性; #### 3. DAFDC-RNN 的输入结构设计 DAFDC-RNN 结合了多种先进的神经网络设计理念构建了一个强大的端到端训练架构用于短期至中期范围内的电力负荷预报等问题求解过程中表现出优异性能[^4]: - 它采用了双向循环层堆叠而成的标准RNN形式配合门控单元实现记忆功能的同时还加入了target attention 和 full-dimension convolutional layers 来加强局部细节感知能力; - 时间注意(Temporal Attention Mechanism)则帮助区分不同时刻的重要性从而做出更加合理的决策. ```python import torch.nn as nn class Encoder(nn.Module): def __init__(self, input_size, hidden_size): super(Encoder, self).__init__() self.rnn = nn.LSTM(input_size=input_size, hidden_size=hidden_size) def forward(self, x): output, _ = self.rnn(x) return output class DecoderWithAttention(nn.Module): def __init__(self, ... ): ... def build_dafdc_rnn(): encoder = Encoder(...) decoder_with_attention = DecoderWithAttention(...) model = Seq2SeqModel(encoder, decoder_with_attention) return model ``` 以上代码片段展示了如何创建一个简单的编码器-解码器结构,并且可以扩展为目标注意力(Target Attention) 或者其他特定机制的应用实例之一。 --- ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值