Informer 论文学习笔记

Informer模型通过ProbSparseSelf-Attention模块实现了O(LlnL)的时间和空间复杂度,降低了原始Self-Attention的计算成本。此外,通过Self-AttentionDistilling方法减少特征冗余,避免One-by-One预测的误差积累。模型采用生成式预测,一次输出长序列结果,适用于时间序列分析和预测任务。

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

论文:《Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting》
代码https://github.com/zhouhaoyi/Informer2020
地址https://arxiv.org/abs/2012.07436v3
特点

  1. 实现时间与空间复杂度为 O ( L ln ⁡ L ) \mathcal{O}(L\ln L) O(LlnL) 的自注意力;
  2. 使用自注意力提纯(Distilling)的方法,降低了特征的冗余;
  3. 以生成式的风格一次性输出长序列预测结果,杜绝了 One-by-One 方式中存在的误差积累;
  4. 基于上面的内容,创建新的 LSTF 模型 Informer。

核心贡献

  1. 用新的自注意力模块 ProbSparse Self-Attention 降低了原始 Self-Attention 的时间与空间复杂度;
  2. 提出 Self-Attention 净化(Distilling) 方法,进一步降低模型整体的复杂度;

Informer 模型的整体结构

在这里插入图片描述

ProbSparse Self-Attention

先介绍一下算法的整体流程,后面再介绍具体含义和原因。

Require:Tensor Q ∈ R m × d , K ∈ R n × d , V ∈ R n × d \pmb{Q}\in\mathbb{R}^{m\times d},\pmb{K}\in\mathbb{R}^{n\times d},\pmb{V}\in\mathbb{R}^{n\times d} QRm×d,KRn×d,VRn×d

  1. print set hyperparameter c c c, u = c ln ⁡ m u=c\ln m u=clnm and U = m ln ⁡ n U=m\ln n U=mlnn
  2. randomly select U U U dot-product pairs from K \pmb{K} K to K ˉ \bar{\pmb{K}} Kˉ
  3. set the sample score S ˉ = Q K ˉ T \bar{\pmb{S}}=\pmb{Q}\bar{\pmb{K}}^T Sˉ=QKˉT
  4. compute the measurement M = max ⁡ ( S ˉ ) − mean ( S ˉ ) M=\max(\bar{\pmb{S}})-\text{mean}(\bar{\pmb{S}}) M=max(Sˉ)mean(Sˉ) by row
  5. set Top- u \text{Top-}u Top-u queries under M M M as Q ˉ \bar{\pmb{Q}} Qˉ
  6. set S 1 = softmax ( Q ˉ K T / d ) ⋅ V \pmb{S}_1=\text{softmax}(\bar{\pmb{Q}}\pmb{K}^T/\sqrt{d})\cdot \pmb{V} S1=softmax(QˉKT/d )V
  7. set S 0 = mean ( V ) \pmb{S}_0=\text{mean}(\pmb{V}) S0=mean(V)
  8. set S = { S 1 , S 0 } \pmb{S}=\{\pmb{S}_1,\pmb{S}_0\} S={S1,S0} by their original rows accordingly

Ensure:self-attention feature map S \pmb{S} S

ProbSparse Self-Attention 的基本思想

利用原始 Self-Attention 中的稀疏性,降低算法的时间与空间复杂度。
核心方法利用下式选出对 value 更有价值的 query

M ˉ ( q i , K ) = max ⁡ j { q i k j T d } − 1 L K Σ j = 1 L K q i k j T d \bar{M}(\pmb{q}_i,\pmb{K})=\max_{j}\{\frac{\pmb{q}_i\pmb{k}_j^T}{\sqrt{d}}\}-\frac{1}{L_K}\Sigma^{L_K}_{j=1}\frac{\pmb{q}_i\pmb{k}_j^T}{\sqrt{d}} Mˉ(qi,K)=jmax{d qikjT}LK1Σj=1LKd qikjT

即算法中的 3 与 4。

为什么用这种方法?
原始 Self-Attention softmax ( Q K T / d ) ⋅ V \text{softmax}(\pmb{Q}\pmb{K}^T/\sqrt{d})\cdot \pmb{V} softmax(QKT/d )V 可改写为下面的概率形式:
A ( q i , K , V ) = Σ j k ( q i , k j ) Σ l k ( q i , k l ) v j = E p ( k j ∣ q i ) [ v j ] \mathcal{A}(\pmb{q}_i,\pmb{K},\pmb{V})=\Sigma_j\frac{k(\pmb{q}_i,\pmb{k}_j)}{\Sigma_l k(\pmb{q}_i,\pmb{k}_l)}\pmb{v}_j=\mathbb{E}_{p(\pmb{k}_j|\pmb{q}_i)}[\pmb{v}_j] A(qi,K,V)=ΣjΣlk(qi,kl)k(qi,kj)vj=Ep(kjqi)[vj]

k ( ⋅ , ⋅ ) k(\cdot,\cdot) k(,) 的含义不再赘述。

为度量 query 的稀疏性,可以考虑 p ( k j ∣ q i ) p(\pmb{k}_j|\pmb{q}_i) p(kjqi) 与均匀分布 q ( k j ∣ q i ) = 1 / L K q(\pmb{k}_j|\pmb{q}_i)=1/L_K q(kjqi)=1/LK`之间的 KL 散度 K L ( q ∣ ∣ p ) = − Σ 1 L K ln ⁡ ( k ( q i , k j ) Σ l k ( q i , k l ) L K ) KL(q||p)=-\Sigma\frac{1}{L_K}\ln(\frac{k(\pmb{q}_i,\pmb{k}_j)}{\Sigma_l k(\pmb{q}_i,\pmb{k}_l)}L_K) KL(q∣∣p)=ΣLK1ln(Σlk(qi,kl)k(qi,kj)LK),展开并舍弃常数项之后可得第 i 个 query 的稀疏性度量为:
M ( q i , K ) = ln ⁡ Σ j = 1 L K e q i k j T d − 1 L K Σ j = 1 L K q i k j T d M(\pmb{q}_i,\pmb{K})=\ln\Sigma^{L_K}_{j=1}e^{\frac{\pmb{q}_i\pmb{k}^T_j}{\sqrt{d}}}-\frac{1}{L_K}\Sigma^{L_K}_{j=1}\frac{\pmb{q}_i\pmb{k}^T_j}{\sqrt{d}} M(qi,K)=lnΣj=1LKed qikjTLK1Σj=1LKd qikjT

基于 M,可以选用 Top-u 的 queries 构成的 Q ˉ \bar{\pmb{Q}} Qˉ 代替 Q 计算自注意力(文中设置 u = c ln ⁡ L Q u=c\ln L_Q u=clnLQ,其中 c 是超参数)。

为什么要使用这两个分布的 KL 散度?为什么M可以度量注意力的稀疏性?:Self-Attention 涉及到了点积运算,该运算表明 p ( k j ∣ q i ) p(\pmb{k}_j|\pmb{q}_i) p(kjqi) 与均匀分布 q ( k j ∣ q i ) = 1 / L K q(\pmb{k}_j|\pmb{q}_i)=1/L_K q(kjqi)=1/LK 之间的差别越大越好,这启发我们使用 M 作为稀疏性的度量。
新问题:M 中的第一项实际计算时的复杂度仍旧是 O ( L 2 ) \mathcal{O}(L^2) O(L2) 的。
解决方式:基于 Lemma 1 与 Proposition 1,先随机采样 U = L K ln ⁡ L Q U=L_K\ln L_Q U=LKlnLQ 个 k-q 对,然后在这 U 个 k-q 对上计算 M ˉ = max ⁡ j { q i k j T d } − mean j { q i k j T d } \bar{M}=\max_{j}\{\frac{\pmb{q}_i\pmb{k}^T_j}{\sqrt{d}}\}-\text{mean}_{j}\{\frac{\pmb{q}_i\pmb{k}^T_j}{\sqrt{d}}\} Mˉ=maxj{d qikjT}meanj{d qikjT} 作为 M 的近似值,最后选定 top-u 个 query 用作 Self-Attention 计算。(即算法中的 1、2、5 和 6,这里两次降低计算量)

补充

  • Lemma 1For each query q i ∈ R d \pmb{q}_i\in\mathbb{R}^d qiRd and k j ∈ R d \pmb{k}_j\in\mathbb{R}^d kjRd in the keys set K \pmb{K} K, we have the bound as ln ⁡ L K ≤ M ( q i , K ) ≤ ln ⁡ L K + M ˉ ( q i , K ) \ln L_K\leq M(\pmb{q}_i,\pmb{K})\leq\ln L_K +\bar{M}(\pmb{q}_i,\pmb{K}) lnLKM(qi,K)lnLK+Mˉ(qi,K). When q i ∈ K \pmb{q}_i\in\pmb{K} qiK, it also holds.(它说明可以用 M ˉ \bar{M} Mˉ 做近似计算。利用凸函数证明)
  • Proposition 1: Assuming k j ∼ N ( μ , Σ ) \pmb{k}_j\sim\mathcal{N}(\mu,\Sigma) kjN(μ,Σ) and we let q k i \pmb{q}\pmb{k}_i qki denote set { ( q i k j T ) / d ∣ j = 1 , ⋯   , L K } \{(\pmb{q}_i\pmb{k}_j^T)/\sqrt{d}|j=1,\cdots,L_K\} {(qikjT)/d j=1,,LK}, then ∀ M m = max ⁡ i M ( q i , K ) \forall M_m=\max_i M(\pmb{q}_i,\pmb{K}) Mm=maxiM(qi,K) there exist κ > 0 \kappa>0 κ>0 such that: in the interval ∀ q 1 , q 2 ∈ { q ∣ M ( q , K ) ∈ [ M m , M m − κ ) } \forall\pmb{q}_1,\pmb{q}_2\in\{\pmb{q}|M(\pmb{q},\pmb{K})\in[M_m,M_m-\kappa)\} q1,q2{qM(q,K)[Mm,Mmκ)}, if M ˉ ( q 1 , K ) > M ˉ ( q 2 , K ) \bar{M}(\pmb{q}_1,\pmb{K})>\bar{M}(\pmb{q}_2,\pmb{K}) Mˉ(q1,K)>Mˉ(q2,K) and Var ( q k 1 ) > Var ( q k 2 ) \text{Var}(\pmb{q}\pmb{k}_1)>\text{Var}(\pmb{q}\pmb{k}_2) Var(qk1)>Var(qk2), we have high probability that M ( q 1 , K ) > M ( q 2 , K ) M(\pmb{q}_1,\pmb{K})>M(\pmb{q}_2,\pmb{K}) M(q1,K)>M(q2,K).(采样后不影响排序,这说明采样之后仍旧可以保证 Top-u 的可靠性。利用对数正态分布及数值化样例定性式证明)

Self-Attention Distilling

目的:在自注意力模块之后,过滤掉 value 中的冗余信息。
方式:使用 CNN、MaxPooling 进行下采样:

X j + 1 t = MaxPool ( ELU ( Conv1d ( [ X j t ] A B ) ) ) \pmb{X}^t_{j+1}=\text{MaxPool}(\text{ELU}(\text{Conv1d}([\pmb{X}^t_j]_{AB}))) Xj+1t=MaxPool(ELU(Conv1d([Xjt]AB)))

其中,CNN 的 kernel-size=3,pooling 的 stride=2,整体的空间复杂度为: O ( ( 2 − ϵ ) L log ⁡ L ) \mathcal{O}((2-\epsilon)L\log L) O((2ϵ)LlogL) ϵ \epsilon ϵ 是一个小量(原因是: 1 + 1 2 + 1 4 + 1 8 + ⋯ 1+\frac{1}{2}+\frac{1}{4}+\frac{1}{8}+\cdots 1+21+41+81+)。


其他

  1. Decoder:与原始 Transformer 的一致;
  2. 生成式推断(Generative Inference):一次性输出长序列预测结果,而非迭代地逐个输出结果。
  3. Loss Function:MSE
  4. 位置嵌入(Position Embedding):局部时间戳的位置嵌入(PE,使用sin函数)、全局时间戳的位置嵌入(SE,用于日月周节日等特殊时间点) PE ( L x × ( t − 1 ) + i , ) + Σ [ SE ( L x × ( t − 1 ) + i ) ] p \text{PE}_{(L_x\times(t-1)+i,)}+\Sigma[\text{SE}_{(L_x\times(t-1)+i)}]_p PE(Lx×(t1)+i,)+Σ[SE(Lx×(t1)+i)]p
    # PE
    pe[:, 0::2] = torch.sin(position * div_term)
    pe[:, 1::2] = torch.cos(position * div_term)
    # SE
    minute_x  = nn.Embedding( 4, d_model)(x[:,:,4])
    hour_x    = nn.Embedding(24, d_model)(x[:,:,3])
    weekday_x = nn.Embedding( 7, d_model)(x[:,:,2])
    day_x     = nn.Embedding(32, d_model)(x[:,:,1])
    month_x   = nn.Embedding(13, d_model)(x[:,:,0])
    se = hour_x + weekday_x + day_x + month_x + minute_x
    
### Informer模型的Colab笔记本教程 对于希望探索和应用Informer模型的研究人员与开发者而言,存在多种途径可以获取到相关的Colab笔记本以及教程资源。这些资源不仅提供了理论上的解释,还通过实际案例帮助理解如何实现该模型。 #### 获取官方或社区支持的Colab笔记本 许多研究团队会在发布论文的同时提供配套的开源代码库,在这些仓库中通常能找到对应的Colab链接或者可以直接运行的Jupyter Notebook文件[^1]。例如,Informer模型最初的提出者在其GitHub页面上就分享了一个详细的项目文档,其中包含了指向Google Colab实例的链接,允许用户无需本地安装环境即可在线体验整个流程[^2]。 #### 使用搜索引擎定位特定资源 除了访问原始作者提供的资料外,利用互联网搜索引擎也是寻找合适的学习材料的有效方法之一。输入关键词组合如"informer model colab notebook tutorial"可以帮助快速找到由其他贡献者创建的教学指南或是经过改进后的版本。这类第三方内容往往基于原版进行了优化调整,更适合初学者入门学习[^3]。 ```python import torch from informer import InformerModel # 假设这是加载informer模型的方式 # 创建一个简单的例子来展示如何初始化并使用这个类 model = InformerModel( input_size=7, output_size=1, factor=5, d_model=512, n_heads=8, e_layers=2, d_ff=2048, dropout=0.0, freq='h' ) print(model) ``` 上述代码片段展示了怎样导入必要的包并通过指定参数构建一个基础的Informer模型对象。这只是一个非常简化示例;具体配置应参照所选教程中的说明进行设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值