论文阅读【时间序列】TimeMixer (ICLR2024)

【时间序列】TimeMixer (ICLR2024)

原文链接:TIMEMIXER: DECOMPOSABLE MULTISCALE MIXING
FOR TIME SERIES FORECASTING

代码仓库:https://github.com/kwuking/TimeMixer

整体框架

符号定义

符号 含义
P 用于预测的历史序列长度(seq_len)
F 预测序列长度(pred_len)
C 变量数量(通道数量)
M 划分的尺度数(降采样次数)
L Past Decomposable Mixing的层数

Multiscale Mixing Architecture

设输入序列为 X ∈ R P ∗ C X\isin R^{P*C} XRPC,为获得不同尺度下的时间序列,对原序列进行降采样:
X m ∈ R ⌊ P 2 m ⌋ ∗ C , m ∈ { 0 , 1 , . . . , M } . X_m \isin R^{\lfloor \frac{P}{2^m} \rfloor * C}, m\isin \{0, 1,..., M\}. XmR2mPC,m{0,1,...,M}.

简单来说第 2 m 2^m 2m层降采样,就是每隔 2 m 2^m 2m个点取一个点

然后对m层降采样的结果分别进行嵌入(Embed),得到多尺度的时间序列输入。

Past Decomposable Mixing

PDM模块一共有L层,每层的输入为前一层的结果:
X L = P D M ( X L − 1 ) , l ∈ { 0 , 1 , . . . , L } . \mathcal{X}^L = PDM(\mathcal{X}^{L-1}), l\isin\{0, 1,..., L\}. XL=PDM(XL1),l{0,1,...,L}.
其中, X l = { X 0 l , X 1 l , . . . , X M l } , X m l ∈ R ⌊ P 2 m ⌋ ∗ d m o d e l \mathcal{X}^l = \{X^l_0, X^l_1,...,X_M^l\}, X_m^l \isin R^{\lfloor \frac{P}{2^m} \rfloor * d_{model}} Xl={X0l,X1l,...,XMl},XmlR2mPdmodel

简单来说,就是将降采样得到的M层多尺度时间序列,在PDM模块中迭代L次。

PDM 模块中首先有一个Decmpose操作,将时间序列分解成周期项(seasonal parts) S l = { s 0 l , s 1 l , . . . , s M l } \mathcal{S}^l=\{s_0^l, s_1^l,...,s_M^l\} Sl={s0l,s1l,...,sMl}和趋势项(trend parts) T l = { t 0 l , t 1 l , . . . t M l } \mathcal{T}^l = \{t_0^l,t_1^l,...t_M^l\} Tl={t0l,t1l,...tMl}。分解方法采用Autoformer中提出的SeriesDecomp方法。
s m l , t m l = S e r i e s D e c o m p ( x m l ) , m ∈ { 0 , 1 , . . . , M } . s_m^l, t_m^l = SeriesDecomp(x_m^l), m\isin \{0, 1, ..., M\}. sml,tml=SeriesDecomp(xml),m{0,1,...,M}.
分解后,分别进行Seasonal MixingTrend Mixing,每一层PDM模块的输出为:
X l = X l − 1 + F e e d F o r w a r d ( S − M i x ( { s m l } m = 0 M ) + T − M i x ( { t m l } m = 0 M ) ) . \mathcal{X}^l = \mathcal{X}^{l-1}+FeedForward(S-Mix(\{s_m^l\}_{m=0}^M)+T-Mix(\{t_m^l\}_{m=0}^M)). Xl=Xl1+FeedForward(SMix({sml}m=0M)+TMix({tml}m=0M)).

Seasonal Mixing & Trend MixingMixing

对于周期项(Seasonal Parts)和趋势项(Trend Parts)采用不同的合并策略。周期项采用自底向上:
f o r   m : 1 → M   d o : s m l = s m l + B o t t o m − U p − M i x i n g ( s m − 1 l ) . for ~m: 1 \rightarrow M~do: s_m^l = s_m^l + Bottom-Up-Mixing(s_{m-1}^l) . for m:1M do:sml=sml+BottomUpMixing(sm1l).
而对于趋势项,则是:
f o r   m : ( M − 1 ) → 0   d o : t m l = t m l + T o p − D o w n − M i x i n g ( t m + 1 l ) . for ~m: (M-1) \rightarrow 0~do: t_m^l = t_m^l + Top-Down-Mixing(t_{m+1}^l) . for m:(M1)0 do:tml=tml+TopDownMixing(tm+1l).
其中Bottom-Up-MixingTop-Down-Mixing分别由两个线性全连接层组成,带有GELU激活函数。

这一步简单来说就是将不同尺度信息向上/下传递了一遍,周期信息是向上传递的,趋势信息是向下传递的。
选择两种方向的原因:根据后文消融实验测试出来的。
注意,进行合并的时候还是按照各个尺度分别计算的。

Future Multipredictor Mixing

利用第L层PDM的输出,计算预测结果:
Y m = P r e d i c t o r m ( x m L ) , m ∈ { 0 , 1 , . . . , M } , Y = ∑ m = 0 M Y m . Y_m = Predictor_m(x_m^L), m\isin\{0, 1, ..., M\}, Y = \sum_{m=0}^{M}Y_m. Ym=Predictorm(xmL),m{0,1,...,M},Y=m=0MYm.
其中, Y m ∈ R F ∗ C Y_m \isin R^{F*C} YmRFC

Predictor的本质是若干线性层, x m L ∈ R ⌊ P 2 m ⌋ ∗ d m o d e l x_m^L\isin R^{\lfloor \frac{P}{2^m} \rfloor * d_{model}} xmLR2mPdmodel首先经过经过线性层由 ⌊ P 2 m ⌋ \lfloor \frac{P}{2^m} \rfloor 2mP拉成F,然后将 d m o d e l d_{model} dmodel拉成C。

实验

长序列预测

TimeMixer提供的实验结果显示,效果有提升,但是不多
但其实验设置与同类论文有区别,关于PatchTST、DLinear等模型的结果与相关论文不同。

在这里插入图片描述
附录中有完整版:
在这里插入图片描述
附录中还展示了一个参数搜索调优后的结果:
在这里插入图片描述

多变量预测

在这里插入图片描述

事实上,在PEMS数据集是路网数据,共有数百个传感器,每个传感器提供一个时间序列。有很多图+序列的模型在PEMS类数据集上做测试,如果加入与这些模型的比较将较为全面。

消融实验

在这里插入图片描述

此处只列举长序列预测相关的消融实验。更多消融实验见原文,但总体效果都是case 1表现最好

效率

在这里插入图片描述

作为线性模型,没有自注意力机制,空间和时间复杂度都比较低。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 03:18:04       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 03:18:04       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 03:18:04       57 阅读
  4. Python语言-面向对象

    2024-07-13 03:18:04       68 阅读

热门阅读

  1. python多线程与多进程开发实践及填坑记(3)

    2024-07-13 03:18:04       26 阅读
  2. MySQL-锁

    2024-07-13 03:18:04       14 阅读
  3. 我的PHP8编译日志

    2024-07-13 03:18:04       19 阅读
  4. error: #29: expected an expression

    2024-07-13 03:18:04       17 阅读
  5. MySQL版本升级

    2024-07-13 03:18:04       17 阅读
  6. 数据建设实践之大数据平台(四)安装mysql

    2024-07-13 03:18:04       22 阅读
  7. Python-数据爬取(爬虫)

    2024-07-13 03:18:04       20 阅读