长时间序列预测模型informer(时间序列长期预测模型)

作者:电脑培训网 2024-05-02 16:43:44 632

Informer:比Transformer更高效的长期序列预测

AAAI2021最佳论文:长期序列预测比Transformer更高效

长时间序列预测模型informer(时间序列长期预测模型)

背景

为何关注

编辑编辑编辑

方法:举报人详情

Solve_Challenge_1:最基本的思想就是减少Attention的计算量,只计算一些非常重要或者有代表性的Attention。最近提出了一些类似的想法,例如稀疏注意力。该方法涉及稀疏。Attention操作减少Attention计算量,进而涉及到对数划分的稀疏方法,LogSparse-Attention更大限度减少Attention计算量,再比如Restart+LogSparse重新启动,这可能会增加与LogSparse相比的计算量)

Solve_Challenge_2:长序列输入表示//Self-attentionDistilling操作,可以在时间维度上减小特征图的大小。这里的减半处理方法是直接用96个最后48个时间点的一半来获取。蒸馏公式如图所示。从jth层设置一个CON1D,然后在激活后设置MaxPool层,以获得TH_J+1层的特征映射。同时,为了增强鲁棒性的蒸馏操作,构建了几个平行的复制品。顶部输入是主序列长度L,第一个副本是一半以获得L/2的主序列长度,而第二副复制品是第一个复制品,然后将复制副本减为L/4的长度。以这种方式,获得了几个具有L/4长度的特征图,然后最终将其作为编码器的最终输出一起剪接,因为第二个挑战是一个长序列。如果无法求解输入,它将导致大量内存开销。这样,特征图的大小逐渐减小,使得特征图对内存不构成特殊限制。在这里,我们将与链接2中的编码器说明合作。一次

挑战3:本机变压器无法解决长输出序列。它是类似于基于rnn的模型的动态输出级联输出。它无法处理长时间的推理。Starttoken在NLP的动态解码过程中是一个非常好的技术。特别是对于预训练模型,这个概念在长序列预测问题的informer中得到了扩展。对于长序列输出问题,提出了一个单阶段生成解码器,即,所有预测数据都是立即生成的,而无需思考。rnn逐步迭代,而NLP的差异是我们的启动令牌不是标识符,而是从输入序列采样的较短序列。该序列是我们需要预测的序列之前的序列。例如片段

例如,如果我们要预测从10号到15号的值,那么我们需要选择的令牌是从输入序列提取从5号到10的值令牌,然后告诉模型您将继续预测这一部分。我们通过多个Outputs生成的这个方法解决了第三个挑战,长序列输出的问题

实验设置

数据集

基线

指标

AAAI2021最佳论文:比Transformer更有效的长时间序列预测

Background

一般段落:

序列pdiction是一个问题,涉及使用历史序列信息来pdict序列中的下一个值或值。这是一个基本但重要的研究问题。

问题背景:

国家电网中有许多大型电力变压器。这些变压器是用来调节各个地区的电压的。它们都超过100kV。单台成本可达数亿。他们是我们国家非常宝贵的资产。在配电过程中,会运行一些保守的调整,通常一次调整可以运行两周甚至几周,然后通过这种较长时间的间隙调整来维持电网的稳定性。但是,这带来了一个问题,这需要将来很长一段时间。对变压器负载有一个总体估计,并在此基础上设置调整范围。对于未来价值预测的问题,目前有一些解决方案。这些组应分为两种类型,如以下三张所示:

首先是在不久的将来预测一些值。该方法无法提供长期预测。这对变压器的调整有时间限制。我们无法根据这种模型给出的结果做出足够的预测。强大的调整,然后很难使用此调整来确保在接下来的两周内进行变压器的稳定操作。

第二种方法称为粗粒预测。这种方法可以在将来很长一段时间内预测一般趋势,但是准确性不足以支持实际应用。它只能用来判断未来的一般趋势,还不足以满足变压器的精细调整。

因此,我们需要研究一种更精致的预测方法,该方法可以长期输出,这是长序列预测问题。这是一个长期但重要的问题。

告密者的目的是解决持续预测长序列的问题。这个问题与以前的LSIL问题非常相似。所有告密者的工作都是围绕长序列的输出完成的。在此基础上,它不仅必须完成长序列输入的表示,更重要的是,我们需要在长序列输出和长序列输入之间建立连接,

Whyattention

为什么我们要使用注意机制解决长序列预测问题?

当我们处理大量信息时,我们不会关注整个信息,但会更加关注其中的某些部分。

例如,饮食可以直接到达苹果。这种直接访问的特性是Informer想要使用Attention机制进行长序列预测的主要原因之一。

自我注意力的机制在NLP/CV领域取得了良好的结果。Transformer使用大量的自我注意力以序列文本捕获依赖性信息,然后在机器翻译,文本摘要和生成等任务中取得了很大的成果。非常好的结果。

由于Transformer对于文本等特殊序列有很好的效果,可以考虑使用它来进行长序列预测。与其他模型相比,我们可以看到变压器的最大优势是序列中点之间的最大路径的长度。其复杂度为O(1)。该路径可以理解为输入和输出需要通过多少个派生单位。我们通常认为,路径越短,保留越有效的梯度信息越有效,并且传输将越准确。那么,变压器可以直接用于解决长期序列预测问题吗?答案是否,本地跨性别者仍然存在问题,如下所示:

首先,它不能支持输入的长序列和长输出序列,因为在计算注意力时,它将计算解码器的每个点输出的注意力以及在编码器隐藏状态中所有其他点的注意力,因此每一层的计算复杂性都是全部,时间序列数据的维度被认为是1

不熟悉变形金刚的学生可以看一下此博客的PPT,这很明显:

Transformer论文粗读【Neurips2017】最佳论文_思考实践的博客-CSDN博客_transformer论文

Methods:thedetailsofInformer

首先我们来分析一下这三个问题形成的原因

自我注意的原子操作及其传统的点产品操作使每一层的时间复杂性和记忆使用量达到了长序列输入问题的最重要点。原因是编码器/解码器层的堆叠会导致内存上的瓶颈。如果我们堆叠J-Layer,我们将获得大量的内存使用情况。此功能极大地限制了模型的长序列的接收和处理对于长序列输出的问题,预测长序列输出的速度将迅速下降,因为天然反式解码器处于推理过程中。输出是动态的,无法满足实际生产环境中长序列的输出速度要求。

Solve_Challenge_1:最基本的一个思路就是降低Attention的计算量,仅计算一些非常重要的或者说有代表性的Attention即可,一些相近的思路在近期不断的提出,比如Sparse-Attention,这个方法涉及了稀疏化Attention的操作,来减少Attention计算量,然后涉及的呈log分部的稀疏化方法,LogSparse-Attention更大程度上减小Attention计算量,再比如说Restart+LogSparse

启发式假设意味着我计算的注意力是由规则决定的。这种方法的缺点是它不能自适应。注意力是根据具体情况计算的。经过研究后,发现注意力图的高激活值在许多情况下是。情况比较稀疏。如果我们对查询,键,得分和对进行排序,然后绘制统计图,那么我们会发现它遵守长尾分布。也就是说,大多数关注只会起着非常弱的作用。

同时,通过从注意_映射中随机提取一些查询分数,我们抽象了两个典型的注意分数代表,一个是“活动性”,另一个是“懒惰”。ActiveQuery特征有一个或多个较大的峰值,而其他atten_score较小,那么另一个就是LazyQuery。整个统计曲线并没有过多的波动,与均匀分布没有太大区别。我们称之为LazyQuery,然后我们希望基于这个发现重新定义它。一种计算和选择注意力的方法。目的是尽可能保证不遗漏重要的注意力,并尽量减少计算量,减少开销。

我们从Q中取出qi,将Self-Attention写成概率形式。本地自我注意力是长尾分布的并且具有稀疏性,这意味着连接有助于主要关注,其他连接可能能够忽略,用于评估第i-the查询的稀疏性的方法是使用KL散度。Q是均匀分布的概率,P是我们的注意力概率。通过这个KL散度,可以计算出它们之间的相对关系。熵丢弃恒定术语,为我们提供了第I-the查询的稀疏度测量公式。

差异用于测量分布之间的距离。与均匀分布的距离越大,出现单峰的可能性就越大。基于这种稀疏的测量方法,如下图所示,定义了Probsparse自我注意的形式,其中Q-bar与Q具有相同大小的稀疏矩阵相同。Q-BAR仅包含顶部查询计算)。这些顶部的查询定义为“活动查询”。

这里的u选择由采样参数c确定。代码的默认参数为25,在论文中没有清楚地说明。其实作者解释说也可以用LogL来表示,所以L就不计算了。它与纸张中描述的内容不匹配。这种解释确实很牵强。作者说,稍后将启动特定的证明过程o)

其实我看论文时给出的逻辑就是用这个公式来计算top-u。前提是你需要计算所有情况的注意力用这个均匀分布做KL散度,根据散度结果得到一个排名做top。-u,但时间复杂度还是一样,而且还存在LSE潜在的数值稳定性问题,

到目前为止挑战2

Solve_Challenge_2:长序列的input表征//Self-attentionDistillingOperation,featuremap的尺寸可以在时间维度上面得到一个缩减,这里减半的处理方法就是直接用96个时间点的后48个得到一半,distilling的公式如图所示,从第j层套一个con1D,激活完后套一个MaxPooling层,就得到了th_j+1层的featuremap,同时为了增强distilling操作的鲁棒性,构建了几个并列的副本(replicas),最上边那个输入是主序列长度为L,第一个replica是主序列长度减半得到L/2,第二个replica是第一个replica再减半的到长度为L/4,通过这种方式得到了若干个长度为L/4的featuremap,然后最后将其拼接起来作为Encoder的最终的Output,因为第二个challenge就是longsequenceinput解决不了会造成很大的内存开销,通过这种方法逐级减小featuremap大小使得featuremap在空间上并不会构成一个特别占内存的这样一个局限,这里再配合链接2的Encoder讲解解释一下

有蒸馏和无蒸馏的比较

在蒸馏操作中,注意力图特征被重新组织。明亮的部分可能会更明显,但是这张注意力图仍然保持了之前的一些模式,这符合我们对蒸馏的理解。直觉上,也就是说蒸馏操作会关注一些主导特征,并在下一层构建聚焦特征图

左上和右上是本地自我注意力。通过比较,可以通过蒸馏操作看出差异。在白话中,特征更清晰。

左下和右下都是ProbSparseSelf-Attention。比较顶部和底部可以揭示确切的功能。计算量和特征越来越明显。可以看出ProbSparseSelf-Attention比Fully-Attention能够更有效地捕获。这个特性也符合周期信息的最初直觉。这个可视化验证了ProbSparseSelf-Attention和distilling这两个操作是真实有效的。

这样可以看到第二个挑战LongSequenceInput的问题也解决了,并且通过注意力图可以看到一些很好的可解释性。

Challenge3:长序列的Output,原生transformer没办法去解决,都是动态输出的跟rnn-basedmodel一样的级联输出,无法handle长序列的inference,Starttoken是个很不错的技巧在Nlp的动态解码过程中,尤其对于预训练模型,在informer中针对长序列预测问题扩展了这个概念,对于长序列的output问题提出了一个单阶段生成式的Decoder,也就是一次性生成所有的预测数据,不需要想rnn一样一步一步的进行迭代,同时与nlp不同之处是我们的starttoken并不是一个标志符,而是从InputSequence里面去sample一个较短的序列,这个序列是我们需要预测的序列之前的一个片段,举个例子

比如我们要预测10号到15号的值,那我们需要选取的token就是从inputsequence里面抽取5号到10号值作为一个StartToken,然后告诉模型你接着我这部分往后预测就可以了,我们通过多个Output一起生成的这个方法就解决了第三个challenge,longsequenceoutput的问题

让我们回顾一下整个Informer模型:

建议使用基于变压器的编码器架构,提出了基于Probsparse自我注意力和自我注意力蒸馏操作的生成式解码器,以解决将变压器直接应用于长期序列预测时遇到的三个挑战。

ExperimentsSettings

数据集

ETT-BeihangUniversity收集的功率变压器操作数据本身包括来自两个站点的连续两年的操作数据。传感器在这两年内每15分钟采集一个样本点。根据这个数据,分别根据1小时的强度和15分钟的原始强度构建了两个数据集

ECL-电力负载数据包含我国家两年的电力负载数据,每1小时一次采样点

天气天气数据,天气数据包含美国1,600个地点的数据,每1小时收集一次,总计4年

Baselines

如图所示

Metrics

MAE、MSE,利用两个指标综合评价模型性能

单变量TSF,计数表示实验中SOTA的总数。随着Informer输出长度的增加,预测误差会稳定且缓慢地上升,而不是突然上升。第二行消除了Probsparse的自我注意力。

情况,表明PSS的假设在许多数据集上都是正确的,因此信息器比

效果比较好

多元TSF,

比较Granularity:不同粒度的数据,Informer的表现优于其他Baselines。

参数敏感性:通过以下三个实验发现

(a)输入长度变化来预测不同的pdict长度:橙线示例,在预测短序列48时,最初延长输入会降低性能,但进一步增加输入长度实际上会带来更好的结果。原因可能是增加输入的长度会引入更多的短期周期性模式,这有利于模型的捕获。同时,在预测长序列时,输入时间越差,平均误差越低,可以看到1h和15min的对比。较长的编码器输入可能包含更多的依赖性,并且较长的解码器令牌可能包含更多的依赖性。丰富的本地信息

(b)抽样因子。之前说过c与相关,最终选择的是红色的‘InformerwithFactorc=5’

(c)Stacking对应于之前Encoder中的Stacking。可以看到堆栈对输入更加敏感。例如,L/2-stack的性能优于L-stack,L/4-stack的性能优于L/2-stack,而Informer最终的设置就是红线所示的。这个红色的设置融合了所有的情况,以达到最好的效果。

消融研究

当长度为720时,去掉蒸馏操作的注意力可以获得更好的结果。它无法预测更长的序列。为了预测更长的数据,还需要更长的输入。

抛开LSTnet和LSTM不谈,在Transformer系统中,Informer取得了最好的效益。在测试阶段,Informer明显领先于其他模型。

你的创造力始于好奇心。

无法解释:如何选择c参数的理论不清楚。

我不太了解的是:蒸馏学习是用在注意力上的。这个参考链接2是这位同学提到的。

目前尚不清楚生成式解码器如何解决lso问题。

整体数据预测和训练的直觉不清晰,逆向过程也不清晰。

TransformerDecoder详解

Transformer中Decoder详解_CuddleSabe的博客-CSDN博客_Transformer的解码器

解码器细节讨论

关于解码器的输入·Issue#223·zhouhaoyi/Informer2020·GitHub

TransformerDecoder详解-知乎

参考

我的这篇博客是从挑战故事讲述的角度来进行解释的。链接2从模型的角度进行了解释。

【AI驱动】AAAI2021最佳论文:长期序列预测比Transformer更有效_bilibili_bilibili

时序模型论文分享:informer_bilibili_bilibili//该同学解释的一些细节比原作者团队解释的更清楚

AAAI最佳论文Informer解读_Fluentn的博客-CSDNblog_informer算法//最详细的解释比我解释得好很多

关于LogSumExp-知乎

相关推荐

  • 胰腺在人体的哪个部位图解(人体内脏位置结构图解)

    胰腺在人体的哪个部位图解(人体内脏位置结构图解)

    图解交叉注意力英文参考链接:交叉注意力与自我注意力除了输入之外,交叉注意力计算与自注意力相同。交叉注意力不对称地组合了相同维度的两个独立的嵌入序列,与作为单个嵌…

    胰腺在人体的哪个部位图解(人体内脏位置结构图解) 2024-04-30 09:56:10
  • html列表圆点(html列表框怎么设置)

    html列表圆点(html列表框怎么设置)

    HTML---列表1.列表列表是网页上最常用的数据排列方式。在HTML中,列表分为三种类型:有序列表、无序列表和定义列表。2.有序列表1、一般采用数字或字母作为…

    html列表圆点(html列表框怎么设置) 2024-04-19 22:06:02
  • 时序列模型(序列时序图怎么分析)

    时序列模型(序列时序图怎么分析)

    【时间序列】如何一步步将时间序列数据分解为趋势、季节性和误差-详解pythonsm.tsa.seasonal_decompose【时序列】时序列数据如何一步步分…

    时序列模型(序列时序图怎么分析) 2024-04-05 05:15:57
  • 培训机构沟通危机预测,培训机构沟通危机预测报告

    培训机构沟通危机预测,培训机构沟通危机预测报告

    大家好,今天小编关注到一个比较有意思的话题,就是关于培训机构沟通危机预测的问题,于是小编就整理了2个相关介绍培训机构沟通危机预测的解答,让我们一起看看吧。疫情下…

    培训机构沟通危机预测,培训机构沟通危机预测报告 2024-04-04 04:45:32
  • 培训机构开学预测,培训机构开学预测怎么写

    培训机构开学预测,培训机构开学预测怎么写

    大家好,今天小编关注到一个比较有意思的话题,就是关于培训机构开学预测的问题,于是小编就整理了2个相关介绍培训机构开学预测的解答,让我们一起看看吧。各地教育培训机…

    培训机构开学预测,培训机构开学预测怎么写 2024-03-24 05:00:40