【论文阅读】TimesNet: Temporal 2D-Variation Modeling for General Time Series Analysis

TimesNet: Temporal 2D-Variation Modeling for General Time Series Analysis

引用: Wu H, Hu T, Liu Y, et al. Timesnet: Temporal 2d-variation modeling for general time series analysis[C]//The eleventh international conference on learning representations. 2022.

作者:Haixu Wu, Tengge Hu, Yong Liu, Hang Zhou, Jianmin Wang, Mingsheng Long

单位:清华大学软件学院

论文: [2210.02186] TimesNet: Temporal 2D-Variation Modeling for General Time Series Analysis (arxiv.org)

代码: https://github.com/thuml/timesnet

简介

文章的重点是时间变化建模,这是广泛分析任务的常见关键问题。单个时间点通常无法提供足够的语义信息进行分析,时间变化更能反映时间序列的内在属性,如连续性、周期性、趋势等。

许多经典方法假设时间变化遵循预定义的模式,例如ARIMA,Holt-Winter和Prophet。然而,现实世界时间序列的变化通常过于复杂,无法被预定义的模式所覆盖,从而限制了这些经典方法的实际适用性。

当前基于深度学习的方法,主要有三类:

  1. 采用递归神经网络(RNN)基于马尔可夫假设对连续时间点进行建模。然而,这些方法通常无法捕获长期相关性,并且它们的效率受到顺序计算范式的影响。

  2. 利用沿时间维度的卷积神经网络(TCN)来提取变化信息,由于一维卷积核的局部性,它们只能对相邻时间点之间的变化进行建模,因此在长期依赖性方面仍然存在不足。

  3. 基于Transformer的模型采用注意力机制或其变体来捕捉时间点之间的成对时间依赖性,但注意力机制很难直接从离散的时间点中找出可靠的依赖关系。

对于时间序列,可以观测到两种明显变化:

  1. 周期内变化:表示一个时期内的短期时间模式,真实世界的时间序列通常呈现多周期性,例如天气观测的每日和年度变化,电力消耗的每周和季度变化。这些多个周期相互重叠和相互作用,使得变化建模变得棘手

  2. 周期间变化:反映连续不同时期的长期趋势,每个时间点的变化不仅受其相邻区域的时间格局影响,而且与其相邻周期的变化高度相关

因此,作者从多周期性的新维度分析了时间序列。基于对时间序列多周期性的观察,论文提出了2D变化建模的TimesNet,将1D时间序列转换为2D张量(1D时间序列很难同时明确地呈现两种不同类型的变化),将周期内变化和周期间变化分别嵌入到2D张量的列和行中,最终将时间变化的分析扩展到2D空间。TimesNet在五个主流时间序列分析任务中实现了一致的最先进水平,包括短期和长期预测、插补、分类和异常检测。

注意,对于没有明确周期性的时间序列,变化将由周期内变化主导,并且等效于具有无限周期长度的时间序列

在这里插入图片描述

Method

Transform 1D-Variations Into 2D-Variations

如图1所示,每个时间点同时涉及两种类型的时间变化,其相邻区域和不同周期之间的相同阶段,即期内和期间变化。然而,这种原始的一维时间序列结构只能呈现相邻时间点之间的变化。为了解决这一局限性,探索了时间变化的二维结构,它可以明确地呈现周期内和周期之间的变化,从而在表示能力方面具有更大的优势,并有利于后续的表示学习。

具体来说,对于具有 C C C 个变量的长度为 T T T 时间序列,原始 1D 序列结构为 X 1 D ∈ R T × C X _ { 1 D } \in R ^ { T \times C } X1DRT×C为了表示周期间变化,需要首先提取周期。从技术上讲,通过快速傅里叶变换(FFT)分析频域中的时间序列如下:

A = A v g ( A m p ( F F T ( X 1 D ) ) ) A = A v g ( A m p ( F F T ( X _ { 1 D } ) ) ) A=Avg(Amp(FFT(X1D)))

{ f 1 , ⋯   , f k } = a r g T o p k ( A ) \left\{ f _ { 1 } , \cdots , f _ { k } \right\} = a r g T o p k ( A ) {f1,,fk}=argTopk(A)

p i = [ T f i ] , i ∈ { 1 , ⋯   , k } p _ { i } = \left[ \frac { T } { f _ { i } } \right] , i \in \left\{ 1 , \cdots , k \right\} pi=[fiT],i{1,,k}

这里,FFT(·) 和 Amp(·) 表示 FFT 和振幅的计算。 A ∈ R T A \in R ^ { T } ART 表示每个频率的计算幅度,该振幅通过 Avg(·)计算 C 个维度的平均 。考虑频域的稀疏性,避免无意义的高频带来的噪声,只选择top-k的振幅值,得到最有效频率 { f 1 , ⋯   , f k } \left\{ f _ { 1 } , \cdots , f _ { k } \right\} {f1,,fk},其中 k k k是超参数。这些选定的频率也对应于 k k k 周期长度 { p 1 , ⋯   , p k } \left\{ p _ { 1 } , \cdots , p _ { k } \right\} {p1,,pk}。由于频域的共轭性,只考虑 { 1 , ⋯   , [ T 2 ] } \left\{ 1 , \cdots , \left[ \frac { T } { 2 } \right] \right\} {1,,[2T]} 以内的频率。上述公式可以总结如下:

A , { f 1 , ⋯   , f k } , { p 1 , ⋯   , p k } = P e r i o d ( X 1 D ) A , \left\{ f _ { 1 } , \cdots , f _ { k } \right\} , \left\{ p _ { 1 } , \cdots , p _ { k } \right\} = P e r i o d ( X _ { 1 D } ) A,{f1,,fk},{p1,,pk}=Period(X1D)

根据选择的频率 { f 1 , ⋯   , f k } \left\{ f _ { 1 } , \cdots , f _ { k } \right\} {f1,,fk} 和相应的周期长度 { p 1 , ⋯   , p k } \left\{ p _ { 1 } , \cdots , p _ { k } \right\} {p1,,pk},可以通过以下方程将一维时间序列 X 1 D ∈ R T × C X _ { 1 D } \in R ^ { T \times C } X1DRT×C 转换为多个二维张量:

X 2 D i = R e s h a p e p i , f i ( P a d d i n g ( X 1 D ) )   , i ∈ { 1 , ⋯   , k } X _ { 2 D } ^ { i } = R e s h a p e _ { p _ { i } , f _ { i } } ( P a d d i n g ( X _ { 1 D } ) ) \ , i \in \left\{ 1 , \cdots , k \right\} X2Di=Reshapepi,fi(Padding(X1D)) ,i{1,,k}

其中 Padding(·) 是沿时间维度将时间序列补零,使其与 R e s h a p e p i , f i ( . ) R e s h a p e _ { p _ { i } , f _ { i } }(.) Reshapepi,fi(.) 匹配,其中 p i p_i pi f i f_i fi 分别表示转换后的 2D 张量的行数和列数。请注意,习二维 X 2 D i ∈ R P i × f i × C X _ { 2 D } ^ { i } \in R ^{P_i \times f _ { i } \times C} X2DiRPi×fi×C 表示基于频率 f i f_i fi 的第 i i i 个重塑时间序列,其列和行分别表示相应周期长度 p i p_i pi 下的周期内变化和周期间变化。最终,如图所示,根据选定的频率和估计周期,得到了一组 2D 张量 { X 2 D 1 , ⋯   , X 2 D k } \left\{ X _ { 2 D } ^ { 1 } , \cdots , X _ { 2 D } ^ { k } \right\} {X2D1,,X2Dk},它表示了 k k k 个不同周期得出的不同时间 2D 变化。

在这里插入图片描述

这种变换为转换后的二维张量带来了两种类型的局部,即相邻时间点(列、周期内变化)和相邻周期(行、周期间变化)之间的局部。因此,时间上的2D变化可以很容易地被2D卷积核处理。

TimesBlock

在这里插入图片描述

如图所示,以残差方式组织 TimesBlock。具体来说,对于 length-T 1D 输入时间序列 X 1 D ∈ R T × C X _ { 1 D } \in R ^ { T \times C } X1DRT×C ,通过嵌入层 X 1 D 0 = E m b e d ( X 1 D ) X^{0}_{1D} = Embed(X_{1D}) X1D0=Embed(X1D) 将原始输入投影到深度特征 X 1 D 0 ∈ R T × C × d m o d e l X ^{0} _ { 1 D } \in R ^ { T \times C \times d_{model} } X1D0RT×C×dmodel 中。对于 TimesNet 的第 l l l 层,输入是 X 1 D l − 1 ∈ R T × d m o d e l X ^{l-1} _ { 1 D } \in R ^ { T \times d_{model} } X1Dl1RT×dmodel,该过程可以表示为:

X 1 D l = T i m e s B l o c k ( X 1 D l − 1 ) + X 1 D l − 1 X _ { 1 D } ^ { l } = T i m e s B l o c k ( X _ { 1 D } ^ { l - 1 } ) + X _ { 1 D } ^ { l - 1 } X1Dl=TimesBlock(X1Dl1)+X1Dl1

如图所示,对于第 l l l 个 TimesBlock,整个过程涉及两个连续的部分:捕获时间 2D 变化和自适应聚合来自不同时期的表示。

Capturing temporal 2D-variations:首先通过 Period(·) 来估计深层特征 X 1 D l X _ { 1 D } ^ { l } X1Dl 的周期长度。基于估计的周期长度,可以将1D时间序列转换到2D空间中,并获得一组2D张量,从中可以通过parameter-efficient inception block获得特征表示

A l − 1 , { f 1 , ⋯   , f k } , { p 1 , ⋯   , p k } = P e r i o d ( X 1 D l − 1 ) A ^ { l - 1 } , \left\{ f _ { 1 } , \cdots , f _ { k } \right\} , \left\{ p _ { 1 } , \cdots , p _ { k } \right\} = P e r i o d ( X _ { 1 D } ^ { l - 1 } ) Al1,{f1,,fk},{p1,,pk}=Period(X1Dl1)

X 2 D l , i = R e s h a p e p i , f i ( P a d d i n g ( X 1 D l − 1 ) ) , i ∈ { 1 , ⋯   , k } X _ { 2 D } ^ { l , i } = R e s h a p e _ { p _ { i } , f _ { i } } ( P a d d i n g ( X _ { 1 D } ^ { l - 1 } ) ) , i \in \left\{ 1 , \cdots , k \right\} X2Dl,i=Reshapepi,fi(Padding(X1Dl1)),i{1,,k}

X ^ 2 D l , i = I n c e p t i o n ( X 2 D l , i ) , i ∈ { 1 , ⋯   , k } \widehat { X } _ { 2 D } ^ { l , i } = I n c e p t i o n ( X _ { 2 D } ^ { l , i } ) , i \in \left\{ 1 , \cdots , k \right\} X 2Dl,i=Inception(X2Dl,i),i{1,,k}

X ^ 1 D l , i = T r u n c ( R e s h a p e 1 , ( p i × f i ) ( X ^ 2 D l , i ) ) , i ∈ { 1 , ⋯   , k } \widehat { X } _ { 1 D } ^ { l , i } = T r u n c \left( R e s h a p e _ { 1 , ( p _ { i } \times f _ { i } ) } \left( \widehat { X }_ { 2 D } ^ { l , i } \right) \right) , i \in \left\{ 1 , \cdots , k \right\} X 1Dl,i=Trunc(Reshape1,(pi×fi)(X 2Dl,i)),i{1,,k}

其中,首先利用上一节的 Period(·) 提取周期,然后使用padding和reshape转换成2D

张量,再使用一个共享参数的Inception block提取特征,最后reshape回1D,并用 Trunc(·) 将长度为 ( p i × f i ) ( p _ { i } \times f _ { i } ) (pi×fi) 的填充序列截断为原始长度 T T T

Adaptive aggregation:受自相关的启发,振幅 A A A 可以反映所选频率和周期的相对重要性,从而对应于每个变换的 2D 张量的重要性。因此,根据振幅聚合一维表示:

A ^ f 1 l − 1 , ⋯   , A ^ f k l − 1 = S o f t max ⁡ ( A f 1 l − 1 , ⋯   , A f k l − 1 ) \widehat { A } _ { f _ { 1 } } ^ { l - 1 } , \cdots , \widehat { A } _ { f _ { k } } ^ { l - 1 } = S o f t \max \left( A _ { f _ { 1 } } ^ { l - 1 } , \cdots , A _ { f _ { k } } ^ { l - 1 } \right) A f1l1,,A fkl1=Softmax(Af1l1,,Afkl1)

X 1 D l = ∑ i = 1 k A ^ f i l − 1 × X ^ 1 D l , i X _ { 1 D } ^ { l } = \sum _ { i = 1 } ^ { k } \widehat { A } _ { f _ { i } } ^ { l - 1 } \times \widehat { X } _ { 1 D } ^ { l , i } X1Dl=i=1kA fil1×X 1Dl,i

由于周期内和周期之间的变化已经涉及多个高度结构化的二维张量,因此 TimesBlock 可以同时完全捕获多尺度时间二维变化。

实验

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

学习 MongoDB:打开强大的数据库技术大门

一、基本概念 MongoDB 是一个基于分布式文件存储的文档数据库,由 C 语言编写。它旨在为 Web 应用提供可扩展的高性能数据存储解决方案。 相信MySQL我们非常的熟悉,那么MySQL的表结构与MongoDB的文档结构进行类比的话可能更好理解MongoDB。 MySQL的数据…

联通iccid 19转20 使用luhn 算法的计算公式

联通iccid 19转20 使用luhn 算法的计算公式 第一次对接iccid 才知道 使用的是luhn 算法 19转20位 文章来源于 文章来源 当时也是一脸懵逼 的状态,然后各种chatgpt 寻找,怎么找都发现不对,最后看到这片java的文章实验是正确的,因…

ubuntu生成core文件的设置方法

core文件可以很方便的帮助我们查找程序挂的问题,因此在程序挂后生成core文件的很有必要的。 1、查看ulimit参数 ulimit -a 如果core file size是0 需要设置其最大容量。按下面步骤操作 2、设置core文件大小,两种方法 临时生效,重启设备失…

WPF学习笔记-FlowDocument流文档基础知识和基本操作

文章目录 概述一、块元素和内联元素1.1 块元素(Block类)1.2 内联元素(Inline类)二、Paragraph元素2.1 基本属性设置2.2 将内联元素Inline添加到Inlines中2.3 设置中西文字体不一样 三、Table元素3.1 添加新的Table3.2 添加列3.3 添…

采用C#.net6.0+Vue,Ant-Design技术开发的一套大型医院手术麻醉信息系统源码,系统成熟,运行稳定

手术麻醉信息系统源码,C#手麻系统源码,自主版权应用案例(适合上项目) 手术麻醉信息系统可以实现手术室监护仪、麻醉机、呼吸机、输液泵等设备输出数据的自动采集,采集的数据能据如实准确地反映患者生命体征参数的变化&…

前端、后端上传文件到OSS,简明记录

前端、后端上传文件到OSS,简明记录 上传文件到oss的方式: **后端上传:**文件先要从页面上传到后端存起来,再通过后端发送到oss,然后后端将存起来的文件删除(当然可以不删)。 **前端上传&…

Unix 网络编程, Socket 以及bind(), listen(), accept(), connect(), read()write()五大函数简介

Unix网络编程是针对类Unix操作系统(包括Linux、BSD以及其他遵循POSIX标准的操作系统)进行网络通信开发的技术领域。网络编程涉及创建和管理网络连接、交换数据以及处理不同层次网络协议栈上的各种网络事件。在Unix环境中,网络编程通常涉及到以…

华为ensp中ospf多区域管理 原理及配置命令(详解)

作者主页:点击! ENSP专栏:点击! ————前言———— OSPF 多区域的主要作用是缩小链路状态数据库和路由表的规模,减少路由更新的频率,提高网络的可扩展性,实现路由过滤和路由汇总&#xff0…

交通标志识别项目 | 基于Tensorflow+SSD实现道路交通标志识别

项目应用场景 面向智能驾驶或自动驾驶场景道路道路交通标志的识别,在交通标志识别的基础上为下一步的智能决策提供前提 项目效果: 项目细节 > 具体参见项目 README.md (1) 安装依赖 Python3.5、TensorFlow v0.12.0、Pickle、OpenCV-Python、Matplotl…

如何利用CSS实现文字滚动效果

1. 使用CSS3的animation属性 CSS3的animation属性可以让元素在一段时间内不停地播放某个动画效果。我们可以利用这个特性来实现文字滚动效果。 我们需要定义一个包含所有需要滚动的文本的容器元素。比如&#xff1a; <div class"scroll-container"><p>…

手机一键换ip地址,解锁网络自由

在数字化时代&#xff0c;手机已经成为我们生活中不可或缺的一部分。随着移动互联网的快速发展&#xff0c;手机用户对于网络安全和隐私保护的需求也日益增强。其中&#xff0c;IP地址作为手机在网络中的标识&#xff0c;扮演着重要的角色。有时&#xff0c;出于隐私保护或网络…

仿真黑科技EasyGo DeskSim 2022

DeskSim2022的FPGA支持多种solver的混合应用&#xff0c;对于每一种solver可以采用不同的仿真步长&#xff0c;以下图模型为例&#xff0c;模型运行在FPGA上&#xff0c;FPGA解算方式采用的是Power Electronic & FPGA Coder解算&#xff0c;其中电力电子电路部分采用了两种…

【opencv】教程代码 —features2D(6)透视矫正:读取两个棋盘格图片并进行图像对齐...

perspective_correction.cpp 透视校正 hconcat(img2, img1_warp, img_draw_warp); hconcat(img1, img2, img_draw_matches); #include <iostream> // 引入iostream库&#xff0c;用于进行标准输入和输出操作 #include <opencv2/core.hpp> // 引入opencv的core库&am…

Redis 主从复制集群搭建及其原理

目录 前言 配置文件 启动服务 配置主从关系 两种配置方式 slaveof 配置文件 补充 缺点 认证 复制原理 全量同步 增量同步 前言 单机的 redis 的性能虽然已经很强大了&#xff0c;但是随着业务的扩展&#xff0c;总有一天会遇到性能瓶颈&#xff0c;针对高并发带来…

cJSON(API的详细使用教程)

我们今天来学习一般嵌入式的必备库&#xff0c;JSON库 1&#xff0c;json和cJSON 那什么是JSON什么是cJSON&#xff0c;他们之间有什么样的关联呢&#xff0c;让我们一起来探究一下吧。 JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&…

注意力机制篇 | YOLOv8改进之添加DAT注意力机制

前言:Hello大家好,我是小哥谈。DAT(Vision Transformer with Deformable Attention)是一种引入了可变形注意力机制的视觉Transformer。在训练算法模型的时候,通过引入可变形注意力机制,改进了视觉Transformer的效率和性能,使其在处理复杂的视觉任务时更加高效和准确。�…

扫地机器人(蓝桥杯)

文章目录 扫地机器人题目描述解题思路二分贪心 扫地机器人 题目描述 小明公司的办公区有一条长长的走廊&#xff0c;由 N 个方格区域组成&#xff0c;如下图所 示。 走廊内部署了 K 台扫地机器人&#xff0c;其中第 i 台在第 Ai 个方格区域中。已知扫地机器人每分钟可以移动…

黑马HTMLCSS基础

黑马的笔记和资料都是提供好了的&#xff0c;这个文档非常适合回顾复习。我在黑马提供的笔记上做了一些微不足道的补充&#xff0c;以便自己复习查阅。该笔记比较重要的部分是 表单&#xff0c;http请求 第一章. HTML 与 CSS HTML 是什么&#xff1a;即 HyperText Markup lan…

目标检测——植物病害图像数据集

一、重要性及意义 首先&#xff0c;植物病害图像是了解农业中植物生长和受病害情况的重要信息来源。通过对这些图像的分析&#xff0c;可以直观地观察到植物的生长状况&#xff0c;及时发现病害的存在。这不仅有助于农民和研究人员快速、准确地诊断植物病害&#xff0c;还能为…

代码随想录第27天 | 39. 组合总和、40.组合总和II、131.分割回文串

一、前言 今天的主题还是回溯算法&#xff0c;还是根据那个backtracking模板&#xff0c;但是今天会涉及到去重和一些小细节的问题。 二、组合总和 1、思路&#xff1a; 我一开始的想法就是在for循环转化为&#xff1a; for(int i 0; i < size; i) 但是这个是会陷入一…