【时序预测】Transformer模型在时间序列预测领域的应用

article/2025/8/27 6:26:20

今天又是一篇Transformer梳理文章,这次应用场景是时间序列预测。Transformer的序列建模能力,让其天然就比较适合时间序列这种也是序列类型的数据结构。但是,时间序列相比文本序列也有很多特点,例如时间序列具有自相关性或周期性、时间序列的预测经常涉及到周期非常长的序列预测任务等。这些都给Transformer在时间序列预测场景中的应用带来了新的挑战,也使业内出现了一批针对时间序列任务的Transformer改造。下面就给大家介绍7篇Transformer在时间序列预测中的应用。

其他Transformer相关文章推荐

图学习?Transformer:我也行!

从ViT到Swin,10篇顶会论文看Transformer在CV领域的发展历程

Transformer提效之路干货笔记——一文梳理各种魔改版本Transformer

1

Autoformer

3c6bf48deca3268b883e2cf40359b41e.png

论文题目:Autoformer: Decomposition Transformers with Auto-Correlation for Long-Term Series Forecasting(NIPS 2021)

下载地址:https://arxiv.org/pdf/2106.13008.pdf

Autoformer是Transformer的升级版本,针对时间序列问题的特性对原始Transformer进行了一系列优化。模型的整体结构如下图,核心是Series Decomposition Block模块和对多头注意力机制的升级Auto-Correlation Mechanism。这里推荐想详细了解Autoformer细节的同学参考杰少的这篇文章:当前最强长时序预测模型--Autoformer详解,整理的非常全面深入。下面给大家简单介绍一下Auroformer的各个模块。

99175e26a228fff928fc4491881e53fd.png

第一个模块是Series Decomposition Block,这个模块主要目的是将时间序列分解成趋势项和季节项。在最基础的时间序列分析领域,一个时间序列可以被视为趋势项、季节项、周期项和噪声。对于这4个因素的拆解,有加法模型、乘法模型等,其中加法模型认为这4个因素相加构成了当前时间序列。本文采用了加法模型,认为时间序列由趋势项+季节项构成。为了提取出季节项,本文采用了滑动平均法,通过在原始输入时间序列上每个窗口计算平均值,得到每个窗口的趋势项,进而得到整个序列的趋势项。同时,根据加法模型,将原始输入序列减去趋势项,即可得到季节项。整个Series Decomposition Block的公式可以表示为:

1b2e66eb11a8db3ab1520dcc37d5e0ef.png

模型的输入结合Series Decomposition Block模块。Encoder部分输入历史时间序列,Decoder部分的输入包括趋势项和季节项两个部分。趋势项由两部分组成,一部分是历史序列经过Series Decomposition Block分解出的趋势项的后半部分,相当于用历史序列近期的趋势项作为Decoder的初始化;趋势项的另一部分是0填充的,即目前尚不知道的未来序列的趋势项,用0进行填充。季节项和趋势项类似,也是由两部分组成,第一部分为Encoder分解出的近期季节项,用于初始化;第二部分为Encoder序列均值作为填充,公式如下。

20630dc5eac6d6dbd02cec2397d7018e.png

Encoder部分的主要目的是对复杂的季节项进行建模。通过多层的Series Decomposition Block,不断从原始序列中提取季节项。这个季节项会作为指导Decoder在预测未来时季节项的信息。Encoder部分的公式如下,Auto-correlation代表Auto-Correlation Mechanism,我们在下面再进行介绍。

1be34e9d1f5a2a1c3bade1495f02a661.png

Decoder部分也是类似的结构,利用Encoder信息和Decoder输入进行预测,公式如下:

fd21857c1527e5c81070c90a9578b474.png

第二个模块是Auto-Correlation Mechanism,是对传统Transformer在时间序列预测场景的升级。Auto-Correlation Mechanism的核心思路是利用时间序列的自相关系数,寻找时间序列最相关的片段。时间序列的自相关系数计算时间序列和其滑动一个步长后的时间序列的相关系数。举例来说,如果一个时间序列是以年为周期,那么序列平移365天后,原序列和平移后的序列相关系数是很高的。AutoFormer利用了这个性质,计算各个滑动步长的自相关系数,并选择相关系数top k的滑动步长。

在具体实现上,Auto-Correlation Mechanism替代了Transformer中的self-attention结构,其公式如下。首先,将输入的时间序列通过全连接映射成Q、K、V,这和multi-head attention相同。接下来,计算Q和K之间各个周期的相关系数,选择相关系数最高的top k,这k个周期代表着Q和K的高相关性周期。这个过程可以理解为计算attention,与以往attention不同的是,这里计算的是片段的相似关系而非点的相似关系。最后,利用softmax得到每个周期归一化的权重,对V的对应周期平移结果进行加权求和。

11e66102fd465464a6f48d9a5010ba3b.png

文中使用快速傅里叶变换(FFT)计算自相关系数。下图分别展示了Auto-Correlation Mechanism,以及这种自相关机制相比Transformer中的自注意力机智的区别。自相关机制利用时间序列的平移寻找相似的片段,而自注意力机制关注点之间的关系。

037f78014c22b400c6754f2a481f298e.png

6a16812905404da4b7b73119b9ef2c6c.png

2

Pyraformer

3465e33d95585348d795d2170b7c347e.png

论文题目 Pyraformer: Low-complexity pyramidal attention for long-range time series modeling and forecasting(ICLR 2022)

下载地址:https://openreview.net/pdf?id=0EXmFzUn5I

在长周期的时间序列预测问题中,如何平衡运算复杂度以及缩短两个时间点之间的交互距离一直是研究的焦点(如下表为各个模型的运算复杂度及两点最长路径)。RNN、CNN这种模型对于输入长度为L的序列,两个时间点的最长路径为L,在长周期中节点之间信息交互比较困难。而Transformer引入了Attention机制,让两两节点之间可以直接交互,但是提升了时间复杂度。

0e79958d25a2b286bca8ee00e52961ac.png

本文提出了一种树形结构的Transformer,用于解决长周期时间序列预测问题。从下到上,时间序列的粒度逐渐变粗。最底层为原始输入的时间序列,上层为使用卷积聚合得到的粗粒度序列。每个节点和3种节点做attention:该节点的子节点、该节点的相邻邻居节点、该节点的父节点。通过这种方式,任何两个节点之间都可以直接交互,并且时间复杂度大幅降低。

在预测时,一种是把经过上述编码得到的表示直接接全连接映射到预测空间。另一种方法是使用一个额外的Decoder,采用类似Transformer中的方式进行解码。

93c875e487c35580fe65fd8c7d5531c2.png

3

Informer

9d2b93299cad1bc56a07ed3d67da417d.png

论文题目 Informer: Beyond efficient transformer for long sequence timeseries forecasting(AAAI 2021)

下载地址:https://arxiv.org/pdf/2012.07436.pdf

Informer针对长周期时间序列预测,主要从效率角度对Transformer进行了优化,这篇工作也是AAAI 2021的best paper。对于长周期时间序列,输入的维度很高,而Transformer的时间复杂度随着输入序列长度增加指数增长。为了提升Transformer在长序列上的运行效率,通过让key只和关键query形成稀疏的attention减少大量运算量。作者通过实验方法,attention score具有非常明显的长尾性,少数的score比较大,大多数score很小,因此只要重点建模那些重要的关系即可。如果一个query和其他key的attention score接近均匀分布,那么这个query就是简单的把其他value加和求平均,意义不大。因此Informer中提出计算每个query的attention score打分分布和均匀分布的KL散度,对于重要性不大的query,key就不和这些query计算attention,形成了sparse attention的结构,带来计算效率的大幅提升。

b505374ad5191516e5c5f89172963584.png

此外,针对时间序列任务,Informer还引入了self-attention distillation,在每两层Transformer之间增加一个卷积,将序列长度缩减一半,进一步减少了训练开销。在Decoder阶段,则采用了一次性预测多个时间步结果的方法,相比传统GPT等autoregressive的方法缓解了累计误差问题。

c5ecacd3cd77d111b0fb57cc53942880.png

4

FEDformer

763a5978c94d4d5489a6d31854bbdf75.png

论文题目:FEDformer: Frequency enhanced decomposed transformer for long-term series forecasting(2022)

下载地址:https://arxiv.org/pdf/2201.12740.pdf

FEDformer的主要思路也是将Transformemr和 seasonal-trend decomposition结合起来。使用普通的Transformer进行时间序列预测时,经常会出现预测的数据分布和真实分布存在比较大的gap。这主要是由于Transformer在进行预测每个时间点是独立的利用attention预测的,这个过程中可能会忽略时间序列整体的属性。为了解决这个问题,本文采用了两种方法,一种是在基础的Transformer中引入 seasonal-trend decomposition,另一种是引入傅里叶变换,在频域使用Transformer,帮助Transformer更好的学习全局信息。

FEDformer的核心模块是傅里叶变换模块和时序分解模块。傅里叶变换模块将输入的时间序列从时域转换到频域,然后将Transformer中的Q、K、V替换成傅里叶变换后的频域信息,在频域中进行Transformer操作。

ead95aad3d2625af9b641906462245b3.png

5

Log-Sparse Transformer

366b572fab954505e3cc14e3b6fbc708.png

论文题目:Enhancing the locality and breaking the memory bottleneck of transformer on time series forecasting(2019)

下载地址:https://arxiv.org/pdf/1907.00235.pdf

Transformer的Attention操作是点对点的,而时间序列上上下文信息非常重要。例如下图中,左侧虽然两个点时间序列值相同,但是由于周边序列形状差异很大,因此这两个点之间不具有参考价值。而右侧图中,虽然两个区域的时间序列值差别很大,但是整体形状是非常相似的,因此这两个部分具有较大参考价值,应该增加attention权重。从这个例子可以看出,在时间序列问题中,不能只用类似NLP中的两点之间的注意力机制,而应该考虑点周围的上下文信息。

本文采用卷积+Transformer的方式,时间序列会首先输入到一个一维卷积中,利用卷积提取每个节点周围的信息,然后再使用多头注意力机制学习节点之间的关系。这样就能让attention不仅考虑每个点的值,也能考虑每个点的上下文信息,将具有相似形状的区域建立起联系。

7bffa8c0630704c38ddd8af103dd864a.png

6

TFT

7149f4a525b5a0e107c406de5bba7de2.png

论文题目:Temporal fusion transformers for interpretable multi-horizon time series forecasting(2019)

下载地址:https://arxiv.org/pdf/1912.09363.pdf

这篇文章中则采用了LSTM+Transformer的方式。时间序列首先输入到LSTM中,这里的LSTM既可以起到类似于CNN提取每个点上下文信息的作用,也可以起到Position Encoding的作用,利用LSTM的顺序建模能力,替代原来Transformer中随模型训练的Position Embedding。对于特征的输入,TFT也进行了详细设计,在每个时间步的输入特征上,都会使用一个特征选择模块(一个attention)给当前时间步每个特征计算重要性。这个重要性后面也被用于对时间序列预测结果进行可视化分析,看每个时刻各个特征对于预测的重要性狂。

861edcbc4c4087e339b5854bb1a52664.png

7

Transformer无监督预训练

18484f8f6c9956dd3ba8a01d4f0877b3.png

论文题目:A transformer-based framework for multivariate time series representation learning(KDD 2021)

下载地址:https://arxiv.org/pdf/1912.09363.pdf

这篇文章借鉴了预训练语言模型Transformer的思路,希望能够在多元时间序列上通过无监督的方法,借助Transformer模型结构,学习良好的多元时间序列表示。本文重点在于针对多元时间序列设计的无监督预训练任务。如下图右侧,对于输入的多元时间序列,会mask掉一定比例的子序列(不能太短),并且每个变量分别mask,而不是mask掉同一段时间的所有变量。预训练的优化目标为还原整个多元时间序列。通过这种方式,让模型在预测被mask掉的部分时,既能考虑前面、后面的序列,也能考虑同一时间段没有被mask的序列。

999717bb12510db38fb6dd9eff2518fd.png

下图展示了无监督预训练时间序列模型对时间序列预测任务带来的效果提升。左侧的图表示,不同有label数据量下,是否使用无监督预训练的RMSE效果对比。可以看到,无论有label数据量有多少,增加无监督预训练都可以提升预测效果。右侧图表示使用的无监督预训练数据量越大,最终的时间序列预测拟合效果越好。

fc1a2ff1c7ddbca28176ac2510edc8b4.png

8

总结

这篇文章给大家汇总了Transformer在时间序列中的应用,也给大家推荐一篇时间序列Transformer的综述类文章,2022年发表的,比较新,介绍的Transformer在时间序列中的应用也比较全:Transformers in Time Series: A Survey(2022)

1fc392caf8500b89605ff10892385433.png

《人工智能量化实验室》知识星球

07bf0a8cddeb02665d5bd7965be43dde.png

加入人工智能量化实验室知识星球,您可以获得:(1)定期推送最新人工智能量化应用相关的研究成果,包括高水平期刊论文以及券商优质金融工程研究报告,便于您随时随地了解最新前沿知识;(2)公众号历史文章Python项目完整源码;(3)优质Python、机器学习、量化交易相关电子书PDF;(4)优质量化交易资料、项目代码分享;(5)跟星友一起交流,结交志同道合朋友。(6)向博主发起提问,答疑解惑。

6bf77ca52b00d089edd02bc969b239fa.png


http://chatgpt.dhexx.cn/article/hhnYUBi5.shtml

相关文章

11种常见的时间序列预测方法

参考内容:4大类11种常见的时间序列预测方法总结和代码示例 代码地址: https://github.com/SeafyLiang/machine_learning_study/blob/master/time_series 11种常见的时间序列预测方法 1、指数平滑Exponential Smoothing2、Holt-Winters 法3、自回归 (AR)…

时间序列预测方法最全总结!

时间序列预测就是利用过去一段时间的数据来预测未来一段时间内的信息,包括连续型预测(数值预测,范围估计)与离散型预测(事件预测)等,具有非常高的商业价值。 需要明确一点的是,与回归…

时间序列(一):时间序列数据与时间序列预测模型

时间序列系列文章: 时间序列(一):时间序列数据与时间序列预测模型 时间序列(二):时间序列平稳性检测 时间序列(三):ARIMA模型实战 时间序列及其预测是日常工…

组合预测模型 | ARIMA-LSTM时间序列预测(Python)

组合预测模型 | ARIMA-LSTM时间序列预测(Python) 目录 组合预测模型 | ARIMA-LSTM时间序列预测(Python)预测结果基本介绍程序设计参考资料 预测结果 基本介绍 ARIMA-LSTM时间序列预测(Python完整源码和数据&#xff09…

时间序列预测系列文章总结(代码使用方法)

前言 这篇文章是对前面所写的LSTM时序预测文章的代码使用方法的总结。强烈建议使用代码前先阅读本文,而不是直接询问! 此外,代码数据中除了负荷列其他列都已经归一化了,所以代码中只对负荷列进行了归一化,如果使用自己…

4大类11种常见的时间序列预测方法总结和代码示例

本篇文章将总结时间序列预测方法,并将所有方法分类介绍并提供相应的python代码示例,以下是本文将要介绍的方法列表: 1、使用平滑技术进行时间序列预测 指数平滑Holt-Winters 法 2、单变量时间序列预测 自回归 (AR)移动平均模型 (MA)自回归…

【深度学习时间序列预测案例】零基础入门经典深度学习时间序列预测项目实战(附代码+数据集+原理介绍)

🚨注意🚨:最近经粉丝反馈,发现有些订阅者将此专栏内容进行二次售卖,特在此声明,本专栏内容仅供学习,不得以任何方式进行售卖,未经作者许可不得对本专栏内容行使发表权、署名权、修改…

如何理解vcc,vdd,vss

常见解释 VCC: Ccircuit 表示电路的意思, 即接入电路的电压 VDD:Ddevice 表示器件的意思, 即器件内部的工作电压 VSS: Sseries 表示公共连接的意思,通常指电路公共接地端电压 个人理解 VCC :双极器件的正,一…

VCC,GND,VSS,VDD的理解

Definition: VCC:Ccircuit 表示电路的意思, 即接入电路的电压。 GND:在电路里常被定为电压参考基点。 VDD:Ddevice 表示器件的意思, 即器件内部的工作电压 VSS:Sseries 表示公共连接的意思,通常指电路公共接…

VCS简介

1.2.1 关于VCS VCS是Verilog Compiled Simulator的缩写。VCS MX是一个编译型的代码仿真器。它使你能够分析,编译和仿真Verilog,VHDL,混合HDL,SystemVerilog,OpenVera和SystemC描述的设计。 它还为您提供了一系列仿真和…

VCC、VDD、VSS以及VBAT的区别

在STM32 的学习中,发现有几种看起来相关的名称,分别是VCC、VDD、VSS、VBAT,在经过搜索查找之后,总结如下: 1.VCC的C是Circuit的意思,是指整个供电回路的电压, 也有人说VCC是双极器件的正极 2.VDD的D是Dev…

Vcc、Vee、Vdd、Vss傻傻分不清楚?

Vcc、Vee、Vdd、Vss傻傻分不清楚? 以下内容源于网络。 电源 左边两个符号均表示电池类直流电源,左边第一个表示电池组,第二个表示单电池。这些符号不一定总是带有 和 - 号。左边第三个(带 和 - 的圆圈符号)表示非电…

semi-supervised classification

半监督学习任务主要分为半监督聚类、半监督分类、半监督回归等问题,我们主要针对半监督分类问题。 半监督学习的假设 基于低密度假设 模型的决策边界不应该将该密度区域划分开,而应该处在低密度区域内。基于平滑化假设 输入空间中&#xf…

Weakly-Supervised Semantic Segmentation via Sub-category Exploration

Weakly-Supervised Semantic Segmentation via Sub-category Exploration Abstract问题 1.Introduction2. Related Work2.1weakly-supervised semantic segmentation(WSSS)弱监督语义分割的初始预测。---Initial Prediction for WSSS.2.2 、Response Refinement for WSSS&#…

Scribble-Supervised Medical Image Segmentation

Scribble-Supervised Medical Image Segmentation via Dual-Branch Network and Dynamically Mixed Pseudo Labels Supervision 摘要 采用草率的分割标注心脏分割双分枝网络:一个编码器,两个解码器动态结合两个解码器的输出伪标签 方法 模型结构 Lpce…

Learning Affinity from Attention End-to-End Weakly-Supervised Semantic Segmentation withTransformers

Learning Affinity from Attention: End-to-End Weakly-Supervised Semantic Segmentation with Transformers 来源:CVPR 2022,武汉大学、京东、悉尼大学 导言 本文是一篇做自然图像弱监督语义分割的论文,利用图像级的类别标签来实现像素级…

Token Contrast for Weakly-Supervised Semantic Segmentation

文章来源:[CVPR2023] Keywords:Weakly-Supervised Semantic Segmentation(WSSS);over-smoothing; ViT 一、本文提出的问题以及解决方案: 本文解决了over-smoothing问题,该问题其实是在之前的GCN网络中提出…

Self-supervised Learning整理

Self-supervised Learning Pre-train Fine-tune Pre-train Fine-tune算是一种Transfer Learning。 首先,假设按照SimCLR中的设定,将一般的模型分为两部分,分别为Encoder和Projection Head。Encoder结构类似于AutoEncoder中的Encoder部分&a…

Supervised Discrete Hashing

Supervised Discrete Hashing 2015 CVPR 问题: 处理施加在追踪的哈希码上的离散约束,使哈希优化具有挑战性(通常是NP- hard)。 解决: 提出了一个新的监督哈希框架,其中的学习目标是生成最优的二进制哈希码用于线性分类。 通过引…