首页IT科技timetotakeiteasy全文翻译(A Time Series is Worth 64 Words(PatchTST模型)论文解读)

timetotakeiteasy全文翻译(A Time Series is Worth 64 Words(PatchTST模型)论文解读)

时间2025-05-05 00:45:03分类IT科技浏览3799
导读:摘要 我们提出了一种高效的基于Transformer设计的模型,用于多变量时间序列预测和自我监督表征学习(self-supervised learning)。它基于两个关键部分:1、将时间序列分隔成子序列级别的patches,作为Transformer的输入;2、独立通道(channel-...

摘要

我们提出了一种高效的基于Transformer设计的模型            ,用于多变量时间序列预测和自我监督表征学习(self-supervised learning)            。它基于两个关键部分:1            、将时间序列分隔成子序列级别的patches                  ,作为Transformer的输入;2                  、独立通道(channel-independence)      ,每个通道包含一个单一的单变量时间序列         ,它们共享相同的embedding和Transformer权重                  。设计patches有3个好处:局部序列信息被保留在embedding中;在相同的回视窗口下                  ,注意力图的计算和内存使用量呈2次方减少;模型可以关注到更长的历史信息      。我们提出的PatchTST模型(channel-independent patch time series Transformer)可以显著提高长期预测的准确性         。我们还将模型应用于自监督预训练任务         ,并取得了出色的微调性能      ,在大数据集上的表现由于监督学习                  。将一个数据集上的masked预训练结果转移到其他数据集上也能产生SOTA预测精度         。

简介

预测是时间序列分析中最重要的任务之一      。随着深度学习模型的快速发展                  ,关于这个主题的研究工作数量大大增加                  。深度模型不仅在预测任务上表现出优异的性能            ,并且在表征学习上也表现出优异的性能   ,抽象的表征可以被提取并转移到各种下游任务中                  ,如分类和异常检测               ,以达到SOTA精度            。

在深度学习模型中,Transformer在自然语言处理(NLP)      、计算机视觉(CV)         、语音以及最近的时间序列等各个领域都取得了巨大成功               ,得益于其注意力机制                  ,可以自动学习序列中元素间联系   ,因此称为序列建模任务的理想选择   。Informer                  、Autoformer和FEDformer是Transformer模型成功应用于时间序列数据的最佳变种之一                  。不幸的是            ,尽管Transformer模型设计十分复制                  ,最近的论文显示      ,一个非常简单的线性模型可以在各种常见的基准上超过之前的所有模型         ,它挑战了Transformer在时间序列预测中的适用性               。在本文中                  ,我们试图通过提出基于Transformer的PatchTST模型来解决这一问题。

Patching:时间序列预测的目的是了解每个不同时间步间相关性               。然而         ,单个时间步长并不像句子中的一个单词那样具有语义      ,因此提取局部语义信息对于分析他们之间的联系至关重要                  。以前的工作大多只使用单点(point-wise)的输入标记                  ,或者只是从系列中手动提取信息   。相比之下            ,我们通过将时间步聚集到子系列级别的patch中   ,增强了位置(locality)性                  ,并捕获了单点(point-wise)所没有的综合语义信息            。 独立通道(Channel-independence):多变量时间序列是一个多通道信号               ,每个Transformer的输入tokens可以由单通道或多通道的数据表示                  。根据输入tokens的设计特性,提出了Transformer架构的不同变体      。通道混合(Channel-mixing)值的是后一种情况               ,即输入tokens采取所有时间序列特征向量并将其投射到embedding空间以混合信息         。另一方面                  ,独立通道意味着每个输入tokens只包含来自同一通道的信息                  。这被证明在CNN和线性模型中运行良好   ,但还没有被应用到基于Transformer模型中         。

我们在下表中提供了对交通数据集的关键性研究结果            ,该数据集由862个时间点组成      。我们的模型有以下几个优点                  。

减少时空复杂度:原始的Transformer在时间和空间上都有

O

(

N

2

)

O(N^2)

O(N2)
的复杂性                  ,其中

N

N

N
是输入tokens的数量            。如果不进行预处理      ,

N

N

N
将与输入序列长度

L

L

L
具有相同的值         ,这在实践中成为计算时间和内存的主要瓶颈   。通过应用patch                  ,我们可以将

N

N

N
缩小几倍:

N

L

/

S

N \approx L/S

NL/S
         ,从而降低时间和空间复杂度                  。上表说明了patch的作用               。通过设置patch长度

P

=

16

P = 16

P=16
      ,步长

S

=

8

S = 8

S=8
                  ,

L

=

336

L = 336

L=336
            ,训练时间大大减少。 长回视窗口学习能力:上表显示   ,通过将回视窗口

L

L

L
从96增加到336                  ,MSE可以从0.518降低到0.397               。然而               ,简单地延长

L

L

L
是以较大的内存和计算量为代价的                  。由于时间序列往往带有大量的时间冗余信息,以前的一些工作试图通过采用下采样或精心设计的注意力稀疏连接来忽略部分数据点               ,模型仍然产生足够的信息来进行良好的预测   。我们研究了

L

=

380

L = 380

L=380
的情况            。时间序列每4步采样一次并将最后一个点加入序列中                  ,输入tokens数量为

N

=

96

N = 96

N=96
                 。与使用包含最近96个时间点(0.518)相比   ,该模型取得了更好的MSE得分(0.447)            ,表明即使输入tokens数量相同                  ,更长的回视窗口也能传达更重要的信息      。这让我们想到一个问题:有没有办法在保持长回视窗口的同时避免“扔掉            ”一些数据?patch是一个很好的答案         。它可以将包含类似数值的局部时间点分组      ,同时使模型能够减少输入tokens的长度         ,以利于计算                  。从上表中可以看出                  ,当

L

=

336

L = 336

L=336
时         ,通过patch      ,MSE从0.397进一步降低到0.367         。 表征学习能力:随着强大的自监督学习技术的出现                  ,需要具有多个非线性抽象层的复杂模型来捕捉数据的抽象表示      。简单的模型            ,如线性模型   ,由于其有限的可表达性                  ,可能不适合该任务                  。通过PatchTST模型               ,我们不仅证实了Transformer对时间序列是有效的,并且证明了他的表征能力可以进一步提高预测性能            。我们的PatchTST模型在上表中取得了最好的MSE(0.349)

我们在下面的章节中详细介绍了我们的方法               ,并进行了大量的实验来最终证明我们的想法   。我们不仅用超视距预测结果和消融实验证明了模型的有效性                  ,而且还实现了SOTA自监督表征学习和迁移学习                  。

相关工作

Transformer中的patch:Transformer在不同的数据模式上表现出了巨大的潜力               。在所有的应用中   ,当局部语义信息很重要时            ,patch是一个必不可少的部分。在NLP中                  ,BERT考虑了基于子词的标记化(tokenization)      ,而不是执行基于字符的标记化               。在CV方面         ,Vision Transformer是一项里程碑式的工作                  ,它将图像分割成16个patch         ,然后再送入Transformer模型                  。接下来的影响性工作      ,如BEIT和masked autoencoders都是使用patch作为输入   。同样                  ,在语音方面            ,研究人员正在使用卷积从原始音频输入中提取子序列级别的信息            。

基于Transformer的长期时间序列预测:近年来   ,有大量的工作试图应用Transformer模型来预测长期时间序列                  。我们在此总结一下其中的一些      。LogTrans使用卷积自注意力层与LogSparse设计来捕捉局部信息并降低空间复杂度         。Informer提出了一个带有蒸馏技术的ProbSparse自注意力                  ,以有效提取最重要的信息                  。Autoformer借用了传统时间序列分析方法中的分解和自相关思想         。FEDformer使用傅里叶增强结构来获得线性复杂度      。Pyraformer应用金字塔式注意力模块               ,具有尺度(inter-scale)和尺度(inter-scale)连接,也得到了线性复杂度                  。

这些模型大多侧重与设计新的机制               ,以减少原始注意力机制的复杂性                  ,从而在预测上取得更好的性能   ,特别是当预测长度较长时            。然而            ,大多数模型使用的是点式注意力                  ,忽略了patch的重要性   。LogTrans避免了key和query之间的点对点积      ,但其值仍然基于单一时间步长                  。Autoformer使用自动关联来获得patch级别的链接         ,但它是一个手工设计                  ,并不包括patch内的所有语义信息               。Triformer提出了patch attention         ,但其目的是通过一个使用伪时间戳作为patch内的query来降低复杂度      ,因此它即没有将patch作为一个输入单元                  ,也没有揭示其背后的语义重要性。

时间序列表征学习:除了监督学习            ,自监督学习也是一个重要的研究课题   ,因为它已经显示出为下游任务学习有用表征的潜力               。近年来                  ,有许多非基于Transformer的模型被提出来学习时间序列的表征                  。同时               ,Transformer被认为是对基础模型和学习通用表征的理想候选者   。然而,尽管人们已经对基于Transformer的模型进行了尝试               ,如时间序列Transformrt(TST)和TS-TCC                  ,但其潜力仍未完全发挥            。

本文方法

模型结构

我们考虑以下问题:给定一个具有回视窗口

L

L

L 的多元时间序列样本集合:

(

x

1

,

.

.

.

,

x

L

)

(x_1,...,x_L)

(x1,...,xL)
   ,其中每个

X

t

X_t

Xt
在时间步长

t

t

t
时是维度为

M

M

M
的向量            ,我们想预测

T

T

T
的未来值(

x

L

+

1

,

.

.

.

,

x

L

+

T

x_{L+1},...,x_{L+T}

xL+1,...,xL+T
)                  。我们的PatchTST如下图所示                  ,模型利用Transformer encoder作为核心结构      。

前向过程:我们把从索引1开始的长度为

L

L

L的第

i

i

i
个单变量序列表示为

x

(

i

)

=

(

x

1

(

i

)

,

.

.

.

,

x

L

(

i

)

)

x^{(i)} = (x_1^{(i)},...,x_L^{(i)})

x(i)=(x1(i),...,xL(i))
其中

i

=

1

,

.

.

.

,

M

i = 1,...,M

i=1,...,M
         。输入

(

x

1

,

.

.

.

,

x

L

)

(x_1,...,x_L)

(x1,...,xL)
被分隔成

M

M

M
个单变量序列

x

(

i

)

R

1

×

L

x^{(i)} \in R^{1 \times L}

x(i)R1×L
      ,其中每个序列都根据channel-independence设置进入Transformer网络                  。然后Transformer将提供预测结果

x

^

(

i

)

=

(

x

^

L

+

1

(

i

)

,

.

.

.

,

x

^

L

+

T

(

i

)

)

R

1

×

T

\hat{x}^{(i)} = (\hat{x}^{(i)}_{L+1},...,\hat{x}^{(i)}_{L+T}) \in R^{1 \times T}

x(i)=(xL+1(i),...,xL+T(i))R1×T

Patching:每个输入的单变量时间序列

x

(

i

)

x^{(i)}

x(i)首先被划分为patch         ,这些patch可以是重叠的                  ,也可以是非重叠的         。将patch长度记为

P

P

P
         ,将两个连续patch之间的非重叠区域记为

S

S

S
      ,那么patch过程将产生一个patch序列

x

p

(

i

)

R

P

×

N

x_p^{(i)} \in R^{P \times N}

xp(i)RP×N
其中

N

N

N
是产生的patch数量                  ,

N

=

[

(

L

P

)

S

]

+

2

N = [\frac{(L-P)}{S}]+2

N=[S(LP)]+2
      。这里            ,我们把最后一个值

x

L

(

i

)

x_L^{(i)}

xL(i)

S

S

S
个重复数字pad到原序列的末尾   ,再进行patch                  。

随着patch操作                  ,输入token数量可以从L减少到大约

L

/

S

L/S

L/S            。这意味着注意力图谱的内存使用和计算复杂度以4倍的速度下降   。因此               ,在训练时间和GPU内存限制下,patch设计可以让模型看到更长的历史序列               ,这可以显著提高模型预测性能                  。

Transformer Encoder:我们使用普通的Transformer Encoder                  ,将观察到的信号映射到潜在表征(latent representations)               。通过可训练的线性投影

W

p

R

D

×

P

W_p \in R^{D \times P}

WpRD×P   ,以及可学习的加法位置编码

W

p

o

s

R

D

×

N

W_{pos} \in R^{D \times N}

WposRD×N
            ,将patch映射到维度为D的Transformer latent空间                  ,应用于监测patch的时间顺序:

x

d

(

i

)

=

W

p

x

p

(

i

)

+

W

p

o

s

x_d^{(i)} = W_px_p^{(i)} + W_{pos}

xd(i)=Wpxp(i)+Wpos
      ,其中

x

d

(

i

)

R

D

×

N

x_d^{(i)} \in R^{D \times N}

xd(i)RD×N
表示送入Transformer encoder的输入。多头注意力

h

=

1

,

.

.

.

,

H

h = 1,...,H

h=1,...,H
         ,将他们转化为query矩阵

Q

(

i

)

=

(

x

d

(

i

)

)

T

W

h

Q

Q^{(i)} = (x_d^{(i)})^TW_{h}^{Q}

Q(i)=(xd(i))TWhQ
                 ,key矩阵

K

h

(

i

)

=

(

x

d

(

i

)

)

T

W

h

K

K_h^{(i)} = (x_d^{(i)})^TW_h^K

Kh(i)=(xd(i))TWhK
和value矩阵

h

h

(

i

)

=

(

x

d

(

i

)

)

T

W

h

V

h_h^{(i)} = (x_d^{(i)})^TW_h^V

hh(i)=(xd(i))TWhV
         ,其中

W

h

K

R

D

×

d

k

W_h^K \in R^{D \times d_k}

WhKRD×dk
      ,

W

h

V

R

D

×

D

W_h^V \in R^{D \times D}

WhVRD×D
               。之后                  ,按比例输出的方式来获得注意力输出

O

(

i

)

R

D

×

N

O^{(i)} \in R^{D \times N}

O(i)RD×N
            ,即:

(

O

h

(

i

)

)

T

=

A

t

t

e

n

t

i

o

n

(

Q

h

(

i

)

,

K

h

(

i

)

,

V

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
python3ide下载(python3.7如何调试)