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

news2024/12/25 13:25:18

本章内容

  • 文章概况
  • 模型结构
  • 主要结构
  • 实验结果
  • 消融实验
    • 模型效率
    • 分解效果定性
    • 分解效果定量
    • 算子稳定性
  • 总结

文章概况

《Koopa: Learning Non-stationary Time Series Dynamics with Koopman Predictors》是2023年发表于NeurIPS的一篇论文。考虑到时序预测中训练和推理数据之间甚至每个回溯窗口之间存在巨大的分布差距,作者结合动态模式分解(DMD)[近似库普曼算子的领先数值方法],提出一种新的非平稳时序预测模型,实验表明模型轻量高效且具备分布变化的自适应能力。

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

模型结构

在这里插入图片描述
模型见上图橙框内容。模型由若干个Koopa Block组成,每一层Block输出两组数据,分别为残差项和预测项。其中下一个Block的输入由上一个Block的残差项提供,每个Block的预测项求和得到最终的模型预测值。

主要结构

在这里插入图片描述
Koopa Block见上图绿框内容。时间序列问题的分解方法一直广受欢迎,例如ARIMA,将时序数据分解为趋势项、季节项、周期项和残差项,尝试将非平稳数据预测问题分解为多个具有一定规律的数据外加残差数据进行预测。

本文作者同样进行分解操作,将原始数据分解为时变项和时常项。时常项是指在原始数据中包含的基本稳定不变的数值,如周期、幅值等。时变项是指除了时常项以外的其他内容。

为了达到分离时常项和时变项的目标,作者使用傅里叶滤波器对数据进行时频转化,选取前α比例的高频分量所在的时域数据作为时常项Xinv,相减后的其他项则作为时变项Xvar。随后再将两者分别输入到时常库普曼预测器(Time-invariant Koopman Predictor)和时变库普曼预测器(Time-variant Koopman Predictor)中。

时常库普曼预测器时变库普曼预测器
Time-invariant Koopman PredictorTime-variant Koopman Predictor
手机在这里插入图片描述
在时常库普曼预测器中,时常项 X i n v X_{inv} Xinv经由编码器得到 Z b a c k Z_{back} Zback,再在可学习矩阵 K i n v K_{inv} Kinv的转换下得到 Z f o r e Z_{fore} Zfore,最后通过解码器获得 Y i n v Y_{inv} Yinv在时变库普曼预测器中,时变项 X v a r X_{var} Xvar被划分为 n n n份,分别经由编码器获得 Z Z Z,并与 K v a r K_{var} Kvar相乘获得 Z ^ \hat{Z} Z^,其中 K v a r K_{var} Kvar是利用DMD方法对 Z Z Z计算求得。需要注意的是,该部分作者利用Koopma算子 K v a r K_{var} Kvar来模拟相邻时间片段之间的变化,如 Z 1 Z_{1} Z1 Z ^ 2 \hat{Z}_{2} Z^2,而 Z ^ 1 \hat{Z}_{1} Z^1因其无前置片段而直接继承 Z 1 Z_{1} Z1的值。 Z ^ \hat{Z} Z^在解码器的作用下获得 X ^ \hat{X} X^ X ^ \hat{X} X^中前 n n n项与 X v a r X_{var} Xvar做差后输出,成为下一个Koopa Block的输入,即为残差项; X ^ \hat{X} X^中的最后一项与时常库普曼预测器的输出 Y i n v Y_{inv} Yinv求和作为最终预测结果的一部分,即为预测项。

实验结果

在这里插入图片描述得益于作者所提的层次动态学习和时常变分离机制,以MLP为重要结构的Koopa占据了绝大多数的最佳项,具有优异的预测效果。相比之下,作为MLP模型的代表DLinear,其预报效果依旧不佳,再一次对比出作者所提结构的有效性。

消融实验

模型效率

在这里插入图片描述作者从预测性能、训练速度和内存三个方面对模型效率进行对比,可以发现左下角红色标记在这三个方面中均遥遥领先。

分解效果定性

在这里插入图片描述
作者比较了分解效果。上图(左)通过对比时变项和时常项的标准差对比两者在不同任务中的差距,可以观察到时变和时常之间以及时变项存在显著的偏差,说明傅里叶成功地从频域中将两者进行分解。上图(右)则反映了局部算子可以在不同的时期表现出不同的变化,可解释为大值热力图对应上升趋势,小值则为下降。

分解效果定量

在这里插入图片描述
将只使用时常项、只使用时变项、替换为高低通滤波器、分支转换与本文方法对比,突出分解方法的有效性。

算子稳定性

在这里插入图片描述
作者对算子的稳定性进行分析。在上图中,左图是只有时常算子的单模块模型,中图是有着时常算子和时变算子的单模块模型,右图是有着时常算子和时变算子的双模块模型。可以看出红点分布逐渐接近圆弧且计算数值逐渐减小,这表明稳定性有所提高。

总结

这篇论文不同于先前的时序分解思路,而是从库普曼理论入手,将非平稳数据分解为时变和时常分量,并将MLP、残差穿差其中,其轻量高效与优秀的预测能力再一次告诉了我“穿丝佛门”确实未必。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网工内推 | 网络工程师,大专以上、HCIA认证即可,最高14薪

01 湖南口味王集团 招聘岗位:网络工程师 职责描述: 1、负责园区内电脑日常维护; 2、负责园区内办公周边设备的日常维护,如打印机、投影仪等; 3、负责园区内电话日常维护; 4、负责园区内信息资产管理&#…

vcomp100.dll丢失的解决方法,一键修复vcomp100.dll丢失问题

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“vcomp100.dll丢失”。这个错误通常会导致某些程序无法正常运行,给用户带来困扰。为了解决这个问题,我整理了以下五个解决方法,希望能对大家有所帮助。 一…

Python-----for循环基本语法及其应用---对序列进行遍历循环

for循环基本语法 for循环结构主要用于(序列 :包括 字符串、列表、元组、集合以及字典)类型数据的遍历(循环)操作。 遍历(Traversal),是指沿着某条搜索路线,依次对树(或图&#…

《深入理解java虚拟机 第三版》学习笔记三

第 8 章 虚拟机字节码执行引擎 代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步。 8.1 概述 执行引擎是 Java 虚拟机核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机器都…

Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告

这篇文章主要介绍了Python3 Appium 安卓模拟器实现APP自动化测试并生成测试报告,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 正文 一、安装Python3 直接登录Python官网https://www.python.org/&…

C++数据结构X篇_21_插入排序(稳定的排序)

文章目录 1. 插入排序原理2. 算法图解3. 核心代码:4. 插入排序整体代码实现 1. 插入排序原理 插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相…

Unity 自定义小地图

最近工作做了个小地图,再此记录下思路。 1、准备所需素材 显示为地图(我们取顶视图)。创建一个Cube,缩放到可以把实际地图包住。实际地图的尺寸和偏移量 。我这里长宽都是25,偏移量(1,0&…

MySQL进阶(数据库引擎)——MyISAM和InnoDB引擎的区别

1.是否支持行级锁 MyISAM 只有表级锁,而InnoDB 支持行级锁和表级锁,默认为行级锁。 (1)MySQL大致可以归纳为以下3种锁: 表级锁:开销小,加锁快;不会出现死锁;锁的粒度大…

C# FileInfo类的使用方法及常用操作(附代码示例)

在C#编程中,处理文件操作是一项常见而重要的任务。为了更好地管理和操作文件,C#提供了一个强大且灵活的FileInfo类。本文将深入探讨C# FileInfo类的使用方法,并为您提供一些实用的代码示例。 目录 一、什么是FileInfo类?二、使用F…

CLion使用SSH远程连接Linux服务器

最近要一直用实验室的服务器写Linux下的C代码, 本来一直用VScode(SSH)连接服务器, 但是我以前还是用JetBrains的IDE用的多, 毕竟他家的IDE代码提示和功能在某些细节上更加丰富。所以这次我使用了Clion里的远程连接(同样也是SSH工具)连接上了我的服务器, 实现了和VScode上同样的…

NOIP2023模拟1联测22 黑暗料理

NOIP2023模拟1联测22 黑暗料理 题目大意 自己看 思路 两个数相加能够产生质数的情况就是:11 或者 偶数质数 那么 1 1 1 不能保留超过一个 建一个图,原点连向所有奇数点,所有偶数点连向汇点,奇数点和偶数点的和为奇数的就相连 …

分布式事务 学习

分布式事务 关系型数据库事务(本地事务) 原子性:构成事务的所有操作,要么都执行完成,要么都不执行/一致性:在事务执行前后,数据库的一致性约束没有被破坏。隔离性:并发的两个事务的…

『第一章』命运的齿轮开始转动:雨燕(Swift)诞生!

在本篇博文中,您将学到如下内容: 1. 破茧成“燕”2. 持续进化!3. Swift 5.0:ABI 稳定性4. Swift 5.1:模块稳定性和库进化5. Swift 5.9 来了6. 登高望远:Swift 6.0总结 雨燕翻新幕,风鹃绕旧枝 金鹊徒为滞,雨…

程序员的新去处?国内新能源公司大汇总!

近几年来,传统互联网企业哀鸿遍野,而新能源车企却在悄然崛起:HC逐年增加,薪资逐渐起飞,年终分红也让人眼红…… 聪明的程序员们已经把目光瞄准了新时代新能源车企,今天就带大家横向对比一下国内比较火热的…

2.7.C++项目:网络版五子棋对战之session模块的设计

文章目录 零、前置一、意义二、功能三、管理四、框架五、完整代码 零、前置 在WEB开发中,HTTP协议是⼀种无状态短链接的协议,这就导致⼀个客户端连接到服务器上之后,服务器不知道当前的连接对应的是哪个用户,也不知道客户端是否登…

24李永乐模拟6套卷中的一道定积分定义+真题改编题

大概率是武忠祥老师出的一道题,同时考察了数形结合,定积分换元,无穷级数表示,广义积分中值定理,定积分定义的一道真题改编好题。 第二问用第一问结论,区间再现一步秒杀,颇有真题风范。

找不到msvcp100.dll解决教程

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“msvcp100.dll丢失”。这个错误通常会导致某些应用程序无法正常运行。为了解决这个问题,本文将介绍四个修复msvcp100.dll丢失的方法,帮助读者快速恢复计算机的正常运…

【c++】运算符重载实例

重载自增自减运算符 Intger num(2); num; num;对自增运算符的重载要区分前置和后置。在重载之前需要思考一个问题,num是返回一个临时变量还是num对象的本体。 为了解决这个问题可以考虑实现一个Inc_()函数和_Inc()函数分别模仿后置和前置的行为 Integer Inc_(){i…

Calibre拾遗:FDI (Foreign Database Interface)系统简介

Calibre是强大的GDS处理工具,包括查看,验证,分析等操作,操作由浅入深,除过手动编辑GDS的不是很灵活外,其他各种命令和操作策略,都是远(遥)远(遥)走…

使用create-vue创建项目

认识create-vue create-vue是Vue官方新的脚手架工具,底层切换到了vite(下一代构建工具),为开发提供极速响应。 使用create-vue创建项目 1.前提环境条件 已安装16.0或更高版本的Node.js node -v 2.创建一个Vue应用 npm init…