Crossformer_Transformer

文章目录

  • 摘要
  • 1 引言
  • 2 相关工作
    • 多变量时间序列预测
    • 基于Transformer的MTS预测
    • 视觉Transformers
  • 3 方法
        • 详细解释
    • 3.1 维度-分段-方式嵌入
    • 3.2 两阶段注意力层
      • 跨时间阶段
      • 跨维度阶段
    • 3.3 分层编码器-解码器
      • 编码器
      • 解码器

摘要

最近,许多深度模型被提用于多变量时间序列(MTS)预测。特别是,基于Transformer的模型展示了巨大的潜力,因为它们能够捕捉长期依赖性。然而,现有的基于Transformer的模型主要集中于建模时间依赖性(跨时间依赖性),却常常忽略了不同变量之间的依赖性(跨维度依赖性),而这对于MTS预测至关重要。为了解决这一问题,我们提出了Crossformer,这是一种利用跨维度依赖性的基于Transformer的MTS预测模型。在Crossformer中,输入的MTS通过维度-分段-方式(DSW)嵌入被嵌入到二维向量数组中,以保留时间和维度信息。然后,提出了两阶段注意力(TSA)层,以有效捕捉跨时间和跨维度依赖性。通过利用DSW嵌入和TSA层,Crossformer在不同尺度上建立了一个分层编码器-解码器(HED),以在最终预测中使用信息。广泛的实验结果表明,Crossformer在六个真实世界数据集上的有效性,优于之前的最新技术。

1 引言

多变量时间序列(MTS)是具有多个维度的时间序列,每个维度代表一个特定的单变量时间序列(例如,天气的某个气候特征)。MTS预测旨在利用历史数据预测MTS的未来值。MTS预测有助于下游任务的决策,在包括天气(Angryk等,2020)、能源(Demirel等,2012)、金融(Patton,2013)等多个领域被广泛应用。随着深度学习的发展,许多模型被提出并在MTS预测中取得了优异的表现(Lea等,2017;Qin等,2017;Flunkert等,2017;Rangapuram等,2018;Li等,2019a;Wu等,2020;Li等,2021)。其中,最近基于Transformer的模型(Li等,2019b;Zhou等,2021;Wu等,2021a;Liu等,2021a;Zhou等,2022;Chen等,2022)由于其捕捉长期时间依赖性的能力,显示出巨大的潜力。

除了跨时间依赖性外,跨维度依赖性对于MTS预测也至关重要,即,对于一个特定的维度,来自其他维度关联序列的信息可能会改善预测。例如,在预测未来温度时,不仅历史温度,而且历史风速也有助于预测。一些以前的神经模型显式地捕捉了跨维度依赖性,即在潜在特征空间中保留维度信息,并使用卷积神经网络(CNN)或图神经网络(GNN)来捕捉其依赖性(Lai等,2018;Wu等,2020;Cao等,2020)。然而,最近的基于Transformer的模型通常仅隐式地通过嵌入来利用这种依赖性。通常,基于Transformer的模型在将所有维度的时间点嵌入到一个特征向量时,尝试捕捉不同时间步之间的依赖性(如图1(b)所示)。通过这种方式,跨时间依赖性得到了很好地捕捉,但跨维度依赖性没有,这可能会限制它们的预测能力。

为了解决这一问题,我们提出了Crossformer,一种显式利用跨维度依赖性的基于Transformer的MTS预测模型。具体来说,我们设计了维度-分段-方式(DSW)嵌入来处理历史时间序列。在DSW嵌入中,每个维度的序列首先被划分成片段,然后嵌入到特征向量中。DSW嵌入的输出是一个二维向量数组,其中两个轴分别对应时间和维度。然后我们提出了两阶段注意力(TSA)层,以有效捕捉二维向量数组中的跨时间和跨维度依赖性。使用DSW嵌入和TSA层,Crossformer为预测建立了分层编码器-解码器(HED)。在HED中,每一层对应一个尺度。编码器的上层将下层输出的相邻片段合并,以在更粗的尺度上捕捉依赖性。解码器层在不同的尺度上生成预测,并将它们加总作为最终预测。

本文的贡献如下:

  1. 我们深入研究了现有的基于Transformer的MTS预测模型,发现跨维度依赖性没有得到很好利用:这些模型只是简单地将特定时间步中所有维度的数据点嵌入到一个向量中,并集中于捕捉不同时间步之间的跨时间依赖性。在没有充分、显式地挖掘和利用跨维度依赖性的情况下,它们的预测能力经验上显示有限。

  2. 我们开发了Crossformer,这是一种利用跨维度依赖性的基于Transformer的MTS预测模型。这是少数显式探索和利用跨维度依赖性的Transformer模型之一。

  3. 在六个真实世界基准上的广泛实验结果表明,我们的Crossformer模型相较于之前的最新技术的有效性。具体来说,在58种不同预测长度和指标设置中的36种情况下,Crossformer在9个比较模型中排名第一,并在51种情况下排名前二。

在这里插入图片描述
图 1 说明我们DSW嵌入

(a) 在ETTh1数据集上训练的2层Transformer的自注意力分数,显示MTS数据趋向于被分段。

(b) 以前基于Transformer模型的嵌入方法(Li等,2019b;Zhou等,2021;Wu等,2021a;Liu等,2021a):不同维度在同一时间步的数据点被嵌入到一个向量中。

© Crossformer的DSW嵌入:在每个维度中,时间上的相邻点形成一个片段用于嵌入。

2 相关工作

多变量时间序列预测

MTS预测模型大致可分为统计模型和神经模型。向量自回归(VAR)模型(Kilian & Lütkepohl,2017)和向量自回归移动平均(VARMA)是典型的统计模型,这些模型假设线性跨维度和跨时间依赖性。随着深度学习的发展,许多神经模型被提出,并且经常显示出优于统计模型的表现。例如,TCN(Lea等,2017)和DeepAR(Flunkert等,2017)将MTS数据视为向量序列,并使用CNN/RNN捕捉时间依赖性。LSTNet(Lai等,2018)使用CNN捕捉跨维度依赖性,使用RNN捕捉跨时间依赖性。另一类工作使用图神经网络(GNNs)显式捕捉跨维度依赖性(Li等,2018;Yu等,2018;Cao等,2020;Wu等,2020)。例如,MTGNN(Wu等,2020)使用时间卷积和图卷积层捕捉跨时间和跨维度依赖性。这些神经模型通过CNN或RNN捕捉跨时间依赖性,但在建模长期依赖性方面存在困难。

基于Transformer的MTS预测

Transformers(Vaswani等,2017)在自然语言处理(NLP)、计算机视觉(CV)和语音处理等领域取得了成功。最近,许多基于Transformer的模型被提出用于MTS预测,并显示出巨大的潜力(Li等,2019b;Zhou等,2021;Wu等,2021a;Liu等,2021a;Zhou等,2022;Du等,2022)。例如,LogTrans(Li等,2019b)提出了减少Transformer计算复杂性的LogSparse注意力机制,从 (O(L^2)) 降到 (O(L(\log L)^2))。Informer(Zhou等,2021)利用稀疏注意力通过KL散度估计,并提出了实现 (O(L\log L)) 复杂性的ProbSparse自注意力机制。Autoformer(Wu等,2021a)引入了一种带有自动相关机制的分解架构,也实现了 (O(L\log L)) 复杂性。Pyraformer(Liu等,2021a)引入了一个金字塔注意力模块,该模块总结了不同分辨率和范围的特征。FEDformer(Zhou等,2022)提出时间序列具有稀疏表示,并开发了一种频率增强Transformer,复杂性为 (O(L))。Preformer(Du等,2022)将嵌入的特征向量序列划分为段,并利用分段相关性基于注意力机制进行预测。这些模型主要集中于降低跨时间依赖性建模的复杂性,但忽略了对MTS预测至关重要的跨维度依赖性。

视觉Transformers

Transformer最初应用于NLP进行序列建模,最近的工作将Transformer应用于CV任务处理图像(Dosovitskiy等,2021;Touvron等,2021;Liu等,2021b;Chen等,2021;Han等,2021)。这些工作在CV任务上取得了最先进的性能,启发了我们的工作。ViT(Dosovitskiy等,2021)是视觉Transformers的先驱之一。ViT的基本思想是将图像划分为不重叠的中等大小的块,然后将这些块重新排列成序列以输入Transformer。将图像划分为块的想法启发了我们将MTS划分为维度-分段-方式的嵌入。Swin Transformer(Liu等,2021b)在窗口内执行局部注意力以降低复杂性,并通过合并图像块建立分层特征图。读者可以参考Han等(2022)关于视觉Transformers的综合研究。

3 方法

在多变量时间序列预测中,目标是根据历史数据 x 1 : T ∈ R T × D \mathbf{x}_{1:T} \in \mathbb{R}^{T \times D} x1:TRT×D预测时间序列 x T + 1 : T + τ ∈ R τ × D \mathbf{x}_{T+1:T+\tau} \in \mathbb{R}^{\tau \times D} xT+1:T+τRτ×D的未来值,其中 τ , T \tau, T τ,T分别是未来和过去的时间步数, D > 1 D > 1 D>1是维度的数量。一个自然的假设是这些 D D D个序列是相关的(例如,天气的气候特征),这有助于提高预测的准确性。为了利用跨维度依赖性,在第 3.1 节中,我们使用维度-分段-方式(DSW)嵌入对MTS进行嵌入。在第 3.2 节中,我们提出了一种两阶段注意力(TSA)层,以有效捕捉嵌入片段之间的依赖性。在第 3.3 节中,使用DSW嵌入和TSA层,我们构建了一个分层编码器-解码器(HED),以在最终预测中利用不同尺度的信息。

详细解释

在多变量时间序列预测中,目标是根据历史数据 x 1 : T ∈ R T × D \mathbf{x}_{1:T} \in \mathbb{R}^{T \times D} x1:TRT×D预测时间序列 x T + 1 : T + τ ∈ R τ × D \mathbf{x}_{T+1:T+\tau} \in \mathbb{R}^{\tau \times D} xT+1:T+τRτ×D的未来值,其中 τ \tau τ T T T分别表示未来和过去的时间步数, D > 1 D > 1 D>1是维度的数量。一个自然的假设是这些 D D D个序列是相关的(例如,天气的气候特征),这有助于提高预测的准确性。

为了利用跨维度依赖性,在第 3.1 节中,我们使用维度-分段-方式(DSW)嵌入对多变量时间序列(MTS)进行嵌入。在第 3.2 节中,我们提出了一种两阶段注意力(TSA)层,以有效捕捉嵌入片段之间的依赖性。在第 3.3 节中,使用DSW嵌入和TSA层,我们构建了一个分层编码器-解码器(HED),以在最终预测中利用不同尺度的信息。

以下是各部分的详细解释:

  1. 维度-分段-方式(DSW)嵌入:我们将每个维度的数据划分为固定长度的片段,并将这些片段嵌入到向量空间中。这样做的目的是捕捉每个维度中的时间依赖性,同时保持不同维度的独立性。

  2. 两阶段注意力(TSA)层:为了进一步捕捉不同片段之间的依赖性,我们使用了两阶段的注意力机制。第一阶段是跨时间的注意力,它在每个维度中应用多头自注意力来捕捉时间片段之间的依赖性。第二阶段是跨维度的注意力,它通过一个路由器机制来聚合和分配不同维度之间的信息,从而降低计算复杂度。

  3. 分层编码器-解码器(HED):我们构建了一个分层结构的编码器-解码器,每一层的编码器合并相邻的时间片段,并应用TSA层以捕捉不同尺度的依赖性。解码器部分则使用这些编码层的输出,通过多头自注意力和线性投影,逐层生成预测值,并将这些预测值加总以获得最终的预测结果。

这个方法的核心在于通过多层次的处理,充分利用不同时间尺度和不同维度的信息,提高了多变量时间序列预测的准确性。

3.1 维度-分段-方式嵌入

为了激发我们的方法,我们首先分析了以前基于Transformer的MTS预测模型的嵌入方法(Zhou等,2021;Wu等,2021a;Liu等,2021a;Zhou等,2022)。如图 1(b) 所示,现有方法在同一时间步中将不同维度的数据点嵌入到一个向量中: x t → h t , x t ∈ R D , h t ∈ R d m o d e l \mathbf{x}_t \rightarrow \mathbf{h}_t, \mathbf{x}_t \in \mathbb{R}^D, \mathbf{h}_t \in \mathbb{R}^{d_{model}} xtht,xtRD,htRdmodel,其中 x t \mathbf{x}_t xt代表第 t t t步中 D D D维度的所有数据点。通过这种方式,输入 x 1 : T \mathbf{x}_{1:T} x1:T被嵌入到 T T T个向量 { h 1 , h 2 , … , h T } \{\mathbf{h}_1, \mathbf{h}_2, \ldots, \mathbf{h}_T\} {h1,h2,,hT}中。然后捕捉这 T T T个向量之间的依赖性用于预测。因此,之前基于Transformer的方法主要捕捉跨时间依赖性,而跨维度依赖性在嵌入过程中没有得到显式捕捉,限制了它们的预测能力。

Transformer 最初是为NLP开发的(Vaswani等,2017),其中每个嵌入向量表示一个信息丰富的词语。对于MTS,一个单独的数值在时间域中提供的信息很少。虽然它在时间域中与相邻值形成信息模式,但图1(a) 显示了原始Transformer在MTS预测中的典型注意力分数图。我们可以看到,注意力值有分段的趋势,即相邻数据点有相似的注意力权重。

基于上述两点,我们认为一个嵌入向量应该表示单个维度的序列片段(图1©),而不是单个时间步中所有维度的值。为此,我们提出了维度-分段-方式(DSW)嵌入,其中每个维度中的点被划分为长度为 L s e g L_{seg} Lseg的片段,然后进行嵌入:

x 1 : T = { x i , d ( s ) ∣ 1 ≤ i ≤ T L s e g , 1 ≤ d ≤ D } \mathbf{x}_{1:T} = \left\{\mathbf{x}_{i,d}^{(s)} | 1 \leq i \leq \frac{T}{L_{seg}}, 1 \leq d \leq D \right\} x1:T={xi,d(s)∣1iLsegT,1dD}

x i , d ( s ) = { x t , d ∣ ( i − 1 ) ⋅ L s e g < t ≤ i ⋅ L s e g } \mathbf{x}_{i,d}^{(s)} = \left\{\mathbf{x}_{t,d} | (i-1) \cdot L_{seg} < t \leq i \cdot L_{seg} \right\} xi,d(s)={xt,d(i1)Lseg<tiLseg}

其中 x i , d ( s ) ∈ R L s e g \mathbf{x}_{i,d}^{(s)} \in \mathbb{R}^{L_{seg}} xi,d(s)RLseg是维度 d d d中第 i i i个片段,长度为 L s e g L_{seg} Lseg。为了方便,我们假设 T , τ T, \tau T,τ可以被 L s e g L_{seg} Lseg整除。然后每个片段使用线性投影加上位置嵌入进行嵌入:

h i , d = E x i , d ( s ) + E i , d ( p o s ) \mathbf{h}_{i,d} = \mathbf{E}\mathbf{x}_{i,d}^{(s)} + \mathbf{E}_{i,d}^{(pos)} hi,d=Exi,d(s)+Ei,d(pos)

其中 E ∈ R d m o d e l × L s e g \mathbf{E} \in \mathbb{R}^{d_{model} \times L_{seg}} ERdmodel×Lseg表示可学习的投影矩阵, E i , d ( p o s ) ∈ R d m o d e l \mathbf{E}_{i,d}^{(pos)} \in \mathbb{R}^{d_{model}} Ei,d(pos)Rdmodel表示位置 ( i , d ) (i,d) (i,d)的可学习位置嵌入。嵌入后,我们得到一个二维向量数组:

H = { h i , d ∣ 1 ≤ i ≤ T L s e g , 1 ≤ d ≤ D } \mathbf{H} = \left\{ \mathbf{h}_{i,d} | 1 \leq i \leq \frac{T}{L_{seg}}, 1 \leq d \leq D \right\} H={hi,d∣1iLsegT,1dD}

其中每个 h i , d \mathbf{h}_{i,d} hi,d代表一个单变量时间序列片段。分段的思想也被用于Du等(2022),他们将嵌入的一维向量序列分段以计算片段相关性,从而增强局部性并减少计算复杂性。然而,与其他用于MTS预测的Transformers类似,它并未显式捕捉跨维度依赖性。

在这里插入图片描述 图2:TSA层

(a) 两阶段注意力层处理表示多变量时间序列的二维向量数组:每个向量对应原始序列的一个片段。整个向量数组通过跨时间阶段和跨维度阶段获取相应的依赖关系。

(b) 在跨维度阶段直接使用MSA构建维度到维度的连接导致 O ( D 2 ) O(D^2) O(D2) 的复杂度。

© 跨维度阶段的路由器机制:少量固定数量(c)的“路由器”从所有维度收集信息,然后分配收集的信息。复杂度降低为 O ( 2 c D ) = O ( D ) O(2cD) = O(D) O(2cD)=O(D)

3.2 两阶段注意力层

对于获得的二维数组 H \mathbf{H} H,可以将其展平为一维序列,从而可以将其输入到像ViT(Dosovitskiy等,2021)这样的标准Transformer中。我们有以下具体考虑:

  1. 与高度和宽度轴可以互换的图像不同,MTS的时间和维度轴具有不同的意义,因此应区别对待。
  2. 在二维数组上直接应用自注意力会导致复杂度为 O ( D 2 T 2 L s e g 2 ) O(D^2 \frac{T^2}{L_{seg}^2}) O(D2Lseg2T2),对于较大的 D D D是不可承受的。因此,我们提出了两阶段注意力(TSA)层,以捕捉二维向量数组中的跨时间和跨维度依赖性,如图2(a)所示。

跨时间阶段

给定一个二维数组 Z ∈ R L × D × d m o d e l \mathbf{Z} \in \mathbb{R}^{L \times D \times d_{model}} ZRL×D×dmodel作为TSA层的输入,其中 L L L D D D分别是片段数和维度数。这里的 Z \mathbf{Z} Z可以是DSW嵌入或下层TSA层的输出。为了方便,以下我们用 Z i , : \mathbf{Z}_{i,:} Zi,:表示第 i i i时间步中所有维度的向量。在跨时间阶段,我们直接对每个维度应用多头自注意力(MSA):

Z ^ : , d t i m e = LayerNorm ( Z : , d + MSA t i m e ( Z : , d , Z : , d , Z : , d ) ) \hat{\mathbf{Z}}_{:,d}^{time} = \text{LayerNorm}(\mathbf{Z}_{:,d} + \text{MSA}^{time}(\mathbf{Z}_{:,d}, \mathbf{Z}_{:,d}, \mathbf{Z}_{:,d})) Z^:,dtime=LayerNorm(Z:,d+MSAtime(Z:,d,Z:,d,Z:,d))

Z t i m e = LayerNorm ( Z ^ t i m e + MLP ( Z ^ t i m e ) ) \mathbf{Z}^{time} = \text{LayerNorm}(\hat{\mathbf{Z}}^{time} + \text{MLP}(\hat{\mathbf{Z}}^{time})) Ztime=LayerNorm(Z^time+MLP(Z^time))

其中 1 ≤ d ≤ D 1 \leq d \leq D 1dD LayerNorm \text{LayerNorm} LayerNorm表示层归一化, MLP \text{MLP} MLP表示多层感知器(在本文中为两层), MSA ( Q , K , V ) \text{MSA}(\mathbf{Q}, \mathbf{K}, \mathbf{V}) MSA(Q,K,V)表示多头自注意力层,其中 Q , K , V \mathbf{Q}, \mathbf{K}, \mathbf{V} Q,K,V分别作为查询、键和值。所有维度( 1 ≤ d ≤ D 1 \leq d \leq D 1dD)共享相同的MSA层。 Z ^ t i m e , Z t i m e \hat{\mathbf{Z}}^{time}, \mathbf{Z}^{time} Z^time,Ztime分别表示MSA和MLP的输出。

跨时间阶段的计算复杂度为 O ( D L 2 ) O(DL^2) O(DL2)。在这一阶段之后,捕捉到相同维度中时间片段之间的依赖性,被包含在 Z t i m e \mathbf{Z}^{time} Ztime中。然后 Z t i m e \mathbf{Z}^{time} Ztime成为跨维度阶段的输入,以捕捉跨维度依赖性。

跨维度阶段

在DSW嵌入中使用较大的 L s e g L_{seg} Lseg可以减少跨时间阶段中的片段数 L L L。然而在跨维度阶段,我们不能将维度分段并直接应用MSA,这将导致复杂度为 O ( D 2 ) O(D^2) O(D2)(如图2(b)所示),对于具有大 D D D的数据集是不可承受的。因此,我们提出了用于潜在大 D D D的路由器机制。如下图2©所示,我们设置了一个可学习的向量数组作为路由器。首先,这些路由器从所有维度聚合消息,并将路由器作为查询,所有维度的向量作为键和值,使用MSA进行计算。然后,路由器使用维度的向量作为查询,并将聚合的消息作为键和值,构建所有维度之间的全连接:

B i , : = MSA 1 d i m ( R i , : , : , Z i , : t i m e , Z i , : t i m e ) , 1 ≤ i ≤ L \mathbf{B}_{i,:} = \text{MSA}_1^{dim}(\mathbf{R}_{i,:,:}, \mathbf{Z}_{i,:}^{time}, \mathbf{Z}_{i,:}^{time}), \quad 1 \leq i \leq L Bi,:=MSA1dim(Ri,:,:,Zi,:time,Zi,:time),1iL

Z ˉ i , : d i m = MSA 2 d i m ( Z i , : t i m e , B i , : , B i , : ) , 1 ≤ i ≤ L \bar{\mathbf{Z}}_{i,:}^{dim} = \text{MSA}_2^{dim}(\mathbf{Z}_{i,:}^{time}, \mathbf{B}_{i,:}, \mathbf{B}_{i,:}), \quad 1 \leq i \leq L Zˉi,:dim=MSA2dim(Zi,:time,Bi,:,Bi,:),1iL

Z ^ d i m = LayerNorm ( Z t i m e + Z ˉ d i m ) \hat{\mathbf{Z}}^{dim} = \text{LayerNorm}(\mathbf{Z}^{time} + \bar{\mathbf{Z}}^{dim}) Z^dim=LayerNorm(Ztime+Zˉdim)

Z d i m = LayerNorm ( Z ^ d i m + MLP ( Z ^ d i m ) ) \mathbf{Z}^{dim} = \text{LayerNorm}(\hat{\mathbf{Z}}^{dim} + \text{MLP}(\hat{\mathbf{Z}}^{dim})) Zdim=LayerNorm(Z^dim+MLP(Z^dim))

其中 R ∈ R L × c × d m o d e l \mathbf{R} \in \mathbb{R}^{L \times c \times d_{model}} RRL×c×dmodel是作为路由器的可学习向量数组, B ∈ R L × c × d m o d e l \mathbf{B} \in \mathbb{R}^{L \times c \times d_{model}} BRL×c×dmodel是从所有维度聚合的消息。 Z ˉ , Z ^ , Z \bar{\mathbf{Z}}, \hat{\mathbf{Z}}, \mathbf{Z} Zˉ,Z^,Z分别表示路由器机制的输出、跳过连接和MLP的输出。所有时间步( 1 ≤ i ≤ L 1 \leq i \leq L 1iL)共享相同的 MSA 1 d i m \text{MSA}_1^{dim} MSA1dim, MSA 2 d i m \text{MSA}_2^{dim} MSA2dim。路由器机制将复杂度从 O ( D 2 L ) O(D^2 L) O(D2L)降低到 O ( D L ) O(DL) O(DL)

总结方程3和方程4,我们将两阶段建模为:

Y = Z d i m = TSA ( Z ) \mathbf{Y} = \mathbf{Z}^{dim} = \text{TSA}(\mathbf{Z}) Y=Zdim=TSA(Z)

其中, Z , Y ∈ R L × D × d m o d e l \mathbf{Z}, \mathbf{Y} \in \mathbb{R}^{L \times D \times d_{model}} Z,YRL×D×dmodel分别表示TSA层的输入和输出向量数组。注意,TSA层的总计算复杂度为 O ( D L 2 + D L ) = O ( D L 2 ) O(DL^2 + DL) = O(DL^2) O(DL2+DL)=O(DL2)。在跨时间和跨维度阶段之后, Z \mathbf{Z} Z中的每两个片段(例如 Z i 1 , d 1 , Z i 2 , d 2 \mathbf{Z}_{i1,d1}, \mathbf{Z}_{i2,d2} Zi1,d1,Zi2,d2)被连接,因此在 Y \mathbf{Y} Y中捕捉到跨时间和跨维度依赖性。

在这里插入图片描述
图 3:Crossformer中分层编码器-解码器的架构

该图显示了Crossformer中具有3个编码层的分层编码器-解码器的架构。每个向量的长度表示覆盖的时间范围。编码器(左侧)使用TSA层和片段合并以在不同的尺度上捕捉依赖关系:上层的向量覆盖更长的范围,导致在更粗糙的尺度上捕捉依赖关系。通过探索不同的尺度,解码器(右侧)通过在每个尺度上进行预测并将它们相加来生成最终预测。

3.3 分层编码器-解码器

分层结构在Transformers中广泛用于MTS预测,以在不同尺度上捕捉信息(Zhou等,2021;Liu等,2021a)。在本节中,我们使用提出的DSW嵌入、TSA层和片段合并构建了一个分层编码器-解码器(HED)。如图3所示,上层利用较粗尺度的信息进行预测。不同尺度上的预测值被加和以输出最终结果。

编码器

在编码器的每一层(除了第一层)中,时间域中的每两个相邻向量合并,以在更粗的层次上获得表示。然后,在该尺度上应用TSA层以捕捉依赖关系。此过程建模为 Z e n c , l = Encoder ( Z e n c , l − 1 ) \mathbf{Z}_{enc,l} = \text{Encoder}(\mathbf{Z}_{enc,l-1}) Zenc,l=Encoder(Zenc,l1)

{ l = 1 : Z ^ e n c , l = H l > 1 : Z ^ e n c , l , i , d = M [ Z e n c , l − 1 , 2 i − 1 , d , Z e n c , l − 1 , 2 i , d ] , 1 ≤ i ≤ L l − 1 2 , 1 ≤ d ≤ D \begin{cases} l = 1: & \hat{\mathbf{Z}}_{enc,l} = \mathbf{H} \\ l > 1: & \hat{\mathbf{Z}}_{enc,l,i,d} = \mathbf{M}[\mathbf{Z}_{enc,l-1,2i-1,d}, \mathbf{Z}_{enc,l-1,2i,d}], 1 \leq i \leq \frac{L_{l-1}}{2}, 1 \leq d \leq D \end{cases} {l=1:l>1:Z^enc,l=HZ^enc,l,i,d=M[Zenc,l1,2i1,d,Zenc,l1,2i,d],1i2Ll1,1dD

Z e n c , l = TSA ( Z ^ e n c , l ) \mathbf{Z}_{enc,l} = \text{TSA}(\hat{\mathbf{Z}}_{enc,l}) Zenc,l=TSA(Z^enc,l)

其中 H \mathbf{H} H表示通过DSW嵌入获得的二维数组; Z e n c , l \mathbf{Z}_{enc,l} Zenc,l表示第 l l l个编码层的输出; M ∈ R d m o d e l × 2 d m o d e l \mathbf{M} \in \mathbb{R}^{d_{model} \times 2d_{model}} MRdmodel×2dmodel表示用于片段合并的可学习矩阵; [ ⋅ ] [\cdot] []表示连接操作; L l − 1 L_{l-1} Ll1表示第 l − 1 l-1 l1层中每个维度中的片段数,如果不能被2整除,我们将 Z e n c , l − 1 \mathbf{Z}_{enc,l-1} Zenc,l1填充到适当的长度; Z ^ e n c , l \hat{\mathbf{Z}}_{enc,l} Z^enc,l表示第 l l l层中的片段合并后的数组。假设编码器中有 N N N层,我们使用 Z e n c , 0 , Z e n c , 1 , … , Z e n c , N ( Z e n c , 0 = H ) \mathbf{Z}_{enc,0}, \mathbf{Z}_{enc,1}, \ldots, \mathbf{Z}_{enc,N} (\mathbf{Z}_{enc,0} = \mathbf{H}) Zenc,0,Zenc,1,,Zenc,N(Zenc,0=H)表示编码器的 N + 1 N + 1 N+1个输出。每个编码层的复杂度为 O ( D T 2 L s e g 2 ) O(D \frac{T^2}{L_{seg}^2}) O(DLseg2T2)

解码器

通过编码器获得 N + 1 N + 1 N+1个特征数组后,我们使用 N + 1 N + 1 N+1层(从0到 N N N)的解码器进行预测。第 l l l层以第 l l l层编码数组作为输入,然后输出第 l l l层的解码二维数组。此过程总结如下:

{ l = 0 : Z ^ d e c , l = TSA ( E ( d e c ) ) l > 0 : Z ^ d e c , l = TSA ( Z d e c , l − 1 ) \begin{cases} l = 0: & \hat{\mathbf{Z}}_{dec,l} = \text{TSA}(\mathbf{E}^{(dec)}) \\ l > 0: & \hat{\mathbf{Z}}_{dec,l} = \text{TSA}(\mathbf{Z}_{dec,l-1}) \end{cases} {l=0:l>0:Z^dec,l=TSA(E(dec))Z^dec,l=TSA(Zdec,l1)

Z d e c , l , i , d = MSA ( Z ^ d e c , l , d , Z e n c , l , d , Z e n c , l , d ) , 1 ≤ d ≤ D \mathbf{Z}_{dec,l,i,d} = \text{MSA}(\hat{\mathbf{Z}}_{dec,l,d}, \mathbf{Z}_{enc,l,d}, \mathbf{Z}_{enc,l,d}), 1 \leq d \leq D Zdec,l,i,d=MSA(Z^dec,l,d,Zenc,l,d,Zenc,l,d),1dD

Z ^ d e c , l = LayerNorm ( Z d e c , l + Z ^ d e c , l ) \hat{\mathbf{Z}}_{dec,l} = \text{LayerNorm}(\mathbf{Z}_{dec,l} + \hat{\mathbf{Z}}_{dec,l}) Z^dec,l=LayerNorm(Zdec,l+Z^dec,l)

Z d e c , l = LayerNorm ( Z ^ d e c , l + MLP ( Z ^ d e c , l ) ) \mathbf{Z}_{dec,l} = \text{LayerNorm}(\hat{\mathbf{Z}}_{dec,l} + \text{MLP}(\hat{\mathbf{Z}}_{dec,l})) Zdec,l=LayerNorm(Z^dec,l+MLP(Z^dec,l))

其中 E ( d e c ) ∈ R τ L s e g × D × d m o d e l \mathbf{E}^{(dec)} \in \mathbb{R}^{\frac{\tau}{L_{seg}} \times D \times d_{model}} E(dec)RLsegτ×D×dmodel表示解码器的可学习位置嵌入; Z ^ d e c , l \hat{\mathbf{Z}}_{dec,l} Z^dec,l是TSA的输出;MSA层以 Z ^ d e c , l , d \hat{\mathbf{Z}}_{dec,l,d} Z^dec,l,d作为查询, Z e n c , l , d \mathbf{Z}_{enc,l,d} Zenc,l,d作为键和值,构建编码器和解码器之间的连接。MSA的输出表示为 Z d e c , l , i , d \mathbf{Z}_{dec,l,i,d} Zdec,l,i,d Z ^ d e c , l , Z d e c , l \hat{\mathbf{Z}}_{dec,l}, \mathbf{Z}_{dec,l} Z^dec,l,Zdec,l分别表示跳过连接和MLP的输出。我们使用 Z d e c , 0 , Z e n c , 1 , … , Z d e c , N \mathbf{Z}_{dec,0}, \mathbf{Z}_{enc,1}, \ldots, \mathbf{Z}_{dec,N} Zdec,0,Zenc,1,,Zdec,N表示解码器输出。每个解码层的复杂度为 O ( D τ ( T + τ ) L s e g 2 ) O(D \frac{\tau(T+\tau)}{L_{seg}^2}) O(DLseg2τ(T+τ))

线性投影应用于每层的输出以生成该层的预测。层预测的值被加总以生成最终预测:

x i , d ( s ) , l = W l Z i , d d e c , l , 1 ≤ i ≤ τ L s e g , 1 ≤ d ≤ D \mathbf{x}_{i,d}^{(s),l} = \mathbf{W}^l \mathbf{Z}_{i,d}^{dec,l}, \quad 1 \leq i \leq \frac{\tau}{L_{seg}}, 1 \leq d \leq D xi,d(s),l=WlZi,ddec,l,1iLsegτ,1dD

x T + 1 : T + τ p r e d , l = ∑ l = 0 N x T + 1 : T + τ p r e d , l \mathbf{x}_{T+1:T+\tau}^{pred,l} = \sum_{l=0}^N \mathbf{x}_{T+1:T+\tau}^{pred,l} xT+1:T+τpred,l=l=0NxT+1:T+τpred,l

其中 W l ∈ R L s e g × d m o d e l \mathbf{W}^l \in \mathbb{R}^{L_{seg} \times d_{model}} WlRLseg×dmodel是一个可学习矩阵,将向量投影到时间序列片段。每层中的所有片段 x i , d ( s ) , l ∈ R L s e g \mathbf{x}_{i,d}^{(s),l} \in \mathbb{R}^{L_{seg}} xi,d(s),lRLseg被重新排列以获得该层的预测 x T + 1 : T + τ p r e d , l \mathbf{x}_{T+1:T+\tau}^{pred,l} xT+1:T+τpred,l。所有层的预测值相加以获得最终预测 x T + 1 : T + τ p r e d \mathbf{x}_{T+1:T+\tau}^{pred} xT+1:T+τpred

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/780571.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Pyserial设置缓冲区大小失败

文章目录 问题描述原因分析解决方案 问题描述 使用set_buffer_size()设置缓冲区大小后&#xff0c;buffer size仍为默认的4096 import time import serial ser serial.Serial(baudrate9600, timeout0.5) ser.port COM1 ser.set_buffer_size(rx_size8192) ser.open() while …

无线传感器网络(物联网通信技术)期末考试2024年真题

目录 WSN期末复习资料 第一章&#xff1a;概述 第二章MAC协议 第三章路由协议 第四章时间同步技术 第五章定位技术 第六章安全技术 第七章拓扑控制 补充TPSN、HRTS公式推导 2024年期末考试考点 一、简述 二、考试真题回忆 WSN期末复习资料 第一章&#xff1a;概述 …

基于SpringBoot的校园台球厅人员与设备管理系统

本系统是要设计一个校园台球厅人员与设备管理系统&#xff0c;这个系统能够满足校园台球厅人员与设备的管理及用户的校园台球厅人员与设备管理功能。系统的主要功能包括首页、个人中心、用户管理、会员账号管理、会员充值管理、球桌信息管理、会员预约管理、普通预约管理、留言…

15集终于编译成功了-了个球!编译TFLite Micro语音识别工程-《MCU嵌入式AI开发笔记》

15集终于编译成功了-个球&#xff01;编译TFLite Micro语音识别工程-《MCU嵌入式AI开发笔记》 还是参考这个官方文档&#xff1a; https://codelabs.developers.google.cn/codelabs/sparkfun-tensorflow#2 全是干货&#xff01; 这里面提到的这个Micro工程已经移开了&#xff1…

第一节 网络安全概述

一.网络空间安全 网络空间&#xff1a;一个由信息基础设施组成相互依赖的网络。 ---- 海陆空天&#xff08;大海、陆 地、天空、航天&#xff09; 通信保密阶段 ---- 计算机安全 ----- 信息系统安全 ----- 网络空间安全 计算机安全&#xff1a;开始秉持着“严于律己&#x…

数据结构速成--图

由于是速成专题&#xff0c;因此内容不会十分全面&#xff0c;只会涵盖考试重点&#xff0c;各学校课程要求不同 &#xff0c;大家可以按照考纲复习&#xff0c;不全面的内容&#xff0c;可以看一下小编主页数据结构初阶的内容&#xff0c;找到对应专题详细学习一下。 目录 …

设计模式之状态机模式

一、状态机模式介绍 状态机模式&#xff08;State Machine Pattern&#xff09;是一种用于描述对象行为的软件设计模式&#xff0c;属于行为型设计模式。在状态机模式中&#xff0c;对象的行为取决于其内部状态&#xff0c;并且在不同的状态下&#xff0c;对象可能会有不同的行…

增强安全防护,解读智慧校园系统的登录日志功能

在构建智慧校园系统时&#xff0c;登录日志功能扮演着不可或缺的角色&#xff0c;它不仅是系统安全的守护者&#xff0c;也是提升管理效率和确保合规性的有力工具。这一机制详细记录每次登录尝试的方方面面&#xff0c;涵盖了时间戳、用户身份、登录来源的IP地址乃至使用的设备…

第2集《修习止观坐禅法要》

请打开补充讲表第一面&#xff0c;附表一、念佛摄心方便法。 我们前面讲到修止&#xff0c;就是善取所缘境的相貌&#xff0c;然后心于所缘&#xff0c;专一安住&#xff1b;心于所缘&#xff0c;相续安住&#xff1b;达到心一境性的目的。 站在修学净土的角度&#xff0c;他…

Ubuntu 20.04下多版本CUDA的安装与切换 超详细教程

目录 前言一、安装 CUDA1.找到所需版本对应命令2.下载 .run 文件3.安装 CUDA4.配置环境变量4.1 写入环境变量4.2 软连接 5.验证安装 二、安装 cudnn1.下载 cudnn2.解压文件3.替换文件4.验证安装 三、切换 CUDA 版本1.切换版本2.检查版本 前言 当我们复现代码时&#xff0c;总会…

如何监控和分析 PostgreSQL 中的查询执行计划?

文章目录 一、为什么监控和分析查询执行计划很重要二、PostgreSQL 中用于获取查询执行计划的方法三、理解查询执行计划的关键元素四、通过示例分析查询执行计划五、优化查询执行计划的常见策略六、使用工具辅助分析七、结合实际案例的详细分析八、总结 在 PostgreSQL 数据库中&…

STM32基础篇:引脚 × 复用 × 重映射

特殊引脚与普通引脚 特殊引脚 特殊功能引脚&#xff1a;"迫于生活压力"被特化的引脚&#xff0c;即为了满足芯片运行的基本条件。 以STM32F103C8T6型号为例&#xff0c;其特殊功能引脚&#xff08;11个&#xff09;(VddVss)*3多组供电接口VDDAVSSA(A表示Analog&…

Spring IOC基于XML和注解管理Bean

IoC 是 Inversion of Control 的简写&#xff0c;译为“ 控制反转 ”&#xff0c;它不是一门技术&#xff0c;而是一种设计思想&#xff0c;是一个重要的面向对象编程法则&#xff0c;能够指导我们如何设计出 松耦合、更优良的程序。 Spring 通过 IoC 容器来管理所有 Java 对象…

前端使用Threejs加载机械臂并控制机械臂跳舞

1. 前言 在我的第一篇博客中,大致讲解了如何使用threejs导入机械臂模型,以及如何让机械臂模型动起来的案例,可以看一下之前的博客前端使用Threejs控制机械臂模型运动 本篇博客主要讲解的是在原来的基础上添加GSAP动画库的应用,可以通过动画,来让机械臂进行指定轨迹位姿的运动…

Java 使用sql查询mongodb

在现代应用开发中&#xff0c;关系型数据库和NoSQL数据库各有千秋。MongoDB作为一种流行的NoSQL数据库&#xff0c;以其灵活的文档模型和强大的扩展能力&#xff0c;受到广泛欢迎。然而&#xff0c;有时开发者可能更熟悉SQL查询语法&#xff0c;或者需要在现有系统中复用SQL查询…

STM32——Modbus协议

一、Modbus协议简介&#xff1a; 1.modbus介绍&#xff1a; Modbus是一种串行通信协议&#xff0c;是Modicon公司&#xff08;现在的施耐德电气 Schneider Electric&#xff09;于1979年为使用可编程逻辑控制器&#xff08;PLC&#xff09;通信而发表。Modbus已经成为工业领域…

代码随想录训练第十一天|二叉树基础理论、二叉树递归遍历、二叉树迭代遍历、二叉树统一迭代法、LeetCode102.二叉树层序遍历

文章目录 二叉树理论基础二叉树种类满二叉树完全二叉树二叉搜索树平衡二叉搜索树 二叉树存储方式二叉树遍历方式二叉树的定义总结 二叉树的递归遍历思路前序遍历后序遍历中序遍历 二叉树的迭代遍历思路前序遍历&#xff08;迭代法&#xff09;中序遍历&#xff08;迭代法&#…

STM32-Unix时间戳和BKP备份寄存器以及RTC实时时钟

本内容基于江协科技STM32视频学习之后整理而得。 文章目录 1. Unix时间戳1.1 Unix时间戳简介1.2 UTC/GMT1.3 时间戳转换 2. BKP备份寄存器2.1 BKP简介2.2 BKP基本结构2.3 BKP库函数 3. RTC实时时钟3.1 RTC简介3.2 RTC框图3.3 RTC基本结构3.4 硬件电路3.5 RTC操作注意事项3.6 R…

elementui中日期/时间的禁用处理,使用传值的方式

项目中,经常会用到 在一个学年或者一个学期或者某一个时间段需要做的某件事情,则我们需要在创建这个事件的时候,需要设置一定的时间周期,那这个时间周期就需要给一定的限制处理,避免用户的误操作,优化用户体验 如下:需求为,在选择学年后,学期的设置需要在学年中,且结束时间大…

C#反射基本应用

1、反射 反射是.NET Framework的一个特性&#xff0c;它允许在运行时获取类型的信息以及动态创建对象&#xff0c;调用方法&#xff0c;以及访问字段和属性。 2、代码 using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using Sy…