时序必读论文12|ICML22 FEDformer基于周期分解的长时序预测transformer架构

图片

论文标题:FEDformer: Frequency Enhanced Decomposed Transformer for Long-term Series Forecasting

开源代码:https://github.com/DAMO-DI-ML/ICML2022-FEDformer

前言

FEDformer这篇文章发表于2022年的ICML。其实如果只比较性能的话,到如今其实早已被各类新模型超越。但是考虑到FEDformer一直是时序预测的一个重要baseline。此外,论文采用的周期趋势项分解策略,通过多次分解降低了输入输出的波动这种策略在后续很多论文被反复使用,使得Transformer能够更好地学习长时序中的依赖关系,提升了预测精度。因此,尽管论文发表时间较早,我还是将其列入到了时序必读论文。

本文工作

以往的基于Transformer的时序预测模型通过Attention机制捕捉point-wise关系,但对全局信息、如总体趋势追踪仍不完善,如图1所示预测分布和实际分布差异很大。

思路:FEDformer将傅立叶变换与基于Transformer的方法相结合。利用大多数时序在傅立叶变换中具有稀疏表示的特性,将时域信息拆解为频域信息,随机采样部分频域,然后投影回时域,降低复杂度的同时过滤掉多数噪声,使得Transformer能够更好地学习长时序中的依赖关系,从而提升预测精度。

图片

1. FEDformer的整体架构

FEDformer的结构也采用编码-解码器结构,核心包含三个子模块,分别是:Frequency Enhanced Block (FEB, 绿色块),Frequency Enhanced Attention (FEA, 红色块),Mixture Of Expert Decomposition Blocks (MOEDecomp, 黄色块)。

图片

  • FEB用于在频率域进行表示学习,有两个子版本:FEB-f 和 FEB-w。FEB-f 使用Fourier基进行频率分析,将信号从时间域转换到频率域。FEB-w 使用Wavelet基也是一种频率分析方法,适用于非平稳信号。

  • FEA是作者设计的一种在频率域进行注意力机制的方法。与FEB类似,FEA也有两个子版本:FEA-f 和 FEA-w,分别基于Fourier和小波变换。

  • MOEDecomp用于从输入数据中提取季节性(seasonal)和趋势(trend)模式。

整体流程:如上图所示,编码器部分输入首先经过FEB模块,同时MOEDecomp块将数据分解为趋势和周期特征,其中周期特征保留并交下层进行学习,趋势特征被丢弃。而在解码器部分,同样经过MOEDecomp,保留周期特征,并交下层学习,不同之处在于通过频域注意力机制FEA模块对编码器周期特征和解码器周期特征进行交互

核心模块

01-Frequency Enhanced Block (FEB)

这一模块实现信号从时域到频域的相互转换,有两个版本基于傅立叶变换和小波变换。具体来说:首先,将输入从时域通过线性变换q = x·w投影到频域。然后,在投影产生的频域上进行随机采样,如下面的公式所示。由于采样得出的序列长度远低于原序列(M<<N),因此这样好处在于降低了计算复杂度。作者认为采样虽然对原信息有损失,但对最终精度影响不大。因为时序数据在频域上相对时域更加稀疏,这种情况下大多数信息是无用的,可以舍弃。最后,通过频域补全,再次将频域转回时域。

图片

对于小波分解部分,FedFormer采用了固定的小波基分解矩阵进行分解,使用三个FEB-f模块来分别处理小波分解后得到的高频部分、低频部分和剩余部分。随后采用重建模块对数据进行融合重建。

图片

02-Frequency Enhanced Attention (FEA)

FEA和FED模块遵循相同的处理流程:频域投影 -> 随机采样 ->  频域补全 -> 逆投影到时域,即qkv整体计算是在频域下进行,然后投影回时域。如下图所示,k和v由编码器经过多层感知机获得,q由解码器经过多层感知机获得。

  • 首先,qkv经过傅立叶变换由时域转到频域并进行随机采样。

  • 然后,qk相乘经过激活函数并与v相乘,计算过程与基本注意力机制一样。

  • 最后,padding补齐维度,通过傅立叶逆变换,由频域转回时域。

图片

FEA模块作者也实现了小波变换的版本,FEA-w架构保留了FEB-w的分解和重构阶段,但着重改进了分解过程。在分解阶段,采用相同的分解矩阵独立处理q、k、v信号,然后通过FEA-f进行特征提取,最后重建。

图片

实验和总结

图片

本文提出了一种用于长期序列预测的频率增强型Transformer模型,具有线性计算复杂度和内存成本。创新之处在于采用一种在频率上进行低秩近似的注意力机制,有效地将输入序列长度与注意力矩阵维度解耦,从而实现了线性复杂度。实验表明,与四种最先进的算法相比,该模型在六个基准数据集上实现了最佳的预测性能。



欢迎大家关注我的公众号【科学最top】,专注于时序高水平论文解读。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信如何发布学生查分?教师平台推荐!

学校和老师们都在面临着一个共同的问题&#xff1a;如何高效、便捷地发布学生成绩查询信息&#xff1f;在这个数字化时代&#xff0c;传统的纸质通知和口头传达方式已经无法满足家长和学生的需求。幸运的是&#xff0c;有了易查分这样的在线工具&#xff0c;发布学生查分变得简…

vitis Failed to create the part‘s controls解决方法

类似于 解决方法&#xff1a;重启vitis。 效果&#xff1a; 可以建立lab4了。

wallpaper engine壁纸提取

下载提取软件RavioliGameTools_v2.10.zip https://pan.baidu.com/s/14ZCVw3ucRERsB-GGGoCOqQ 2.运行RExtractor.exe 3.Input file(s)、Output directory填好 4.勾选Allow scanning of unkown files 5.点击Start

Ceph官方文档_01_Ceph简介

目录 Ceph介绍Ceph介绍 Ceph可用于向云平台提供Ceph对象存储,Ceph可用于向云平台提供Ceph块设备服务。Ceph可用于部署Ceph文件系统。所有Ceph存储群集部署开始都是先设置每个Ceph节点,然后再设置网络。 Ceph存储集群需要以下内容:至少一个Ceph监视器和至少一个Ceph管理器,…

vulnhub靶机:Breach 2.1详细过程

下载 下载地址&#xff1a;https://www.vulnhub.com/entry/breach-21,159/ 修改网络模式 根据靶机的描述得知该靶机适用于静态ip&#xff0c;即192.168.110.151&#xff1b;配置虚拟机的虚拟网络编辑器的仅主机模式&#xff0c;将其子网IP配置在110网段&#xff0c;并将攻击…

C++初阶学习第六弹------标准库中的string类

目录 一.标准库中的string类 二.string的常用接口函数 2.1string类对象的构造 2.2 string的容量操作 2.3 string类的访问与遍历 2.4 string类对象的修改 2.5 string类常用的非成员函数 三、总结 一.标准库中的string类 可以简单理解成把string类理解为变长的字符数组&#x…

2024.9.13 Python与图像处理新国大EE5731课程大作业,索贝尔算子计算边缘,高斯核模糊边缘,Haar小波计算边缘

1.编写一个图像二维卷积程序。它应该能够处理任何灰度输入图像&#xff0c;并使用以下内核进行操作&#xff1a; %matplotlib inline import numpy as np import matplotlib.pyplot as plt from scipy import linalg import random as rm import math import cv2# import and …

linux网络编程3

24.9.19学习目录 一.UDP&#xff08;续&#xff09;1.UDP编程2.注意点2.TFTPTFTP通信过程TFTP协议分析 一.UDP&#xff08;续&#xff09; 1.UDP编程 &#xff08;1&#xff09;sendto函数发送数据 向to结构体指针中指定的ip&#xff0c;发送UDP数据&#xff1b; 通过to和ad…

时间复杂度的常用符号+渐进时间复杂度分析

时间复杂度的常用符号 Θ \Theta Θ 如果 f ( n ) Θ ( g ( n ) ) f(n)\Theta(g(n)) f(n)Θ(g(n))&#xff0c;则 f ( n ) f(n) f(n) 与 g ( n ) g(n) g(n) 同阶。&#xff08;阶是指 f ( n ) f(n) f(n) 的指数&#xff0c;比如 n 2 n^2 n2 高于 n n n&#xff09; O O …

MacOS安装homebrew,jEnv,多版本JDK

1 安装homebrew homebrew官网 根据官网提示&#xff0c;运行安装命令 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"安装后&#xff0c;bash会提示执行两条命令 (echo; echo eval "$(/opt/homebrew/b…

海康威视摄像机和录像机的监控与回放

文章目录 海康威视摄像机和录像机的监控与回放1、海康威视监控设备简介1.1、摄像机二次开发1.1.1&#xff1a;协议选择 1.2&#xff1a;web集成1.2&#xff1a;标准协议对接1.2.1&#xff1a;ffmpeg软件转流1.2.2&#xff1a;开源监控软件shinobi1.2.3&#xff1a;使用nginx的R…

黑神话悟空mac可以玩吗

黑神话悟空mac上能不能玩对于苹果玩家来说很重要&#xff0c;那么黑神话悟空mac可以玩吗&#xff1f;目前是玩不了了&#xff0c;没有针对ios系统的版本&#xff0c;只能之后在云平台上找找了&#xff0c;大家可以再观望下看看。 黑神话悟空mac可以玩吗 ‌使用CrossOver‌&…

【海康威视面经】

海康威视面经 Java基础java常用集合 及其优缺点ArrayListVectorLinkedList Jvm调优监控发现问题工具分析问题 &#xff1a;性能调优GC频繁 出现内存泄漏 内存溢出CPU飙升 Synchronized和Volatile的比较反射线程池和new thread利弊高并发 集群 分布式 负载均衡 MySQL调优基础优化…

neo4j安装启动教程+对应的jdk配置

参考这位博主的视频教程&#xff1a;neo4j社区windows版下载 一、官网下载neo4j的安装包 &#xff08;1&#xff09;官网下载页面 &#xff08;2&#xff09;上一步 【download】之后&#xff0c;会自动下载&#xff0c;如果没有&#xff0c;点击【here】 这里可以看到一行字…

Gradio 自定义组件

如何使用 Gradio 自定义组件&#xff0c;Gradio 前端使用 Svelte&#xff0c;后端使用的 Python。如何自定义一个组件呢&#xff1f;Gadio 提供了类似于脚手架的命令&#xff0c;可以生成需要开发组件的前后和后端代码。 创建组件 运行如下命令&#xff0c;gradio 会自动生成…

[2025]基于微信小程序慢性呼吸系统疾病的健康管理(源码+文档+解答)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

开放标准如何破解企业数字化与可持续发展的困境:The Open Group引领生态系统架构创新

应对数字化与可持续发展的双重挑战&#xff0c;开放标准是关键 在当今快速变化的商业环境中&#xff0c;企业不仅需要通过数字化转型提升竞争力&#xff0c;还面临日益严格的可持续发展要求。开放标准正在成为企业破解这一双重挑战的核心工具。The Open Group 2024生态系统架构…

【MySQL】了解并操作MySQL的缓存配置与信息

目录 一、查看缓存配置 二、查看缓存信息 查询MySQL的缓存相关信息&#xff0c;一般我们用两个命令&#xff1a; show variables like %query_cache%; show status like %qcache%; 一、查看缓存配置 查看缓存配置的相关的系统变量变量&#xff0c;返回给我们服务器缓存的配置…

【SQL】百题计划:SQL内置函数“LENGTH“的使用

【SQL】百题计划-20240912 方法一&#xff1a; Select tweet_id from Tweets where LENGTH(content) > 15;– 方法二&#xff1a; Select tweet_id from Tweets where CHAR_LENGTH(content)> 15;

WordPress建站钩子函数及使用

目录 前言&#xff1a; 使用场景&#xff1a; 一、常用的wordpress钩子&#xff08;动作钩子、过滤器钩子&#xff09; 1、动作钩子&#xff08;Action Hooks&#xff09; 2、过滤器钩子&#xff08;Filter Hooks&#xff09; 二、常用钩子示例 1、添加自定义 CSS 和 JS…