论文解读:Informer-AAAI2021年最佳论文

news2025/2/2 7:51:29

论文背景

应用背景

训练的是历史数据,但预测的是未来的数据,但是历史数据和未来数据的分布不一定是一样的,所以时间序列应用于股票预测往往不太稳定

动作预测:

基于之前的视频中每一帧动作,预测下一帧这个人要做什么动作;

流量预测:

网上购物:基于之前的流量预测出之后购买的流量应该有多少,好进行适当的补货

论文背景研究问题

拿过去20天的数据训练

1.短序列预测,则为预测未来2-3天的天气,这个比较好做;

3.精准长序列预测,则为预测10多天的天气,这个比较难做;甚至有可能拿过去半年的数据来预测未来半年的数据

解释为什么长序列预测难

传统时间序列经典算法

Prophet:非常实用的工具包,适合预测趋势,但不算精准

Arima:老牌算法了,短序列预测还算精准,但是趋势预测不准

但是一旦涉及到长序列,他俩可能就都不行了

Informer中将主要致力于长序列问题的解决,而且还可以多标签输出(即天气预测,不仅预测天气,还可以预测湿度,降雨量等)

传统办法LSTM的问题

预测是串行的,必须x_{1}预测完才到x_{2}

而且反向传播也得逐个逐个传,对模型训练更难了

在长序列预测中,如果序列越长,那速度肯定越慢,效果也越差(现存问题,即要解决的问题)

informer算法的核心思想

Transformer架构的优势与问题

1.万能模型,直接套用,代码实现简单,现成例子一大片

2.并行的,比LSTM快,全局信息丰富,注意力机制效果好

3.长序列中attention需要每一个点跟其他点计算(如果序列太长,效率很低),计算效率跟序列长度呈n^{2}的关系

4.Decoder输出挺墨迹的,要基于上一个预测结果来推断当前的预测结果;所以informer对encoder也进行了一些调整,对48天的数据同时输出(而不是预测了第一天之后,再根据预测第一天的结果推测第二天)。

要解决的三大问题,即论文的三大核心模块

Attention计算

左下角的图的值是Q与K内积的值,越往0代表关系越不大(Q与K接近垂直),越往1代表关系越大(Q与K将近同一条线上)

在长序列中,每一个位置的attention都很重要吗

对于每一个Q来说,只有一小部分的K是其它有较强关系

长序列中要不要进行采样呢?

群众里有坏人(有偷懒不干活的Q)

出于计算效率的考虑,那我们只需要关心有得分值大的那一小部分那些。

如何定义每一个Q是不是偷懒的

偷懒的Q感觉就像是均匀分布,没啥特点,你有我有全都有

Active的Q明显在某些位置比较活跃,权重差异较大

对于每一个Q,计算其与均匀分布的差异,差异越大则表示其越活越

论文给出的公式,没看懂┭┮﹏┭┮:

ProbAttention计算方法

挑出重要的Q

输入序列长度为96,现在要选出来的是一些重要的Q,正常情况需每一个Q跟全部(96)个K计算

这里为了节省计算量,重要的Q不用非得计算那么多,跟部分K计算的结果也可以当作其分布;即重要的Q跟一部分K做计算后应该也要能看出来它是重要的,而不需要跟全部的K去做计算

所以在K中进行采样,随机选25个K,于是让Q跟25个K作计算。

例如源码输出结果:32, 8, 96, 25表示:32个batch,8头,96个Q分别跟25个K计算的内积。

现在每一个Q有25个得分(分别跟25个K计算后得到的),该例中L_{k}=25

论文中做法比较绝,为了进一步加速,直接选最大值与均匀分布算差异

之后按差异进行排序,在96个Q中,选出来差异前(即差异最大)的25个Q(根据序列长度来定的一个参数值)

如何更新不重要的Q

在算内积时,Q*K内积为:32, 8, 25, 96,就是只选了25个Q,但K还是96个(并不是只用随机选择的25个)

那么其它位置的Q该咋办呢?它没有参与计算其attention目前

出于节省计算量,直接用V(96个,表示每一个位置的特征)的均值来替代

也就是选出来的25个Q会更新,其他剩余的都是均值向量

Self-attention Distilling计算方法

传统transformer就是多次重复的self-attention堆叠。

这里与传统transformer不同,做完一次attention之后还要继续堆叠,只不过会96的输入序列(指96个Q、K、V)先通过1D的maxpool操作来进行下采样,下次attention的输入序列就为48了。此时Q和K的采样由于序列长度变小,也会随之变小,例如由25->20,为了去掉比较"懒"的Q。

重复堆叠多次就是Informer的Encoder架构了。

做完maxpool操作又会把比较懒、不去起作用的Q过滤掉。

Encoder改进后的效果

一方面就是速度快效率高了,论文中计算复杂度由L^{2}->L*log_{2}^{L}

下采样之后,特征更明显,且跟之前的特征的分布基本一致

关于Decoder的设计

传统Decoder输出

先输出第一个,在基于第一个输出第二个,以此类推

Start标志位

要让Decoder输出预测结果,你得先告诉它从哪开始输出。

先给一个引导,比如要输出20-30号的预测结果,Decoder中需先给出前面一个已知的序列结果,例如10-20号的标签值(下图X_{0}是待预测结果,X_{token}是已知结果)。

从源码角度来看

源码中decoder输入长度为72,其中前48是真实值,后24是预测值

第一步还是做自身的ProbAttention

注意这回需要加上mask,mask的意思就是前面的不能看到后面的(不能透题)

自身计算完self-attention,再算与encoder的cross-attention即可

mask值举例

这里mask=1是我要的,mask=0是我要剔除的。

预测天气5应该只能用到1-4天的信息,而不能利用后面6-7天的信息

预测天气6应该只能用到1-5天的信息,而不能利用后面7-8天的信息

预测天气7应该可以用到前面1-6天的信息

位置编码信息

位置信息变得更加丰富了

不仅有绝对位置编码Local Time Stamp

还包括了跟时间相关的各种编码Global Time Stamp

Encoder与Decoder都加入了这些位置编码

节假日有可能对一些时间序列预测有关,比如说车流量,某旅游地的流量,明显会在节假日有所提高,当然,节假日对天气的预测似乎没什么关系,这里的位置编码更多的知识一种思路,希望我们读者在自己的任务中引入一些跟时间密切相关的编码。

整体网络架构

主要改进就是编码和解码器的优化,速度更快,解决长序列问题

需要注意的是:最终通过Outputs来同时预测几天的结果,而不是像传统算法那样预测一天后再预测下一天。

参考资料

论文下载

https://arxiv.org/abs/2012.07436

📎Informer Beyond Efficient Transformer for Long Sequence.pdf

代码地址

GitHub - zhouhaoyi/Informer2020: The GitHub repository for the paper "Informer" accepted by AAAI 2021.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1329108.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Yolov5水果分类识别+pyqt交互式界面

Yolov5 Fruits Detector Yolov5 是一种先进的目标检测算法,可以应用于水果分类识别任务。结合 PyQT 框架,可以创建一个交互式界面,使用户能够方便地上传图片并获取水果分类结果。以下将详细阐述 Yolov5 水果分类识别和 PyQT 交互式界面的实现…

PHP数组定义和输出

数组就是一组数据的集合,把一系列数据组织起来,形成一个可操作的整体。 PHP中的数组与Java的数组不一样,需要有key(键)和value(值),相当于Java中数组和键值对的结合。 数组的定义 …

12.21_黑马数据结构与算法笔记Java

//最近在复习,,java的进度会比较慢一些 目录 219 排序算法 基数排序2 220 排序算法 java排序 221 排序 e01 根据另一个数组次序排序 222 排序 e02 根据出现频率排序 thinking:关于比较器 223 排序 e03 最大间距 解法1(超出内…

千帆 AppBuilder 初体验,不仅解决解决了我筛选简历的痛苦,更是让提效10倍!

文章目录 🌟 前言🌟 什么是百度智能云千帆 AppBuilder🌟 百度智能云千帆 AppBuilder 初体验🌟 利用千帆AppBuilder搭建简历小助手🌟 让人眼前一亮的神兵利器 - 超级助理 🌟 前言 前两天朋友 三掌柜 去北京…

【Linux进阶之路】线程

文章目录 一、初始线程1.概念2.执行3.调度4.切换 二、线程控制1.创建2.等待3.分离4.退出5.取消 三、线程安全1.互斥1.1初始1.2理解1.3锁1.3.1概念1.3.2原理1.3.4死锁 2.同步2.1概念2.2原理 3.生产消费者模型 总结尾序 一、初始线程 1.概念 简单的概念: 线程就是一…

NPOI 导出Excel提示内容有问题的解决方法

NPOI导出Excel 使用Microsoft Excel 打开提示内容有问题,如下: 原因是:在使用NPOI导出excel时,获得 workbook.Write(ms)生成的 MemoryStream后,使用了 ms.GetBuffer()返回文件内容,导致生成的 Excel文件结尾…

关于频谱仪是如何来实现辐射功率测量

1.1 内部基本原理框架 首先是接收到外部信号输入,然后经过可变衰减器衰减,接着进行变频,接着经过带宽带通滤波器进行滤波,滤波后的信号送入检波器进行信号检测,再经对数放大器放大后,送入低通滤波器进行视频…

【网络技术】BGP 基础与概述

该笔记主要作用与 BGP 路由协议的基础和概述讲解,其萌芽作用 参考视频:红茶三杯 关键词阐述:AS 独立自治网络系统机构 前置知识 在我们学习 BGP 路由之前所学习的所有动态路由策略,都同属一个路由类中:IGP BGP 路由协…

位运算:Leetcode137.只出现一次的数字(2)

题目描述: 给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 示例 1: 输入:nums [2,2,3,2] 输出:3示例 2: 输入&…

【网络安全】学习Web安全必须知道的一本书

【文末送书】今天推荐一本网络安全领域优质书籍。 目录 正文实战案例1:使用Docker搭建LAMP环境实战案例2:使用Docker搭建LAMP环境文末送书 正文 学习Web安全离不开Web,那么,需要先来学习网站的搭建。搭建网站是每一个Web安全学习…

数据结构---算法的空间复杂度

文章目录 空间复杂度概念实例 空间复杂度 概念 空间复杂度也是一个数学表达式,是对一个算法在运行过程中临时占用存储空间大小的量度 。 空间复杂度不是程序占用了多少bytes的空间,因为这个也没太大意义,所以空间复杂度算的是变量的个数。…

超级逼真人脸生成,Stable Diffusion的3个关键技巧

大家好,你是否曾想过,为什么别人可以使用AI图像生成技术生成如此逼真的人脸,而自己的尝试却充满了错误和瑕疵,让人一眼看出是假的。尝试过调整提示和设置,但似乎仍无法与他人的质量相匹配。 本文将带大家了解使用Stab…

提示“由于找不到mfc140u.dll,无法继续执行代码”如何解决?

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是找不到某个动态链接库文件,比如mfc140u.dll。这个问题可能会导致某些应用程序无法正常运行或打开。 一、关于找不到mfc140u.dll文件造成会的问题 mfc140u.dll是Visual C中的一个…

【华为鸿蒙系统学习】- HarmonyOS4.0之App项目开发|自学篇

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 💫个人格言:"没有罗马,那就自己创造罗马~" 目录 创建鸿蒙第一个App项目 项目创建 工程目录区 预览区 运行Hello World 基本工程目录 ws:工…

吴恩达RLHF课程笔记

1.创建偏好数据集 一个prompt输入到LLM后可以有多个回答,对每个回答选择偏好 比如{prompt,answer1,answer2,prefer1} 2.根据这个数据集(偏好数据集),创建reward model,这个model也是一个LLM,并且它是回归模型&#…

ASP.Net实现姓名添加查询(三层架构)

目录 演示功能: 点击启动生成页面 点击搜索模糊查询 点击添加跳转新界面 点击Button添加姓名 步骤: 1、建文件 2、添加引用关系 3、根据数据库中的列写Models下的XueshengModels类 4、DAL下的DBHelper(对数据库进行操作)…

如何选择出最适合的backbone模型?图像分类模型性能大摸底

到2023年图像分类backbone模型已经拓展到了几十个系列,而有的新算法还在采样vgg、resnet做backbone,比如2022年提出的GDIP-YOLO还在用VGG16做IA参数预测,那是在浪费计算资源并限制了模型性能的提升,应该将目光放到现在的最新模型中…

Unity | HybridCLR 热更新(Windows端)

目录 一、准备工作 1.环境相关 2.Unity中配置 二、热更新 1.创建 HotUpdate 热更新模块 2.安装和配置HybridCLR 3.配置PlayerSettings 4.创建热更新相关脚本 5.打包dll 6.测试热更新 一、准备工作 1.环境相关 安装git环境。Win下需要安装visual studio 2019或更高版…

STM32能够做到数据采集和发送同时进行吗?

STM32能够做到数据采集和发送同时进行吗? 在开始前我有一些资料,是我根据自己从业十年经验,熬夜搞了几个通宵,精心整理了一份「STM32的资料从专业入门到高级教程工具包」,点个关注,全部无偿共享给大家&…

PostGIS学习教程十四:更多的空间连接

PostGIS学习教程十四:更多的空间连接 在上一节中,我们看到了ST_Centroid(geometry)和ST_Union([geometry])函数,以及一些简单的示例。在本节中,我们将用它们做一些更详细的事情。 提示:写完文章后,目录可以…