论文信息
标题:Timesnet: Temporal 2d-variation modeling for general time series analysis
作者:Haixu Wu,Tengge Hu,Yong Liu,Hang Zhou, Jianmin Wang, Mingsheng Long
代码:
https://github.com/thuml/TimesNet[原仓库,代码已迁移到TSLib]
https://github.com/thuml/Time-Series-Library[TSLib]
官方知乎专栏:https://zhuanlan.zhihu.com/p/606575441
作者团队
清华大学软件学院机器学习实验室,主要从事机器学习理论、算法与模型方面的科研工作,专注于深度学习、迁移学习、科学学习和人工智能大模型,负责人为王建民教授和龙明盛副教授,顾问为Michael I. Jordan院士。组内相关工作有Autoformer、iTransformer等模型,在GitHub上可以找到他们组做的一个时序预测的库和迁移学习的库。
本文TimesNet的代码也在TSLib这个库里。
摘要
基于对时间序列多周期性的观察,将复杂的时间变化分解为多个周期内和周期间变化。为了解决一维时间序列在表示能力方面的局限性,将一维时间序列转换为基于多个周期的二维张量,从而可以使用一些cv的方法对时间序列进行分析。
问题描述
多重周期性(Multi-periodicity)
在现实中的时间序列中,数据往往存在多个周期性变化。例如,在气象观测中,天气数据可能呈现出每日和每年的周期性变化;在电力消耗中,则可能存在每周和每季度的周期性。这些周期性变化并不是独立的,而是相互重叠并相互影响。这种复杂的多重周期性使得对时间序列的建模变得非常困难,因为模型不仅需要捕捉单一周期的变化,还需要处理多个周期之间的相互作用。
在每个周期内,每个时间点的变化不仅受到其相邻时间点的影响,还与其他相邻周期中的相同位置的时间点有高度关联。这意味着,单一时间点的变化模式不仅由其周围的短期时间序列所决定,还受到长时间跨度内其他周期性模式的影响。因此,在进行时间序列建模时,必须考虑到这种局部(短期)变化和周期间(长期)变化的相互作用。
作者表示,传统的1D时间序列表示仍然很难同时显式地展示周期内和周期间的两种变化类型。1D序列通常只能线性地表示时间点之间的关系,无法充分表达在不同周期内或跨周期的复杂变化。
相关工作
文中提到了许多方法,这里举三个例子。
循环神经网络(RNN)
RNN模型通过基于马尔可夫假设来对时间序列的连续时间点进行建模,利用其递归结构,能够捕捉序列中时间点之间的依赖关系,尤其是短期依赖。
在捕捉长期依赖关系时表现较差,并且由于其顺序计算的方式,计算效率较低,难以处理长序列数据。
马尔可夫假设是指在马尔可夫过程中的一个核心假设,即一个系统的未来状态仅依赖于当前状态,而不依赖于过去的状态。这一假设极大地简化了问题的复杂性,因为它允许我们仅通过当前状态来预测未来的状态,而不需要考虑过去所有的历史数据。
虽然RNN理论上可以捕获长期依赖,但在实践中,由于梯度消失和梯度爆炸等问题,标准RNN更适合捕获短期依赖关系。
时序卷积网络(TCN)
TCN通过在时间维度上应用一维卷积核来提取时间序列中的变化信息,能够有效地捕捉时间序列中相邻时间点之间的局部变化,适合处理短期依赖关系。
TCN的卷积核具有局部感受野的特点,这意味着它主要关注时间序列中相邻时间点之间的关系,TCN难以捕捉跨越长时间段的依赖关系,因此在建模长期依赖时存在局限性。
基于Transformer的模型
Transformer通过其自注意力机制,能够有效捕捉时间序列中任意时间点之间的依赖关系,具有很强的灵活性。
尽管Transformer具有强大的表示能力,但由于时间序列数据的复杂性,尤其是存在多种复杂的时间模式,注意力机制可能难以直接找到可靠的依赖关系,从而影响模型的效果。
解决方案
作者发现真实世界中的时间序列通常表现出多周期性,并且这些周期之间存在复杂的交互作用。基于这一观察,文章提出了一种模块化架构来处理这些时间变化。通过将1D时间序列转换为2D张量,作者能够同时捕捉周期内和周期间的变化,从而有效解耦复杂的时间模式,提升了时间序列建模的效果。
在2D表示的基础上,TimesNet引入了TimesBlock模块,以高效地提取和融合多尺度的时间特征。由于将1D时间序列转换为2D空间,模型可以利用各种强大的2D Backbone(如ResNet等)进行特征学习。
周期内与周期间变化
周期间变化是离散的,它反映的是连续不同时期的长期趋势,而周期内变化它是连续的变化,反映的是一个时期内的短期时间模式。在右边这个图中,这些点是不同个周期内同一位置的点,红色的线是周期内的变化,蓝色的线是它周期间的变化。
Interperiod周期间变化 | 离散 | 连续不同时期的长期趋势 |
Intraperiod周期内变化 | 连续 | 一个时期内的短期时间模式 |
自适应发现多周期
作者用FFT将原数据转为频谱,对每个长度为96的窗口序列选择出top 6明显频率。然后,收集对应的周期长度,并绘制其归一化密度图,如图所示,便能看出多周期性。如Electricity,数据集包括长度12和24的周期。
对于一个时间长度为、通道维度为的一维时间序列,其周期性可以由时间维度的快速傅立叶变换(FFT)计算得到。
首先对这样一个时间长度T,通道维度C的时序进行傅里叶变换,然后这个AMP就是计算它的振幅,去求每一个频率分量的强度,这里的avg是如果序列是一个多特征的,它对各个求一个平均。得到振幅之后,取topK的振幅,这里K是超参数,把每个周期计算出来,计算方式就是大T除以频率,和物理上定义保持一致。这里只取前topK,作者表示是为了避免噪声。
其中,代表了中每个频率分量的强度,强度最大的个频率对应着最显著的个周期长度,不同特征之间取均值。上述过程简记为
将1D时间序列扩展到2D空间
将1D时间序列转换为时间2d变化,可以选择计算机视觉主干网络来进行学习。
从下图来看时序的数据排列顺序。如果是一维的数据,这两点在一维上就是不连续的点,因为它是一个周期结束后,下一个点从另一个周期开始,它下一个点就是这个点。如果这两个蓝色的点在一维上,就离了5个数据。如果我们使用卷积的话就需要卷积核是5的一个卷积,这样参数就比较多。转成二维之后,他两个点就是相邻了,就可以使用小的卷积核就可以学到它两的信息了。
这个图是文中给出的一个注意力分数的图,其实就是分解转成二维之后,做一个注意力分数,颜色越深就是分数越高,说明转成二维之后就是这些点与附近的点相关性比较高。横着临近的就是同周期的,竖着的就是不同周期间的,因此作者认为是可以直接拿卷积来做,对这一小块进行卷积,就可以降低时间复杂度了。
TimesBlock
TimesNet是多个带有残差连接的TimesBlock的堆栈。在每个TimesBlock中,首先通过快速傅立叶变换(FTT)来找到数据中的不同周期。然后被重塑为一个2D向量,并发送到一个Inception块中,在那里它学习并预测该系列的2D表示。然后使用自适应聚合将该深度表示重塑回一维向量。
TimesBlock最主要的模型组件:Inception模块是2015年发布的计算机视觉模型GoogLeNet的构建块。
大体的流程就是在timesblock内部一维数据就进入快速傅里叶变换,然后找到周期,再reshape,进入inception块,文中称它为parameter-effcient Inception Blcok,这样一个高效率参数的inception块,预测之后,再自适应聚合变成一维的。
具体来说,TimesBlock包含以下子过程。
(1)一维变换至二维
(2)提取二维时序变化表征
(3)二维变换至一维:对于提取的时序特征,我们将其转化回一维空间以便进行信息聚合
(4)自适应融合
将得到的一维表征以其对应频率的强度进行加权求和,得到最终输出。
具体来说,timesblock包括图上这些流程。
首先就是升维,和刚才讲的部分一样,傅里叶然后reshape。
再到inception层里面提取二维的表征,再转回一维,这里的trunc就是除去之前padding的东西。
最后是自适应融合,因为我们前面分周期的时候提取了topK个频率,这些频率认为是按重要性来排的,频率越高重要性越高,所以softmax相当于对这些频率求了分数,再乘上结果去做一个自适应融合,相当于一个加权求和。
实验结果
实验涵盖了五个主流的时间序列分析任务:短期和长期预测、数据补全(Imputation)、分类和异常检测。实验结果方面作者给了一个很形象的五边形,展示了TimesNet在多个任务上的广泛应用和优异表现,验证了其作为一个通用时间序列分析模型的潜力。
这个图是作者对在异常检测方面,对timesblock中的cv backbone进行了一些替换,包括resnet和一些其他的,横轴是训练时间,纵轴是F1分数,结果是inception在参数量很小的前提下保持了较低的训练时间,因此作者认为它是高效率参数的inception块。
关于长期预测和短期预测,作者在评论中如下回复:
“目前的长期预测的9个数据集的特点在于,他们一个数据集就是一个超级长的序列,每个batch是从整体序列中切分出来的。因此不管是哪个batch,他们的temporal pattern都是类似的(因为是同一个场景下的观测)”——滑动窗口取样本
“除了上面9个数据集之外,TimesNet还在M4上做了实验,M4的特点是每一个sample都是独立的,也就意味着他们的temporal pattern相差很多”——不需要滑动窗口
M4来自第四届预测竞赛,10万个时间序列(Foredeck)。这些数据来自多个、不同的和公开可访问的来源。
作者在长期预测上,取了96、192这四个时间步,然后把指标求了平均,用到的数据集比如常见的电网数据、用电数据、交通数据、天气数据、汇率数据。
短期预测,作者使用的指标是MAPE、SMAPE、OWA。MAPE相当于取了真实值的上下波动,SMAPE它把每个差值都取了绝对值,然后再求的值,主要是为了捕获对称性。OWA是M4比赛的特殊指标。OWA对这些进行加和,我认为是进一步为了证明模型的鲁棒性吧。
MAPE 平均绝对百分比误差(Mean Absolute Percentage Error)
SMAPE 对称平均绝对百分比误差(Symmetric Mean Absolute Percentage Error )
OWA总体加权平均(Overall Weighted Average), M4比赛中使用的特殊指标
插补的结果,插补也是取12.5%,25%这些进行实验,然后指标是MAE和MSE。它对比的模型,后面这些是former系的模型,前面的这个DLinear、LightTS好像是线性的模型.
第四是分类,作者把这些方法也进行了分类,对基于RNN、TCN、MLP以及former系的方法都进行了对比,作者表示DLinear在这样的分类问题上表现比较差。
最后是异常检测,用的指标是F1。
后面作者进行了表征分析。它求了CKA相似度,这个相似度反映了模型的底层和顶层之间的表征差异,用表征差异说明模型是不是具有区分性。
CKA相似度的值越低,代表模型底层-顶层之间的表征差异越大,即在不同层次上具有区分性。
作者得到了这么一个结论,就是
在预测与异常检测任务中,效果越好的模型往往底层-顶层的表征相似度越高,表明任务期待更加底层的表征(low-levelrepresentations),也就是任务对最开始那一层的表征会比较看重;
而在插补和分类任务中, 效果越好的模型往往底层-顶层的表征相似度越低,也就是差异大,表明任务需要层次化表征(hierarchical representation)。
总结
引入时间序列的2D变换方法
文章提出了将1D时间序列转化为2D张量的创新方法。这种方法通过将时间序列的多周期性解构为周期内(intraperiod)和周期间(interperiod)的变化,并利用2D卷积核对这些变化进行建模,从而更有效地捕捉复杂的时间模式。
TimesBlock模块的设计
TimesBlock是TimesNet模型的核心构建模块,它能够自适应地发现时间序列中的多周期性,并将1D时间序列转换为2D张量,进而通过高效的Inception Block进行多尺度的2D变化捕捉。这种设计不仅增强了模型的表示能力,还通过参数共享提高了模型的效率。
任务通用的时间序列分析模型
TimesNet作为一个通用的基础模型,能够在多种时间序列分析任务中(如预测、插补、分类和异常检测)表现出色。它的设计能够有效利用计算机视觉领域中已有的2D卷积网络的优势,将其引入时间序列分析,构建了一个桥接时间序列分析和计算机视觉的新方法。
参考资料
ICLR2023 | TimesNet: 时序基础模型,预测、填补、分类等五大任务领先
【时间序列】TimesNet: 通用2D建模时序模型-CSDN博客
TimesNet:用于一般时间序列分析的时间二维变化模型-CSDN博客
TimesNet-时间序列-二维尺度变换-卷积-周期性_哔哩哔哩_bilibili
论文研读之时序分析通用基础模型:TimesNet 预测/插补/分类/异常检测_哔哩哔哩_bilibili
标签:升维,ICLR2023,模型,2D,TimesNet,时间,序列,周期 From: https://blog.csdn.net/u013611278/article/details/142093190