针对现实中普遍存在的非平稳时序数据的预测问题,本文提出库普曼预测模型(Koopa),基于理论支撑建模非平稳数据的时变特性,层次化挖掘时间序列的动力系统,并在广泛的时序预测任务上取得了最优结果。
论文名称:
Koopa: Learning Non-stationary Time Series Dynamics with Koopman Predictors
论文链接:
https://arxiv.org/abs/2305.18803
代码链接:
https://github.com/thuml/Koopa
一、引言
时序预测在现实生活中具有广泛应用,覆盖气象、能源、经济、运维等诸多领域。近年来,以循环神经网络(RNN),时序卷积网络(TCN),变换器(Transformer)以及多层感知机(MLP)搭建的深度模型在时序预测场景中取得了不断突破。
然而,现实场景中大部分时序数据存在非平稳性,具有更复杂的时序变化模式,以及随时间变化的数据分布,对以往模型的建模能力带来了严峻挑战,目前为止,很少有从理论基础出发,天然适配非平稳时序数据建模的深度模型结构。
为解决上述挑战,我们从动力学视角建模时序数据,基于库普曼理论(Koopman Theory)设计了一种时序预测模型Koopa(Koopman Forecaster),该模型具有如下特点:
- 适配非平稳特性:库普曼理论能够建模时变动力系统的状态转移,天然契合非平稳时序数据的预测场景;
- 轻量化高效:基于线性层搭建,相较领域前沿模型,在取得SOTA效果的同时,仅需平均1/4的训练时间及显存占用;
- 适应预测分布变化:可结合滚动预测以及算子更新机制,无需重新训练即可适应业务数据的实时分布变化。
二、问题分析
2.1 背景知识
2.2 设计思路
对非平稳时间序列而言,由于数据分布的变化,会存在明显的随时间变化的转移规律。受此启发,我们将时间序列看作一个动力系统:先将时间序列映射到测量空间中,这个空间的不同区域实则对应原本序列的不同时期,每个区域(时期)的状态转移可以用不同的算子描绘,每个区域内通过线性算子前推得到未来的状态,再反变换到原本序列空间。整个过程在库普曼理论保证下,完成了复杂的非线性状态转移以及非平稳性建模。
三、模型设计
3.1 整体结构
如下图,Koopa模型由多层基础模块(KoopaBlock)组成。不同于以往库普曼预测模型,我们首次引入深度残差连接结构(Deep Residual Struture),充分融入深度学习思想,对复杂时序数据的动力系统进行分层建模:每个基础模块拟合之前模块学习的残差,以层次化的库普曼算子描述复杂非平稳数据。
为了更好地建模时间序列,我们充分考虑非平稳数据的可分解特性。基于Wold's Theorem,对任意弱平稳时间序列有如下分解:
受此启发,我们认为时序数据在动力学视角下可进一步被分解为时不变(time-invarinat)和时变(time-variant)组分,两种组分应使用完全不同的建模方式。如上图,时不变组分在不同时期具备相对稳定的转移,我们使用全局共享算子建模从历史观测到未来预测的转移;时变组分在不同时期具备不同的转移,是非平稳性的主要成因,所以我们针对不同时期计算局部化的算子。
我们提出一种基于傅立叶分析的方法滤出上述组分,并设计两种不同的库普曼预测器(Koopman Predictor)进行分别建模。每个KoopaBlock由上述模块组成,计算过程如下:
3.2 模块实现
3.2.1 基于傅立叶分析的组分分解
为分解出时变/时不变组分,我们从时间上的“全局”视角分析时序数据,考虑到训练时模型的输入是通过在数据集上分窗得到的,我们将利用这个序列集合,找到时变与时不变的组分。
时序分析的两个维度一般包含时域与频域,其中,频率是描述的正是一个全局概念,使用傅立叶变换,我们可以获得序列各种频率的强度(频谱),进而提取数据集的时不变特性。
3.2.2 时不变库普曼预测器
3.2.3 时变库普曼预测器
由于每个时期的时变组分的状态转移都不同,我们需要使用局部化的算子独立描述每个窗口的序列输入。如上图右所示,我们首先对历史观测进行分段:
并使用一对编/解码器学习到高维线性系统的变换:
编/解码器基于多层感知机搭建,时不变算子通过可学习的参数矩阵实现,时变算子通过eDMD解析计算得到。模型完全基于线性层搭建,充分考虑非平稳时序数据的内在属性,以模块之间的互相配合,可扩展的层级组织,完成对复杂非线性时序动力系统的建模。
四、实验分析
我们在七个公开的预测任务基准上测试模型效果,覆盖52种不同的预测场景,在模型效果与计算效率取得了显著突破。
4.1 预测效果
我们展示了模型在代表性任务上的预测效果(纵轴),计算效率(横轴)以及显存占用(图标大小),可以发现:
- 在预测效果上,Koopa大幅超越此前的库普曼预测模型KNF以及线性模型DLinear;
- 相较于此前效果SOTA但计算代价极高的PatchTST模型,Koopa体现出显著效率优势。在序列数较多的交通流量预测任务上(Traffic),Koopa最多可节省 96.5%的的训练时间并且仅需其2.9%的显存开销;
此外,在M4数据集的单变量预测实验中,Koopa取得了一致最优预测效果。
4.2 模块分析
4.2.1 消融实验
我们进行了模块消融实验,证明所提出的傅立叶分解模块有效地适配了建模非平稳数据所需的分解方式,以及所提出库普曼预测器之间的互补性。
4.2.2 分解效果
我们进一步验证了分解模块的有效性。如下图所示,通过对比获得组分的时变性程度(Degree of Variation)。证明了所提出的模块能有效分离时变分量与时不变分量。
4.3 算子可视化
我们在汇率数据上以年为间隔采样时序数据,并可视化各期学到的算子。如上图,不同时期算子表现出明显的差异性,且序列的上升阶段对应值较大的热力图,下降阶段则反之,为非平稳时序数据建模提供了更好的可解释性。
4.4 算子谱分析
我们对算子进行了谱分析,以特征值距单位圆的平均距离衡量算子稳定性。从左到右三张子图分别表示:
- 仅包含时不变算子的单层模型;
- 包含时不变算子和时变算子的单层模型 ;
- 具有时不变算子和时变算子的多层模型;
不同于以往库普曼预测器,我们首次提出时变分解和分层学习机制,能够学到更稳定的算子,从而提高训练过程的稳定性。
4.5 自适应滚动预测
不同于以往模型固定的输入输出场景,Koopa可利用到来的数据来自适应更新算子。我们提出一种滚动预测与算子更新结合的机制,该算法能使模型无需训练即可适配数据分布变化,进一步提高预测效果,在非平稳的时间序列中取得了尤为显著的提升。
我们还基于库普曼算子的线性性质,首次针对动力系统的滚动式预测,提出了算子更新的加速版本,详细实现可参考论文附录。
五、总结
针对非平稳时序预测这一现实中广泛存在的科学问题,本文探索时间序列的动力系统,提出了一种库普曼理论驱动的高效时序预测模型。实验结果表明,该模型具有显著的效果与效率优势,预测可解释性以及自适应滚动预测的能力,对于经济、气象、运维等领域具有优秀的应用潜力。
Illustration by Iconscout From Pablo Stanley