TimeMixer(ICLR, 2024)
源代码
相较于传统的序列分解(decompose)与多周期分析(multiperiodicity analysis),作者将重心放在多尺度融合(multiscale-mixing)。这种多尺度融合的思路来自于一个很直觉的想法:在不同的采样率下时间序列会展现出不同的特征。如此微观与宏观的信息可以反映在粗粒度与细粒度下反映出来,这样复杂的信息就可以从本质上解开。基于这种想法,作者提出了 TimeMixer ,其作为一个完全基于MLP的架构,由 Past-Decomposable-Mixing(PDM)Future-Multipredictor-Mixing(FMM) 块构成

Related work

Mixing(混合)是一种有效的信息整合方式,已被广泛应用于计算机视觉和自然语言处理领域。例如,MLP-Mixer 为图像识别设计了一种两阶段的混合结构,使用线性层依次对通道信息和图像块(patch)信息进行混合。FNet 则将 Transformer 中的注意力层替换为简单的傅里叶变换,从而实现对句子中 token 的高效混合。
在本文中,作者进一步探索了混合结构在时间序列预测中的应用。不同于以往的设计,TimeMixer 提出了一种可分解的多尺度混合架构(decomposable multi-scale mixing architecture),并在历史信息提取阶段和未来预测阶段采用了不同的混合方法加以区分。

TimeMixer

Multiscale Mixing Architecture

首先,作者将过去的观测值 $\mathbf{x}\in \mathbb{R}^{P \times C}$ 下采样为 M 个尺度,下采样采用平均池化且最终获得一系列的多尺度时间序列 $\mathcal{X} = {\mathbf{x}_0, \cdots, \mathbf{x}_M}$ 其中 $\mathbf{x}_m \in \mathbb{R}^{\lfloor \frac{P}{2^m} \rfloor \times C}, m \in {0, \dots, M}$ 。$C$ 代表变量的数目,最低级的序列 $\mathbf{x}_{0}=\mathbf{x}$ 未输入的序列,其中有最细粒度的时间维度上的变化特征。然后作者将这些多尺度的序列通过嵌入层映射为深度特征 $\mathcal{X}^0$。这一步可以公式化为 $\mathcal{X}^0=\text{Embed}(\mathcal{X})$。通过以上的设计,作者可以得到输入序列的多尺度表示。
接下来,作者将 PDM 模块堆叠来将过去的信息进行混合,对于第 l 层的数据,输入为 $\mathcal{X}^{l-1}$
$$
\mathcal{X}^{l} = \text{PDM}(\mathcal{X}^{l-1}),l\in { 0,\dots,L }
$$
其中 L 为 PDM 的层数, $\mathcal{X}^l = {\mathbf{x}_0^l, \dots, \mathbf{x}_M^l}, \mathbf{x}_m^l \in \mathbb{R}^{\lfloor \frac{P}{2^m} \rfloor \times d_{\text{model}}}$ 代表混合后的表示,其具有 $d_{model}$ 个通道。
为了预测未来的数据,作者将使用 FMM 块来将提取出的多尺度信息 $\mathcal{X}^L$ 集合并产生未来的预测:
$$
\hat{\mathbf{x}}=\text{FMM}(\mathcal{X}^L)
$$
其中 $\hat{\mathbf{x}}\in \mathbb{R}^{F\times C}$为最终的输出。

Past Decomposable mixing

具体来说,对于第 l 层PDM块,作者首先将多尺度时间序列 $\mathcal{X}_{l}$ 分解为季节部分 $\mathcal{S}^l={ \mathbf{s}_{0}^l,\dots,\mathbf{s}_{M}^l }$ 和趋势部分 $\mathcal{T}^l={ \mathbf{t}_{0}^l,\dots,\mathbf{t}_{M}^l }$。这里的分解模块采用 Autoformer 中使用的分解模块。考虑到季节性与趋势性的不同性质,作者对于季节项和趋势项分别进行多尺度的交互:
$$
\begin{gather*}
\mathbf{s}_m^l, \mathbf{t}_m^l = \text{SeriesDecomp}(\mathbf{x}_m^l), m \in {0, \cdots, M}, \\
\mathcal{X}^l = \mathcal{X}^{l-1} + \text{FeedForward} \left( \text{S-Mix} \left( {\mathbf{s}_m^l}_{m=0}^M \right) + \text{T-Mix} \left( {\mathbf{t}_m^l}_{m=0}^M \right) \right),
\end{gather*}
$$
其中 FeedForward 包括2层线性层,其中GELU作为激活函数, S-Mix 和 T-Mix 代表季节性和趋势性的混合。

Seasonal Mixing

作者认为,周期性数据更加关注细节性的内容,所以需要采用从底向上(bottom-up)的方法来将不同尺度结合。技术上讲,就是对于季节部分 $\mathcal{S}^l$使用 Bottom-Up-Mixing 对于第 m 个尺度的数据采用一种残差连接的方法来实现 bottom-up:
$$
\text{for } m: 1 \to M \text{ do: } \quad \mathbf{s}_m^l = \mathbf{s}_m^l + \text{Bottom-Up-Mixing}(\mathbf{s}_{m-1}^l)
$$
这里的 Bottom-Up-Mixing 通过一个以 GELU 作为在时间尺度上的激活函数的两层线性层来作为示例,这里的输入维度为 $\lfloor \frac{P}{2^{m-1}} \rfloor$ 输出维度为 $\lfloor \frac{P}{2^m} \rfloor$

Trend Mixing

与季节混合相反,趋势项更加关注宏观趋势,粗粒度的数据更能反映趋势,因此作者采用 top-down 的混合方法来最大化粗粒度的序列的信息。
$$
\text{for } m: M-1 \to 0 \text{ do: } \quad \mathbf{t}_m^l = \mathbf{t}_m^l + \text{Top-Down-Mixing}(\mathbf{t}_{m+1}^l)
$$
这里的 Top-Down-MixingBottom-Up-Mixing 相似。输入输出维度相反。

Future Multipredictor Mixing

在 L 个 PDM 块之后,作者获得了多尺度的信息 $\mathcal{X}^l = {\mathbf{x}_0^l, \dots, \mathbf{x}_M^l}, \mathbf{x}_m^l \in \mathbb{R}^{\lfloor \frac{P}{2^m} \rfloor \times d_{\text{model}}}$。因为来自不同尺度的序列表示不同的随时间变化的特征,所以预测也展示出不同的能力,为了更好地使用多尺度信息,我们提出了 Future-Multipredictor-Mixing 块:
$$
\widehat{\mathbf{x}}_m = \text{Predictor}_m(\mathbf{x}_m^L), \ m \in {0, \dots, M}, \ \widehat{\mathbf{x}} = \sum_{m=0}^M \widehat{\mathbf{x}}_m,
$$
这里的 $\hat{\mathbf{x}}_{m}\in \mathbb{R}^{F\times C}$代表第 m 个尺度的预测结果, $\hat{\mathbf{x}}\in \mathbb{R}^{F\times C}$ 为最终输出。$\text{Predictor}_{m}$ 代表第 m 个尺度的预测器,这只是一个线性层,仅仅将每个尺度的数据转化为长度为 F 的预测值。


Cover image icon by Dewi Sari from Flaticon