CSDN 欲寄:https://blog.csdn.net/qq_62631255
论文标题:TIMESNET: TEMPORAL 2D-VARIATION MODELING FOR GENERAL TIME SERIES ANALYSIS
会议信息:ICLR 2023
作者团队:清华大学龙明盛组
代码地址:https://github.com/thuml/TimesNet
代码开源协议:MIT license
关键词:TimesNet -通用的时间序列神经网络骨干,1D-2D, TimesBlock,加权聚合。
一段话总结:本文为了挖掘时间序列的复杂变化,考虑了不同周期间及同周期内的变化。针对一维时间序列在表达能力上的局限性,将一维序列转换为基于多个周期的二维张量集合,将时间变化分析扩展到二维空间处理。
这是本文的亮点所在,大部分现有方法都是作用于时间序列的时间维度,捕获时序依赖性。实际上,现实时间序列一般都有多种模式,比如不同的周期,各种趋势,模式混杂。如果直接对原始序列的时间维度来建模,更复杂的、更有效的时序关系很可能隐藏在这些混杂的模式中,无法被捕获。
同周期内部时间点(3月1日21:00和3月1日22:00)以及不同相邻周期的时间点(3月1日20:00和3月2日20:00)都是有依赖关系的,作者提出将 1D 的时间维度 reshape 成 2D 的,示意图如下:
Interperiod-variation:相邻的不同周期的时间段 Intraperiod-variation:同周期内的时间段
上图左侧的时间序列具有三个比较显著的周期性(Period 1、Period 2、Period 3),将其 reshape 成三种不同的 2D-variations,2D-variations 的每一列包含一个时间段(周期)内的时间点,每一行包含不同时间段(周期)内同一阶段的时间点。变成 2D-variations 之后,就可以采用 2D 卷积等方式来同时捕获时间段内部依赖和相邻时间段依赖。
为了确定时间序列中的周期性,文章采用了傅里叶变换。给时间序列做傅里叶变换后,主要的周期会呈现对应的高幅值的频率分量。设定超参数 k k k,然后只取 t o p k topk topk 个最大的幅值对应的频率分量,即可得到 t o p k topk topk 个主要的周期。
具体操作如下图,左侧是确定 t o p k top k topk 个周期,在此只画了三个,然后将 1D 的时间序列 reshape 成 3 种不同的 2D-variations(不能整除的可以用padding),对这三种 2D-variations 用 2D 卷积进行处理之后再聚合结果即可。
得到 k 个2D-variations后,本文提出了 TimesBlock,每层 TimesBlock 又分为两步。
1、首先是要先对这些 2D-variations 分别用 2D 卷积(可以是 ResNet、ConvNeXt 等)处理。
2、其次将 k 个处理后的结果再聚合起来。
对于第一步,本文采用了一种参数高效的 Inception block。Inception block 是GoogleNet 中的模块,包含多个尺度的 2D 卷积核。如下图左侧蓝色区域,处理 k 个 2D-variations 的 Inception block 是参数共享的。因此,模型整体的参数量不会随着超参数 k 的增大而增大,因此本文将其称为参数高效的 Inception block(Parameter-efficient Inception block)。
对于第二步,在处理完 k 个 2D-variations 之后,需要将其展平回 1D-variations,并截断到原始长度 (这对应于前面不能整除时使用 padding 的情况,相当于把多余的 padding 给去掉)。总之,得到 k 个变换回去的 1D-variations 之后,聚合这 k 个结果。
如上图右侧所示,根据傅里叶变换后频率周期对应的赋值大小来加权聚合,幅值大的证明该频率周期的分量越显著也越重要,给它较大的聚合权重,幅值小的则相反。直接用 softmax 归一化这些幅值,后将归一化后幅值作为加权权重来聚合上面得到的 k 个 1D-variations 即可。
解决什么问题:针对一维时间序列在表达能力上的局限性,将复杂的时间变化分解为多个周期内和周期间的变化,从而使预测更加精准。
已有的方法不足:试图直接从1D时间序列完成精准预测,由于复杂的时间模式,这是极其具有挑战性的。
算法伪代码描述、工作流程示意图
改进/结合已有方法?原创方法?理论支撑和技术框架?
作者在五种时间序列任务上做了实验,充分对比了一些其他的时间序列骨干:
️ 相关工作:
论文的主要贡献总结如下:
可能的改进和进一步工作: