清华大学最新深度时序模型综述+5k star开源代码!
今天给大家介绍一篇清华大学关于深度时序模型的最新综述性工作。这篇文章的着眼点是深度时间序列模型的模型结构方面,提供了各类时间序列问题的深度学习模型结构发展过程和效果对比,并提供了一套复现各类深度时序模型的开源代码,目前git上已经5k+个star。
下面整体介绍一下本文的核心内容,包括任务类型、基础模块、模型结构、Benchmark、实验评估等5个部分。其中,开源代码的代码解析,已经逐步更新到了知识星球中,感兴趣的同学欢迎加入星球,在【代码解析专栏】获取相应资料。
论文标题:Deep Time Series Models: A Comprehensive Survey and Benchmark
下载地址:https://arxiv.org/pdf/2407.13278v1
开源代码:https://github.com/thuml/Time-Series-Library
1.任务类型
本文着眼点是深度时间序列模型的模型结构,面向各个类型的时间序列任务,包括时间序列预测(Forecasting)、时间序列填充(Imputation)、异常值检测(Anomaly Detection)、分类(Classification)等4种类型。各个类型任务的示意图如下,对应的在本文的代码实现中,每个模型也同时兼容4种类型任务。
2.基础模块
在介绍模型结构之前,本文重点介绍了深度时间序列相配套的基础模块。基础模块部分主要是如何处理原始的时间序列数据,让其更好适配深度时序模型。具体可以分为以下几个模块。
平稳性处理:包括ReVIN等的时间序列预处理方法,让输入序列具备平稳的均值、方差等统计量;
分解:包括趋势项、季节项分解,或者类似NBeats中basis扩展、多变量预测中的变量维度/时间维度的矩阵分解等;
傅里叶变换:包括各类的傅里叶变换,将时间序列数据从时域转换成频域,在频域建模这类方法。
3.模型结构
下图展示了深度时间序列模型的各种结构,以及各个模型的提出时间,涵盖了深度时序模型的发展历程。这些模型在知识星球中基本都有详细解析,此外目前在知识星球持续更新的时间序列预测专题,也按照类似的思路详细整理了各个模型结构的原理,感兴趣的同学可以加入查看相应专栏。
第一类模型是基于MLP的建模方法。这类模型很简单,以历史序列作为输入,通过一个全连接网络,映射到输出维度;
第二类模型是基于RNN的建模方法,核心是基于RNN的自回归建模能力,对历史规律进行捕捉,并自回归的逐个解码出未来每个时间步的预测结果;
第三类模型是基于CNN的建模方法,包括基础的1D建模,以及在TimesNet中提出的2D建模方法;
第四类模型是基于GNN的建模方法,主要用在多变量时间序列建模中,将各个变量之间的关系,通过图学习的方式刻画出来;
第五类模型是基于Transformer的建模方法,也是目前最常见的模型。文中又根据attention的建模维度,进一步分为point-wise、patch-wise、series-wise类型。Point-wise就是最基础的Transformer,每个时间步之间计算attention score;patch-wise就是PatchTST中的方法,将相邻几个时间步的序列聚合成patch,attention作用到patch之间;series-wise指的是iTransformer这种方法,将一个序列作为整体,attention主要用在变量间关系的计算。
4.Benchmark
文中搭建了一套完整的深度时间序列模型Benchmark,整体构造如下图,包括数据源、模型Layer、整体模型、适配不同任务的head、模型评估等模块。
在这个benchmark中,将各个深度学习时间序列模型拆分成基础的组件,也就是Layers中,再基于这些Layers组件,拼凑成各个SOTA的时间序列模型完整结构。同时,通过不同的head输出设计,适配包括分类、填充、预测、异常检测等多项任务。
5.实验评估
基于上述的深度时序模型Benchmark,本文进行了一系列实验,评估各个模型在各类任务上的效果。下图是区分CNN、RNN、MLP、Transformer等模型结构在不同任务上的效果。整体来看,Transformer模型在各个任务上都取得了更好的效果,而CNN模型在分类问题、填充问题、异常检测问题上,可以取得比Transformer更优的效果。
在具体的模型效果上,下图列举了不同SOTA模型在各个任务上的效果排名,其中iTransformer、Transformer、PatchTST在时序预测上取得了最优效果了;TimesNet则在剩余的填充任务、分类任务、异常检测任务中取得了最优效果。
本文转载自 圆圆的算法笔记,作者: Fareise