查看原文
其他

清华联合蚂蚁提出TimeMixer,可分解多尺度融合的时序预测模型 | ICLR 2024

杜大钊 PaperWeekly
2024-08-23

©PaperWeekly 原创 · 作者 | 杜大钊

单位 | 中科院软件所

研究方向 | 时序建模



本文介绍清华和蚂蚁集团在今年发表在 ICLR 2024 上的一篇文章,也是基于 MLP 来做时间序列预测任务的。

论文标题:

TimeMixer: Decomposable Multiscale Mixing for Time Series Forecasting

论文链接:

https://openreview.net/pdf?id=7oLshfEIC2

代码链接:

https://github.com/kwuking/TimeMixer



Key Point

整个文章的 idea 是,对一个原始的时间序列,用不同的频率来采样它,得到的新的序列所蕴含的时域信息是不同的。比如用电量序列,如果以每小时采样,那它就呈现以天为周期的形式;如果以每天采样,那它就可能呈现以周末、节假日相关的波动。

因此,如何利用好不同尺度的序列(即用不同频率采样得到的序列)之间的关系,对时序预测任务很重要。这个 idea 有点类似于 NHits 和 Scaleformer,这两篇我在之前的文章中有介绍:

AAAI 2023 N-HiTS:

https://zhuanlan.zhihu.com/p/573203887


ICLR 2023 Scaleformer: 

https://zhuanlan.zhihu.com/p/535556231


但不同的是,NHits 和 Scaleformer 都是用单独的 block 来建模每个尺度序列,先用第一个 block 处理最粗粒度(采样频率低)的序列,然后进行插值得到更细粒度的序列,输入到下一个 block,依此类推,得到最终最细粒度的预测。而本文是每个 block 内部都会处理所有尺度序列(倒是和 Pyraformer 中的金字塔 attention 比较像),此外,还引入了序列分解的思想和尺度间信息流动的新方式。

1.1 Architecture

本文提出的 TimeMixer 的架构如下图:
用简单的话来概述上图就是:

  1. Multiscale Time Series:首先对输入序列进行不同程序的池化来下采样得到不同尺度的序列。
  2. Past Decomposable Mixing:然后将每个尺度的序列都分解为趋势项(trend)和周期项(seasonal)(这里分解方法采用的是 Autoformer 中的方式,用一个大 window size 的滑动平均即可)。为了进行尺度间的交互,将每个尺度序列的 seasonal 项按照从下到上(bottom-up)的方式进行信息融合,将每个尺度序列的 trend 项按照从上到下(top-down)的方式进行信息融合。
  3. Future Multipredictor Mixing:最后,将最后一个 block 输出的不同尺度的序列都用来预测,把所有尺度的预测结果加起来得到最终预测结果。

1.2 Past-Decomposable-Mixing

尺度间交互是怎么做的呢?作者用两种相反的流动方式来分别处理不同尺度的趋势项不同尺度的周期项,如下图:

● 对于周期项:如上图左侧,下面细粒度的 seasonal 序列用一个两层的 MLP 映射到和上面粗粒度的 seasonal 序列尺度对齐,然后相加即可得到融合后的结果,然后依此类推,把所有尺度的 seasonal 全部融合一遍。可是为什么要用 bottom-up 的流动方式呢?

作者的原文如下:In seasonality analysis, larger periods can be seen as the aggregation of smaller periods, such as the weekly period of traffic flow formed by seven daily changes, addressing the importance of detailed information in predicting future seasonal variation.

我的理解是,细粒度周期本身就包含了粗粒度周期,比如一个每小时采样的序列,周期严格是 24,那么用每 2 小时、每半天、每一天的频率来采样该序列,则周期可以直接推算出来,分别是 12,2,1。所以细粒度周期包含的信息多一些,用它来指导粗粒度周期会好一些。

● 对于趋势项:如上图右侧,其实是和周期项一样的处理方式,唯一的区别是方向是反的,是粗粒度逐渐映射到细粒度的。为什么用 top-down 的流动方式呢?

作者的原文如下:Contrary to seasonal parts, for trend items, the detailed variations can introduce noise in capturing macroscopic trend. Note that the upper coarse scale time series can easily provide clear macro information than the lower level. Therefore, we adopt a top-down mixing method to utilize the macro knowledge from coarser scales to guide the trend modeling of finer scales.

我的理解是,越是细粒度,趋势就包含越多的噪声和意想不到的变化,因此需要宏观趋势(粗粒度)来指导微观趋势(细粒度)。

注意,经过上述操作后,每个 block 得到的输出仍然是多个尺度序列的周期项和趋势项,只不过每个尺度的周期项和趋势项已经融合了其他尺度的信息。然后,把每个尺度的周期项和趋势项相加(趋势周期合并),即可得到每个尺度的未分解序列。再进行一个 FFN 变换,即可得到下一个 block 的输入。所以,每个 block 的输入是多个尺度的序列,依次进行趋势周期分解、尺度间交互、趋势周期合并,FFN,输出新的多个尺度的序列。

1.3 Future-Multipredictor-Mixing

那么对于最后一个 block,它的输出也是多个尺度的序列,所以直接用多个 predictor,对每个尺度的序列都映射到和预测范围的长度一致,然后所有尺度的预测结果相加即可得到最终的预测。每个 predictor 其实就是一个 Linear,如下图所示,和 Dlinear 论文中一样:



实验

作者在多变量、单变量、时空预测上均进行了实验,发现 TimeMixer 均能达到 SOTA,并且效率和 DLinear 差不多。

多变量时序预测的结果:

在 PEMS 几个时空数据集上预测的结果:

单变量时序预测的结果:

预测效率和 DLinear 差不多,训练显存占用很小,速度也是非常快的了:

关于序列分解和尺度间信息融合方式的消融实验,作者发现采用序列分解,然后对分解后的 trend 和 seasonal 分别做信息融合效果好,而且,对 trend 采用 top-down 的流动方式,对 seasonal 采用 bottom-up 的流动方式,效果最好:



总结

把序列预测里面几个比较有效的思想(多尺度预测,序列分解,尺度间交互)都融到一个模型中了,通过实验结果也能看出来有一定的可解释性。整体采用了纯 mlp 的架构使得效率很高,接近 DLinear。实验很充分,在长短程预测上对比了从多元时序,时空时序以及单元时序的各种场景,并且在统一参数和超参搜索等各种设置下都进行了对比,都基本是 SOTA,消融实验也很充分。



更多阅读



#投 稿 通 道#

 让你的文字被更多人看到 



如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。


总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 


PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。


📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算


📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿


△长按添加PaperWeekly小编



🔍


现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧


·
·
·

继续滑动看下一个
PaperWeekly
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存