AAAI最佳论文Informer:效果远超Transformer的神器

  • 1 简介
    • 1.1 Informer的整体架构
  • 2 预处理 Preliminary 与样本生成
    • 2.1 Encoder输入
    • 2.2 Decoder输入
  • 3 Embedding
  • 4 EncoderStack
    • 4.1 单个Encoder
      • 4.1.1 传统 Transformer 的 Multi-head Self-attention
      • 4.1.2 ProbSparse Self-attention
      • 4.1.3 Lazy queries 的处理和多头拼接
    • 4.2 EncoderStack : 多个Encoder和蒸馏层的组合
      • 4.2.1 EncoderStack结构介绍
      • 4.2.2 Encoder Stack 源码
  • 5 Decoder
    • 5.1 Decoder 结构
    • 5.2 Generative Style Decoder
  • 6 计算损失与迭代优化
  • 7 代码
  • End 2021/06/03

之前在网上搜索了很多informer的解读文章,但大部分看到的都是文章翻译甚至机翻,看完之后依然对算法原理一头雾水。

Github论文源码
自己看过代码之后想要写一篇详细一点的解读,码在这里也方便自己以后回来翻看。
另外感谢@Error_hxy大佬的帮助!

由于Informer主要是在Transformer上的改进,这里不再赘述Transformer的细节,可以参见另外的博文:
深入理解Transformer及其源码解读
最火的几个全网络预训练模型梳理整合(从ELMO到BERT到XLNET)

1 简介

那么Informer是做什么的呢?
主要针对长序列预测(Long Sequence Time-series Forecasting, LSTF)

目前Transformre具有较强的捕获长距离依赖的能力,但传统的Transformer依然存在以下不足,因此Informer做出了一些改进。

上面的三个改进猛地一看可能让人摸不着头脑
没关系
我们接着往下看

1.1 Informer的整体架构

下面我们对Informer的结构图进行一下简单的解释。

  1. 红色圈:用 ProbSparse Self-attention 代替了 self-attention ,采用一种新的attention机制减少了计算量
  2. 蓝色圈:Self-attention Distilling,减少维度和网络参数量
  3. 黄色圈:Layer stacking replicas 提高了鲁棒性
  4. 绿色圈:Decoder 获得长序列输入,目标部分用0进行padding
  5. 紫色圈:Generative style预测目标部分,一步生成预测,而不是动态解码

如果看到这里还不太知道Informer是在干啥,那么我们从预处理开始一点一点看起。

2 预处理 Preliminary 与样本生成


上面的Xt,YtX^t,Y^tXt,Yt就是模型的输入和输出。
我们以代码中给出的某一个数据为例:

数据介绍:ETDataset(Electricity Transformer Dataset)电力变压器的负荷、油温数据。
ETDataset (github)
(小时维度的数据) 数据规格:17420 * 7
Batch_size:32

下面这张图是ETDataset的一个示例
这里并不是小时维度,而是15min的时间序列数据

那么输入模型的样本大概长什么样子?

2.1 Encoder输入

Xenc:32×96×7X_{enc}:32\times96\times7Xenc:32×96×7
这里的32是批次大小,一个批次有32个样本,一个样本代表96个时间点的数据,如上图
date=2016-07-01 00:00 是一个时间点0的数据
date=2016-07-01 01:00 是时间点1的数据。

那么批次中的样本1:时间点0到时间点95的96个维度为7的数据
批次中的样本2:时间点1到时间点96的96个维度为7的数据
批次中的样本3:时间点2到时间点97的96个维度为7的数据
……
直到取够32个样本,形成一个批次内的所有样本。

Xmark:32×96×4X_{mark}:32\times96\times4Xmark:32×96×4
这里的4代表时间戳,例如我们用小时维度的数据,那么4分别代表
年、月、日、小时,
第一个时间点对应的时间戳就是[2016, 07, 01, 00],
第二个时间点对应的时间戳就是[2016, 07, 01, 01]
与上面的XencX_{enc}Xenc对应得到所有的样本对应的时间戳。

2.2 Decoder输入

Xenc:32×72×7X_{enc}:32\times72\times7Xenc:32×72×7
Xmark:32×72×4X_{mark}:32\times72\times4Xmark:32×72×4

decoder的输入与encoder唯一不同的就是,每个样本对应时间序列的时间点数量并不是96,而是72。具体在进行截取样本时,从encoder输入的后半段开始取。

即:
encoder的第一个样本:时间点0到时间点95的96条维度为7的数据

那与之对应decoder的:时间点47到时间点95的48条维度为7的数据 + 时间点 95到时间点119的24个时间点的7维数据。

则最终48+24是72维度的数据。画成图大概这个亚子:

上面是encoder的输入
下面是decoder的输入
均只画出时间点数量的那个维度

3 Embedding

输入:
x_enc/y_dec
:32 * 96/72 * 7
x_mark /y_mark:
32 * 96/72 *4

输出:
32 * 96/72 * 512

embedding的目的: 嵌入投影,在这里相当于将维度为7的一个时间点的数据投影成维度为512的数据。
整体公式:

等号右边显然可以分成三个部分:

1.输入:对应公式中的 αuit\alpha u_i^tαuit

具体操作为通过conv1D(width=3,stride=1) 映射为D维度(512)
(conv1D是一维卷积)

2.Position Stamp: 对应公式中的 PE(Lx×(t−1)+i)PE_{(L_x\times(t-1)+i)}PE(Lx×(t1)+i)
与Transformer的postition embedding 一模一样

3.Global Time Stamp:对应公式中的 SE

具体操作为全连接层。

长序列预测问题中,需要获取全局信息,比如分层次的时间戳(week, month year),不可知的时间戳(holidays, events).
这里最细的粒度可以自行选择。

AAAI最佳论文Informer 解读相关推荐

  1. AAAI 2021最佳论文 Informer

    AAAI 2021最佳论文 Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting 背景 Tr ...

  2. AAAI21最佳论文Informer:效果远超Transformer的长序列预测神器???

    Informer:最强最快的序列预测神器??? AAAI21最佳论文Informer:效果远超Transformer的长序列预测神器! 01 简介 在很多实际应用问题中,我们需要对长序列时间序列进行预 ...

  3. AAAI21最佳论文Informer:效果远超Transformer的长序列预测神器!

    Informer:最强最快的序列预测神器 AAAI21最佳论文Informer:效果远超Transformer的长序列预测神器! 作者:一元,公众号:炼丹笔记 01 简介 在很多实际应用问题中,我们需 ...

  4. 详解NLP和时序预测的相似性【附赠AAAI21最佳论文INFORMER的详细解析】

    摘要:本文主要分析自然语言处理和时序预测的相似性,并介绍Informer的创新点. 前言 时序预测模型无外乎RNN(LSTM, GRU)以及现在非常火的Transformer.这些时序神经网络模型的主 ...

  5. 工程实践也能拿KDD最佳论文?解读Embeddings at Airbnb

    作者 | Mihajlo Grbovic,Airbnb 资深机器学习科学家 译者 | Lang Yang,Airbnb 工程经理 [导读]本文最早于 2018 年 5 月 13 日发表,主要介绍了机器 ...

  6. 资源下载 | 历年 AAAI 最佳论文(since 1996)

    导语:AAAI 2020 投稿已经过万,有小伙伴说29号投的时候才三千多,没想到31号就过万了,由此可见本次 AAAI 20220 竞争力非常激烈了. AAAI 2020 投稿已经过万,有小伙伴说29 ...

  7. [CVPR2020最佳论文详细解读] Unsupervised Learning of Probably Symmetric Deformable 3D Object

    本文是基于CVPR2020最佳论文,来自牛津VGG组的吴尚哲同学Unsup3D.除了中文的详细解析外,我在作者的代码基础上,将可微分渲染模块由原来的Neural Renderer替代为Soft Ras ...

  8. 【论文解读】AAAI21最佳论文Informer:效果远超Transformer的长序列预测神器!

    炼丹笔记干货 作者:一元,四品炼丹师 Informer:最强最快的序列预测神器 01 简介 在很多实际应用问题中,我们需要对长序列时间序列进行预测,例如用电使用规划.长序列时间序列预测(LSTF)要求 ...

  9. 直播 | AAAI 2021最佳论文:比Transformer更有效的长时间序列预测

    「AI Drive」是由 PaperWeekly 和 biendata 共同发起的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和 ...

最新文章

  1. TIOBE 11 月编程语言:Java 首次跌出前二,Python 势不可挡
  2. 如何更改gridview中任意单元格颜色或者内容。
  3. 前端入门:快速开发基于 HTML5 网络拓扑图应用
  4. SublimeText3系列(1)-安装、设置、快捷键、常用插件
  5. SQL SERVER 2008如何卸载干净
  6. ubuntu ifconfig命令找不到_那些年踩过的坑--无法使用MobaXterm远程登录Ubuntu
  7. spring版本 jdk8_从JDK8升级到JDK11,看这篇就足够了
  8. 666! 玩王者,识英雄,这样也能上顶会!
  9. Tomcat5.5链接Oracle、DB2、MySQL数据源实现JSP下拉框的填充
  10. iOS底层探索之KVO(二)—KVO原理分析
  11. sql casewhen
  12. iOS关于data.bin的文件的解析、存储、读取
  13. 怎么识别伪装IP的网络攻击
  14. 深度学习中的Lipschitz约束:泛化与生成模型
  15. 结构体与动态内存(5.11)
  16. ES 与关系型数据库的对比
  17. 我的一年AI算法工程师成长记
  18. 实体知识+字典树辅助jieba的分词(并对三国演义进行简单分析)
  19. Java Servlet实现下载文件
  20. 手机便签内容如何保存到电脑

热门文章

  1. 友价商城破解版问题解答 附加最新商城2018仿友价T5商城源码系5月310日更新
  2. cmd bat 执行多条
  3. Flink 异常 - 9.The heartbeat of TaskManager with id container timed out 分析与 Heartbeat 简介
  4. 共享打印机计算机名没有反应,共享打印机接收到打印任务,但是没有反应该怎么处理 - 系统之家...
  5. 记canvas优化图片抠图历程
  6. Excel 2003文档的密码忘了怎么办
  7. 麒麟Kylin系统适配gStore图数据库系统
  8. regexp_substr()用法
  9. KubeEdge环境搭建(支持网络插件flannel)
  10. CTF学习-密码学解题思路