Abstract
-
- 多水平预测:也就是多步预测,未来可能不止预测一个点,可能预测多个点。
- 输入变量的分类:
- 静态协变量(静态变量,比如商店位置)。
- 已知的未来输入(时不变变量,比如:年、月、日)。
- 在过去观察到的外生时间序列(时变变量),没有任何关于它们如何与目标相互作用的先验信息。
-
现有的几种深度学习方法,都是典型的”黑盒模型“,无法说明它们如何在实际场景中使用各种输入 。
无法看到不同数据源具体怎么作用到这次预测的。
-
提出一种新颖的基于注意力的架构 TFT ,结合了高性能的多水平预测与时间动态的可解释见解。
-
为了学习不同尺度上的时间关系,TFT 使用循环层进行局部处理,使用可解释的自我注意层进行长期依赖。
-
TFT 利用专门的组件来选择相关的特性,并使用一系列门控层来抑制不必要的组件,从而在广泛的场景中实现高性能。
-
在各种真实世界的数据集上,展示了相对于现有基准的显著性能改进,并强调了 TFT 的三个实际可解释性用例。
Introduction
-
多步预测,即在未来多个时间步对感兴趣的变量进行预测,是时间序列机器学习中的一个关键问题。
-
与一步前预测相比,多阶段预测为用户提供了整个路径的估计,允许他们在未来的多个步骤中优化他们的行动(例如,零售商为即将到来的整个季节优化库存,或临床医生为患者优化治疗计划)。
-
多步预测在零售业中有许多有影响力的现实应用,在此类应用中对现有方法的性能改进非常有价值。
-
实际的多视界预测应用程序通常可以访问各种数据源,如图1所示,包括关于未来的已知信息(例如即将到来的假期日期)、其他外生时间序列(例如历史客户客流量)和静态元数据(例如商店的位置),而不需要任何关于它们如何交互的先验知识。数据源的异质性以及关于它们相互作用的很少信息使得多视域时间序列预测特别具有挑战性。
-
深度神经网络已越来越多地用于多水平预测,与传统时间序列模型相比,表现出强大的性能改进。虽然许多架构都专注于循环神经网络(RNN)架构的变体,最近的改进也使用了基于注意力的方法来增强过去相关时间步长的选择,包括基于Transformer的模型。
6.历史研究的瓶颈
-
没有考虑常见的多水平预测输入的异质性
- 通常没有考虑: 多水平预测中常见的不同类型的输入,或者假设未来所有外生输入都是已知的。
- 忽略了重要的静态协变量,只是在每一步中与其他随时间变化的特征连接起来。
- 时间序列模型的许多最新改进都来自于具有独特数据特征的架构的对齐。我们认为并证明,通过设计具有适合多水平预测的归纳偏差的网络,也可以获得类似的性能收益。
-
缺乏可解释性
-
除了没有考虑常见的多水平预测输入的异质性外,目前大多数架构都是“黑盒”模型,其中预测由许多参数之间复杂的非线性相互作用控制。这使得解释模型如何得到预测变得困难。
-
也使得用户难以信任模型的输出和模型构建者对其进行调试。
-
常用的深度神经网络解释性方法并不适合应用于时间序列。
-
在传统形式中,事后方法(如:LIME和SHAP),对于LIME,不考虑输入特征的时间顺序。对于SHAP,特征是独立考虑相邻时间步长的将导致较差的解释质量,因为时间步骤之间的依赖性在时间序列中通常是显著的。
-
一些基于注意力的架构被提出,对顺序数据具有固有的可解释性,主要是语言或语音。但多水平预测包括许多不同类型的输入特征,而不是语言或语音。
-
这些架构可以为多水平预测提供相关时间步骤的见解,但它们不能在给定的时间步骤中区分不同特征的重要性。
只回答了那些时间点是重要的,很难回答这个时间点上哪个特征重要。
-
-
总的来说,深度神经网络没有做的特别好的地方在于:
- 没有处理好多数据源的利用
在实际业务场景中有很多数据源 :不同的时序任务可以按照变量来分(单变量、多变量)
单变量(uni-var):自己预测目标本身的一个历史数据
多变量预测(muti-var):数据源就比较丰富(预测数据本身类别[商品类别],过去观测变量,未来已知的变量[节假日])
在之前的模型没有很好的针对这三种不同数据做一些模型架构设计,大部分的模型只是单纯的将数据做embedding,然后合并在一起直接输入模型进行学习。 - 解释模型的预测效果
对于时序,需要告诉业务方,需要告知用的特征数据里面对产生决策映像比较大的数据,所以可解释性对于业务驱动来说很重要。
- 没有处理好多数据源的利用
-
论文的主要贡献
-
使架构与多水平预测常见的所有潜在输入和时间关系保持一致。
- 静态协变量编码器,对上下文向量进行编码,以用于网络的其他部分, 相当于把静态信息引入模型引导模型去学习。 \textcolor{red}{相当于把静态信息引入模型引导模型去学习。} 相当于把静态信息引入模型引导模型去学习。
- 整个门控机制和样本因变量选择,以最大限度地减少不相关输入的贡献, 特征选择部分创新。 \textcolor{red}{特征选择部分创新。} 特征选择部分创新。
- 序列对序列层 ,用于局部处理已知和观察到的输入; s e q 2 s e q 编码,可以局部处理实变的数据。 \textcolor{red}{seq2seq编码,可以局部处理实变的数据。} seq2seq编码,可以局部处理实变的数据。
- 时间自注意解码器,用于学习数据集中存在的任何长期依赖关系。 可以学习的时间更长。 \textcolor{red}{可以学习的时间更长。} 可以学习的时间更长。
-
这些专用组件的使用也促进了可解释性;特别地,我们展示了TFT支持三个有价值的可解释性用例: 帮助用户识别。
- 预测问题的全局重要变量。
- 持久的时间模式。
- 重要事件。反馈重要时间点
在各种现实世界的数据集上,我们演示了 TFT 如何实际应用,以及它提供的见解和好处。
-
Related work
-
用于多步预测的DNNs:
类似于传统的多层面预测方法,最近的深度学习方法可以被归类为使用自回归模型的迭代方法,或基于序列到序列模型的直接方法。
- 自回归模型的迭代方法:
- 利用一步前的预测模型,通过递归地将预测输入到未来的输入中获得多步预测。
- 已经考虑了长短期记忆网络的方法,例如Deep AR ,它使用堆叠的 LSTM 层来生成领先一步的高斯预测分布的参数。深状态空间模型(DSSM)采用类似的方法,利用 LSTM 生成预定义线性状态空间模型的参数,该模型具有通过卡尔曼滤波产生的预测分布中对多元时间序列数据的扩展。
- 最近,探索了基于transformer的架构,提出了使用卷积层进行局部处理和稀疏注意机制来增加预测期间接受域的大小。尽管迭代方法很简单,但它依赖于这样一个假设: 在预测时间,除目标外的所有变量的值都是已知的——这样,只有目标需要递归地输入到未来的输入中。
- **在许多实际场景中,存在大量有用的时变输入,其中许多是预先未知的。**因此,它们的直接使用对于迭代方法是有限的。另一方面,TFT 明确地解释了输入的多样性——自然地处理静态协变量和(过去观察到的和未来已知的)时变输入。
- 基于序列到序列模型的直接方法:
- 被训练为在每个时间步骤显式地生成多个预定义范围的预测。
- 它们的体系结构通常依赖于序列到序列的模型,例如 LSTM 编码器来总结过去的输入,以及各种方法来生成未来的预测。
- 多视界分位数循环预测器使用 LSTM 或卷积编码器来生成上下文向量,这些向量被馈送到每个视界的多层感知器(mlp)。
- Fan等人(2019)在 LSTM 编码器中使用了多模态注意机制来构造双向 LSTM 解码器的上下文向量。尽管表现比基于 LSTM 的迭代方法更好,但这种标准直接方法的可解释性仍然具有挑战性。
- 通过解释注意力模式,TFT 可以提供关于时间动态的深刻解释,并在保持各种数据集上的最先进性能的同时做到这一点。
- 自回归模型的迭代方法:
-
用于多步预测的DNNs:
注意机制用于翻译、图像分类或表格学习,以使用注意权重的量级识别每个实例的输入显著部分。最近,它们被改编为具有可解释性动机的时间序列,使用基于 LSTM 和 Transformer的架构。然而,这样做没有考虑静态协变量的重要性(因为上述方法在每个输入中混合变量)。TFT 通过在自注意的基础上在每个时间步对静态特征使用单独的编码器-解码器注意来确定贡献时变输入来缓解这一问题。
-
DNNs的实例变量重要性:
- 实例(即样本)变量重要性可以通过事后解释方法获得。
- 事后解释方法,如 LIME ,应用于预训练的黑盒模型,通常基于提取到替代可解释模型,或分解为特征属性。它们的设计没有考虑到输入的时间顺序,限制了它们对复杂时间序列数据的使用。
- 固有的可解释的建模方法将组件直接构建到体系结构中进行特性选择。特别是对于时间序列预测,它们是基于显式量化的时间相关变量贡献。例如,可解释的多变量LSTMs 划分隐藏状态,使每个变量对其自己的内存段有唯一的贡献,并对内存段进行加权以确定变量贡献。Choi等人(2016) 也考虑了结合时间重要性和变量选择的方法,该方法基于每个变量的注意力权重计算单个贡献系数。
- 然而,除了建模只能进行一步预测的缺点之外,现有的方法还专注于对注意力权重的实例特定(即样本特定)解释,而没有提供对全球时间动态的洞察。相比之下,TFT 能够分析全局时间关系,并允许用户在整个数据集上解释模型的全局行为——特别是在识别任何持久模式(例如季节性或滞后效应)和存在的制度方面。
Multi-horizon forecasting
-
假设在给定的时间序列数据集中有 I 个唯一的实体—— 例如零售中的不同商店或医疗保健中的患者。每个实体 i 在每个时间步 t ∈ [ 0 , T i ] t\in[0,T_i] t∈[0,Ti] 与一组静态协变量 s i ∈ R m s {s_i}\in\mathbb{R}^{m_s} si∈Rms ,以及输入 χ i , t ∈ R m χ \chi_{i,t}\in\mathbb{R}^{m_{\chi}} χi,t∈Rmχ 和标量目标 y i , t ∈ R y_{i,t}\in\mathbb{R} yi,t∈R 相关联。
-
与时间相关的输入特征被细分为两类 χ i , t ∈ [ z i , t ⊤ , x i , t ⊤ ] ⊤ \chi_{i,t} \in \begin{bmatrix}z_{i,t}^\top,x_{i,t}^\top\end{bmatrix}^\top χi,t∈[zi,t⊤,xi,t⊤]⊤:
- 观测到的输入 z i , t ∈ R ( m z ) z_{i,t}\in\mathbb{R}^{(m_{z})} zi,t∈R(mz) ,它只能在每一步测量,并且是事先未知的;
- 已知的输入 x i , t ∈ R m x x_{i,t}\in\mathbb{R}^{m_{x}} xi,t∈Rmx ,它可以预先确定(例如时间 t 的星期几)。
-
在许多情况下,提供预测间隔对于优化决策和风险管理是有用的,因为它提供了目标可能获得的最佳值和最差值的指示。因此,我们在多水平预测设置中采用分位数回归(例如,在每个时间步骤中输出第10、50和90个百分位数)。每个分位数预测采用如下形式:
y ^ i ( q , t , τ ) = f q ( τ , y i , t − k : t , z i , t − k : t , x i , t − k : t + τ , s i ) , \hat{y}_i\left(q,t,\tau\right)=f_q\left(\tau,y_{i,t-k:t},z_{i,t-k:t},x_{i,t-k:t+\tau},s_i\right), y^i(q,t,τ)=fq(τ,yi,t−k:t,zi,t−k:t,xi,t−k:t+τ,si),- 其中, y ^ i ( q , t , τ ) \hat{y}_i\left(q,t,\tau\right) y^i(q,t,τ) 是在 t 时刻 τ \tau τ步预测的第 q 个样本分位数, f q ( . ) f_q\left(.\right) fq(.) 是一个预测模型。
- 与其他直接方法一致,我们同时输出对 τ m a x \tau_{max} τmax 时间步长的预测。我们将所有过去的信息合并到一个有限的回溯窗口 k 中,只使用目标变量的从已知输入到预测开始时间 y i , t − k : t = { y i , t − k , … , y i , t } y_{i,t-k:t}=\{y_{i,t-k},\ldots,y_{i,t}\} yi,t−k:t={yi,t−k,…,yi,t} 和整个范围内的已知输入 x i , t − k : t = { x i , t − k , … , x i , t , … , x i , t + τ } x_{i,t-k:t}=\{x_{i,t-k},\ldots,x_{i,t},\ldots,x_{i,t+\tau}\} xi,t−k:t={xi,t−k,…,xi,t,…,xi,t+τ}
-
不同于 DeepAR 的分位数预测
真实的标签是一条时间序列,在这个时间点下,其实无法知道这个分位数,在这个分位数没有 label 的情况下怎么预测这个分位数呢?联想 DeepAR ,这篇里面做这个事情预设(μ ,σ)真实的情况下 σ = 0,μ = 自己的真实值, 这就是DeepAR 的 label,DeepAR 的predict就是预测 μ ,σ,然后通过交叉熵的方式预测出来,得到t0下 μ ,σ 再做个高斯采样,统计采样的分位数,就能得到时间点上分位数预测值是多少。TFT不是这样做的。
Model architecture
我们设计 TFT 使用规范组件来有效地为每种输入类型(即静态、已知、观察到的输入)构建特征表示,以在广泛的问题上实现高预测性能。TFT的主要组成部分是:
- 门控机制可以跳过架构中任何未使用的组件,提供自适应深度和网络复杂性,以适应广泛的数据集和场景。
- 变量选择网络在每个时间步中选择相关的输入变量。
- 静态协变量编码器将静态特征集成到网络中,通过对上下文向量的编码来调节时间动态。
- 时间处理从观察到的和已知的时变输入中学习长期和短期的时间关系。使用序列到序列层进行局部处理,而使用一种新的可解释的多头注意块捕获长期依赖关系。
- 预测区间通过分位数预测来确定每个预测水平可能目标值的范围。
TFT架构。TFT输入静态元数据、时变的过去输入和时变的先验已知未来输入。变量选择用于根据输入对最显著的特征进行明智的选择。门控剩余网络块通过跳过连接和门控层实现有效的信息流。时间依赖处理基于LSTMs进行局部处理,基于多头注意对任意时间步的信息进行整合。
-
GRN(门控残差网络): 作用是控制信息流,主要是为了保持信息通过门控做一个初步特征选择工作。(在进一步考虑不同特征的重要性)
Gate: pipeline里面一个GLU,门控线性单元,主要是控制信息的一个流动情况。 -
Variable selection networks(变量选择网络): 包含了上述GRN,针对不同输入做了一个设计,右下角External Context运用了外部的信息去引导学习到了一个权重,这个权重再乘以左边特征的一个feature map就可以得到特征选择的一个结果。(加深网络)
-
输入: 是一个双输入的结构。
- 一个输入接 static metadata 也就是前面所说的静态变量,其中连续特征直接输入,离散特征接embedding之后和连续特征concat 再输入;
- 另一个接动态特征,动态特征分为两部分。也是一样,动态离散特征通过embedding输入nn,常规操作;
- 动态时变,图中的past inputs是动态时变特征的输入部分。
- 和动态时不变特征,known future inputs是动态时不变特征的输入部分。
可以看到,所有的输入都是先进入一个Variable Selection 的模块,即特征选择模块。
Gating mechanisms
-
外部输入和目标之间的精确关系通常是预先未知的,因此很难预测哪些变量是相关的。此外,很难确定所需的非线性处理的程度,可能在某些情况下,更简单的模型是有益的——例如,当数据集很小或有噪声时。
-
为了使模型具有仅在需要时应用非线性处理的灵活性,我们提出了如图2所示的门控剩余网络(GRN)作为TFT的构建块。
-
GRN 模块需要在一个主要输入 a 和一个可选的上下文向量 c 和收益率:
G R N ω ( a , c ) = L a y e r N o r m ( a + G L U ω ( η 1 ) ) , GRN_\omega\left(a,c\right)=LayerNorm\left(a+GLU_\omega\left(\eta_1\right)\right), GRNω(a,c)=LayerNorm(a+GLUω(η1)),
η 1 = W 1 , ω η 2 + b 1 , ω , \eta_1=W_{1,\omega}\eta_2+b_{1,\omega}, η1=W1,ωη2+b1,ω,
η 2 = E L U ( W 2 , ω a + W 3 , ω c + b 2 , ω ) , \eta_2=ELU\left(W_{2,\omega}a+W_{3,\omega}c+b_{2,\omega}\right), η2=ELU(W2,ωa+W3,ωc+b2,ω),
-
ELU (Exponential Linear Unit) 和 GLU (Gated Linear Units):
-
ELU不会有梯度消失的困扰。与 ReLU 及其变体相比,使用 ELU 可在神经网络中缩短训练时间并提高准确度。
-
GLU做的时其实就是一个加权求和操作。软性的特征选择,可以做特征选择或者去除冗余信息,灵活控制数据中不需要的部分
G L U ω ( γ ) = σ ( W 4 , ω γ + b 4 , ω ) ⊙ ( W 5 , ω γ + b 5 , ω ) , GLU_\omega\left(\gamma\right)=\sigma\left(W_{4,\omega}\gamma+b_{4,\omega}\right)\odot\left(W_{5,\omega}\gamma+b_{5,\omega}\right), GLUω(γ)=σ(W4,ωγ+b4,ω)⊙(W5,ωγ+b5,ω),
其中, σ ( . ) \sigma(.) σ(.) 是 sigmoid 激活函数, W ( . ) ∈ R d m o d e l × d m o d e l W_{(.)}\in\mathbb{R}^{d_{model}}\times d_{model} W(.)∈Rdmodel×dmodel 是权值, b ( . ) ∈ R d m o d e l b_{(.)}\in\mathbb{R}^{d_{model}} b(.)∈Rdmodel 是 偏差,$\odot $ 是 Hadamard 积,dmodel 是隐态大小( TFT 中常见)。GLU允许 TFT 控制 GRN 的贡献程度。
-
-
为什么需要GRN呢?
- 当数据集很小或有噪声时。为了使模型具有仅在需要时应用非线性处理的灵活性,提出了GRN,假设没有这个Gate,一般如果数据很小非常noisy(噪声很多)的话,再走非线性这条路就会很危险(再考虑很多的特征)大概率过拟合,但加了Gate 就相当于特征选择,或者可以理解为有一种降噪的作用。
- GRN 的工作主要来看就是控制数据的流动,主要是控制一些非线性和线性的贡献大概是怎么样的,然后也做一些特征选择工作。
-
Variable selection networks
-
虽然可以有多个变量,但它们的相关性和对输出的具体贡献通常是未知的。TFT 的设计目的是通过使用应用于静态协变量和时间相关协变量的变量选择网络来提供实例变量选择。除了提供对预测问题最重要的变量的见解外,变量选择还允许 TFT 删除任何可能对性能产生负面影响的不必要的噪声输入。大多数真实世界的时间序列数据集包含较少预测内容的特征,因此变量选择可以通过仅在最显著的特征上使用学习能力来极大地帮助模型性能。
-
我们将实体嵌入用于分类变量作为特征表示,并将线性转换用于连续变量——将每个输入变量转换为(dmodel)维向量,该向量与后续层中的维度匹配,用于跳过连接。所有静态、过去和未来输入都使用具有不同权重的单独变量选择网络(如主架构图中不同颜色所示)。在不丧失一般性的情况下,我们在下面展示了过去输入的变量选择网络——注意其他输入的变量选择网络采用相同的形式。
-
设 ξ t ( j ) ∈ R d m o d e l \xi_t^{(j)}\in\mathbb{R}^{d_{model}} ξt(j)∈Rdmodel表示第 j 个变量在 t 时刻的变换输入, Ξ t = [ ξ t ( 1 ) T , . . . , ξ t ( m χ ) T ] T \Xi_t=\left[\xi_t^{(1)^T},...,\xi_t^{(m_\chi)^T}\right]^T Ξt=[ξt(1)T,...,ξt(mχ)T]T 是 T 时刻所有过去输入的平化向量。变量选择权重是通过 GRN 输入 Ξ t \Xi_t Ξt 和外部上下文向量 c s c_s cs 来生成的,然后是 Softmax 层:
υ χ t = S o f t max ( G R N v χ ( Ξ t , c s ) ) , \upsilon_{\chi t}=Soft\max\begin{pmatrix}GRN_{v_\chi}(\Xi_t,c_s)\end{pmatrix}, υχt=Softmax(GRNvχ(Ξt,cs)),
-
在每一个时间步骤中,通过向每个 ξ ~ t ( j ) \tilde{\xi}_t^{(j)} ξ~t(j) 输入它自己的 GRN 来使用额外的非线性处理层:
ξ ~ t ( j ) = G R N ξ ~ ( j ) ( ξ t ( j ) ) \tilde{\xi}_t^{(j)}=GRN_{\tilde{\xi}(j)}\left(\xi_t^{(j)}\right) ξ~t(j)=GRNξ~(j)(ξt(j))
-
处理后的特征通过它们的变量选择权重进行加权并组合:
ξ ~ t = ∑ j = 1 m χ υ χ t ( j ) ξ ~ t ( j ) \tilde{\xi}_t=\sum_{j=1}^{m_\chi}\upsilon_{\chi_t}^{(j)}\tilde{\xi}_t^{(j)} ξ~t=j=1∑mχυχt(j)ξ~t(j)
-
-
总结 VSN :
- 将 GRN 单独应用于每个特征。
- 在所有特征的串联上应用 GRN,然后是 softmax 以产生特征权重。
- 生成单个 GRN 输出的加权总和。
Static covariate encoders
与其他时间序列预测架构相比,TFT经过精心设计,用于集成来自静态元数据的信息,使用单独的GRN编码器产生四个不同的上下文向量,cs , ce , cc 和 ch 。这些连接向量连接到时间融合解码器的不同位置,其中静态变量在处理中发挥重要作用。包括:
- 时间变量选择( cs )的上下文,(给VSN的)
- 时间特征的局部处理( cc , ch ) ,(给LSTM的)
- 用静态信息丰富时间特征的上下文( ce )。例如,将 ζ \zeta ζ 作为静态变量选择网络的输出,时间变量选择的上下文将按照 c s = G R N c s ( ζ ) c_s = GRN_{c_s} (\zeta) cs=GRNcs(ζ) 编码。(给GRN的)
编码器就是一个简单的GRN,整个静态变量引入模型的方法就是作为一个引导特征选择这些网络的一个外生变量,可以把它理解为元学习mata learning。
Interpretable multi-head attention
-
TFT采用一种自注意机制来学习跨不同时间步长的长期关系,我们修改了基于Transformer架构中的多头注意,
-
以增强解释性。一般来说,基于键 K ∈ R N × d a t t n K\in\mathbb{R}^{N\times d_{attn}} K∈RN×dattn 和查询 Q ∈ R N × d a t t n Q\in\mathbb{R}^{N\times d_{attn}} Q∈RN×dattn 之间的关系,注意机制的尺度值 V ∈ R N × d V V\in\mathbb{R}^{N\times d_V} V∈RN×dV 如下所示:
A t t e n t i o n ( Q , K , V ) = A ( Q , K ) V , Attention(Q,K,V)=A(Q,K)V, Attention(Q,K,V)=A(Q,K)V,
其中A () 是归一化函数,N 是进入注意层的时间步数。一个常见的选择是缩放点积注意力。
A ( Q , K ) = S o f t max ( Q K ⊤ / d a t t n ) , A\left(Q,K\right)=Soft\max\left(QK^\top/\sqrt{d_{attn}}\right), A(Q,K)=Softmax(QK⊤/dattn),
Q Q Q : query, K K K : key, V V V : value, / d a t t n /\sqrt{d_{attn}} /dattn :除以K向量的维度,帮助模型拥有更稳定的梯度,如果不除,K的向量维度如果很大,会导致最后点乘结果变得很大,这样整个softmax函数会推向一个极小梯度的方向。 A t t e n t i o n ( ) Attention() Attention() :Attention feature。
-
为了提高标准注意机制的学习能力,提出了多头注意,对不同的表示子空间使用不同的头部 :
M u l t i H e a d ( Q , K , V ) = [ H 1 , . . . H m H ] W H , MultiHead(Q,K,V)=[H_1,...H_{m_H}]W_H, MultiHead(Q,K,V)=[H1,...HmH]WH,
H h = A t t e n t i o n ( Q W Q ( h ) , K W K ( h ) , V W V ( h ) ) , H_h=Attention(QW_Q^{(h)},KW_K^{(h)},VW_V^{(h)}), Hh=Attention(QWQ(h),KWK(h),VWV(h)),
传统的针对Q K V 针对每一个头都会有不同权重,但是 TFT 在这里 V 是多头共享的参数,Q K 本身是组成Attention 的一个重要部分,所以这两个就不用想参数了,每一个头都是每一个头的权重。 W H ∈ R ( m H ⋅ d V ) × d m o d e l W_H\in\mathbb{R}^{(m_H\cdot d_V)\times d_{model}} WH∈R(mH⋅dV)×dmodel 线性组合所有头部 H h H_h Hh 连接的输出。
-
考虑到每个头部使用不同的值,仅靠注意力权重并不能表明特定特征的重要性。因此,我们修改多头注意力以共享每个头部的值,并使用所有头部的加性聚合:
I n t e r p r e t a b l e M u l t i H e a d ( Q , K , V ) = H ~ W H , InterpretableMultiHead(Q,K,V)=\tilde{H}W_H, InterpretableMultiHead(Q,K,V)=H~WH,
H ~ = A ~ ( Q , K ) V W V , \tilde{H}=\tilde{A}\left(Q,K\right)VW_{V}, H~=A~(Q,K)VWV,
= { 1 m H ∑ h = 1 m H A ( Q W Q ( h ) , K W K ( h ) ) } V W V , =\left\{\frac1{m_H}\sum_{h=1}^{m_H}A\left(QW_Q^{(h)},KW_K^{(h)}\right)\right\}VW_V, ={mH1h=1∑mHA(QWQ(h),KWK(h))}VWV,
= 1 m H ∑ h = 1 m H A t t e n t i o n ( Q W Q ( h ) , K W K ( h ) , V W V ) , =\frac1{m_H}\sum_{h=1}^{m_H}Attention\left(QW_Q^{(h)},KW_K^{(h)},VW_V\right), =mH1h=1∑mHAttention(QWQ(h),KWK(h),VWV),
Temporal fusion decoder
给 LSTM Encoder 喂入过去的一些特征,再给 LSTM Decoder 喂入未来的一个特征,然后 LSTM 的编码器和解码器会再次经过 Gate 又做特征选择的工作,把这些特征都处理完了后会统一流入到这个TFT,所以TFT的输入把过去,未来和现在的信息都整合过来了。
整合之后会流入内部的三个模块:Static Enrichment, Temporal Self-Attention, Position-wise-Feed-forward。
Static enrichment
由于静态协变量通常对时间动态(例如疾病风险的遗传信息)有重大影响,我们引入了静态富集层,该层使用静态元数据增强时间特征。对于给定的位置指数 n,静态富集的形式为: θ ( t , n ) = G R N θ ( ϕ ~ ( t , n ) , c c ) , \theta\left(t,n\right)=GRN_\theta\left(\tilde{\phi}\left(t,n\right),c_c\right), θ(t,n)=GRNθ(ϕ~(t,n),cc), 其中 G R N θ GRN_\theta GRNθ 的权重在整个层中共享, c e c_e ce 是来自静态协变量编码器的上下文向量。
Temporal self-attention
在静态充实之后,我们接下来应用自我注意。所有静态丰富的时间特征首先被分组到一个单一矩阵,并且可解释的多头注意力应用于每个预测时间 τ m a x + k + 1 \tau_{max}+k+1 τmax+k+1 :
B ( t ) = I n t e r p r e t a b l e M u t i H e a d ( Θ ( t ) , Θ ( t ) , Θ ( t ) ) , B\left(t\right)=InterpretableMutiHead\left(\Theta\left(t\right),\Theta\left(t\right),\Theta\left(t\right)\right), B(t)=InterpretableMutiHead(Θ(t),Θ(t),Θ(t)),
解码器掩蔽应用于多头注意层,以确保每个时间维度只能关注它之前的特征。除了通过掩蔽保持因果信息流外,自注意层还允许 TFT 拾取长期依赖关系,这对于基于 RNN 的架构来说可能是一个挑战。 在自注意层之后,还应用了一个附加的门控层来促进训练:
δ ( t , n ) = L a y e r N o r m ( θ ( t , n ) + G L U δ ( β ( t , n ) ) ) , \delta(t,n)=LayerNorm(\theta(t,n)+GLU_\delta(\beta(t,n))), δ(t,n)=LayerNorm(θ(t,n)+GLUδ(β(t,n))),
Position-wise Feed-forward
我们对自注意层的输出进行额外的非线性处理。与静态富集层类似,它利用GRNs:
ψ ( t , n ) = G R N ψ ( δ ( t , n ) ) , \psi(t,n)=GRN_\psi\left(\delta(t,n)\right), ψ(t,n)=GRNψ(δ(t,n)),
其中 G R N ψ GRN_\psi GRNψ 权重在整个层中共享。我们还应用了一个门限值残差连接,跳过整个变压器块,提供了一个到序列到序列层的直接路径-如果不需要额外的复杂性,则产生一个更简单的模型,如下所示:
ψ ~ ( t , n ) = l a y e r N o r m ( ϕ ~ ( t , n ) + G L U ψ ~ ( ψ ( t , n ) ) ) , \tilde{\psi} (t,n)=layerNorm\left(\tilde{\phi} (t,n)+GLU_{\tilde{\psi}} (\psi (t,n))\right), ψ~(t,n)=layerNorm(ϕ~(t,n)+GLUψ~(ψ(t,n))),
Quantile outputs
TFT还在点预测的基础上生成预测区间。这是通过在每个时间步同时预测各种百分位数(例如第10、第50和第90)来实现的。分位数预测是使用时间融合解码器输出的线性变换生成的:
y ^ ( q , t , τ ) = W q ψ ~ ( t , τ ) + b q , \hat{y}\left(q,t,\tau\right)=W_q\tilde{\psi}\left(t,\tau\right)+b_q, y^(q,t,τ)=Wqψ~(t,τ)+bq,
Loss functions
分位数回归提出的原因:
就是因为不希望仅仅是研究y的期望,而是希望能探索y的完整分布状况,或者说可能在某些情况下我们更希望了解y的某个分位数。
所谓的0.9分位数回归,就是希望回归曲线之下能够包含90%的数据点(y),这也是分位数的概念,分位数回归是把分位数的概念融入到普通的线性回归而已。
TFT共同训练分位数的损失最小化所有分位数输出:
L ( Ω , W ) = ∑ y t ∑ q ∈ Q ∑ τ = 1 τ max Q L ( y t , y ^ ( q , t − τ , τ ) , q ) M τ max \mathcal{L}\left(\Omega,W\right)=\sum_{{y_{t}}}\sum_{q\in\mathcal{Q}}\sum_{\tau=1}^{{\tau_{\max}}}\frac{QL\left(y_{t},\hat{y}\left(q,t-\tau,\tau\right),q\right)}{M\tau_{\max}} L(Ω,W)=yt∑q∈Q∑τ=1∑τmaxMτmaxQL(yt,y^(q,t−τ,τ),q)
Q L ( y , y ^ , q ) = q ( y − y ^ ) + + ( 1 − q ) ( y ^ − y ) + QL\left(y,\hat{y},q\right)=q\left(y-\hat{y}\right)_++\left(1-q\right)\left(\hat{y}-y\right)_+ QL(y,y^,q)=q(y−y^)++(1−q)(y^−y)+
Ω \Omega Ω 的域包含M个样本数据, W W W 代表TFT的权重, Q \mathcal{Q} Q ={0.1, 0.5, 0.9} 在我们的实验中,(.) += max(0,.)。对于样本外检验,我们评估整个预测范围内的归一化分位数损失,重点关注P50和P90风险,以与以前的工作保持一致。
q − R i s k = 2 ∑ y t ∈ Ω ~ ∑ τ = 1 τ max Q L ( y t , y ^ ( q , t − τ , τ ) , q ) ∑ y t ∈ Ω ~ ∑ τ = 1 τ max ∣ y t ∣ q-Risk=\frac{2\sum_{{y_{t}\in\tilde{\Omega}}}\sum_{\tau=1}^{{\tau_{\max}}}QL\left(y_{t},\hat{y}\left(q,t-\tau,\tau\right),q\right)}{\sum_{{y_{t}\in\tilde{\Omega}}}\sum_{\tau=1}^{{\tau_{\max}}}\left|y_{t}\right|} q−Risk=∑yt∈Ω~∑τ=1τmax∣yt∣2∑yt∈Ω~∑τ=1τmaxQL(yt,y^(q,t−τ,τ),q)
其中 Ω ~ \tilde{\Omega} Ω~ 为测试样本的域。q-Risk 主要是为了解决量纲不一致的问题,为了保证每一条时序损失在一个相对的水平位置上,进行了一个正则化处理 / ∑ y t ∈ Ω ~ ∑ τ = 1 τ max ∣ y t ∣ /{\sum_{{y_{t}\in\tilde{\Omega}}}\sum_{\tau=1}^{{\tau_{\max}}}\left|y_{t}\right|} /yt∈Ω~∑τ=1∑τmax∣yt∣ 除以了 target,使得 q-Risk 尽可能在一个量纲下作比较,这样学习起来不会乱。
Performance evaluation
Datasets
-
用的电力和交通数据集的性能,这些数据集中于更简单的单变量时间序列,仅包含已知输入和目标。
UCI 电力负荷图数据集,包含370个客户的电力消耗中以小时水平聚合。我们使用过去一周(即168小时)来预测未来24小时。
UCI pemsf交通数据集描述了440条SF湾区高速公路的占用率。它还根据电力数据集以小时为单位进行聚合,具有相同的回顾窗口和预测范围。
-
接下来,零售数据集帮助我们使用在多层面预测应用程序中观察到的各种复杂输入对模型进行基准测试,包括丰富的静态元数据和观察到的时变输入。
来自Kaggle比赛的Favorita杂货销售数据集,它结合了不同产品和商店的元数据,以及在日常水平上采样的其他外生时变输入。我们使用过去90天的信息,预测未来30天的日志产品销售。
-
最后,为了评估在较小的噪声数据集上过拟合的稳健性,我们考虑了波动率预测的金融应用——使用比其他数据集小得多的数据集。
OMI实现库,包含31个股票指数的每日实现波动率值,从盘中数据计算,以及他们的每日收益。对于我们的实验,我们使用过去一年(即252个工作日)的信息来考虑下周(即5个工作日)的预测。
Training procedure
对于每个数据集,我们将所有时间序列划分为3部分——用于学习的训练集,用于超参数调优的验证集,以及用于性能评估的保留测试集。超参数优化是通过随机搜索进行的,对 volatile 进行240次迭代,对其他进行60次迭代。所有超参数的完整搜索范围如下,表1列出了数据集和最优模型参数。
为了保持可解释性,我们只采用单个可解释的多头注意层。
Computational cost
在所有数据集上,每个TFT模型都是在单个GPU上训练的,并且可以在不需要大量计算资源的情况下部署。例如,使用NVIDIA Tesla V100 GPU,我们的最佳TFT模型(用于电力数据集)只需要6小时多一点的训练时间(每个epoch大约52分钟)。对整个验证数据集(由50,000个样本组成)的批处理推理需要8分钟。通过特定于硬件的优化,TFT训练和推理时间可以进一步减少。
Benchmarks
我们将TFT与广泛的多水平预测模型进行了广泛的比较。超参数优化是在预定义的搜索空间上使用随机搜索进行的,在给定数据集的所有基准上使用相同数量的迭代。
-
直接方法
生成式预测由于TFT属于这类多视界模型,我们主要将比较重点放在直接在未来视界生成预测的深度学习模型上,包括:
(1) 具有全局上下文的简单序列到序列模型(Seq2Seq)
(2)多视界分位数循环预测器。
此外,我们还包括两个简单的直接基准来评估深度学习模型的好处:
(1)多层感知器(MLP),
(2) L2正则化线性分位数回归(Ridge)。
-
迭代方法
递归预测为了针对迭代模型上丰富的工作进行定位,我们使用与电力和交通数据集相同的设置来评估TFT。
对于更复杂的数据集,我们将重点放在ConvTrans模型上,因为它在之前的工作中比其他迭代模型表现得更好,而DeepAR则是因为它在从业者中很受欢迎。由于这类模型需要未来所有输入的知识来生成预测,我们通过将未知输入与它们的最后可用值输入来适应复杂数据集。
对于更简单的单变量数据集,为了一致性,我们注意到ARIMA、ETS、TRMF、DeepAR、DSSM和ConvTrans的结果。
Results and discussion
-
表2显示,TFT在各种数据集上的所有基准测试都显著优于所有基准测试,证明了将架构与一般多水平预测问题显式对齐的好处。这适用于点预测和不确定性估计,与次优模型相比,TFT的P50损失平均降低7%,P90损失平均降低9%。我们还在附录C中测试了TFT改进的统计显著性,结果显示TFT损失显著低于下一个最佳基准,置信度为95%。
-
比较直接模型和迭代模型,我们观察到计算观测到的输入的重要性——注意到ConvTrans在需要观测到的输入imputation的复杂数据集上的较差结果(即波动性和零售)。此外,当目标不能被高斯分布很好地捕获时,分位数回归的好处也被观察到,直接模型在这些情况下表现更好。例如,从Traffic数据集中可以看出,目标分布明显倾斜——超过90%的入住率下降在0到0.1之间,其余的平均分布直到1.0。
-
一系列真实数据集上的P50和P90分位数损失。括号中的百分比反映了与TFT相比分位数损失的增加(q-Risk越低越好),TFT在所有实验中优于竞争方法,比次优替代方法(下划线)提高3%至26%。
Ablation analysis
为了量化我们提出的每个架构贡献的好处,我们进行了广泛的消融分析——如下所示从网络中移除每个组件,并量化与原始架构相比损失增加的百分比: Gating layers: 我们通过将每个GLU层替换为一个简单的线性层,然后是ELU来消融。
- 静态协变量编码器: 我们通过将所有上下文向量设置为零。并将所有转换后的静态输入连接到所有依赖时间的过去和未来输入。
- 实例变量选择网络: 我们用可训练系数替换的softmax 输出,并删除生成变量选择权重的网络。
- 自注意层: 我们用可训练参数来替换可解释的头部注意层的注意矩阵,这可以防止TFT在不同的时间关注不同的输入特征,有助于评估实例注意权重的重要性。
- 用于局部处理的序列到序列层:替换为使用的标准位置编码来消除。
结论:
对于不同数据集,不同模块的重要性不一样。电力数据集self attention模块的影响度大是因为电力数据集周期性更加明显,当我要预测峰值的时候,attention模块在峰值上的attention score很大。交通数据集对于本身过去的目标值输入相比于周期性更加重要。
Interpretability
用例在建立了模型的性能优势之后,我们接下来将演示我们的模型设计如何允许分析它的各个组件来解释它已经学习到的一般关系。我们演示了三个可解释性用例:
(1) 检查每个输入变量在预测中的重要性。
(2) 可视化持久的时间模式。
(3) 识别导致时间动态显著变化的任何机制或事件。
与其他基于注意力的可解释性的例子相比放大了有趣但特定于实例的例子,我们的方法专注于在整个数据集上聚合模式的方法——提取关于时间动态的可概括见解。
Analyzing variable importance
-
我们首先通过分析变量选择权重来量化变量重要性。具体来说,我们为整个测试集中的每个变量聚合选择权重,记录每个抽样分布的第10、50和90个百分位。由于 Retail 数据集包含完整的可用输入类型(即静态元数据、已知输入、观察到的输入和目标),我们在表3中给出了变量重要性分析的结果。我们也注意到在其他数据集中也有类似的发现。
-
总的来说,结果表明TFT只提取了在预测中直观地发挥重要作用的关键输入的子集。持久时间模式的分析通常是理解给定数据集中存在的时间依赖关系的关键。例如,滞后模型经常被用于研究干预生效所需的时间长度,,例如政府增加公共支出对国民生产总值最终增长的影响。季节性模型也常用于计量经济学中,以确定目标的周期模式,并测量每个周期的长度。
-
从实际的角度来看,模型构建者可以使用这些见解来进一步改进预测模型——例如,如果在回溯窗口的开始观察到注意峰值,则增加接受域以纳入更多历史,或者通过工程特征直接纳入季节性影响。因此,使用时间融合解码器的自注意层中的注意权重,我们提出了一种识别相似持久模式的方法——通过测量过去固定滞后的特征对不同视界预测的贡献。
-
我们看到自注意层包含每个预测时间 t 的注意权重矩阵在每个预测视界 τ \tau τ 上的多头注意输出可以描述为每个位置 n 上较低水平特征的注意加权和: A ~ ( ϕ ( t ) , ϕ ( t ) ) \tilde{A}(\phi(t),\phi(t)) A~(ϕ(t),ϕ(t)) 。在每个预测视界 τ \tau τ 上的多头注意输出可以描述为每个位置 n 上较低水平特征的注意加权和:
β ( t , τ ) = ∑ n = − k τ max α ( t , n , τ ) θ ~ ( t , n ) , \beta\left(t,\tau\right)=\sum_{n=-k}^{\tau_{\max}}\alpha\left(t,n,\tau\right)\tilde{\theta}\left(t,n\right), β(t,τ)=n=−k∑τmaxα(t,n,τ)θ~(t,n),
可以通过分析 α ( t , n , τ ) \alpha\left(t,n,\tau\right) α(t,n,τ) 在所有时间步长和实体上的分布来确定前一个时间点 n < τ n < \tau n<τ 的重要性。
Visualizing persistent temporal patterns
-
可以用来阐明TFT模型所基于的最重要的过去时间步骤。与其他传统和机器学习时间序列方法相比,TFT可以从原始训练数据中学习这些模式,这些方法依赖于基于模型的规范来进行季节性和滞后分析。
-
图中显示了我们所有测试数据集上的注意力权重模式——上面的图绘制了测试集上一步预测(即 α ( t , 1 , τ ) \alpha(t,1,\tau) α(t,1,τ) )的注意力权重的第10、50和90百分位的平均值,下面的图绘制了各种范围(即 τ ∈ { 5 , 10 , 15 , 20 } \tau\in{\{5,10,15,20\}} τ∈{5,10,15,20})的平均注意力权重。我们观察到,这三个数据集呈现出季节性模式,电力和交通在每天的间隔中观察到明显的关注峰值,而零售的每周模式略弱。对于零售,我们也观察到衰退的趋势模式,最近几天占主导地位。
-
波动率没有观察到强烈的持续模式——注意力权重平均分布在所有位置上。这类似于特征水平上的移动平均滤波器,并且-考虑到与波动过程相关的高度随机性-可以通过平滑高频噪声来提取整个时期的趋势。
-
TFT从原始训练数据中学习这些持久的时间模式,而不需要任何人工硬编码。预计这种能力将通过健康检查在与人类专家建立信任方面非常有用。模型开发人员也可以使用这些来改进模型,例如通过特定的特征工程或数据收集。
Identifying regimes & significant events
-
识别体制和重大事件识别时间模式的突然变化也非常有用,因为由于重大体制或事件的存在,可能会发生暂时的变化。例如,制度转换行为在金融市场中被广泛记录,回报率特征(如波动性)被观察到在制度之间突然变化。因此,识别这种政权变化提供了对潜在问题的深刻见解,这对识别重大事件是有用的。
-
首先,对于一个给定的实体,我们将每个预测层的平均注意力模式定义为:
α ˉ ( n , τ ) = ∑ t = 1 T α ( t , j , τ ) / T , \bar{\alpha}\left(n,\tau\right)=\sum_{t=1}^T\alpha\left(t,j,\tau\right)/T, αˉ(n,τ)=t=1∑Tα(t,j,τ)/T,
-
为了比较注意力权重向量之间的相似性,我们使用了距离度量:
κ ( p , q ) = 1 − ρ ( p , q ) , \kappa\left(p,q\right)=\sqrt{1-\rho\left(p,q\right)}, κ(p,q)=1−ρ(p,q),
对于每个实体,然后使用在每个点上的注意向量之间的距离来测量时间动态的显著变化,并使用平均模式,对所有视界进行聚合,如下所示:
d i s t ( t ) = ∑ τ = 1 τ max κ ( α ˉ ( τ ) , α ( t , τ ) ) / τ max , dist\left(t\right)=\sum_{\tau=1}^{\tau_{\max}}\kappa\left(\bar{\alpha}\left(\tau\right),\alpha\left(t,\tau\right)\right)/\tau_{\max}, dist(t)=τ=1∑τmaxκ(αˉ(τ),α(t,τ))/τmax,
-
使用波动率数据集,我们试图通过将我们的距离度量应用于我们训练期间(2001年至2015年)标准普尔500指数的注意力模式来分析制度。将dist(t)与目标(即对数实现波动率)绘制在图5的底部图表中,可以在高波动率时期(例如2008年金融危机)观察到注意力模式的显著偏差-对应于dist(t)中观察到的峰值。从图中,我们可以看到TFT似乎改变了它在不同政权之间的行为——当波动率低时,对过去的输入给予同样的关注,而在高波动率时期更多地关注急剧的趋势变化——这表明在每种情况下学习的时间动力学存在差异。
标准普尔500指数实现波动率的制度识别。注意模式的显著偏差可以在高波动期前后观察到-对应于在dist(t)中观察到的峰值。我们使用dist(t) > 0.3的阈值来表示重要区域,如紫色所突出显示的。关注2008年金融危机前后的时期,右上方的图表可视化了显著区域的中间α(t, n, 1),与左上方的正常区域相比。
Conclusions
我们介绍了一种新的基于注意力的深度学习模型TFT,用于可解释的高性能多水平预测。为了有效地处理静态协变量、先验已知输入和跨广泛的多水平预测数据集的观测输入,TFT使用专门的组件。具体包括:
(1) 序列到序列和基于注意力的时序处理组件,在不同的时间尺度上捕获时变关系,
(2) 静态协变量编码器,允许网络对静态元数据进行时序预测,
(3) 门控组件,允许跳过不必要的网络部分,
(4) 变量选择,在每个时间步骤中选择相关的输入特征,
(5) 分位数预测,以获得所有预测范围内的输出间隔。
在广泛的现实世界任务中,无论是只包含已知输入的简单数据集,还是包含所有可能输入的复杂数据集,我们都表明TFT实现了最先进的预测性能。最后,我们通过一系列可解释性用例研究了TFT学习到的一般关系-提出了使用TFT的新方法
(i) 分析给定预测问题的重要变量,
(ii) 可视化学习到的持续时间关系(例如季节性),以及
(iii) 识别重大的制度变化。
参考博主链接:
- https://abby-shen.blog.csdn.net/article/details/128943987
- https://zhuanlan.zhihu.com/p/460282294
- https://zhuanlan.zhihu.com/p/383036166
- https://github.com/google-research/google-research/tree/master/tft
- https://arxiv.org/pdf/1912.09363.pdf
- https://github.com/google-research/google-research/tree/master/tft
- https://aihub.cloud.google.com/u/0/p/products%2F9f39ad8d-ad81-4fd9-8238-5186d36db2ec
- https://pytorch-forecasting.readthedocs.io/en/latest/tutorials/stallion.html
- https://zhuanlan.zhihu.com/p/461795429
- https://blog.csdn.net/sdf57/article/details/118368914