【文章学习系列之模型】FEDformer

本章内容

  • 文章概况
  • 模型流程
  • 主要结构
    • Frequency Enhanced Decomposition Architecture(频率增强分解结构)
    • Fourier enhanced blocks and Wavelet enhanced blocks(傅里叶增强模块和小波增强模块)
      • Fourier Enhanced Structure(傅里叶增强结构)
        • Frequency Enhanced Block with Fourier Transform(FEB-f)
        • Frequency Enhanced Attention with Fourier Transform (FEA-f)
      • Wavelet Enhanced Structure(小波增强结构)
        • Frequency Enhanced Block with Wavelet Transform(FEB-w)
        • Frequency Enhanced Attention with Wavelet Transform(FEA-w)
  • 实验结果
  • 消融实验
    • 模型的消融
    • 频域分量随机选择策略的消融
    • 预测数据和原始数据分布的一致性消融
  • 总结

文章概况

《FEDformer: Frequency Enhanced Decomposed Transformer for Long-term Series Forecasting》是2022年发表于ICML的一篇论文。该文章以先前的Autoformer模型为整体框架,做了新的创新,建议看这篇文章之前先学习一下Autoformer,理清了前一篇文章的框架和创新点,看这一篇文章就会轻松些。

文章代码链接:
文章链接
代码链接

模型流程

在这里插入图片描述
下图为作者论文中的模型图,继承了Autoformer的模型框架,作者对“时序分解”进一步创新提出频率增强分解结构,并对“Encoder/Decoder”的Transformer中融入傅里叶增强模块和小波增强模块。

在这里插入图片描述

主要结构

Frequency Enhanced Decomposition Architecture(频率增强分解结构)

在Autoformer中,分解模块使用的是固定的窗口大小,为了克服固定大小在具有复杂周期和趋势分量的现实情况下的不足,作者设计了一个混合型分解模块,其主要由若干个不同大小的窗口组成,提取到多个不同的分量特征,同时作者还对他们设置了权值,旨在区分不同分量特征对模型的贡献,最终以加权求和的方式获得最终趋势数据。这部分通俗易懂,主要进行了不同尺度的滤波操作获得多种结果,并对他们加权计算最终结果。

Fourier enhanced blocks and Wavelet enhanced blocks(傅里叶增强模块和小波增强模块)

在该部分,作者提出将Transformer和傅里叶分析相结合,取代以往将Transformer应用于时间特征提取,改为使用Transformer对傅里叶变换后的频域数据进行特征提取。然而时域数据转化为频域数据带来的是大量的频率分量,是否针对所有数据进行特征提取或者如何选择这些分量将是一个问题。针对这个问题,作者进行了分析和验证。

使用所有频率分量 虽然数据一点不会丢失,但考虑到傅里叶变换的局限性,过多的频率特征带来的将是冗余的信息资源、庞大的机器和时间开销以及过拟合的风险,因此不适用于对所有数据进行特征提取。
使用部分高频分量 高频分量代表时间序列中变化的突变型特征,确实具有一定的特殊性,然而噪声的存在否定了特殊性存在的合理性,过度地对高频分量进行特征提取,或许模型最终学习到更多噪声的内容,而难以关注时间序列本身。
使用部分低频分量 低频分量较为平缓,而时间序列中趋势的变化往往与重要事件的发生有关,缺少了高频分量对趋势的影响,时间序列将不具个性,预测的意义也大大降低。
随机选择分量 作者通过论证得到随机选取分量更有效,大大降低了复杂度。

该部分内容将被使用在时域转频域后频域分量的选择。

Fourier Enhanced Structure(傅里叶增强结构)

Frequency Enhanced Block with Fourier Transform(FEB-f)

在这里插入图片描述
该部分主要对时序数据在频域上的特征进行提取,具体步骤如下:
1.输入数据通过多层感知机调整长度、增加非线性;
2.通过快速傅里叶变换,由时域数据转换为频域数据;
3.对频域数据随机选择分量 ,减少信息冗余、降本增效;
4.随机初始化矩阵R,并与随机选择的频率分量相乘;
5.为了便于后续进行傅里叶逆变换,需要将数据以0补足维度;
6.通过傅里叶逆变换,由频域数据转换为时域数据。

Frequency Enhanced Attention with Fourier Transform (FEA-f)

在这里插入图片描述
该部分替换了常规注意力模块,不同的是对q k v进行了频域下的特征提取,具体步骤如下:
1.由Encoder经过多层感知机获得v和k,由Decoder经过多层感知机获得q;
2.q k v 在快速傅里叶变换下由时域数据转换为频域数据,对他们随机选择分量
3.接下来的步骤和传统注意力机制一样:k q相乘后经激活函数再与v相乘;
4.为了便于后续进行傅里叶逆变换,需要将数据以0补足维度;
5.通过傅里叶逆变换,由频域数据转换为时域数据。

Wavelet Enhanced Structure(小波增强结构)

在完成了傅里叶增强结构后,作者针对傅里叶变换的局限性,又提出了一种小波增强结构。在学习这部分之前,需要清楚傅里叶变换和小波变换的差别和联系。于是我也去临时抱佛脚了一波,根据我的理解,大致是傅里叶变换的条件过于理想,在现实的许多场景下,信号往往是非平稳的,而对非平稳过程,傅里叶变换有着明显的局限性(可参考该链接回答)。
针对该局限性,前人提出多种方法,其中小波变换尤其突出。而本文作者应该也是考虑到了这样的局限性,因此尝试用小波变换代替傅里叶变换,最终探索出了小波增强结构。
小波变换方法主要针对多个局部的时序数据进行变换,因此在该部分,作者将每一段局部数据进行分解重建,主要模块还是沿袭的上文傅里叶增强结构中提到的模块,这和小波变换和傅里叶变换的异同点有关。

Frequency Enhanced Block with Wavelet Transform(FEB-w)

在这里插入图片描述
该部分和FEB-f不同,作者使用固定的小波基对矩阵进行分解,分别使用三个FEB-f模块处理分解后的高频数据、低频数据和剩余数据,如左图所示。随后采用重建模块融合多组数据进行数据重建,如右图所示。

Frequency Enhanced Attention with Wavelet Transform(FEA-w)

在这里插入图片描述
该部分的内容和FEB-w异曲同工,作者使用相同的分解矩阵对k q v 分解为三对,每一对q k v再通过FEA-f进行特征提取,如上图所示。而数据重建部分,则和FEB-w中的重建方法一样。

实验结果

在这里插入图片描述
在这里插入图片描述
(详细实验结果见附录)

作者在六种基准数据集上进行了测试,结果表明,所提的两种方法(傅里叶和小波)具有一定的优势,但在所有场景下,两种方法之间很难有绝对优势的存在。对于不同种类的基准数据,可能因为他们自身的平稳性等情况的不同,从而在傅里叶和小波模块的两种情况下存在着一定的差异。值得注意的是,两种方法在六种数据集中的优势恰恰互补,在一定程度上也说明作者所提模型的有效性。

消融实验

模型的消融

作者使用控制变量的方法对所提模块的效果进行测试。其中,V1:代表仅使用FEB代替自注意力;V2: 仅使用FEA代替交叉注意力;V3: 使用FEA替代自注意力及交叉注意力。
在这里插入图片描述
(详细实验结果见附录)

实验结果表明,所提方法确实能够提高模型的预测性能。

频域分量随机选择策略的消融

在这里插入图片描述
针对前文提到的时域转为频域后对变量的随机选择方法,作者除了完成理论探究,还在实验上进行了对比。结果表明,随机策略获得更好的性能,同时表现出一定的模式饱和效应,这进一步论证了随机选取的正确性。

预测数据和原始数据分布的一致性消融

在这里插入图片描述
为了验证模型输入和输出数据的分布情况,作者对多种模型进行对比,使用的是分布检测常用方法KS检测(Kolmogrov-Smirnov)。实验结果表明,Autoformer和FEDformer输入和输出数据的分布相似性更高。经分析,可能得益于季节趋势分解模块。

总结

Autoformer可以认为是将时序序列分解为多个时序子序列进行特征提取,而FEDformer则是从频域的角度进行提取,两个在具有相似模型框架的同时又有着较大的不同。通过多个实验,后者展现出优异的特征提取能力,进而在长时序中具有优异的性能。
作者在Autoformer的基础上进行深入创新,融入了傅里叶变换的同时,进一步探索了融入小波变换的可能性,更加证明了合理使用传统领域的发现,将其与深度学习相结合,往往会有着不错的效果。通过学习发现,小波变换部分的模块与傅里叶模块有着直接相关,因此小波模型的运行不管是空间还是时间都将是一大开销。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Java 数据结构】优先级队列 (堆)

🎉🎉🎉点进来你就是我的人了 博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!人生格言:当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔🦾&am…

快速精简软件,如何让软件缩小到原来的5%大小,从删除文件入手,到修改C++引用库,合规解决存储问题

Hi~大家好,今天制作一个简单的精简软件的教学~ 事先说明下,精简软件并不违反任何规定,尤其是开源软件,这里也仅讨论开源软件的修改,根据几乎所有开源软件的开源规则,精简软件,本质也就是修改软件…

戴尔G3 Ubuntu18.04双系统安装

ROS学习需要使用Linux系统,首先就是Ubuntu,我选择的是18.04.6这个版本,因为后面我要使用以Jetson Nano为主控的Jetbot进行ROS编程,Jetbot所带的出厂镜像就是18.04,为了方便程序移植,以及减少不必要的麻烦。…

【消息队列】聊一下Kafka副本机制

副本机制的好处 副本在分布式系统下,不同的网络互联的机器保存同一份数据。我们知道在分布式系统中,都会通过数据镜像、数据冗余的方式来提升高可用性。 提供数据冗余:这点比较好理解,说白了就是通过数据冗余在不同的服务器上&a…

大家副业都在做什么?csgo搬砖靠谱的副业推荐给你

从来没想过,以前只会玩CSGO的男孩子,现在居然能借助游戏赚到钱了!甚至不需要什么专业的技巧,简简单单 在steam平台选择有利润的道具后,再上架到国内网易BUFF平台,赚取“信息差”差价而已! 谁大…

SpringCloud学习(六)——Feign的简单使用

文章目录 1. Feign 的使用1.1 引入依赖1.2 添加注解1.3 编写Feign客户端1.4 测试 2. Feign中的自定义配置2.1.配置文件方式2.2.Java代码方式 3. Feign 性能优化4. Feign的抽取式使用4.1 抽取配置4.2 引入依赖4.3 指明Client 在此之前,我们服务之间需要进行调用的时候…

读懂MAC地址

MAC地址是一种用于标识计算机网络设备的唯一地址。它是由48个二进制数字组成的,通常表示为12个十六进制数字,每两个数字之间用冒号或连字符分隔开。MAC地址由设备制造商在生产过程中分配,以确保网络上每个设备都有唯一的标识符。 MAC地址的规…

第11章_常用类和基础API

第11章_常用类和基础API 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 本章专题与脉络 1. 字符串相关类之不可变字符序列:String 1.1 String的特性 java.lang.String 类代表字符串…

【大数据之Hadoop】十七、MapReduce之数据清洗ETL

ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将分散、零乱、标准不统一的数据整合到一起,为决策提供分析依据。 ETL的设计分三部分:数据抽取、数据的清洗转换、数据的加载。 1 ETL体系结构 ETL主要是用来实现…

LLM总结(持续更新中)

引言 当前LLM模型火出天际,但是做事还是需要脚踏实地。此文只是日常学习LLM,顺手整理所得。本篇博文更多侧重对话、问答类LLM上,其他方向(代码生成)这里暂不涉及,可以去看综述来了解。 之前LLM模型梳理 …

龙芯中科官方宣布,龙芯中科企业办公信息化平台全面完成国产化替代

4月4日,龙芯中科官方宣布,龙芯中科企业办公信息化平台全面完成国产化替代。龙芯 ERP 系统全系统使用国产化平台,私有化部署于基于龙芯 3C5000 服务器集群的虚拟化云平台上,使用自研 Loongnix 操作系统、自研 LoongDB 数据库及龙芯…

【SQL Server】无需公网IP,就可以远程连接SQL Server数据库

目录 1.前言 2.本地安装和设置SQL Server 2.1 SQL Server下载 2.2 SQL Server本地连接测试 2.3 Cpolar内网穿透的下载和安装 2.3 Cpolar内网穿透的注册 3.本地网页发布 3.1 Cpolar云端设置 3.2 Cpolar本地设置 4.公网访问测试 5.结语 1.前言 数据库的重要性相信大家…

Redis-----什么是Redis?

什么是Redis? redis是一个基于内存的key-value结构数据库。 基于内存存储,读写性能高适合存储热点数据(热点商品、资讯、新闻)企业应用广泛 Redis入门 redis简介 redis是一个开源的内存中的数据结构存储系统,数据库…

哪个洗脱一体机好用?好用的洗拖一体机推荐

洗地机是一款使用非常方便的清洁工具,通常可以实现吸、拖、洗三个功能,对于各类家庭污渍都有着不错的处理能力,无论是干燥垃圾还是潮湿垃圾一律可以有效清理。不过很多新手朋友在选购洗地机时会因为看不懂参数而频繁踩雷。本文为大家整理了洗…

详解语义分割deeplabv3+模型的工业应用流程

来源:投稿 作者:某一个名字 编辑:学姐 导语 在工业视觉应用中,目标检测算法常用于特征的粗定位,而语义分割则在特征的精定位方面有着突出的表现。使用较多的语义分割模型主要有FCN、deeplab系列、unet等,根…

keil5使用c++编写stm32控制程序

keil5使用c编写stm32控制程序 一、前言二、配置图解三、std::cout串口重定向四、串口中断服务函数五、结尾废话 一、前言 想着搞个新奇的玩意玩一玩来着,想用c编写代码来控制stm32,结果在keil5中,把踩给我踩闷了,这里简单记录一下…

【OCR】CTC loss原理

1 CTC loss出现的背景 在图像文本识别、语言识别的应用中,所面临的一个问题是神经网络输出与ground truth的长度不一致,这样一来,loss就会很难计算,举个例子来讲,如果网络的输出是”-sst-aa-tt-e’, 而其ground truth…

深入剖析:如何优化Android应用的性能和内存管理

深入剖析:如何优化Android应用的性能和内存管理 性能和内存管理的重要性 在今天的移动应用开发中,用户对于应用的性能和体验要求越来越高。一款性能卓越的Android应用能够提供流畅的操作体验、快速的响应速度以及较低的资源消耗,从而提高用户…

SpringBoot 集成webSocket

pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 …

HTML5 Input 类型

文章目录 HTML5 Input 类型Input 类型: colorInput 类型: dateInput 类型: datetimeInput 类型: datetime-localInput 类型: emailInput 类型: monthInput 类型: numberInput 类型: rangeInput 类型: searchInput 类型: telInput 类型: timeInput 类型: urlInput 类型: weekHTM…