↑↑↑关注后"星标"kaggle竞赛宝典
时序预测的王道 !
简介x在最近一年的Transformer时间序列预测模型中,一般都采用Patch的方式进行数据组织,即将时间序列分成多个patch,每个patch通过MLP编码后,输入到Transformer中。这种建模方式,目前是最适合Transformer结构的,也被很多之前的工作证明效果的优越性。然而,这种建模方式的效果,真的来源于Transformer吗?还是只是因为Patch的数据处理形式带来的呢?
香港科技大学近期发表了一篇时间序列预测文章,提出了一种Patch+CNN的模型结构,打败了Transformer模型,取得了SOTA效果。下面为大家介绍一下这篇文章的细节。
论文标题:PATCHMIXER: A PATCH-MIXING ARCHITECTURE FOR LONG-TERM TIME SERIES FORECASTING
下载地址:https://browse.arxiv.org/pdf/2310.00655v1.pdf
1本文提出的PatchMixier模型整体结构如下,主要包括Patch Embedding、PatchMixer、多头预测等模块。
2Patch embedding将原始的一维单变量时间序列转换成二维的类似图像的数据结构。文中对比了两种patch embedding生成方法,分别为Top-k Frequencies和Sliding Window。
Top-k Frequencies:这种方法首先将原始的时间序列映射到频域,然后选择频域主要成分,将每个主成分的序列组织成一个二维结构。这里每个成分的时间序列可以看成是一个patch。
Sliding Window:这种方式根据一个窗口长度和步长在原始的时间序列上移动,抽取出多个子序列,这些子序列组织成一个patch。这里每个子序列可以看成是一个patch。
上说两种方式,一种是在频域上通过频率成分进行patch分割,另一种是在时域上将序列按照时间分成多个片段得到patch。
在得到每个patch的数据后,下一步是生成每个patch的embedding。在之前的Transformer类型的工作中,一般会引入position embedding解决Transformer无法建模时序的问题。而本文中,由于采用了CNN的结构,天然具备对序列的建模能力,因此文中没有引入任何position embedding,而是直接通过一个MLP将patch内的序列数据映射成embedding。
3在得到Patch Embedding后,文中继续采用CNN模型进行建模。在之前的CNN类型的时间序列预测工作中,一般采用不同尺寸的卷积核分别在整个序列上做卷积,没有区分局部信息和全局信息。
本文采用了两个卷积分支分别提取序列的局部信息和全局信息。对于局部信息分支,使用一个卷积在每个patch内进行depthwise的卷积,实现patch维度的局部建模。同时,在全局信息分支,使用一个跨patch的卷积,建模patch之间的关系。
在预估过程中,文中也参考了趋势项季节项分解的思路,将预估结果分成线性和非线性两个部分。线性部分主要用来预测时间序列的趋势项,非线性部分将卷积的输出结果经过非线性MLP得到其余的预估项,最终预测结果为二者相加。
此外,文中也是用了RevIN的归一化方法对时间序列的输入和输出分别进行归一化和反归一化。
4文中对比了PatchMixer和其他Transformer模型的效果,从下面的实验结果中可以看出,PatchMixer取得了比较显著的效果提升,达到了SOTA效果。这也说明,基于Patch这种数据形式进行时间序列预测,是比较好的方式,Patch+CNN同样能取得比Transformer更好的效果。
END