Koopa: Learning Non-stationary Time Series Dynamics with Koopman Predictors [时序必读论文]

Koopa: Learning Non-stationary Time Series Dynamics with Koopman Predictors [时序必读论文]



前言

发表在 NeurIPS 2023 (CCF A) 的论文。时间序列数据本身是一个动态系统,根据Koopman理论,动态的变化可以由线性转移算子 K \mathcal{K} K表示,不同时期的 K \mathcal{K} K不同。转移过程公式: K ∘ g ( x t ) = g ( F ( x t ) ) = g ( x t + 1 ) \mathcal{K}\circ g(x_t)=g(\mathbf{F}(x_t))=g(x_{t+1}) Kg(xt)=g(F(xt))=g(xt+1)。复杂的非平稳时序数据由时变和时不变成分,该文章的核心内容是将原始数据分解为时变和时不变两部分,然后分别使用koopman理论进行处理。
论文地址:https://arxiv.org/pdf/2305.18803
github地址:https://github.com/thuml/Koopa


一、文章框架

在这里插入图片描述
输入序列进入多个叠加的Koopa Block,其中Koopa Block会将上一层的输入分解为时变和时不变两部分,分别进入各自的KP,Time-variant KP会生成一个中间输出和预测,Time-invariant KP会生成预测,两个预测会进行相加,中间输出则是进入下一个Koopa Block。对于时不变部分,文章则是直接通过整个过去的回视窗口进行预测输出;对于时变的部分,文章希望通过子序列迭代推进的方式,捕获在不同子序列上的时变信息。

二、Koopa

1.Fourier Filter

首先文章将原始序列分解为时变和时不变两个部分,文章采用了Fourier-based的方法。首先将原始序列进行傅里叶变化,可以得到频谱,该谱由以 { 0 , 1 , . . . , [ T / 2 ] } \{0, 1, ..., [T/2]\} {0,1,...,[T/2]}为周期组成,记录了每个周期的强度。文章在这里将强提取前 α \alpha α百分位的周期作为主频谱 G a l p h a \mathcal{G}_{alpha} Galpha,称作时不变部分(简单点说就是这部分数据变化更为固定)。其余部分则为时变部分 G ‾ a l p h a \overline{\mathcal{G}}_{alpha} Galpha(这部分数据变化更为混乱)。公式如下:
X i n v = F − 1 ( F i l t e r ( G a l p h a , F ( X ) ) ) X i n v = F − 1 ( F i l t e r ( G ‾ a l p h a , F ( X ) ) ) = X − X i n v X_{inv}=\mathcal{F}^{-1}(Filter(\mathcal{G}_{alpha}, \mathcal{F}(X)))\\ X_{inv}=\mathcal{F}^{-1}(Filter(\overline{\mathcal{G}}_{alpha}, \mathcal{F}(X)))=X-X_{inv} Xinv=F1(Filter(Galpha,F(X)))Xinv=F1(Filter(Galpha,F(X)))=XXinv

2.Koopa Block

在这里插入图片描述
对于时不变的部分,输入进行线性层的Encoder然后乘上状态转移矩阵 K \mathcal{K} K,然后进行线性层的Decoder,生成预测结果。
对于时变的部分,如果进行上面简单的方法,无法捕获序列内随时间迁移产生的子序列变化,文章提出了右侧的方法,将序列分割为子序列,对每个子序列都进行Encoder并乘状态转移矩阵 K \mathcal{K} K,作为下一个时变子序列,最后一个子序列产生的时变子序列进行Decoder作为最终预测,其余作为下一层输入。这里我们可以看到,仅通过一层,得到的预测结果只捕获了最后一个子序列的信息。因此需要多层的Koopa Block,每往下一层都可以多捕获往前一位的子序列信息,从而捕获时变信息。最后将多层的预测结果进行相加作为最终的预测结果。

三、实验

在这里插入图片描述
文章采用了输入长度为输出长度两倍的方式,在短期预测上具有不错的效果。


总结

论文引入了动力学理论,比较有新意。将原始序列分为时变和时不变两部分,时不变采用简单线性的方法,时变的部分采用的多层堆叠推进的方法进行捕获。论文附录部分有很多数学的证明,这可能相比模型部分更为重要。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值