目录
- 摘要
- ABSTRACT
- 1 论文信息
- 1.1 论文标题
- 1.2 论文摘要
- 1.3 论文引言
- 1.4 论文贡献
- 2 论文模型
- 2.1 问题描述
- 2.2 Robformer
- 2.2.1 Encoder
- 2.2.2 Decoder
- 2.3 鲁棒序列分解模块
- 2.4 季节性成分调整模块
摘要
本周阅读了一篇利用改进 Transformer 进行长时间序列预测的论文。论文模型为 Robformer ,其主要强调了在长时间序列预测问题上模型的鲁棒性。Robformer 主要包括几个关键模块:Encoder、Decoder、鲁棒序列分解模块、季节性成分调整模块。Encoder 主要侧重于从历史信息中提取周期性依赖关系,以供解码器使用。Decoder 包含两部分:堆叠的自相关机制以获得季节性部分,以及堆叠的稳健趋势预测块用于趋势部分。鲁棒序列分解模块主要提供一种简单且有效的方法来更新内部分解模块,使其能够鲁棒地提取季节性成分。季节性成分调整模块主要作用为进一步确保分解后的季节性成分的鲁棒性。
ABSTRACT
This week, We read a paper on long-term time series forecasting using an improved Transformer model. The model, named Robformer, primarily emphasizes the robustness of the model in long-term time series forecasting problems. Robformer consists of several key modules: the Encoder, the Decoder, the Robust Series Decomposition Module, and the Seasonal Component Adjustment Module. The Encoder mainly focuses on extracting periodic dependencies from historical information for the Decoder. The Decoder contains two parts: stacked Auto-Correlation mechanisms to obtain seasonal components and stacked robust trend forecasting blocks for trend components. The Robust Series Decomposition Module provides a simple and efficient approach to updating the inner decomposition blocks to extract seasonal components robustly. The Seasonal Component Adjustment Module’s main function is to further ensure the robustness of the decomposed seasonal components.
1 论文信息
1.1 论文标题
Robformer: A robust decomposition transformer for long-term time series forecasting
1.2 论文摘要
基于 Transformer 的预测方法已广泛应用于长期多变量时间序列的预测,并在延长预测时间上取得了显著进展。然而,当长期时间序列中出现突发趋势变化和季节波动时,这些方法的性能可能会严重退化。因此,作者确定了以往 Transformer 架构的两个瓶颈:(1) 稳健性较差的分解模块。 (2) 趋势转移问题,这一问题导致了在长期多变量序列预测中趋势预测与真实值之间存在不同的分布。针对这些瓶颈,作者设计了 Robformer,一种新型基于分解的 Transformer,其包括三个新的内部模块,以增强 Transformer 的预测能力。具体而言,作者更新了分解模块,并添加了一个季节性成分调整模块以处理非平稳序列。此外,作者还提出了一种受多项式拟合方法启发的新型内部趋势预测架构,在准确性和鲁棒性方面优于以往的设计。作者的实验研究表明,在六个基准测试上,在公平的长期多变量设置下,Robformer 相比于最先进的 Autoformer 和 FEDformer 基线分别实现了 17% 和 10% 的相对改进,这些基准测试涵盖了能源、经济、交通、天气和疾病五大主流时间序列预测应用。
1.3 论文引言
长期多变量时间序列预测(LTTF)问题旨在输出比已知序列长度多几倍的预测序列,这在许多领域如金融、能源或天气中都很常见。最近的相关研究中,引入了 Transformers 以利用其自注意机制捕捉时间点之间复杂的依赖关系,并实现长期预测。为了应对 Transformers 在计算时间和内存方面的高消耗,一些基于 Transformer 的预测模型利用稀疏自注意机制来减少计算消耗,例如 ProbSparse 自注意 、因果卷积自注意和局部敏感哈希注意力。然而,这些方法会离散化时间序列的连续空间模式,并遗忘一些时间信息。由于合理的分解过程可以有效地理清纠缠的时间模式,这可以促进模型准确预测,基于 Transformer 的方法 Autoformer 和 FEDformer 利用基于简单平滑移动平均方法的内部分解模块来捕捉时间依赖关系,同时保持在 ( L log L ) (L \log L) (LlogL) 程度的复杂性。
然而,基于分解的 Transformers 仍面临一些瓶颈,例如在预测现实世界多变量时间序列时的分布转换问题。此外,一些单变量预测模型声称它们在长期单变量序列预测任务中已取得了与 Transformer 相当的结果。尽管如此,Transformers 在长期多变量时间序列预测中真的不有效吗?
为了回答这个问题,Non-stationary Transformers 和 RevIN 提出了类似于预处理的平稳化和去平稳化模块,从提高数据可预测性的角度来提升 Transformer 的性能。类似地,PatchTST 将时间序列分割成序列级别的补丁,在输入之前帮助 Transformer 提取时间依赖性,这类似于标记化方法。然而,从 Transformer 架构的角度来看,使其在现实世界的时间序列上更具鲁棒性仍然是一个具有挑战性的问题。
在实验中,作者观察到基于分解的 Transformers 架构中存在两个主要瓶颈。首先,简单的移动平均方法不足以应对趋势和周期项的突发波动和变化,特别是被异常值误导时,而传统的分解解决方案由于计算复杂度的指数增长,很难应用于内部分解模块。其次,先前的基于分解的 Transformers 很难学习时间序列中的长期趋势模式。作者在 ETTh2 数据集上比较了 Autoformer 的预测结果和真实值,如图1所示,可以发现预测的趋势和实际的趋势之间存在巨大的差距。作者进一步进行了实验,发现先前的基于分解的 Transformer 随着回溯窗口大小的增加,预测误差并没有减少。后续分析显示,这是因为它们使用输入序列的平均值作为未来趋势组件的水平,当未来趋势与输入序列的平均值不一致时,会带来错误的趋势预测。同时,当历史和预测序列的长度增加时,时间序列中包含的长期趋势模式将被揭示,这需要模型具有捕捉多个趋势模式的能力。因此,如何鲁棒地分解时间序列并增强学习多种趋势模式的能力被证明是基于分解的 Transformers 进一步提升预测性能的瓶颈。
基于此,作者尝试超越基于分解的 Transformer,并提出了一种新的端到端鲁棒 Transformer,简称 Robformer,以便在不进行预处理的情况下处理长期时间序列预测。Robformer 仍然遵循编码器-解码器结构,并采用自相关机制,但创新性地加入了鲁棒分解块和季节性组件调整块作为内部操作,以实现更好的分解。所提出的新型鲁棒分解块简单但高效,且具有低计算复杂度。Robformer 还引入了具有双残差结构的鲁棒趋势预测块,以取代原有的趋势预测方法,在具有剧烈趋势组件波动的短期内显示出更好的性能。Robformer 保持了原始 ( L log L ) (L \log L) (LlogL) 级别的复杂度,并且可以推广到其他基于分解的 Transformers,以进一步改进基础模型。作者的 Robformer 在几乎所有六个多变量真实世界基准上都达到了最先进的准确性。
1.4 论文贡献
① 提出了鲁棒分解架构和季节性组件调整块,以减轻趋势和周期项的突发波动和变化对长期预测的影响。
② 提出了鲁棒趋势预测块来提取长期时间序列的多种趋势模式,显示出比之前的趋势预测块更强的学习能力。这些提出的块可以应用于任何基于分解的 Transformer 模型,以提升其在长期时间序列预测任务(LTTF)中的性能。
2 论文模型
2.1 问题描述
给定具有 C( C ≥ 1 C\geq1 C≥1) 个变量的历史时间序列数据 H = { X 1 t , . . . , X C t } t = 1 L H = \{ X^{t}_{1},...,X^{t}_{C} \}^{L}_{t=1} H={X1t,...,XCt}t=1L,其中 L 是输入序列的长度, X i t X^{t}_{i} Xit 是第 i 个变量在第 t 个时间步上的观测值。时间序列预测问题主要是预测序列在未来 T 个时间步上的值,即 H ^ = { X 1 t ^ , . . . , X C t ^ } t = L + 1 L + T \widehat{H} = \{ \widehat{X^{t}_{1}},...,\widehat{X^{t}_{C}} \}^{L+T}_{t=L+1} H ={X1t ,...,XCt }t=L+1L+T,输入 L 预测 T。在 LTTF 条件下,L<<T。
2.2 Robformer
作者将基于分解的 Transformer 改造为更为鲁棒的深度预测模型(如图2所示),包括鲁棒序列分解块(RobDecomp)、季节性成分调整块(SAB) 和解码器中的鲁棒趋势预测块(RobTF)。
N 个编码器的输入是过去 L 个时间步长
H
e
n
∈
R
L
×
d
H_{en}\in \R ^{L \times d}
Hen∈RL×d,而 M 个解码器的输入是包含季节性部分
H
d
e
s
∈
R
(
L
2
+
T
)
×
d
H_{des} \in \R^{(\frac{L}{2}+T)\times d}
Hdes∈R(2L+T)×d 和趋势部分
H
d
e
t
∈
R
(
L
2
)
×
d
H_{det} \in \R^{(\frac{L}{2})\times d}
Hdet∈R(2L)×d 的分解序列。按照之前的工作,解码器的季节性部分输入包括两部分:从编码器输入
H
e
n
H_{en}
Hen 的后半部分分解出来的部分,长度为
L
2
\frac{L}{2}
2L,这部分输入可以提供过去信息;以及长度为 T 的填充标量的掩码输入。然而,与用
H
e
n
H_{en}
Hen 的平均值填充趋势部分输入不同,作者直接将长度为
L
2
\frac{L}{2}
2L 的趋势部分
H
d
e
t
H_{det}
Hdet 输入到解码器中。公式如下:
H
e
n
s
,
H
e
n
t
=
RobDecomp
(
H
e
n
L
2
:
L
)
,
H
e
n
s
a
d
j
=
SAB
(
H
e
n
s
)
,
H
d
e
s
=
Concat
(
H
e
n
s
a
d
j
,
H
0
)
,
H
d
e
t
=
H
e
n
t
,
H_{ens},H_{ent}=\textup{RobDecomp}(H_{en \frac{L}{2}:L}),\\ H_{ensadj}=\textup{SAB}(H_{ens}),\\ H_{des}=\textup{Concat} (H_{ensadj},H_{0}), H_{det}=H_{ent},
Hens,Hent=RobDecomp(Hen2L:L),Hensadj=SAB(Hens),Hdes=Concat(Hensadj,H0),Hdet=Hent,
其中
H
e
n
s
,
H
e
n
t
∈
R
(
L
2
)
×
d
H_{ens},H_{ent} \in \R^{(\frac{L}{2})\times d}
Hens,Hent∈R(2L)×d 表示
H
e
n
H_{en}
Hen 分解的季节性和趋势部分
H
0
∈
R
T
×
d
H_{0} \in \R ^{T \times d}
H0∈RT×d 表示填充为零的占位符。
2.2.1 Encoder
编码器主要侧重于从历史信息中提取周期性依赖关系,以供解码器使用。对于 N 个编码器层,第
l
l
l 个编码器层的方程可总结为
H
e
n
l
=
Encoder
(
H
e
n
l
−
1
)
H_{en}^{l}=\textup{Encoder}(H_{en}^{l-1})
Henl=Encoder(Henl−1)。详细的方程形式化为:
g
e
n
l
,
1
,
_
=
RobDecomp
(
AutoCorrelation
(
H
e
n
l
−
1
)
+
H
e
n
l
−
1
)
,
g
e
n
l
,
2
,
_
=
RobDecomp
(
FeedForward
(
g
e
n
l
,
1
)
+
g
e
n
l
,
1
)
,
g_{en}^{l,1},\_ = \textup{RobDecomp}(\textup{AutoCorrelation}(H_{en}^{l-1})+H_{en}^{l-1}),\\ g_{en}^{l,2},\_ = \textup{RobDecomp}(\textup{FeedForward}(g_{en}^{l,1})+g_{en}^{l,1}),
genl,1,_=RobDecomp(AutoCorrelation(Henl−1)+Henl−1),genl,2,_=RobDecomp(FeedForward(genl,1)+genl,1),
其中“_”表示不必要的部分。
H
e
n
l
=
g
e
n
l
,
2
,
l
∈
{
1
,
.
.
.
,
N
}
H_{en}^{l}=g_{en}^{l,2},l \in \{ 1,...,N \}
Henl=genl,2,l∈{1,...,N} 表示第
l
l
l 个编码器层的输出,
AutoCorrelation
(
⋅
)
\textup{AutoCorrelation}(\cdot)
AutoCorrelation(⋅) 表示 Autoformer 中提出的自相关机制,该机制可以有效发现基于周期的依赖关系,以取代原来的自注意力机制。
2.2.2 Decoder
解码器包含两部分:堆叠的自相关机制以获得季节性部分,以及堆叠的稳健趋势预测块用于趋势部分。假设有 M 个解码器层,第
l
l
l 个解码器层的方程可以总结为
H
d
e
l
=
Decoder
(
H
d
e
l
−
1
,
H
e
n
N
)
H_{de}^{l}=\textup{Decoder}(H_{de}^{l-1},H_{en}^{N})
Hdel=Decoder(Hdel−1,HenN)。
Decoder
(
⋅
)
\textup{Decoder}(\cdot)
Decoder(⋅) 形式化为:
g
d
e
l
,
1
,
_
=
RobDecomp
(
AutoCorrelation
(
H
d
e
l
−
1
)
+
H
d
e
l
−
1
)
,
g
d
e
l
,
2
,
_
=
RobDecomp
(
AutoCorrelation
(
g
d
e
l
,
1
,
H
e
n
N
)
+
g
d
e
l
,
1
)
,
g
d
e
l
,
3
,
_
=
RobDecomp
(
FeedForward
(
g
d
e
l
,
2
)
+
g
d
e
l
,
2
)
,
G
d
e
=
RobTF
(
H
d
e
t
)
,
g_{de}^{l,1},\_ = \textup{RobDecomp}(\textup{AutoCorrelation}(H_{de}^{l-1})+H_{de}^{l-1}),\\ g_{de}^{l,2},\_ = \textup{RobDecomp}(\textup{AutoCorrelation}(g_{de}^{l,1},H_{en}^{N})+g_{de}^{l,1}),\\ g_{de}^{l,3},\_ = \textup{RobDecomp}(\textup{FeedForward}(g_{de}^{l,2})+g_{de}^{l,2}),\\ G_{de}=\textup{RobTF}(H_{det}),
gdel,1,_=RobDecomp(AutoCorrelation(Hdel−1)+Hdel−1),gdel,2,_=RobDecomp(AutoCorrelation(gdel,1,HenN)+gdel,1),gdel,3,_=RobDecomp(FeedForward(gdel,2)+gdel,2),Gde=RobTF(Hdet),
其中
H
d
e
l
=
g
d
e
l
,
3
,
l
∈
{
1
,
.
.
.
,
M
}
H_{de}^{l}=g_{de}^{l,3},l \in \{ 1,...,M \}
Hdel=gdel,3,l∈{1,...,M} 表示第
l
l
l 个解码器层的输出,
H
d
e
0
H_{de}^{0}
Hde0 表示嵌入的
H
d
e
s
H_{des}
Hdes,
g
d
e
l
,
i
,
i
∈
{
1
,
2
,
3
}
g_{de}^{l,i},i \in \{ 1,2,3 \}
gdel,i,i∈{1,2,3} 对应于第
l
l
l 层中第
i
i
i 个稳健分解块后的季节性部分。
G
d
e
G_{de}
Gde 表示解码器的输出。注意,
RobTF
(
⋅
)
\textup{RobTF}(\cdot)
RobTF(⋅) 表示模型的稳健趋势预测块。
最终预测是两个分解成分的总和: W g ∗ H d e M + G d e W_{g}*H_{de}^{M}+G_{de} Wg∗HdeM+Gde,其中 W g W_{g} Wg 表示季节性部分的简单映射。
2.3 鲁棒序列分解模块
正如在前文中提到的,简单的移动平均方法难以处理突然的趋势变化和季节性干扰问题,如图2所示。为了解决这个困境,作者尝试提出一种简单且有效的方法来更新内部分解模块,使其能够稳健地提取季节性成分。作者在分解模块中加入二阶差分算子,使模型能够自动学习如何平滑具有突变波动的分解趋势成分。具体来说,作者对每个输入序列采用二阶移动平均。对于长度为 L 的输入序列
H
∈
R
L
×
d
H \in \R ^{L \times d}
H∈RL×d,其处理过程为:
H
t
=
λ
1
∗
AvgPool
(
Padding
(
H
)
)
+
λ
2
∗
AvgPool
(
Padding
(
AvgPool
(
Padding
(
H
)
)
)
)
,
λ
1
,
λ
2
=
Softmax
(
L
(
H
)
)
,
H
s
=
H
−
H
t
,
H_{t}=\lambda_{1} * \textup{AvgPool}(\textup{Padding}(H))+\lambda_{2} *\textup{AvgPool}(\textup{Padding}(\textup{AvgPool}(\textup{Padding}(H)))),\\ \lambda_{1},\lambda_{2}=\textup{Softmax}(L(H)),\\ H_{s}=H-H_{t},
Ht=λ1∗AvgPool(Padding(H))+λ2∗AvgPool(Padding(AvgPool(Padding(H)))),λ1,λ2=Softmax(L(H)),Hs=H−Ht,
其中,
H
s
,
H
t
∈
R
L
×
d
H_{s},H_{t}\in \R^{L \times d}
Hs,Ht∈RL×d 分别表示季节性和趋势循环部分,每个部分都包含部分残余噪声。
λ
1
,
λ
2
\lambda_{1},\lambda_{2}
λ1,λ2 是基于输入序列由线性映射层
L
(
H
)
\textup{L}(H)
L(H) 自动学习并通过 softmax 函数
Softmax
(
⋅
)
\textup{Softmax}(\cdot)
Softmax(⋅) 转换为概率分布的权重。通过这种方式,这些模块可以实现相同的平滑效果。
此外,考虑到时间序列可能会与多个季节性模式耦合,这可能会扰乱去趋势过程,可以利用加权移动平均方法来消除这些影响。这种方法还可以使分解后的成分更加平滑。需要注意的是,所有权重的总和应为1。类似于 FEDformer 中的 MOEDecomp 模块,对于可能存在的多个季节性模式
{
τ
1
,
τ
2
,
.
.
.
,
τ
k
}
\{ \tau_{1},\tau_{2},...,\tau_{k} \}
{τ1,τ2,...,τk},有 k 平均滤波器,其核大小分别为
{
τ
1
,
τ
2
,
.
.
.
,
τ
k
}
\{ \tau_{1},\tau_{2},...,\tau_{k} \}
{τ1,τ2,...,τk}。形式上,该模块可以表示为:
H
t
=
∑
k
=
1
K
ω
τ
k
(
H
t
)
τ
k
,
ω
τ
1
,
.
.
.
,
ω
τ
k
=
Softmax
(
L
(
H
)
)
,
H
s
=
H
−
H
t
H_{t}=\sum_{k=1}^{K}\omega_{\tau_{k}}(H_{t})_{\tau_{k}}, \\ \omega_{\tau_{1}},...,\omega_{\tau_{k}} = \textup{Softmax}(L(H)), \\ H_{s}=H-H_{t}
Ht=k=1∑Kωτk(Ht)τk,ωτ1,...,ωτk=Softmax(L(H)),Hs=H−Ht
其中,
(
H
t
)
τ
k
(H_{t})_{\tau_{k}}
(Ht)τk 表示核大小为
τ
k
\tau_{k}
τk 的趋势成分,
Softmax
(
L
(
H
)
)
\textup{Softmax}(L(H))
Softmax(L(H)) 是从输入中学习到的用于混合这些提取的趋势成分的权重。详细过程见算法1。
2.4 季节性成分调整模块
如图 2 所示,作者提出了季节性成分调整模块,以进一步确保分解后的季节性成分的鲁棒性。
前文中提出的Robdecomp模块可以在一定程度上缓解分布偏移问题。然而,去除趋势成分后, H s H_{s} Hs 可以被视为“污染的季节性成分”,因为它可能受到各种类型的噪声或异常值的污染。这是因为没有进行噪声去除或异常检测的预处理操作。一般来说,传统的解决方法是通过使用平均季节性模式来调整季节性成分以去除水平偏移。然而,现实世界中的季节性成分通常在幅度和相位上不规则地变化,这意味着以往的方法会导致对季节性成分中复杂信息的忽略。
为了在不牺牲信息利用的情况下提取稳健的季节性成分,作者提出通过逐步学习数据依赖的权重来调整“污染的季节性成分”,以调整季节性成分中相同相位位置的观测值。
首先,假设
T
T
T 是周期长度,注意如果有多个潜在的周期长度,选择最大的一个。数学上,对于分解后的季节性序列
{
(
H
s
)
1
,
H
s
)
2
,
.
.
.
,
H
s
)
N
}
\{ (H_{s})_{1},H_{s})_{2},...,H_{s})_{N} \}
{(Hs)1,Hs)2,...,Hs)N},可以按如下方式调整序列:
H
~
=
{
(
H
s
)
N
N
≦
T
∑
k
=
0
K
ω
τ
k
(
H
s
)
N
−
k
T
N
>
T
,
ω
τ
0
,
.
.
.
,
ω
τ
k
=
Softmax
(
L
(
H
)
)
,
\widetilde{H} = \begin{cases} (H_{s})_{N} &\text{} N \leqq T \\ \sum_{k=0}^{K}\omega_{\tau_{k}}(H_{s})_{N-kT} &\text{} N \gt T, \end{cases}\\ \omega_{\tau_{0}},...,\omega_{\tau_{k}}=\textup{Softmax}(L(H)),
H
={(Hs)N∑k=0Kωτk(Hs)N−kTN≦TN>T,ωτ0,...,ωτk=Softmax(L(H)),
其中,
H
~
\widetilde{H}
H
是调整后的季节性成分,
Softmax
(
L
(
H
)
)
\textup{Softmax}(L(H))
Softmax(L(H)) 是用于组合相关观测值以调整分解后的季节性序列中每个值的可学习权重。需要注意的是,在 LTTF 条件下,输入序列 N 的长度通常接近周期长度,因此可以根据编码器或解码器中的分解块数量来等分 T,以提高该方法的可用性,因为移动平均法具有叠加效果。这意味着,如果解码器中的分解块数量为 M,可以使用
⌈
T
/
M
⌉
\lceil T/M \rceil
⌈T/M⌉ 而不是参数T来调整季节性成分。详细描述可以见算法2。
受益于对相同相位位置观测值的约束,季节性成分调整模块可以在一定程度上减轻水平偏移和异常值的干扰,从而使 Transformer 能够进行更准确的预测。