论文名称:Enhancing the Locality and Breaking the Memory Bottleneck of Transformer on Time Series Forecasting
论文下载:https://arxiv.org/abs/1907.00235
论文年份:NeurIPS 2019
论文被引:257(2022/04/18)
论文代码:https://github.com/mlpotter/Transformer_Time_Series

Abstract

Time series forecasting is an important problem across many domains, including predictions of solar plant energy output, electricity consumption, and traffic jam situation. In this paper, we propose to tackle such forecasting problem with Transformer [1]. Although impressed by its performance in our preliminary study, we found its two major weaknesses: (1) locality-agnostics: the point-wise dotproduct self-attention in canonical Transformer architecture is insensitive to local context, which can make the model prone to anomalies in time series; (2) memory bottleneck: space complexity of canonical Transformer grows quadratically with sequence length L, making directly modeling long time series infeasible. In order to solve these two issues, we first propose convolutional self-attention by producing queries and keys with causal convolution so that local context can be better incorporated into attention mechanism. Then, we propose LogSparse Transformer with only

O

(

L

(

l

o

g

L

)

2

)

O(L(log L)^2)

O(L(logL)2) memory cost, improving forecasting accuracy for time series with fine granularity and strong long-term dependencies under constrained memory budget. Our experiments on both synthetic data and realworld datasets show that it compares favorably to the state-of-the-art.

【时序预测的重要性】

时间序列预测是许多领域的一个重要问题,包括太阳能发电厂的能源输出、电力消耗和交通拥堵情况的预测。

【Transformer应用于时序预测的问题】

在本文中,我们建议使用 Transformer [1] 来解决此类预测问题。尽管在我们的初步研究中对其性能印象深刻,但我们发现了它的两个主要弱点:

  • 1)局部不可知(locality-agnostics)原生的 Transformer 架构中的逐点点积自注意力对局部上下文不敏感,这会使模型容易在时间序列中出现异常
  • 2)内存瓶颈(memory bottleneck)原生的 Transformer 的空间复杂度随序列长度 L 二次增长,使得直接建模长时间序列不可行

【针对存在的问题,本文的解决方案】

  • 我们首先提出卷积自注意通过因果卷积产生查询和键,以便将局部上下文更好地纳入注意机制
  • 我们提出了只有

    O

    (

    L

    (

    l

    o

    g

    L

    )

    2

    )

    O(L(log L)^2)

    O(L(logL)2) 内存成本的 LogSparse Transformer提高了在受限内存预算下具有细粒度和强长期依赖性的时间序列的预测准确性。我们对合成数据和真实世界数据集的实验表明,它与最先进的技术相比具有优势。

1 Introduction

两个自然段,第一段介绍时间序列预测的应用,已有研究的方法和局限性。第二段介绍先进的解决方案并引出本文的解决方案。


【时间序列预测的应用】

时间序列预测在日常生活中发挥着重要作用,可以帮助人们管理资源和做出决策。例如,在零售行业,基于历史数据对产品供需进行概率预测,可以帮助人们进行库存计划以实现利润最大化。

【传统的时间序列预测模型的局限性】

尽管仍被广泛使用,但传统的时间序列预测模型,例如状态空间模型 (SSM) [2] 和自回归 (AR) 模型,旨在独立地拟合每个时间序列。此外,它们还需要从业者在手动选择趋势、季节性和其他组件方面的专业知识。综上所述,这两大弱点极大地阻碍了它们在现代大规模时间序列预测任务中的应用。

【已有研究的解决方案及其不足】

为了应对上述挑战,深度神经网络 [3-6] 已被提出作为替代解决方案,其中递归神经网络 (RNN) [7-9] 已被用于以自回归方式对时间序列进行建模。然而,众所周知,RNNs 由于梯度消失和爆炸问题而难以训练 [10]。尽管出现了各种变体,包括 LSTM [11] 和 GRU [12],但问题仍然没有得到解决。例如,[13] 表明使用 LSTM 的语言模型的有效上下文大小平均约为 200 个标记(token),但只能清晰地区分附近的 50 个标记,表明即使 LSTM 也难以捕捉长期依赖关系(long-term dependencies)。另一方面,现实世界的预测应用程序通常具有长期和短期重复模式 [7]。例如,交通数据中高速公路的每小时占用率具有每日和每小时模式。在这种情况下,如何建模长期依赖关系成为实现有希望的性能的关键步骤。


【Transformer应用于时间序列预测的优缺点】

最近,Transformer [1, 14] 被提出作为一种全新的架构,它利用注意力机制来处理一系列数据。

优点:

  • 与基于 RNN 的方法不同,Transformer 允许模型访问历史的任何部分,而不管距离如何,使其可能更适合于掌握具有长期依赖性的重复模式

缺点:

  • 然而,规范的点积自注意力将查询与对局部上下文不敏感的键匹配,这可能使模型容易出现异常并带来潜在的优化问题。
  • 更重要的是,规范 Transformer 的空间复杂度随输入长度 L 二次增长,这导致直接对细粒度的长时间序列建模时出现内存瓶颈。

【本文的贡献】

我们专门研究了这两个问题,并研究了 Transformer 在时间序列预测中的应用。我们的贡献是三方面的:

  • 我们成功地将 Transformer 架构应用于时间序列预测,并对合成数据集和真实数据集进行了广泛的实验,以验证 Transformer 在比基于 RNN 的模型更好地处理长期依赖关系方面的潜在价值。

  • 我们通过使用因果卷积(causal convolutions)在自注意力层中产生查询和键来提出卷积自注意力。知道局部上下文的查询键匹配,例如形状,可以帮助模型实现较低的训练损失并进一步提高其预测准确性。

  • 我们提出了LogSparse Transformer,只有

    O

    (

    L

    (

    l

    o

    g

    L

    )

    2

    )

    O(L(log L)^2)

    O(L(logL)2) 的空间复杂度来打破内存瓶颈,不仅使细粒度的长时间序列建模可行,而且与规范的 Transformer 相比,在内存使用量更少的情况下产生可比甚至更好的结果。


2 Related Work

三个自然段,第一段介绍传统的统计学建模方法,第二段介绍统计学和深度学习相结合的建模方法,第三段介绍自注意力相关的建模方法。


【统计学建模方法】

Model Pros and Cons
ARIMA [15] 它的统计特性以及模型选择过程中众所周知的 Box-Jenkins 方法 [16] 使其成为从业者的第一次尝试。然而,它的线性假设和有限的可扩展性使其不适用于大规模的预测任务。此外,由于每个时间序列都是单独拟合的,因此无法共享相似时间序列的信息。
[17] 将相关的时间序列数据建模为矩阵,并将预测作为矩阵分解问题处理。
[18] 从图模型的角度提出了分层贝叶斯方法来学习多个相关的计数时间序列。

【统计学和深度学习相结合的方法】

已经提出深度神经网络来捕获跨相关时间序列的共享信息以进行准确预测。

Model Pros and Cons
[3] 通过以编码器-解码器方式对概率分布进行建模,将传统的 AR 模型与 RNN 融合。
[19] 使用 RNN 作为编码器和多层感知器 (MLP) 作为解码器来解决所谓的误差累积问题并并行进行多前预测。
[6] 使用全局RNN在每个时间序列的每一步直接输出线性SSM的参数,旨在用局部线性段近似非线性动力学。
[9] 对每个时间序列使用局部高斯过程处理噪声,同时使用全局 RNN 对共享模式进行建模。
[20] 试图结合 AR 模型和 SSM 的优势,并保持复杂的潜在过程并行进行多步预测。

【自注意力相关的建模方法】

众所周知的基于自注意力的 Transformer [1] 最近被提出用于序列建模,并取得了巨大的成功。最近的几项工作将其应用于翻译、语音、音乐和图像生成 [1, 21-23]。然而,将注意力扩展到极长的序列在计算上是令人望而却步的,因为自注意力的空间复杂度与序列长度成二次增长[21]。这成为预测具有细粒度和强长期依赖性的时间序列的一个严重问题。

3 Background

两个自然段,第一段介绍了问题定义,第二段介绍Transformer。

Transformer 我们利用 Transformer 的多头自注意力机制实例化 f,因为自注意力使 Transformer 能够捕获长期和短期依赖关系,并且不同的注意力头学会关注时间模式的不同方面。这些优势使 Transformer 成为时间序列预测的良好候选者。我们在这里简要介绍其架构,并请读者参考[1]了解更多详细信息。
在这里插入图片描述
请注意,通过将所有上三角元素设置为-∞,应用掩码矩阵 M 过滤掉右向注意力,以避免未来的信息泄漏。然后将 O1, O2, · · · , OH 连接,再次线性投射。在注意力输出上,堆叠了具有两层全连接网络和中间的 ReLU 激活的位置前馈子层。

4 Methodology

4.1 Enhancing the locality of Transformer

由于各种事件,时间序列中的模式可能会随时间显着演变,例如假期和极端天气,因此观察点是异常点、变化点还是部分模式在很大程度上取决于其周围环境。然而,在原生的 Transformer 的自注意力层中,查询和键之间的相似性是基于它们的逐点值计算的,而没有充分利用像shape这样的局部上下文,如图 1(a) 和 (b) 所示。与局部上下文无关的查询键匹配可能会在观察值是异常、变化点还是模式的一部分方面混淆自注意模块,并带来潜在的优化问题

我们提出 卷积自注意力(convolutional self-attention) 来缓解这个问题。所提出的卷积自注意力的架构视图如图 1c 和 d 所示。我们不是使用kernel大小 1 与步长 1 的卷积(矩阵乘法),而是使用kernel大小 k 与步长 1 的因果卷积(causal convolution)来将输入(具有适当的填充)转换为查询和键。请注意,因果卷积确保当前位置永远无法访问未来信息。通过使用因果卷积,生成的查询和键可以更了解局部上下文,因此可以通过它们的局部上下文信息来计算它们的相似性,例如局部形状,而不是逐点值,这有助于准确预测。请注意,当 k = 1 时,卷积自注意力将退化为规范自注意力,因此可以看作是一种泛化

在这里插入图片描述

4.2 Breaking the memory bottleneck of Transformer

在这里插入图片描述
为了验证我们的方法,我们首先使用规范的 Transformer 对 Traffic-f 数据集上的学习注意力模式进行定性评估。 traffic-f 数据集包含每 20 分钟记录一次的旧金山湾区 963 条车道的占用率 [6]。我们在完全注意力的traffic-f 数据集上训练了一个 10 层的规范 Transformer,并可视化了学习的注意力模式。图 2 显示了一个示例。第 2 层清楚地展示了全局模式,但是,第 6 层和第 10 层仅表现出与模式相关的稀疏性,这表明可以引入某种形式的稀疏性而不会显着影响性能。更重要的是,对于长度为 L 的序列,计算每对单元之间的注意力分数将导致

O

(

L

2

)

O(L^2)

O(L2) 的内存使用,使得对具有细粒度和强长期依赖关系的长时间序列进行建模难以实现
在这里插入图片描述
我们提出了 LogSparse Transformer,它只需要为每一层中的每个单元计算

O

(

l

o

g

L

)

O(log L)

O(logL) 点积。此外,我们只需要堆叠

O

(

l

o

g

L

)

O(log L)

O(logL) 层,模型就可以访问每个单元的信息。因此,内存使用的总成本仅为

O

(

L

(

l

o

g

L

)

2

)

O(L(log L)^2)

O(L(logL)2) 。我们将

I

l

k

I^k_l

Ilk 定义为在从第

k

k

k 层到第

k

+

1

k + 1

k+1 层的计算过程中单元

l

l

l 可以关注的单元的索引集。在 Transformer 的标准 self-attention 中,

I

l

k

=

{

j

:

j

l

}

I^k_l= \{j : j ≤ l\}

Ilk={j:jl}允许每个单元关注其过去的所有单元和自身,如图 3(a) 所示。然而,这种算法会随着输入长度的增加而出现二次空间复杂度增长。为了缓解这样的问题,我们建议选择索引

I

l

k

{

j

:

j

l

}

I^k_l \subset \{j : j ≤ l\}

Ilk{j:jl} 的子集,以便

I

l

k

|I^k_l|

Ilk 不会随着

l

l

l 增长太快。选择索引的一种有效方法是

I

l

k

l

o

g

L

|I^k_l| \propto log L

IlklogL

请注意,单元

l

l

l 是第

k

k

k 个自注意层中由

I

l

k

I^k_l

Ilk 索引的单元的加权组合,并且可以将由

I

l

k

I^k_l

Ilk 索引的单元的信息传递给下一层的后续单元。令

S

l

k

S^k_l

Slk 为包含其信息已传递到单元 l 直到第 k 层的所有单元的索引的集合。为了确保每个单元接收到来自其之前所有单元和自身的信息,堆叠层数

k

~

l

\tilde{k}_l

k~l 应满足

S

l

k

~

l

=

{

j

:

j

l

}

S^{\tilde{k}_l}_l = \{j : j ≤ l\}

Slk~l={j:jl} 对于

l

=

1

,

2

,

.

.

.

,

L

l=1,2,...,L

l=1,2,...,L。即

l

∀l

l

j

l

j ≤ l

jl,存在一条有向路

P

j

l

=

(

j

,

p

1

,

p

2

,

.

.

.

,

l

)

P_{jl} = (j, p_1, p_2, ... , l)

Pjl=(j,p1,p2,...,l)

k

~

l

\tilde{k}_l

k~l 条边,其中

j

I

p

1

1

p

1

I

p

2

2

,

.

.

.

,

p

k

~

l

1

I

l

k

~

l

j ∈ I^1_{p_1},p1 ∈ I^2_{p_2}, ... , p_{\tilde{k}_l-1} \in I^{\tilde{k}_l}_l

jIp11p1Ip22,...,pk~l1Ilk~l

我们提出了对数稀疏自注意力(LogSparse self-attention),允许每个单元以指数步长只注意它的先前单元和它自己。即

k

∀k

k

l

l

l

I

l

k

=

{

l

2

l

o

g

2

l

,

l

2

l

o

g

2

l

1

,

l

2

l

o

g

2

l

2

,

.

.

.

,

l

2

0

,

l

}

I^k_l = \{l − 2^{\lfloor log_2 l \rfloor}, l − 2^{\lfloor log_2 l \rfloor-1}, l − 2^{\lfloor log_2 l \rfloor - 2}, ..., l − 2^0, l\}

Ilk={l2log2l,l2log2l1,l2log2l2,...,l20,l},其中

\lfloor ·\rfloor

表示向下取整操作,如图 3 (b) 所示。

定理 1:

l

∀l

l

j

l

j ≤ l

jl,如果我们堆叠

l

o

g

2

l

+

1

\lfloor log_2 l \rfloor + 1

log2l+1 层,则至少有一条从单元

j

j

j 到单元

l

l

l 的路径。此外,对于

j

<

l

j < l

j<l,从单元

j

j

j 到单元

l

l

l 的可行唯一路径的数量以

O

(

l

o

g

2

(

l

j

)

!

)

O(\lfloor log_2(l - j) \rfloor !)

O(log2(lj)!) 的速率增加
在这里插入图片描述
定理 1 意味着尽管 每一层的内存使用量呈指数下降(从

O

(

L

2

)

O(L^2)

O(L2)

O

(

L

l

o

g

2

L

)

O(L log_2 L)

O(Llog2L),但只要我们稍微“深入一点”,信息仍然可以从任何单元流向任何其他单元——假设层数为

l

o

g

2

L

+

1

\lfloor log_2 L \rfloor + 1

log2L+1 。请注意,这意味着

O

(

L

(

l

o

g

L

)

2

)

O(L(log L)^2)

O(L(logL)2) 的整体内存使用量并解决了在 GPU 内存约束下 Transformer 臭名昭著的可扩展性瓶颈(scalability bottleneck) [1]。此外,随着两个单元之间的距离越来越远,路径的数量以

l

o

g

2

(

l

j

)

log_2(l-j)

log2(lj) 中的超指数速率(rate of super-exponential)增加,这表明用于建模微妙的长期依赖关系的信息流非常丰富

局部注意力(Local Attention):我们可以让每个单元密集关注其左窗口大小为

O

(

l

o

g

2

L

)

O(log_2 L)

O(log2L) 的单元,以便获得更多局部信息,例如趋势,可用于当前步骤预测。除了相邻单元之外,我们可以恢复 LogSparse 注意力策略,如图 3© 所示。

重启注意力(Restart Attention):进一步,可以将长度为 L 的整个输入划分为子序列,并设置每个子序列的长度 Lsub ∝ L对于每个子序列,我们应用 LogSparse 注意力策略。一个例子如图 3(d) 所示。

使用局部注意力和重启注意力不会改变我们稀疏注意力策略的复杂性,但会创建更多路径并减少路径中所需的边数。请注意,可以将局部注意力和重新启动注意力结合在一起

5 Experiments

5.1 Synthetic datasets

为了展示 Transformer 捕捉长期依赖关系的能力,我们对合成数据进行了实验。具体来说,我们生成分段正弦信号:

其中

x

x

x 是一个整数,

A

1

,

A

2

,

A

3

A_1, A_2, A_3

A1,A2,A3 是在

[

0

,

60

]

[0, 60]

[0,60] 上均匀分布随机生成的,

A

4

=

m

a

x

(

A

1

,

A

2

)

A_4 = max(A_1, A_2)

A4=max(A1,A2)

N

x

N

(

0

,

1

)

N_x∼N(0, 1)

NxN(0,1)。按照第 3 节中的预测设置,我们的目标是在给定之前的

t

0

t_0

t0 个数据点的情况下预测最后 24 个时间步。直观地说,较大的

t

0

t_0

t0 使预测更加困难,因为模型需要理解和记住 A1 和 A2 之间的关系才能在

t

0

24

t_0-24

t024 步不相关信号之后做出正确的预测。因此,我们通过在 {24、48、72、96、120、144、168、192} 内改变

t

0

t_0

t0 的值来创建 8 个不同的数据集。对于每个数据集,我们分别为训练、验证和测试集生成 4.5K、0.5K 和 1K 时间序列实例。 $t_0= 96 $ 的示例时间序列如图 4(a) 所示。


在这个实验中,我们使用具有标准自注意力的 3 层规范 Transformer。为了比较,我们采用 DeepAR [3],一种基于 3 层 LSTM 的自回归模型作为我们的基线。此外,为了检验更大的容量是否可以提高 DeepAR 的性能,我们还逐渐将其隐藏单元大小 h 增加到 {20、40、80、140、200}。在 [3, 6] 之后,我们使用 ρ-quantile loss Rρ 评估这两种方法,其中 ρ ∈ (0, 1)

其中

x

^

\hat{x}

x^ 是预测分布的经验 ρ 分位数,

I

{

x

x

^

}

I_{\{x≤ \hat{x} \}}

I{xx^} 是指示函数。

图 4(b) 展示了 DeepAR 和 Transformer 在合成数据集上的性能。当 t0 = 24 时,它们都表现得非常好。但是,随着 t0 的增加,特别是当 t0 ≥ 96 时,DeepAR 的性能显着下降,而 Transformer 保持其准确性,这表明当 LSTM 无法捕获时,Transformer 可以捕获相当长期的依赖关系

5.2 Real-world datasets


我们在几个真实世界的数据集上进一步评估我们的模型。electricity-f (fine) 数据集由每 15 分钟记录的 370 个客户的用电量组成,而 electricity-c (coarse) 数据集是每 4 个点的总电量,产生每小时用电量。同样, traffic-f (fine) 数据集包含每 20 分钟记录一次的旧金山 963 条高速公路的占用率,traffic-c (coarse) 包含通过平均每 3 个traffic-f 点的每小时占用率。太阳能数据集 6 包含 2006 年 1 月至 8 月的太阳能发电记录,每小时从阿拉巴马州的 137 座光伏电站采样。风能数据集 包含 28 个国家从 1986 年到 2015 年的能源潜力的每日估计,作为发电厂最大输出的百分比。M4-Hourly 包含来自 M4 比赛的 414 小时时间序列 [24]。

长期和短期预测:我们首先展示了具有卷积自注意力的规范 Transformer 在electrical-c 和traffic-c 数据集的长期和短期预测中的有效性。这两个数据集展示了每小时和每天的季节性模式。然而,与electrical-c 相比,traffic-c 表明工作日和周末的模式之间的差异要大得多因此,traffic-c 数据集中的准确预测需要模型能够很好地捕捉长期和短期依赖关系。作为基线,我们使用在 R 的预测包中实现的经典预测方法 auto.arima、ets 和最近的矩阵分解方法 TRMF [17]、基于 RNN 的自回归模型 DeepAR 和基于 RNN 的状态空间模型 DeepState [6]。对于短期预测,我们评估 7 天的滚动日预测(即预测范围为 1 天,预测开始时间在评估当天的预测后偏移 1 天 [6])。对于长期预测,我们直接提前7天预测。如表 1 所示,我们的卷积自注意力模型在长期和短期预测中都取得了更好的结果,尤其是在traffic-c 数据集上与强基线相比,部分原因是 Transformer 的长期依赖建模能力如我们的综合数据所示。

卷积自注意力:在这个实验中,我们对我们提出的卷积自注意力进行消融研究。我们在全注意力模型上探索不同的kernel大小 k ∈ {1, 2, 3, 6, 9} 并修复所有其他设置。我们仍然在electrical-c 和traffic-c 数据集上使用滚动日预测 7 天。两个数据集上不同核大小的结果如表 2 所示。在electrical-c 数据集上,核大小为 k ∈ {2, 3, 6, 9} 的模型在 R0.5 方面比典型的 Transformer 获得稍好的结果,但总体而言,这些结果具有可比性,并且都表现得非常好。我们认为这是因为electrical-c 数据集的挑战性较小,并且协变量向量已经为模型提供了丰富的信息以进行准确的预测。因此,在这种情况下,了解更大的局部上下文可能无济于事。然而,在更具挑战性的traffic-c 数据集上,具有较大kernel大小 k 的模型可以比具有较小kernel大小的模型做出更准确的预测,改进了约 9%通过了解更多局部上下文,这些一致的收益可以是更准确的查询键匹配的结果。此外,为了验证将更多局部上下文合并到查询键匹配中是否可以简化训练,我们绘制了electrical-c 和traffic-c 数据集中kernel大小 k ∈ {1, 3, 9} 的训练损失。如图 5 所示,我们发现具有卷积自注意力的 Transformer 也可以更快地收敛并降低训练错误,证明了解局部上下文可以简化训练过程

稀疏注意力:进一步,我们将我们提出的 LogSparse Transformer 与细粒度数据集上的完全注意力对应物、电力-f 和交通-f 进行比较。请注意,与 electrical-c 和 traffic-c 相比,这两个数据集中的时间序列具有更长的周期并且噪声更大。我们首先在相同的内存预算下比较它们。对于electrical-f 数据集,稀疏注意力模型选择 Le1 = 768,每个子序列中的子序列长度为 Le1/8 和局部注意力长度 log2(Le1/8),在全注意力模型中选择 Le2 = 293。对于 traffic-f 数据集,稀疏注意力模型的每个子序列中选择 Lt1 = 576,子序列长度为 Lt1/8,局部注意力长度为 log2(Lt1/8),在全注意力模型中选择 Lt2 = 254。内存使用的计算和其他细节可以在附录 A.4 中找到。我们对前面提到的稀疏和全注意力模型进行了实验,在两个数据集上都有/没有卷积自注意力。通过遵循这样的设置,我们在表 3(上半部分)中总结了我们的结果。无论是否配备卷积自注意力,我们的稀疏注意力模型在电-f 上取得了可比较的结果,但在交通-f 上的结果比其全注意力模型要好得多。traffic-f 的这种性能提升可能是数据集更强的长期依赖关系和我们的稀疏模型更好地捕获这些依赖关系的结果,在相同的内存预算下,完全注意力模型无法匹配。此外,稀疏和全注意力模型都受益于对具有挑战性的 traffic-f 的卷积自注意力,证明了其有效性。

为了探索稀疏注意力模型与具有相同输入长度的完全注意力模型相比的表现,我们分别在electrical-f 和 traffic-f 上设置 Le2 = Le1 = 768 和 Lt2 = Lt1 = 576。表 3(下部)总结了它们的比较结果。正如人们所期望的那样,在大多数情况下,无论是否配备卷积自注意力,全注意力 Transformer 都可以胜过我们的稀疏注意力。然而,在具有强长期依赖关系的 traffic-f 数据集上,具有卷积自注意力的稀疏 Transformer 可以获得比规范的 Transformer 更好的结果,更有趣的是,在 R0.5 方面甚至略微优于其完全注意力对应物,这意味着具有卷积自注意力的稀疏模型可以很好地捕捉长期依赖关系。此外,长度约束下的全注意力模型在 electricity-f 和 traffic-f 数据集上始终从卷积自注意力中获得收益,再次显示了其有效性

进一步探索:我们的最后一个实验中,我们评估了我们的方法在不同粒度的数据集上与基线相比的表现。由于提供了 M4 每小时的测试集,所以通过滚动窗口 7 次评估除 M4 每小时之外的所有数据集,结果如表 4 所示。这些结果进一步表明我们的方法总体上实现了最佳性能。

6 Conclusion

在本文中,我们建议在时间序列预测中应用 Transformer。我们对合成数据和真实数据集的实验表明,Transformer 可以捕获长期依赖关系,而 LSTM 可能会受到影响。我们还在现实世界的数据集上展示了,与最近的基于 RNN 的方法、矩阵分解方法相比,所提出的卷积自注意力进一步提高了 Transformer 的性能并在不同的设置中实现了最先进的水平。作为经典的统计方法。此外,在相同的内存预算下,我们的稀疏注意力模型可以在具有长期依赖关系的数据上取得更好的结果。在自注意中探索更好的稀疏策略并扩展我们的方法以更好地适应小型数据集是我们未来的研究方向


A Supplementary Materials

A.1 Proof of Theorem 1

A.2 Training


为了学习模型,我们给定一个时间序列数据集

{

z

i

,

1

:

T

}

i

=

1

M

\{z_{i,1:T} \}^M_{i=1}

{zi,1:T}i=1M 及其相关的协变量

{

x

i

,

1

:

T

}

i

=

1

M

\{x_{i,1:T} \}^M_{i=1}

{xi,1:T}i=1M ,其中

T

T

T 是所有可用观测值的长度,

M

M

M 是不同时间序列的数量。数据集统计数据如表 5 所示。在 [3] 之后,我们通过选择具有固定历史长度 t0 和预测范围 τ 的窗口来创建训练实例,但从每个原始长时间序列中改变预测的起点。作为[3]的后续,我们通过[3]中的权重采样策略对训练窗口进行采样。请注意,在选择训练窗口期间,永远无法访问测试集中的数据。结果,我们得到了一个具有 N 个滑动窗口的训练数据集

{

z

i

,

1

:

t

0

+

τ

,

x

i

,

1

:

t

0

+

τ

}

i

=

1

N

\{z_{i,1:t_0+τ} , x_{i,1:t_0+τ} \}^N_{i=1}

{zi,1:t0+τ,xi,1:t0+τ}i=1N

对于 Transformer 中的位置编码,我们使用可学习的位置嵌入(position embedding)。对于协变量,按照 [3],我们使用全部或部分年份、月份、星期几、一天中的小时、小时的分钟、年龄和时间序列 ID到数据集的粒度。年龄是该时间序列中到第一次观察的距离 [3]。除了时间序列 ID 之外,它们中的每一个都只有一个维度,并且被归一化为具有零均值和单位方差(如果适用)。对于时间序列 ID,它通过 ID 嵌入矩阵与位置嵌入具有相同的维度,以便可以将它们相加(使用广播)。然后将总和与上述其他协变量连接(concatenate)起来,作为 Transformer 中第一层的输入

DeepAR [3] 使用编码器-解码器方式,其中编码器与解码器相同,编码器的最终隐藏状态用于初始化解码器的隐藏状态。这种架构可以看作是一个仅解码器的网络,因为编码器和解码器是相同的,其目标是根据当前输入和最后一个隐藏状态预测下一个点的分布。受此观察的启发,我们使用 Transformer 仅解码器模式 [36] 对时间序列进行建模。与 [37] 类似,Transformer 顶部的全连接层是堆叠的,它通过适当的变换为下一个时间点缩放后输出概率分布的参数。例如,对于需要正性的参数,应用 softplus 激活。我们使用与 [3] 中相同的缩放处理技术来缩放模型的输入和输出。推荐阅读 [3] 以了解有关缩放处理的更多详细信息。在我们的实验中,使用高斯似然,因为我们的训练数据集是实值数据。请注意,也可以使用其他似然模型,例如正计数数据的负二项似然。在合成数据集中,我们只计算从 t0 + 1 到 t0 + τ 的对数似然。在现实世界的数据集上,我们不仅计算从 t0 + 1 到 t0 + τ 的对数似然,还包括从 1 到 t0 的对数似然,类似于 [3] 中的训练和 [37] 中的预训练

在训练期间,我们使用带有提前停止的 Adam 优化器 [28],除了对 electricity-f 和 traffic-f 的实验,以最大化每个训练实例的对数似然。我们的初步研究表明,使用 Adam 对这两个数据集的训练非常不稳定。相反,我们发现 BERTAdam [38] 8 是 Adam 的一种变体,具有预热和学习率退火功能,可以稳定这两个数据集的训练过程

对于electricity-c 和 traffic-c,我们采用 500K 训练窗口,而对于electrical-f 和 traffic-f,我们分别选择125K 和200K 训练窗口。对于风能、M4-Hourly 和太阳能,我们分别选择 10K、50K 和 50K 训练窗口。上面描述了窗口选择策略。对于我们的 Transformer 模型,它们都使用 H = 8 个头,位置嵌入和时间序列 ID 嵌入的维度都是 20。除了电力-f 和交通-f 的模型分别使用 6 层和 10 层,所有的模型都有 3 层。将预测开始时间之前的数据作为训练集,分成两部分。对于真实世界数据集上的每个实验,我们在包含90%数据的训练集的第一个分区上,用不同的随机种子训练我们的模型5次,并且我们挑选在剩余的10%上具有最小负对数似然的一个报告了对应于剩余10%的最小负对数似然的测试集的结果。所有模型都在GTX 1080 Ti图形处理器上进行训练。

A.3 Evaluation

按照[6]中的实验设置,保留 electricity-c 数据集从 2014 年 9 月 1 日 00:00 开始,traffic-c 数据集从 6/15/2008 17:00 开始一周数据作为测试集。对于electrical-f 和 traffic-f 数据集,分别将2014年8月31日00:15 和 2008年6月15日17:00 之后的11周的数据作为测试集。对于太阳能,将 8 月的最后 7 天作为测试集。对于风,将2015 年的最后 210 天作为测试集。对于 M4-Hourly,已经提供了它的训练和测试集。在对之前的设置进行训练之后,我们在上述测试间隔上评估我们的模型,并在测试集上报告标准分位数损失(R0.5 和 R0.9)。

A.4 Implementation of sparse attention and its memory cost

在实现我们的稀疏注意力时,

l

I

L

k

∀l ≤ |I^k_L|

lILk可以允许这样的单元

l

l

l 密集地关注其所有过去的单元和自身,而不会增加空间使用,因为查询键匹配 (query-key matching) 在现实中是并行计算的,并且单元

L

L

L 达到了可以参加的最大单元数

我们当前对 LogSparse attention 的实现是通过掩码矩阵 (mask matrix) 实现的,它的相对内存使用量是从注意力矩阵理想地计算出来的,这是 Transformer 的内存瓶颈 (memory bottleneck)

对于electrical-f 数据集,在稀疏注意力模型的每个子序列中,我们选择

L

e

1

=

768

L_{e_1} = 768

Le1=768,子序列长度

L

s

u

b

e

1

=

L

e

1

/

8

=

96

L^{e_1}_{sub} = L_{e_1}/8 = 96

Lsube1=Le1/8=96,局部注意力长度

L

l

o

c

e

1

=

l

o

g

2

(

L

s

u

b

e

1

)

=

7

L^{e_1}_{loc} = \lceil log_2(L^{e_1}_{sub}) \rceil = 7

Lloce1=log2(Lsube1)=7 ,完全注意力长度

L

e

2

=

293

L_{e_2} = 293

Le2=293我们在稀疏注意力和全注意力模型上堆叠相同的层。因此,如果它们的内存使用在每一层都是可比的,我们可以确保它们的整个内存使用是可比的。在配备局部注意力的稀疏注意力中,每个单元在每个子序列中最多关注

2

L

l

o

c

e

1

=

14

2*L^{e_1}_{loc} = 14

2Lloce1=14 个单元,导致一个单元总共最多关注

2

L

l

o

c

e

1

L

e

1

/

L

s

u

b

e

1

=

14

8

=

112

2*L^{e_1}_{loc}*L_{e_1}/L^{e_1}_{sub} = 14*8 = 112

2Lloce1Le1/Lsube1=148=112 个单元。因此,我们得到稀疏注意力在每一层的内存使用量为

L

e

1

2

L

l

o

c

e

1

L

e

1

/

L

s

u

b

e

1

=

768

112

=

L

e

2

2

293

L_{e_1} ∗2∗L^{e_1}_{loc}∗L_{e_1}/L^{e_1}_{sub} = 768∗112 = L^2_{e_2} ≈ 293

Le12Lloce1Le1/Lsube1=768112=Le22293。在这样的设置下,稀疏注意力模型的内存使用量与全注意力模型。对于 traffic-f 数据集,可以按照相同的程序检查内存使用情况。

A.5 Visualization of attention matrix

在这里,我们展示了一个在典型 Transformer 在 traffic-c 数据集上的最后一层中的头部的掩蔽注意力矩阵中学习到的注意力模式的示例。图 6 (a) 是一个时间序列窗口,包含 8 天的交通量-c。时间序列显然展示了每小时和每天的模式。从其对应的 masked attention 矩阵中,如图 6(b)所示,我们可以看到,对于工作日的点,它们在工作日的同一时间大量关注先前的单元格(包括自身),而周末的点往往只关注以前的单元(包括它自己)在周末的同一时间。因此,该模型自动学习了每小时和每天的季节性,这是准确预测的关键。
在这里插入图片描述