I n f o r m e r Informer Informer
摘要:
长序列时间序列的预测
i n f o r m e r informer informer优点:
- P r o b s p a r e Probspare Probspare自关注机制,在时间复杂度和内存使用方面达到 O ( N l o g N ) O(NlogN) O(NlogN),在序列依赖对齐方面性能较好。
- 自注意蒸馏通过将级联层输入减半来突出主导注意力,并有效地处理极长的输入序列。
- 以一次向前操作的方式预测长序列时间序列,提高了长序列预测的推理速度。
1.简介:
T r a n s f o r m e r Transformer Transformer求解 L S T F LSTF LSTF缺点:
- 自注意力的二次计算。标准的点积 ( d o t − p r o d u c t ) (dot-product) (dot−product)操作,会导致每一层的时间复杂度和内存使用都达到 O ( N 2 ) O(N^2) O(N2)的级别,其中 L L L是输入序列的长度。
- 长输入的堆叠层的内存瓶颈。 J J J编码器/解码器层的堆叠使得总内存使用量为 O ( J ⋅ L 2 ) O(J·L^2) O(J⋅L2),这限制了模型在接收长序列输入时的可扩展性。
- 预测长期产出的速度下降。原始 T r a n s f o r m e r Transformer Transformer的动态解码使得逐步推理与基于 R N N RNN RNN的模型一样慢,每个步骤都必须等待前一个步骤完成才能进行。
本文主要内容:
- 提出了 I n f o r m e r Informer Informer来成功地增强 L S T F LSTF LSTF问题的预测能力,这验证了类似 T r a n s f o r m e r Transformer Transformer模型的潜在价值,以捕捉长序列时间序列输出和输入之间的单个长期依赖关系。
- 提出了 P r o b S p a r s e ProbSparse ProbSparse自注意机制来有效地取代规范的自注意机制,实现了 O ( N l o g N ) O(NlogN) O(NlogN)的时间复杂度和 O ( N l o g N ) O(NlogN) O(NlogN)的内存使用。
- 提出了自注意力蒸馏操作特权支配 j − j- j−堆叠层的注意力分数,并大幅降低总空间复杂度为 O ( ( 2 − ϵ ) N l o g N ) O((2−\epsilon)NlogN) O((2−ϵ)NlogN)。
- 提出生成式解码器 ( G e n e r a t i v e S t y l e D e c o d e r ) (Generative Style Decoder) (GenerativeStyleDecoder),只需要向前一步就可以获得长序列输出,同时避免累积错误传播
I n f o r m e r Informer Informer模型的整体图。左边的部分是 E n c o d e r Encoder Encoder,它接收大量的长序列输入(绿色系列)。我们已经用提出的 P r o b S p a r s e ProbSparse ProbSparse自注意取代了规范的自注意。蓝色梯形是提取支配性注意的自注意蒸馏操作,急剧减小网络规模。层堆叠副本提高了鲁棒性。对于右侧部分,解码器接收长序列输入,将目标元素填充为零,测量特征图的加权注意力组成,并以生成式的方式立即预测输出元素(橙色系列)。
2.预备
定义:在具有固定大小窗口的滚动预测设置下,在 t t t时刻的输入为 X t = { x t 1 , … , x t L x ∣ x t i ∈ R d x } X_t = \{ x_t^1, \ldots, x_t^{L_x} \,|\, x_t^i \in \mathbb{R}^{d_x} \} Xt={xt1,…,xtLx∣xti∈Rdx},输出为 Y t = { y t 1 , … , y t L y ∣ y t i ∈ R d y } Y_t = \{ y_t^1, \ldots, y_t^{L_y} \,|\, y_t^i \in \mathbb{R}^{d_y} \} Yt={yt1,…,ytLy∣yti∈Rdy}
编码器-解码器架构 ( E n c o d e r − d e c o d e r a r c h i t e c t u r e ) (Encoder-decoder\ architecture) (Encoder−decoder architecture)被设计用于将输入表示 X t X_t Xt “编码”为隐藏状态表示 H t H_t Ht,并从 H t = h t 1 , . . . , h t L h H_t = {h_t^1, ..., h_t^{L_h}} Ht=ht1,...,htLh 中“解码”出输出表示 Y t Y_t Yt。推理过程涉及一个名为“动态解码” ( d y n a m i c d e c o d i n g ) (dynamic\ decoding) (dynamic decoding)的逐步过程,其中解码器根据前一个状态 h t k h_t^k htk和第 k k k 步的其他必要输出,计算新的隐藏状态 h t k + 1 h_t^{k+1} htk+1,然后预测第 ( k + 1 ) (k+1) (k+1) 个序列 y t k + 1 y_t^{k+1} ytk+1。
在这个架构中,编码器负责处理输入数据(例如,一个句子、一段文本、一个图像等),并将其转换为一个或多个隐藏状态向量。这些隐藏状态向量捕获了输入数据的重要信息,这些信息随后被解码器用来生成输出序列。
解码器则负责利用这些隐藏状态向量来生成输出数据。在生成输出时,解码器通常会采用一种序列到序列 ( s e q u e n c e − t o − s e q u e n c e ) (sequence-to-sequence) (sequence−to−sequence)的方法,即一个步骤接着一个步骤地生成输出序列。在每个步骤中,解码器都会考虑前一个步骤的输出和隐藏状态,来预测下一个输出。
假设我们有
t
t
t个序列输入
X
t
X_t
Xt和
p
p
p种类型的全局时间戳,输入表示后的特征维度为
d
m
o
d
e
l
d_{model}
dmodel。我们首先通过使用固定位置嵌入来保持低阶上下文,即
P
E
(
p
o
s
,
2
j
)
=
sin
(
p
o
s
(
2
L
x
)
2
j
/
d
model
)
PE(pos, 2j) = \sin\left(\frac{pos}{{(2L_x)}^{2j/d_{\text{model}}}}\right)
PE(pos,2j)=sin((2Lx)2j/dmodelpos),
P
E
(
p
o
s
,
2
j
+
1
)
=
cos
(
p
o
s
(
2
L
x
)
2
j
/
d
model
)
PE(pos, 2j+1) = \cos\left(\frac{pos}{{(2L_x)}^{2j/d_{\text{model}}}}\right)
PE(pos,2j+1)=cos((2Lx)2j/dmodelpos),,其中
j
∈
{
1
,
…
,
d
model
2
}
j \in \left\{1, \ldots, \frac{d_{\text{model}}}{2}\right\}
j∈{1,…,2dmodel}.。每个全局时间戳由一个可学习的戳嵌入
S
E
(
p
o
s
)
SE_{(pos)}
SE(pos)使用,词汇表大小有限(最多
60
60
60个,即以分钟为最细粒度)。也就是说,自注意力的相似度计算可以访问全局上下文,并且在长输入上的计算开销是可以承受的。为了对齐维度,我们使用一维卷积滤波器(核宽度=
3
3
3,步长=
1
1
1)将标量上下文
x
i
t
x_{i}^{t}
xit投影
d
m
o
d
e
l
d_{model}
dmodel-维向量
u
i
t
u_{i}^{t}
uit。因此,我们有了如下的f反馈向量:
X
feed[i]
t
=
α
u
i
t
+
PE
(
L
x
×
(
t
−
1
)
+
i
)
+
∑
p
[
SE
(
L
x
×
(
t
−
1
)
+
i
)
]
p
X_{\text{feed[i]}}^t = \alpha u_i^t + \text{PE}(L_x \times (t-1) + i) + \sum_{p} \left[ \text{SE}_{(L_x \times (t-1) + i)} \right]_{\text{p}}
Xfeed[i]t=αuit+PE(Lx×(t−1)+i)+∑p[SE(Lx×(t−1)+i)]p,其中
i
∈
{
1
,
…
,
L
x
}
i \in \{1, \dots, L_x\}
i∈{1,…,Lx},并且
α
α
α是一个用于平衡标量投影与局部/全局嵌入之间的幅度的因子。如果序列输入已经被标准化了,我们推荐
α
=
1
α=1
α=1。这里的PE代表位置嵌入
(
p
o
s
i
t
i
o
n
e
m
b
e
d
d
i
n
g
)
(position\ embedding)
(position embedding),用于捕捉序列中每个位置的信息;而
S
E
SE
SE是学习的时间戳嵌入 ,
α
α
α是一个超参数,用于平衡不同的嵌入或投影对最终输入向量的贡献。
3.方法论
高效自我注意机制
自注意力机制接收一个元组输入
(
q
u
e
r
y
,
k
e
y
,
v
a
l
u
e
)
(query, key, value)
(query,key,value),并通过缩放点积运算
(
s
c
a
l
e
d
d
o
t
−
p
r
o
d
u
c
t
)
(scaled dot-product)
(scaleddot−product)进行运算,表示为
A
(
Q
,
K
,
V
)
=
Softmax
(
Q
K
⊤
d
)
V
,
其中
Q
∈
R
L
Q
×
d
,
K
∈
R
L
K
×
d
,
V
∈
R
L
V
×
d
A(Q, K, V) = \text{Softmax}\left(\frac{QK^{\top}}{\sqrt{d}}\right)V, \text{其中 } Q \in \mathbb{R}^{L_Q \times d}, K \in \mathbb{R}^{L_K \times d}, V \in \mathbb{R}^{L_V \times d}
A(Q,K,V)=Softmax(dQK⊤)V,其中 Q∈RLQ×d,K∈RLK×d,V∈RLV×d,其中
d
d
d 是输入维度。为了进一步讨论自注意力机制,令
q
i
q_i
qi,
k
i
k_i
ki,
v
i
v_i
vi 分别表示
Q
Q
Q,
K
K
K,
V
V
V 中的第
i
i
i 行。根据
T
s
a
i
e
t
a
l
.
(
2019
)
Tsai \ et\ al. (2019)
Tsai et al.(2019) 的公式,第
i
i
i 个查询的注意力被定义为概率形式的核平滑器
(
k
e
r
n
e
l
s
m
o
o
t
h
e
r
)
(kernel\ smoother)
(kernel smoother): 则:
A
(
q
i
,
K
,
V
)
=
∑
j
k
(
q
i
,
k
j
)
∑
l
k
(
q
i
,
k
l
)
v
j
=
E
p
(
k
j
∣
q
i
)
[
v
j
]
方程一
A(q_i, K, V) = \sum_j \frac{k(q_i, k_j)}{\sum_l k(q_i, k_l)} v_j=\mathbb{E}_{p(k_j|q_i)}[v_j] \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 方程一
A(qi,K,V)=j∑∑lk(qi,kl)k(qi,kj)vj=Ep(kj∣qi)[vj] 方程一
其中,
p
(
k
j
∣
q
i
)
=
k
(
q
i
,
k
j
)
∑
l
k
(
q
i
,
k
l
)
p(k_j|q_i) = \frac{k(q_i, k_j)}{\sum_l k(q_i, k_l)}
p(kj∣qi)=∑lk(qi,kl)k(qi,kj) ,
k
(
q
i
,
k
j
)
k(q_i, k_j)
k(qi,kj) 是一个核函数。这里我们使用不对称的指数核函数
exp
(
q
i
⋅
k
j
d
)
\exp\left(\frac{q_i \cdot k_j}{\sqrt{d}}\right)
exp(dqi⋅kj)。自注意力机制通过计算概率$ (p(k_j|q_i)) $来结合值并获取输出。这需要二次时间复杂度的点积计算和
(
O
(
L
Q
L
K
)
)
(O(L_Q L_K))
(O(LQLK)) 的内存使用,这是提高预测能力的主要缺点。
从方程
(
1
)
(1)
(1)中,第
(
i
)
(i)
(i)个查询对所有键的注意力被定义为一个概率
(
p
(
k
j
∣
q
i
)
)
(p(k_j|q_i))
(p(kj∣qi)),而输出是其与值
(
v
)
(v)
(v)的组合。主要的点积对会鼓励对应的查询注意力概率分布远离均匀分布。如果
(
p
(
k
j
∣
q
i
)
)
(p(k_j|q_i))
(p(kj∣qi))接近均匀分布
(
q
(
k
j
∣
q
i
)
=
1
L
K
)
(q(k_j|q_i) = \frac{1}{L_K})
(q(kj∣qi)=LK1),那么自注意力就变成了值
(
V
)
(V)
(V)的简单和,并且对输入是冗余的。自然地,分布
(
p
)
(p)
(p) 和
(
q
)
(q)
(q)之间的“相似性”可以用来区分“重要”的查询。我们通过
K
u
l
l
b
a
c
k
−
L
e
i
b
l
e
r
Kullback-Leibler
Kullback−Leibler散度(
K
L
KL
KL散度)来测量“相似性”,
K
L
KL
KL散度定义为:
K
L
(
q
∣
∣
p
)
=
ln
(
∑
l
=
1
L
K
e
q
i
⋅
k
l
T
d
)
−
ln
(
L
K
)
−
∑
j
=
1
L
K
1
L
K
⋅
q
i
⋅
k
l
T
d
\begin{equation*} KL(q||p) = \ln\left( \sum_{l=1}^{L_K} e^{\frac{q_i \cdot k_l^T}{\sqrt{d}}} \right) - \ln(L_K) - \sum_{j=1}^{L_K} \frac{1}{L_K} \cdot {\frac{q_i \cdot k_l^T}{\sqrt{d}}} \end{equation*}
KL(q∣∣p)=ln(l=1∑LKedqi⋅klT)−ln(LK)−j=1∑LKLK1⋅dqi⋅klT
我们定义第
(
i
)
(i)
(i) 个查询的稀疏度测量为:
M
(
q
i
,
K
)
=
ln
(
∑
j
=
1
L
K
e
q
i
⋅
k
j
T
d
)
−
1
L
K
∑
j
=
1
L
K
q
i
⋅
k
j
T
d
方程二
M(q_i, K) = \ln\left( \sum_{j=1}^{L_K} e^{\frac{q_i \cdot k_j^T}{\sqrt{d}}} \right) - \frac{1}{L_K} \sum_{j=1}^{L_K} \frac{q_i \cdot k_j^T}{\sqrt{d}}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 方程二
M(qi,K)=ln(j=1∑LKedqi⋅kjT)−LK1j=1∑LKdqi⋅kjT 方程二
第一项是所有键上 ( q i ) (q_i) (qi) 的 L o g − S u m − E x p ( L S E ) Log-Sum-Exp(LSE) Log−Sum−Exp(LSE),第二项是这些键的算术平均值。如果第 ( i ) (i) (i)个查询获得了较大的 ( M ( q i , K ) ) (M(q_i, K)) (M(qi,K))值,那么它的注意力概率 ( p ) (p) (p) 就更加“多样化”,并且有很大可能性包含长尾自注意力分布中头部字段的主要点积对。这里,“多样化”意味着注意力不仅仅集中在少数几个键上,而是相对均匀地分布在多个键上。同时,由于 ( M ( q i , K ) ) (M(q_i, K)) (M(qi,K)) 值较大,该查询的注意力分布更有可能包含那些具有较大点积值的键-查询对,这些对在长尾分布中占据主导地位。
基于所提出的度量标准,我们通过允许每个键仅关注于占主导地位的查询u,从而实现了
P
r
o
b
S
p
a
r
s
e
ProbSparse
ProbSparse自注意力机制。
A
(
Q
,
K
,
V
)
=
Softmax
(
Q
‾
K
T
d
)
V
方程三
A(Q, K, V) = \text{Softmax}\left(\frac{\overline QK^T}{\sqrt{d}}\right)V\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 方程三
A(Q,K,V)=Softmax(dQKT)V 方程三
其中,
(
Q
‾
)
(\overline Q)
(Q)是一个与
(
q
)
(q)
(q) 相同大小的稀疏矩阵,它仅包含根据稀疏性度量
(
M
(
q
,
K
)
)
(M(q,K))
(M(q,K)) 选择的前
(
u
)
(u)
(u) 个查询。通过一个常数采样因子
(
c
)
(c)
(c) 来控制,我们设定
(
u
=
c
⋅
ln
L
Q
)
(u = c \cdot \ln L_Q)
(u=c⋅lnLQ),这使得
P
r
o
b
S
p
a
r
s
e
ProbSparse
ProbSparse 自注意力机制在每次查询-键查找时只需要计算
(
O
(
ln
L
Q
)
)
(O(\ln L_Q))
(O(lnLQ)) 个点积,并且层的内存使用保持在
(
O
(
L
K
ln
L
Q
)
)
(O(L_K \ln L_Q))
(O(LKlnLQ))。
简单来说, P r o b S p a r s e ProbSparse ProbSparse 自注意力机制通过稀疏化手段,仅对稀疏矩阵 ( Q ) (Q) (Q)中的前 ( u ) (u) (u)个查询(根据某种稀疏性度量)进行计算,从而降低了计算复杂度和内存使用。这里的 ( u ) (u) (u) 是基于查询数量 ( L Q ) (L_Q) (LQ)的对数和一个常数采样因子 ( c ) (c) (c) 来确定的。
然而,为了计算度量 ( M ( q i , K ) ) (M(q_i, K)) (M(qi,K))而遍历所有查询需要计算每对点积,即时间复杂度为平方级别的 ( O ( L Q L K ) ) (O(L_Q L_K)) (O(LQLK)),并且 L S E ( L o g − S u m − E x p ) LSE(Log-Sum-Exp) LSE(Log−Sum−Exp)操作存在潜在的数值稳定性问题。鉴于这一点,我们提出了一个查询稀疏性度量的近似方法。
引理一:对于每个查询 q i ∈ R d q_i \in \mathbb{R}^d qi∈Rd 和键集中的 k j ∈ R d k_j \in \mathbb{R}^d kj∈Rd 在集合 K K K 中,我们有边界 ln L K ≤ M ( q i , K ) ≤ max j { q i ⋅ k j T d } − 1 L K ⋅ ∑ j = 1 L K { q i ⋅ k j T d } + ln L K \ln L_K \leq M(q_i, K) \leq \max_j \left\{ \frac{ \, q_i \cdot k_j^T}{\sqrt{d}} \right\} - \frac 1{L_K}\cdot \sum_{j=1}^{L_K} \left\{ \frac{ \, q_i \cdot k_j^T}{\sqrt{d}} \right\}+ \ln L_K lnLK≤M(qi,K)≤jmax{dqi⋅kjT}−LK1⋅j=1∑LK{dqi⋅kjT}+lnLK 。当 q i ∈ K q_i \in K qi∈K 时,该不等式也成立。
根据引理一,我们提出了最大均值测量为:
M
‾
(
q
i
,
K
)
=
max
j
{
q
i
⋅
k
j
T
d
}
−
1
L
K
∑
j
=
1
L
K
q
i
⋅
k
j
T
d
方程四
\overline M(q_i, K) = \max_j \left\{ \frac{q_i \cdot k_j^T}{\sqrt{d}} \right\} - \frac{1}{L_K} \sum_{j=1}^{L_K}\frac{q_i \cdot k_j^T}{\sqrt{d}} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 方程四
M(qi,K)=jmax{dqi⋅kjT}−LK1j=1∑LKdqi⋅kjT 方程四
命题一:假设
k
j
∼
N
(
μ
,
Σ
)
k_j \sim N(\mu, \Sigma)
kj∼N(μ,Σ),我们让
q
k
i
q{k_i}
qki 表示集合
{
(
q
i
k
j
T
)
/
d
∣
j
=
1
,
…
,
L
K
}
\left\{ \left( q_i{k_j^T} \right) / \sqrt{d} \,|\, j = 1, \ldots, L_K \right\}
{(qikjT)/d∣j=1,…,LK},那么对于
∀
M
m
=
max
i
M
(
q
i
,
K
)
\forall M_m = \max_i M(q_i, K)
∀Mm=maxiM(qi,K),存在
κ
>
0
\kappa > 0
κ>0 使得:在区间
∀
q
1
,
q
2
∈
{
q
∣
M
(
q
,
K
)
∈
[
M
m
,
M
m
−
κ
)
}
\forall q_1, q_2 \in \{ q \,|\, M(q, K) \in [M_m, M_m - \kappa) \}
∀q1,q2∈{q∣M(q,K)∈[Mm,Mm−κ)} 内,如果
M
‾
(
q
1
,
K
)
>
M
‾
(
q
2
,
K
)
\overline M(q_1, K) > \overline M(q_2, K)
M(q1,K)>M(q2,K) 并且
Var
(
q
k
1
)
>
Var
(
q
k
2
)
\text{Var}(q{k_1}) > \text{Var}(q{k_2})
Var(qk1)>Var(qk2),那么
M
(
q
1
,
K
)
>
M
(
q
2
,
K
)
M(q_1, K) > M(q_2, K)
M(q1,K)>M(q2,K) 的概率很高。为了简化,证明中给出了概率的估计。
边界放宽下的前 ( u ) (u) (u) 个的顺序在命题 1 1 1(请参阅附录 D . 2 D.2 D.2中的证明)中得以保持。在长尾分布下,我们仅需要随机抽取 ( U = L Q ln L K ) (U = L_Q \ln L_K) (U=LQlnLK)个点积对来计算 ( M ‾ ( q i , K ) ) (\overline M(q_i, K)) (M(qi,K)),即将其余的点积对填充为零。我们从中选择稀疏的前 ( u ) (u) (u)个作为 ( Q ) (Q) (Q)。在 ( M ( q i , K ) ) (M(q_i, K)) (M(qi,K)) 中的最大值操作对零值不太敏感,并且数值上是稳定的。在实践中,查询和键的输入长度通常是相等的,即 ( L Q = L K = L ) (L_Q = L_K = L) (LQ=LK=L),这样 P r o b S p a r s e ProbSparse ProbSparse自注意力的总时间复杂度和空间复杂度都是 ( O ( L ln L ) ) (O(L \ln L)) (O(LlnL))。
E n c o d e r : Encoder: Encoder:允许在内存使用限制下处理更长的顺序输入
该编码器被设计用于提取长序列输入中的稳健长程依赖关系。在输入表示之后,第 t t t个序列输入 X t X_t Xt被重塑为一个大小为 L x × d model L_x \times d_{\text{model}} Lx×dmodel的矩阵 X t feed en ∈ R L x × d model X_t^{\text{feed en}} \in \mathbb{R}^{L_x \times d_{\text{model}}} Xtfeed en∈RLx×dmodel。
自注意力蒸馏
(
S
e
l
f
−
a
t
t
e
n
t
i
o
n
D
i
s
t
i
l
l
i
n
g
)
(Self-attention\ Distilling)
(Self−attention Distilling)作为
P
r
o
b
S
p
a
r
s
e
ProbSparse
ProbSparse自注意力机制的自然结果,编码器的特征图包含了冗余的值
V
V
V组合。我们利用蒸馏操作来突出具有主导特征的优势组合,并在下一层生成一个集中的自注意力特征图。这极大地缩减了输入的时间维度,如图中注意力模块的
n
n
n个头权重矩阵(重叠的红色方块)所示。受到空洞卷积
(
Y
u
,
K
o
l
t
u
n
,
a
n
d
F
u
n
k
h
o
u
s
e
r
2017
;
G
u
p
t
a
a
n
d
R
u
s
h
2017
)
(Yu, Koltun, and \ Funkhouser \ 2017; Gupta \ and \ Rush \ 2017)
(Yu,Koltun,and Funkhouser 2017;Gupta and Rush 2017)的启发,我们的“蒸馏”过程从第
j
j
j层向前传递到第
(
j
+
1
)
(j+1)
(j+1)层,作为
X
t
j
+
1
=
MaxPool
(
ELU
(
Conv1d
[
X
t
j
]
A
B
)
)
方程五
X_{t}^{j+1} = \text{MaxPool}\left( \text{ELU}\left( \text{Conv1d}\ \left[ X_{t}^{j} \right]_{AB} \right) \right)\ \ \ \ \ \ \ \ \ \ \ \ \ 方程五
Xtj+1=MaxPool(ELU(Conv1d [Xtj]AB)) 方程五
其中,该表达式 [ ⋅ ] A B [·]_{AB} [⋅]AB包含多头ProbSparse自注意力机制以及注意力块中的关键操作,其中 C o n v 1 d ( ⋅ ) Conv1d(·) Conv1d(⋅)在时间维度上执行一维卷积滤波器 ( ( (核宽度 = 3 ) =3) =3),并使用 E L U ( ⋅ ) ELU(·) ELU(⋅)作为激活函数 ( C l e v e r t , U n t e r t h i n e r , a n d H o c h r e i t e r 2016 ) (Clevert, Unterthiner, and\ Hochreiter\ 2016) (Clevert,Unterthiner,and Hochreiter 2016)。我们在堆叠一层后添加一个步长为 2 2 2的最大池化层,将 X t X_t Xt下采样到其一半的切片,这样可以将整个内存使用量减少到 O ( ( 2 − ε ) L l o g L ) O((2 - ε)L log L) O((2−ε)LlogL),其中 ε ε ε是一个很小的数。为了增强蒸馏操作的鲁棒性,我们构建了主堆栈的减半副本,并通过每次丢弃一层来逐渐减少自注意力蒸馏层的数量,形成一个如图所示的金字塔结构,从而使其输出维度对齐。因此,我们将所有堆栈的输出连接起来,得到编码器的最终隐藏表示。
D e c o d e r : Decoder: Decoder:通过一个前向过程生成长序列输出
我们使用的标准解码器结构
V
a
s
w
a
n
i
e
t
a
l
.
2017
Vaswani\ et\ al. 2017
Vaswani et al.2017,它由两层相同的多头注意力层堆叠而成。然而,为了缓解长预测中速度下降的问题,我们采用了生成式推理。我们将以下向量作为输入提供给解码器:
X
feed de
t
=
Concat
(
X
token
t
,
X
0
t
)
∈
R
(
L
token
+
L
y
)
×
d
model
方程六
\mathbf{X}_{\text{feed de}}^t = \text{Concat}(\mathbf{X}_{\text{token}}^t, \mathbf{X}_{0}^t) \in \mathbb{R}^{(L_{\text{token}} + L_y) \times d_{\text{model}}}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 方程六
Xfeed det=Concat(Xtokent,X0t)∈R(Ltoken+Ly)×dmodel 方程六
其中,
X
t
token
∈
R
L
token
×
d
model
X_t^{\text{token}} \in \mathbb{R}^{L_{\text{token}} \times d_{\text{model}}}
Xttoken∈RLtoken×dmodel作为起始令牌。
X
t
0
Xt_0
Xt0是一个占位符,用于目标序列(将其标量值设为
0
0
0)。在
P
r
o
b
S
p
a
r
s
e
ProbSparse
ProbSparse自注意力计算中,应用了掩码多头注意力
(
M
a
s
k
e
d
M
u
l
t
i
−
h
e
a
d
A
t
t
e
n
t
i
o
n
)
(Masked\ Multi-head\ Attention)
(Masked Multi−head Attention),通过将掩码的点积设置为
−
∞
−∞
−∞来阻止每个位置关注到后续位置,从而避免了自回归
(
a
u
t
o
−
r
e
g
r
e
s
s
i
v
e
)
(auto-regressive)
(auto−regressive)性质。一个全连接层获取最终输出,其输出大小
d
y
d_y
dy 取决于我们是否执行单变量预测或多变量预测。
生成式推断中的起始令牌是自然语言处理中“动态解码”的一种高效技术,我们将其扩展为生成式的方式。我们并没有选择特定的标志作为令牌,而是在输入序列中采样一个长度为 L t o k e n L_{token} Ltoken的序列,该序列是输出序列之前的一个较早片段。以预测 168 168 168个点为例(即 7 7 7天的温度预测),我们将目标序列之前的已知 5 5 5天作为“起始令牌”,并将这些信息与生成式推断解码器一起输入,表示为 X f e e d d e = X 5 d , X 0 X_{feed_de} = {X_{5d}, X_0} Xfeedde=X5d,X0。其中, X 0 X_0 X0包含目标序列的时间戳,即目标周的背景信息。值得注意的是,我们提出的解码器通过一次前向过程即可预测所有输出,避免了传统编码器-解码器架构中耗时的“动态解码”过程。在计算效率部分,我们给出了详细的性能比较。
我们选择均方误差 ( M S E ) (MSE) (MSE)作为预测值与目标序列之间的损失函数,并将损失从解码器的输出反向传播至整个模型。