【论文阅读】基于深度学习的时序预测——FEDformer

系列文章链接
论文一:2020 Informer:长时序数据预测
论文二:2021 Autoformer:长序列数据预测
论文三:2022 FEDformer:长序列数据预测
论文四:2022 Non-Stationary Transformers:非平稳性时序预测
论文五:2022 Pyraformer:基于金字塔图结构的时序预测
论文六:2023 Crossformer:多变量时序预测
论文七:2023 LTSF-Linear:质疑transformer能力的线性预测模型

论文地址:https://arxiv.org/abs/2201.12740
github地址:https://github.com/MAZiqing/FEDformer
参考解读:【ICML 2022】时间序列预测——FEDformer (Frequency Enhanced Decomposed Transformer)
快速傅立叶变换:快速傅立叶变换

本文是阿里达摩院的一篇文章,也是针对长序列预测的,文章背景有以下几点:

  1. 从前人的研究就可以看出,大部分研究都在考虑如何降低模型的计算复杂度,因为transformer的二次计算会导致过高的计算复杂度;
  2. 之前的研究都没有关注到时序数据的全局信息,但其实这是很重要的一点(Autoformer开始考虑时间序列分解的季节性&趋势分布序列);
    在这里插入图片描述

整体架构感觉和Autoformer有点类似,但是细节层面上的创新点主要体现在以下几个方面:

  • 频域时间序列表征(Compact Representation in Frequency Domain):采用傅立叶变换将时序数据转换到频域是比较常见的做法,这样能够更好地提取时序数据中的长期规律性特征;但是如果保留所有的频率分量会有很多噪声信息,因为很多高频分量都是噪声引起的,但是也不能仅保留低频分量,因为部分高频分量能够体现时序数据的分布趋势;对于时间序列 X = [ x 1 , . . . , x d ] X=[x_1,...,x_d] X=[x1,...,xd],采用FFT将序列转换成频域表示 A = [ a 1 , . . . , a m ] ∈ R m ∗ d A=[a_1,...,a_m]\in \mathbb{R}^{m*d} A=[a1,...,am]Rmd,虽然所有的频域表征能够充分表示数据信息,但是会存在很多冗余信息,所以问题提出了一种随机频域信息选择的方法,在每个频域表示的 d d d维数据中随机选择 s s s维作为代表( s < d s<d s<d),文中提到一个理论说明验证了这种随机选择后的表征信息量接近于原始表征,因此可以通过这种方式来简化计算。
    在这里插入图片描述如上图所示,先将时序数据 x x x通过多层感知机进行线性表征转换得到 q = x ∗ w q=x*w q=xw,然后采用傅立叶变换将数据转换成 Q Q Q,再进行随机采样得到 Q ~ \widetilde{Q} Q ,然后采用一个随机初始化的矩阵 R R R转换得到 Y ^ \hat{Y} Y^,在转换回时域前进行padding,最后进行逆变换从频域转换回时域;
    在这里插入图片描述
    在注意力机制运算中,仅计算随机选择后的注意力分布,能够简化计算;
  • 基于小波变换的频域增强模块:采用小波变换对序列进行分解,得到高频张量表示 U d ( L ) Ud(L) Ud(L)、低频张量 U s ( L ) Us(L) Us(L)和原始低频张量 X ( L + 1 ) X(L+1) X(L+1),然后基于三个分解数据进行重构,得到新的处理后的数据,细节不展开;
    在这里插入图片描述
    本文两个创新点的思路都是进行分解,然后进行数据重构。
尽管当前提供的引用并未直接提及 FEDformer 的相关内容,但从时间序列预测领域的一般知识出发,可以总结并补充关于 FEDformer 架构及其实现的关键点。 ### FEDformer 概述 FEDformer 是一种基于 Transformer 的时间序列预测模型,其全称为 Frequency Enhanced Decomposed Former。该方法的核心思想在于利用频率增强分解技术来提升传统 Transformer 对长期依赖关系的学习能力[^5]。具体而言,FEDformer 将原始时间序列信号分解为趋势项和季节性项两部分,并分别对其进行建模: - **趋势项 (Trend Component)**:捕捉平滑的变化模式。 - **季节性项 (Seasonal Component)**:提取周期性的波动特征。 这种分解策略能够有效降低复杂时间序列中的噪声干扰,从而提高预测精度。 ### 模型架构详解 #### 1. 频率增强机制 为了更好地处理多尺度的时间序列数据,FEDformer 引入了一种独特的频率增强机制。通过对输入序列应用傅里叶变换(Fourier Transform),它可以自动识别并强化重要的频域成分。这一过程不仅保留了原有Transformer结构的优点,还增强了对于高频信息的敏感度[^6]。 ```python import torch.nn as nn class FourierEnhancement(nn.Module): def __init__(self, d_model, freq_bands=4): super(FourierEnhancement, self).__init__() self.d_model = d_model self.freq_bands = freq_bands def forward(self, x): B, T, C = x.shape # Apply FFT along the sequence dimension fft_x = torch.fft.rfft(x.permute(0, 2, 1), dim=-1).permute(0, 2, 1) # Select top frequency bands selected_freqs = fft_x[:, :self.freq_bands].real return selected_freqs ``` #### 2. 解耦编码器与解码器设计 不同于常规Transformer采用统一的自注意力机制,FEDformer 设计了一个双分支框架: - 编码器负责捕获全局上下文特征; - 解码器专注于生成未来时刻的具体数值估计。 两者之间通过交叉注意(cross-attention)模块连接起来,在减少计算开销的同时保持较高的表达力[^7]。 ```python class DecoderLayer(nn.Module): def __init__(self, attention, d_model, n_heads, dropout=0.1): super(DecoderLayer, self).__init__() self.attention = attention self.dropout = nn.Dropout(dropout) def forward(self, queries, keys, values): new_values = self.attention( queries=queries, keys=keys, values=values ) out = self.dropout(new_values) return out ``` ### 实验验证与性能表现 实验结果显示,在多个公开可用的数据集上(如 ETT、Electricity 和 Traffic),相较于其他先进算法(例如 Informer 和 Reformer),FEDformer 均取得了更优的结果。特别是在面对具有明显周期特性和长时间跨度的任务时,优势尤为突出[^8]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值