【论文笔记】Are Self-Attentions Effective for Time Series Forecasting? (NeurIPS 2024)

官方代码https://github.com/dongbeank/CATS
Abstract
时间序列预测在多领域极为关键,Transformer 虽推进了该领域发展,但有效性尚存争议,有研究表明简单线性模型有时表现更优。本文聚焦于自注意力机制在时间序列预测中的作用,提出仅用交叉注意力的 CATS 架构。它摒弃自注意力,利用交叉注意力并设置未来视野依赖参数为查询及增强参数共享,提升了长期预测精度,还减少了参数和内存使用。多数据集实验显示,CATS 模型均方误差最低且参数更少。https://github.com/dongbeank/CATS
Introduction
- Background:时间序列预测在金融、气象、交通等诸多领域中是关键任务,其结果对决策制定有重要影响。Transformer 架构在自然语言处理等方面取得巨大成功后,被广泛应用于时间序列预测,但实际效果参差不齐,引发了对其内部结构尤其是自注意力机制在该任务中适用性的思考。
- Motivation:越来越多的研究显示,在某些时间序列预测场景下,简单的线性模型能达到甚至超越复杂的基于 Transformer 的模型的性能。这促使作者深入探究自注意力机制在时间序列预测中的真实价值,试图寻找更高效的架构来提升预测准确性和效率。
- Challenges:
- 计算复杂度问题:在传统的 Transformer 架构应用于时间序列预测时,自注意力机制的计算复杂度随着序列长度的增加呈平方增长。当处理大规模时间序列数据时,这会导致训练时间大幅延长,对计算资源的需求也急剧增加,使得模型在实际应用中的可行性受到挑战。
- 过拟合风险:Transformer 模型通常包含大量的参数,在时间序列数据有限的情况下,容易出现过拟合现象。模型可能会过度学习训练数据中的噪声和局部特征,而无法很好地泛化到未知的未来数据,从而影响预测的准确性和可靠性。
- 自注意力机制对于时间序列预测是否有效?
- Contributions:
- 架构创新:提出了 Cross-Attention-only Time Series transformer (CATS) 架构,为时间序列预测提供了一种全新的思路。通过去除自注意力机制,采用交叉注意力机制并结合独特的参数设置,有效解决了传统 Transformer 在时间序列预测中面临的部分难题。
- 实验验证:在多个不同类型和领域的数据集上进行了广泛而深入的实验,全面验证了 CATS 模型的有效性。通过与现有的主流时间序列预测模型进行对比,证明了 CATS 模型在降低均方误差、减少参数数量和内存使用方面具有显著优势,为后续的研究和实际应用提供了有力的实证支持。
Method

在时间序列预测领域,传统Transformer架构中的自注意力机制存在诸多问题,如时间信息丢失、计算复杂度高等。为解决这些问题,作者提出了仅交叉注意力时间序列Transformer(CATS)架构,其主要由以下三个关键部分构成。

将未来作为查询的交叉注意力机制
在时间序列预测中,预测通常针对特定的未来时间范围。交叉注意力机制与自注意力机制相似,涉及键(key)、查询(query)和值(value)三个要素,但不同之处在于查询来自与键和值不同的来源。在我们的CATS架构中,核心在于将未来时间范围视为查询。
具体实现上,我们把与预测范围相关的参数设定为可学习的查询。以图4为例,我们先针对特定的预测范围创建相应参数。对每个这样的虚拟化参数,分配固定数量的参数来代表对应的预测范围,使其成为可学习的查询。例如, q i q_{i} qi 就是在 L + i L + i L+i 时刻与预测范围相关的一个查询。当进行分块操作时,这些查询会被独立处理。每个可学习查询 q ∈ R P q \in \mathbb{R}^{P} q∈RP 先被输入到嵌入层,之后将经过嵌入的输入时间序列分块作为键和值,输入到多头注意力层。通过这种方式,模型能够利用交叉注意力机制,从过去的时间序列数据(键和值)中,精准地提取与未来特定时间点(查询)相关的信息,有效避免了自注意力机制中因排列不变性和反序特性导致的时间信息丢失问题,更好地捕捉时间序列中的动态变化和依赖关系 。
跨预测范围的参数共享
在CATS架构中,参数共享策略是提升模型效率和性能的关键因素之一。传统的Transformer架构在处理不同预测范围时,往往为每个预测步骤单独设置大量参数,这不仅增加了模型的复杂度和训练成本,还容易引发过拟合问题。
与之不同,我们的CATS模型通过在不同预测范围之间共享关键参数,极大地减少了参数总量。例如,在多头注意力机制中,用于计算注意力权重的部分参数在不同的预测时间步中是共享的。这种参数共享方式,使得模型在学习过程中能够更高效地利用数据,提高参数的使用效率,降低模型的过拟合风险。同时,减少的参数数量降低了模型的计算复杂度,使得模型在训练和推理过程中所需的内存和计算资源显著减少,提升了模型的运行速度和实际应用的可行性。这一策略使得CATS模型在处理不同长度和复杂度的时间序列数据时,能够以更简洁的结构和更低的资源消耗,实现准确的预测。

查询自适应掩码
查询自适应掩码是CATS架构中的另一个创新点,它主要用于优化交叉注意力机制的计算过程,提升模型的预测准确性。在时间序列预测中,不同的时间步和预测范围对于信息的需求和依赖程度各不相同。查询自适应掩码能够根据每个查询(即未来的每个时间点)的特点,动态地调整模型在计算注意力权重时对输入数据(键和值)的关注程度。
具体而言,掩码会根据查询所代表的未来时间点与当前时间的距离、时间序列数据的局部和全局趋势等因素,对输入数据中的某些部分进行选择性的屏蔽或增强。例如,当预测较近的未来时间点时,模型可能更关注近期的时间序列数据,掩码会增强对这些数据的注意力权重;而当预测较远的未来时间点时,掩码会引导模型综合考虑更长期的历史数据和趋势信息。通过这种方式,查询自适应掩码帮助模型更加智能地聚焦于与每个预测目标最相关的信息,避免无效信息的干扰,从而提高预测的准确性和稳定性。同时,掩码的应用还可以减少不必要的计算,进一步提升模型的计算效率。
Results
长时预测
模型 CATS 在多个数据集的多元长期预测任务中展现出卓越性能。在交通(Traffic)数据集上,对于所有预测范围,CATS 始终能实现最低的均方误差(MSE)和平均绝对误差(MAE),超越了所有其他模型。对于天气(Weather)、电力(Electricity)和 ETT 数据集,CATS 表现出极具竞争力的性能,在大多数预测范围上取得了最佳结果。这表明 CATS 有效地捕捉了不同时间序列数据中的潜在模式,凸显了其处理复杂时间依赖关系的能力。


短时预测

交叉注意力vs自注意力

Conclusion
- 本研究通过理论分析和实验验证,表明在时间序列预测领域,传统 Transformer 模型中的自注意力机制并非是必不可少的。CATS 架构通过巧妙地运用交叉注意力机制和独特的参数设置,成功地在提升预测精度的同时降低了资源消耗。
- 未来的研究可以基于 CATS 架构进一步探索优化方向,如进一步改进交叉注意力机制的细节、探索更有效的参数共享策略、结合其他先进的机器学习技术等。同时,可以将 CATS 模型拓展到更多的应用领域,如工业生产过程中的质量控制、环境监测中的数据预测等,以推动时间序列预测技术的不断发展和创新。
Appendix
补充结果
学术会议
- 如有意愿参会或投稿,可以获取邀请码,享受参会、投稿优惠,优先审核
- 想要了解更多国内主办的覆盖学科最全最广的学术会议,请前往【所有会议官网】:
学术会议官网www.ais.cn
相关文章:
【论文笔记】Are Self-Attentions Effective for Time Series Forecasting? (NeurIPS 2024)
官方代码https://github.com/dongbeank/CATS Abstract 时间序列预测在多领域极为关键,Transformer 虽推进了该领域发展,但有效性尚存争议,有研究表明简单线性模型有时表现更优。本文聚焦于自注意力机制在时间序列预测中的作用,提…...
maven导入spring框架
在eclipse导入maven项目, 在pom.xml文件中加入以下内容 junit junit 3.8.1 test org.springframework spring-core ${org.springframework.version} org.springframework spring-beans ${org.springframework.version} org.springframework spring-context ${org.s…...
AUTOGPT:基于GPT模型开发的实验性开源应用程序; 目标设定与分解 ;;自主思考与决策 ;;信息交互与执行
目录 AUTOGPT是一款基于GPT模型开发的实验性开源应用程序目标设定与分解自主思考与决策信息交互与执行AUTOGPT是一款基于GPT模型开发的实验性开源应用程序 目标设定与分解 自主思考与决策 信息交互与执行 AUTOGPT是一款基于GPT模型开发的实验性开源应用程序,它能让大语言模…...
瑞芯微开发板/主板Android调试串口配置为普通串口方法 深圳触觉智能科技分享
本文介绍瑞芯微开发板/主板Android调试串口配置为普通串口方法,不同板型找到对应文件修改,修改的方法相通。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联…...
Redis 数据类型 Hash 哈希
在 Redis 中,哈希类型是指值本⾝⼜是⼀个键值对结构,形如 key "key",value { { field1, value1 }, ..., {fieldN, valueN } },Redis String 和 Hash 类型⼆者的关系可以⽤下图来表⽰。 Hash 数据类型的特点 键值对集合…...
IntelliJ IDEA 2024.1.4版无Tomcat配置
IntelliJ IDEA 2024.1.4 (Ultimate Edition) 安装完成后,调试项目发现找不到Tomcat服务: 按照常规操作添加,发现服务插件中没有Tomcat。。。 解决方法 1、找到IDE设置窗口 2、点击Plugins按钮,进入插件窗口,搜索T…...
连锁收银系统的核心架构与技术选型
在连锁门店的日常运营里,连锁收银系统扮演着极为重要的角色,它不仅承担着交易结算的基础任务,还关联着库存管理、会员服务、数据分析等多个关键环节。一套设计精良的核心架构与合理的技术选型,是保障收银系统高效、稳定运行的基础…...
CSS 小技巧 —— CSS 实现 Tooltip 功能-鼠标 hover 之后出现弹层
CSS 小技巧 —— CSS 实现 Tooltip 功能-鼠标 hover 之后出现弹层 1. 两个元素实现 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>纯 CSS 实现 Tooltip 功能-鼠标 hover 之后出现弹层</titl…...
19.4.2 -19.4.4 新增、修改、删除数据
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 需要北风数据库的请留言自己的信箱。 19.4.2 新增数据 数据库数据的新增、修改和删除不同于查询,查询需要返回一个DbD…...
【PL/SQL】常用操作复习20250212
目录标题 1.基本语法结构二级目录三级目录 1.基本语法结构2。变量声明和使用3. SELECT 查询4.插入 insert5.更新UPDATE6.删除(DELETE) 7游标 cursor例子1:基本游标使用例子2:使用FOR循环的简化写法实际应用例子:给高工资员工增加奖金 8 IF 条…...
C++自研游戏引擎-碰撞检测组件-八叉树AABB检测算法实现
八叉树碰撞检测是一种在三维空间中高效处理物体碰撞检测的算法,其原理可以类比为一个管理三维空间物体的智能系统。这个示例包含两个部分:八叉树部分用于宏观检测,AABB用于微观检测。AABB可以更换为均值或节点检测来提高检测精度。 八叉树的…...
haproxy详解笔记
一、概述 HAProxy(High Availability Proxy)是一款开源的高性能 TCP/HTTP 负载均衡器和代理服务器,用于将大量并发连接分发到多个服务器上,从而提高系统的可用性和负载能力。它支持多种负载均衡算法,能够根据服务器的…...
windows 通过docker 安装mysql
参考:Docker安装并使用Mysql(可用详细)_docker 安装mysql-CSDN博客 1. 拉取镜像:docker pull mysql:5.7 2. 查看镜像:docker image 3. 创建mysql 容器实例,并将data 目录挂载到本地d盘上 docker run --n…...
【STM32】通过L496的HAL库Flash建立FatFS文件系统(CubeMX自动配置R0.12C版本)
【STM32】通过L496的HAL库Flash建立FatFS文件系统(CubeMX自动配置R0.12C版本) 文章目录 FlashFlash地址写Flash地址读 FatFS文件系统配置FatFS移植驱动函数时间戳函数 文件操作函数工作区缓存文件挂载和格式化测试文件读写测试其他文件操作函数 测试附录…...
QTreeView笔记
1.定义TreeModel类 我们需要继承自QAbstractItemModel,让我们来看看它有哪些接口。 QAbstractItemModel类中定义如下: Q_INVOKABLE virtual QModelIndex index(int row, int column, const QModelIndex &parent QModelIndex()) const 0;Q_INVOK…...
传感器篇(一)——深度相机
目录 一 概要 二 原理 三 对比 四 产品 五 结论 一 概要 深度相机是一种能够获取物体深度信息的设备,相较于普通相机只能记录物体的二维图像信息,深度相机可以感知物体与相机之间的距离,从而提供三维空间信息。在你正在阅读的报告中提到…...
Qt 控件整理 —— 按钮类
一、PushButton 1. 介绍 在Qt中最常见的就是按钮,它的继承关系如下: 2. 常用属性 3. 例子 我们之前写过一个例子,根据上下左右的按钮去操控一个按钮,当时只是做了一些比较粗糙的去演示信号和槽是这么连接的,这次我们…...
校园网绕过认证上网很简单
校园网绕过认证就是不用通过校园WiFi的WEB页面登录,这个WEB登录页面就是认证页面. 所谓绕过认证,就是不通过校园WiFi WEB登录页面直接上网,校园WiFi没有密码,直接就能连接上,我们连上这个WiFi的时候,它会给…...
蓝桥杯篇---温度传感器 DS18B20
文章目录 前言DS18B201. DS18B20 引脚说明2. 单总线通信协议3. DS18B20 操作流程初始化写操作读操作 4. 示例代码5. 代码说明6. 注意事项总结 前言 以上就是今天要讲的内容,本文简单介绍了IAP15F2K61S2中温度传感器模块DS18B20的使用。 DS18B20 DS18B20 是一款数字…...
WPS或word接入智能AI
DeepSeek接入WPS 配置WPS (1)下载 OfficeAl助手插件: 插件下载地址:https://www.office-ai.cn/。 安装插件后,打开WPS,菜单栏会新增"OfficeAl助手”选项卡。 如果没有出现, 左上找到文件菜单 -> 选项 ,在…...
vue3:template中v-for循环遍历这个centrerTopdata,我希望自循环前面三个就可以了怎么写?
问: template中v-for循环遍历这个centrerTopdata,我希望自循环前面三个就可以了怎么写? 回答: 问: <div v-for"(item, index) in centrerTopdata.slice(0, 3)" :key"index"> div cl…...
Java练习(20)
ps:练习来自力扣 给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。 class Solution {pu…...
MySQL | MySQL安装教程
MySQL | MySQL安装教程(压缩包(ZIP)安装-详细版) 🪄个人博客:https://vite.xingji.fun MySQL概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,MySQL AB公司被Sun公司收购,Sun公…...
.NET 9.0 的 Blazor Web App 项目,进度条 <progress> 组件使用注意事项
一、执行过程中,要刷新 进度条 的显示,需要 延时、释放,否则进度条不 实时 更新,最后一下到 100% // 延时,释放给前端:【必须】,否则进度条不 实时 更新,最后一下到 100await Task.D…...
李超线段树 树链剖分 学习笔记
今天学习了李超线段树。 [洛谷 P4097] 【模板】李超线段树 & [HEOI2013] Segment 刚开始学李超线段树,觉得挺简单的。其实它跟吉司机线段树有点像,只是维护的东西要少一些,并且代码更好写。 对于每个节点,考虑维护在它中点处的…...
【SpringBoot3.x+】slf4j-log4j12依赖引入打印日志报错的两种解决方法
最开始引入了1.7.5版本的slf4j-log4j依赖包,但是控制台不报错也不显示日志 在https://mvnrepository.com/找到最新的2.0.16版本之后出现报错: 进入提示的slf4j网站中可以找到从2.0.0版本开始,slf4j-log4j已经被slf4j-reload4j取代࿱…...
安装 Ollama 需要哪些步骤?(windows+mac+linux+二进制+Docker)
安装 Ollama 的步骤根据操作系统不同会有所差异,以下是针对不同操作系统的详细安装指南: Windows 系统 下载安装包:访问 Ollama 官方下载页面,下载适用于 Windows 的安装程序 OllamaSetup.exe。运行安装程序:双击下载的安装包,按照提示完成安装。默认安装路径为 C:\User…...
算法学习笔记之贪心算法
导引(硕鼠的交易) 硕鼠准备了M磅猫粮与看守仓库的猫交易奶酪。 仓库有N个房间,第i个房间有 J[i] 磅奶酪并需要 F[i] 磅猫粮交换,硕鼠可以按比例来交换,不必交换所有的奶酪 计算硕鼠最多能得到多少磅奶酪。 输入M和…...
探索DeepSeek:开源大模型领域的中国力量
在人工智能技术迅猛发展的今天,大语言模型(LLM)已成为全球科技竞争的焦点。来自中国的深度求索(DeepSeek)团队凭借其开源模型系列,正在为这一领域注入新的活力。本文将带您了解DeepSeek的技术突破、开源生态…...
372_C++_当有多个通道,开启不同告警的同一种的开关时,限制该开关的打开数量(比如视频上传开关)
GetCloudUploadNum函数 GetCloudUploadNum 函数主要用于统计和控制云端视频上传的通道数量,其主要功能如下: 功能目的// 检查每个通道的云端视频上传配置,并统计启用云端上传的通道总数 int CloudUploadNum = 0; bool InValidCloudUploadChn[MAX_CHN_NUMPARA] = {};...
