【文章学习系列之模型】Informer

这篇具有很好参考价值的文章主要介绍了【文章学习系列之模型】Informer。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章概况

《Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting》是2021年发表于AAAI的一篇论文。常规自注意机制和Transformer模型已达性能瓶颈,作者尝试寻找新的方法来提高Transformer模型的性能,使其在具备更高效计算、内存和架构能力的同时,又能拥有更优异的预测能力。基于此,该论文提出了一种新的时序预测思路和自注意力机制。

文章代码链接:
论文链接
代码链接
除此之外,在原先论文方法的基础上,作者更加丰富了实验内容,发表了一篇期刊论文(Artificial Intelligence)。
延伸论文链接

总体结构

【文章学习系列之模型】Informer

该论文的模型总体结构如上图所示,属于Encoder-Decoder结构,我们将两者分开看。

Encoder:
【文章学习系列之模型】Informer
该部分输入是时序长度为seq_len的过去数据 X e n X_{en} Xen,首先进行的是编码操作(如上图所示),包含数值编码(蓝)、位置编码(黄)、时间编码(粉)。接着通过由若干个Encoder组成的Encoder Stack提取数据特征并合并所有Encoder提取到的特征图 X f m X_{fm} Xfm
Decoder:
该部分输入一个组合值 X d e X_{de} Xde,包含 X e n X_{en} Xen的后一部分 X t o k e n X_{token} Xtoken(其长度的选择没有固定说法,介于0到seq_len即可,可选择 X e n X_{en} Xen的后一半)和需要预测的长度为pred_len的时序数据 X 0 X_{0} X0(因其属于预测未知值,因此数值部分使用0填充)。接着,将 X f m X_{fm} Xfm X d e X_{de} Xde输入Decoder后得到预测结果。

重点结构

self-attention distilling operation(自注意蒸馏操作)

【文章学习系列之模型】Informer

该操作本质上由若干个Encoder组成,目的是提取到稳定的长期特征。每个Encoder的网络深度逐渐递减,输入数据的长度也随之递减,最终将所有Encoder提取到的特征进行拼接。需要注意的是,为了使Encoder们有所区别,作者通过确定每个分支自注意力机制的重复次数逐渐递减每个分支的深度,同时,为了保证待合并数据的大小一致,每个分支只取前一个分支后一半的输入值作为输入。

generative style decoder(生成式解码器)

【文章学习系列之模型】Informer
在过去的时序预测中,往往需要分别进行多步预测才能得到未来若干个时间点的预测结果。然而这种多预测方法,随着预测长度的不断增加,累积误差会越来越大,导致长期预测缺少了现实意义。本文作者提出了生成式解码器来获取序列输出,只需要一个推导过程,便可以获得所需目标长度的预测结果,有效地避免了多步预测中累积误差的扩散。

ProbSparse self-attention mechanism(概率稀疏自注意机制)

【文章学习系列之模型】Informer
该方法的提出源于作者对自注意力机制特征图的思考。作者对第一层自注意机制的Head1和Head7进行可视化,发现特征图中仅有几道明亮条纹,同时两个头的得分少部分值较大,符合长尾数据的分布特征,如上图所示。于是得到结论:小部分点积对贡献了主要的关注,而其他的则可以忽略。根据这一特点,作者着重对高得分点积对进行关注,尝试在每次的自注意模块的运算中仅需要计算高得分的部分,从而有效减少模型的时间和空间成本。

传统自注意力机制:
z = s o f t m a x ( Q K T d k ) V z=softmax(\frac{QK^{T} }{\sqrt{d_{k} } } )V z=softmax(dk QKT)V

ProbSparse:
1.在长尾分布中,高得分占比小,没必要全计算一遍,采用随机采样降低计算量:通过从 K K K中随机选择若干张量来达到对 Q K T QK^{T} QKT随机采样的目标;
2.KL散度计算分布差距,寻找突出:对于注意力得分 S S S,特征提取有效时,满足上图所示长尾分布的情况,特征图表现为少数明亮条纹,特征提取效果不佳时,注意力得分相近,特征图中也不存在鲜明对比的条纹,长尾分布变为均匀分布。因此可利用KL散度计算分布之间的差距,并选择分布差距最大的若干个注意力得分,并获得他们的索引 i n d e x index index
3.对突出部分求值,大大降低计算量:根据 i n d e x index index寻找到 Q Q Q中对应的 Q ˉ \bar{Q} Qˉ后,再进行注意力得分计算 S = Q ˉ K T d k S=\frac{\bar{Q}K^{T} }{\sqrt{d_{k} } } S=dk QˉKT。对 V V V取均值并赋值给 z z z,取 V V V位于索引 i n d e x index index处的数值做运算 z i n d e x = s o f t m a x ( S ) V z_{index}=softmax(S)V zindex=softmax(S)V,更新 z z z中对应索引位置上的值。
4.如此往复,直至训练迭代完毕。

实验结果

主要实验结果

单变量长序列预测结果:
【文章学习系列之模型】Informer
多变量长序列预测结果:
【文章学习系列之模型】Informer
其中 I n f o r m e r + Informer^{+} Informer+使用的是典型的自注意力机制。
由上图优势项个数的对比结果可以看出,Informer具有明显的优势,在各种数据集均表现不错。

其他实验结果

该部分作者进行了不少对比:数据的时间粒度、参数的敏感性和模型结构的消融实验等等。此外作者还比较了几种方法的总运行时间、时间复杂度、空间复杂度和推理步数。总体而言,Informer表现出较为稳定且优异的预测性能。

总结

这本篇文章做了很多公式推导和求证,精妙的近似手段和精彩的公式过程使得作者改进后的自注意力机制效果和合理性并存。当然,编解码器同样在模型提升、效果提高上占据着不可磨灭的功劳。总体来说,就目前看来,没有什么缺点,效果还不错,确实厉害。文章来源地址https://www.toymoban.com/news/detail-425727.html

到了这里,关于【文章学习系列之模型】Informer的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • R语言复现:轨迹增长模型发表二区文章 | 潜变量模型系列(2)

    培训通知 Nhanes数据库数据挖掘,快速发表发文的利器,你来试试吧! 欢迎报名郑老师团队统计课程 ,4.20直播。 案例分享 2022年9月,中国四川大学学者在 《Journal of Psychosomatic Research》 (二区,IF=4.7) 发表题为: \\\" Associations between trajectories of depressive symptoms and rate of cogniti

    2024年04月14日
    浏览(35)
  • FPGA经验谈系列文章——FPGA开发方向以及算法开发模型

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 FPGA开发笼统的说可以分为两个方向,一个是接口方向、一个是算法方向。 接口方向可不是简单的uart、IIC、SPI等这些简单接口,这些东西不足以支撑一个方向,大部分都是基于serdes的高速复杂接口,例如

    2023年04月10日
    浏览(54)
  • Pycharm里配置Pytorch-gpu(运行informer算法模型)

    1.下载Anaconda安装包 去官网 https://www.anaconda.com/download下载适合自己操作系统的Anaconda安装包。 (以Windows为例) 2.安装Anaconda 双击下载后的“Anaconda3-2023.09-0-Windows-x86_64.exe”,进行安装。点击“Next”。  选择安装路径,最好选择C盘以外的路径。 选择“安装选项”,根据自己的

    2024年02月03日
    浏览(35)
  • 【vim 学习系列文章 18 -- 选中行前后增加两行】

    请阅读 【嵌入式开发学习必备专栏 之 Vim】 为了在 Vim 中实现这个功能,需要定义一个 Vimscript 函数,该函数能够在当前选中的行(Visual 模式下)的最前面一行和最后一行增加空白行。然后,可以为这个函数创建一个快捷键映射,以便在 Visual 模式下快速使用。 以下是如何步

    2024年04月13日
    浏览(28)
  • 【vim 学习系列文章 5 - cscope 过滤掉某些目录】

    上篇文章:【vim 学习系列文章 4 - vim与系统剪切板之间的交互】 下篇文章:【vim 学习系列文章 6 – vim 如何从上次退出的位置打开文件】 第一步 创建自己的 cscope 脚本 ~/.local/bin/cscope.sh ,如下: 我的这个脚本首先去区分当前执行 cscope 命令的目录是 rt-thread 目录还是 linux 目

    2024年02月12日
    浏览(73)
  • 深度学习环境配置系列文章(二):Anaconda配置Python和PyTorch

    第一章 专业名称和配置方案介绍 第二章 Anaconda配置Python和PyTorch 第三章 配置VS Code和Jupyter的Python环境 第四章 配置Windows11和Linux双系统 第五章 配置Docker深度学习开发环境 Anaconda有着强大的包管理和环境管理的功能,使用后可以方便地使用和切换不同版本的Python和PyTorch等科学

    2024年01月23日
    浏览(45)
  • 【vim 学习系列文章 4 - vim与系统剪切板之间的交互】

    上篇文章:【vim 学习系列文章 3 - vim 选中、删除、复制、修改引号或括号内的内容】 下篇文章:【vim 学习系列文章 5 - vim 中配置 cscope 过滤掉某些目录】 从vim中拷贝些文字去其它地方粘贴,都需要用鼠标选中vim的文字后,Ctrl+c、Ctrl+v,硬生生掐断了纯键盘的流畅感,而且,

    2024年02月14日
    浏览(35)
  • 【vim 学习系列文章 11 -- vim filetype | execute | runtimepath 详细介绍】

    下篇文章:【vim 学习系列文章 12 – vimrc 那点事】 上篇文章:【vim 学习系列文章 10 – vim 将代码中空格高亮显示方法】 在网上我们经常可以看到vimrc配置中有 filetype plugin indent on 这个配置,那么这个配置的功能是什么呢? filetype plugin indent on 是 Vim 中一个用于启动文件类型特

    2024年02月07日
    浏览(34)
  • 【ARM Cache 系列文章 2 -- Cache Coherence及内存顺序模学习】

    请阅读 【ARM Cache 系列文章专栏导读】

    2024年02月16日
    浏览(42)
  • 【vim 学习系列文章 19 -- 映射快捷键调用两个函数 A 和B】

    请阅读 【嵌入式开发学习必备专栏 之 Vim】 在 Vim 中,如果想通过按下 gcm 来调用两个函数,比如 FunctionA 和 FunctionB ,需要先定义这两个函数,然后创建一个映射。这个映射将会在被触发时依次调用这两个函数。 首先,确保 .vimrc 文件中包含了这两个函数的定义,以及一个用

    2024年04月13日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包