相对位置编码(Relative Positional Encoding)
相对位置编码主要是为了在自注意力机制中引入相对位置的信息,而不是绝对位置。这种方法在处理长序列和序列中元素的相对关系时表现得更好。
原理
在相对位置编码中,注意力权重不仅依赖于内容向量(Query和Key),还依赖于元素之间的相对位置。相对位置编码可以通过计算一个位置相关的偏置矩阵,在注意力计算中作为额外的加权因子,而不需要与输入序列相加。
假设有一个输入序列 X = [ x 1 , x 2 , . . . , x n ] X = [x_1, x_2, ..., x_n] X=[x1,x2,...,xn],其中 n n n 是序列的长度。
公式
传统的自注意力机制公式为:
Attention
(
Q
,
K
,
V
)
=
softmax
(
Q
K
T
d
k
)
V
\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V
Attention(Q,K,V)=softmax(dkQKT)V
在相对位置编码中,公式会变为:
a
i
j
=
(
Q
i
W
Q
)
⋅
(
K
j
W
K
)
T
+
r
i
j
d
k
a_{ij} = \frac{(Q_i W^Q) \cdot (K_j W^K)^T + r_{ij}}{\sqrt{d_k}}
aij=dk(QiWQ)⋅(KjWK)T+rij
其中,
r
i
j
r_{ij}
rij 是一个表示位置关系的偏置项。
举例
假设有一个简单的输入序列 X = [ x 1 , x 2 , x 3 ] X = [x_1, x_2, x_3] X=[x1,x2,x3],每个元素的维度是 d k = 2 d_k = 2 dk=2,总共有 3 个元素。我们使用相对位置编码来处理这个序列。
1. 初始化 Query 和 Key
假设 Query 和 Key 矩阵如下:
Q
=
[
1
0
0
1
1
1
]
,
K
=
[
0
1
1
0
1
1
]
Q = \begin{bmatrix} 1 & 0 \\ 0 & 1 \\ 1 & 1 \end{bmatrix}, \quad K = \begin{bmatrix} 0 & 1 \\ 1 & 0 \\ 1 & 1 \end{bmatrix}
Q=
101011
,K=
011101
2. 计算相对位置编码矩阵
假设我们定义一个简单的相对位置编码矩阵
R
R
R,其元素
r
i
j
r_{ij}
rij 表示位置
i
i
i 和位置
j
j
j 之间的相对位置信息:
R
=
[
0
1
2
−
1
0
1
−
2
−
1
0
]
R = \begin{bmatrix} 0 & 1 & 2 \\ -1 & 0 & 1 \\ -2 & -1 & 0 \end{bmatrix}
R=
0−1−210−1210
3. 计算注意力得分
对于每个元素
i
,
j
i, j
i,j,计算注意力得分
a
i
j
a_{ij}
aij:
a
i
j
=
(
Q
i
⋅
K
j
T
)
+
r
i
j
d
k
a_{ij} = \frac{(Q_i \cdot K_j^T) + r_{ij}}{\sqrt{d_k}}
aij=dk(Qi⋅KjT)+rij
例如,计算
a
11
a_{11}
a11,
a
12
a_{12}
a12,和
a
13
a_{13}
a13:
a
11
=
(
1
⋅
0
+
0
⋅
1
)
+
0
2
=
0
2
=
0
a_{11} = \frac{(1 \cdot 0 + 0 \cdot 1) + 0}{\sqrt{2}} = \frac{0}{\sqrt{2}} = 0
a11=2(1⋅0+0⋅1)+0=20=0
a
12
=
(
1
⋅
1
+
0
⋅
0
)
+
1
2
=
1
+
1
2
=
2
2
=
2
a_{12} = \frac{(1 \cdot 1 + 0 \cdot 0) + 1}{\sqrt{2}} = \frac{1 + 1}{\sqrt{2}} = \frac{2}{\sqrt{2}} = \sqrt{2}
a12=2(1⋅1+0⋅0)+1=21+1=22=2
a
13
=
(
1
⋅
1
+
0
⋅
1
)
+
2
2
=
1
+
2
2
=
3
2
=
3
2
2
a_{13} = \frac{(1 \cdot 1 + 0 \cdot 1) + 2}{\sqrt{2}} = \frac{1 + 2}{\sqrt{2}} = \frac{3}{\sqrt{2}} = \frac{3\sqrt{2}}{2}
a13=2(1⋅1+0⋅1)+2=21+2=23=232
对所有 i , j i, j i,j 计算类似的得分矩阵 A A A:
A = [ 0 2 3 2 2 1 2 1 2 3 2 2 2 3 2 0 ] A = \begin{bmatrix} 0 & \sqrt{2} & \frac{3\sqrt{2}}{2} \\ \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} & \frac{3}{\sqrt{2}} \\ \frac{2}{\sqrt{2}} & \frac{3}{\sqrt{2}} & 0 \end{bmatrix} A= 0212222123232230
4. 计算注意力权重
使用 softmax 函数将得分矩阵
A
A
A 转换为权重矩阵:
Attention
i
j
=
e
a
i
j
∑
k
e
a
i
k
\text{Attention}_{ij} = \frac{e^{a_{ij}}}{\sum_{k} e^{a_{ik}}}
Attentionij=∑keaikeaij
总结
相对位置编码在注意力机制中引入了元素之间的相对位置信息,而不是依赖于绝对位置。这种方法在处理长序列和捕捉序列中的相对关系时表现得更好。通过这个例子,可以看到相对位置编码如何影响注意力得分的计算,从而在注意力机制中更好地捕捉位置关系。
涉及相对位置编码(Relative Positional Encoding)的时间序列处理相关论文主要集中在改进Transformer模型及其在自然语言处理和时间序列预测中的应用。以下是几篇有代表性的论文:
1. “Attention is All You Need”
作者: Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Łukasz Kaiser, Illia Polosukhin
摘要: 这是Transformer的开创性论文,引入了自注意力机制和绝对位置编码,但后来的研究在此基础上发展了相对位置编码。
2. “Self-Attention with Relative Position Representations”
作者: Peter Shaw, Jakob Uszkoreit, Ashish Vaswani
摘要: 这篇论文提出了相对位置编码的方法,用于改进自注意力机制,增强模型对序列中元素相对位置的感知。
链接: Self-Attention with Relative Position Representations
3. “Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context”
作者: Zihang Dai, Zhilin Yang, Yiming Yang, Jaime Carbonell, Quoc V. Le, Ruslan Salakhutdinov
摘要: 这篇论文介绍了Transformer-XL模型,解决了长序列建模中的问题,并引入了相对位置编码来提高对长距离依赖的捕捉能力。
链接: Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context
4. “Relative Position Encoding for Transformers with Linear Complexity”
作者: Aakanksha Chowdhery, Imran Zubair, Ming-Wei Chang, Tfianna Pak
摘要: 这篇论文讨论了如何在保持Transformer模型线性复杂度的同时引入相对位置编码。
链接: Relative Position Encoding for Transformers with Linear Complexity
5. “Reformer: The Efficient Transformer”
作者: Nikita Kitaev, Łukasz Kaiser, Anselm Levskaya
摘要: 这篇论文介绍了Reformer模型,它使用了局部敏感哈希和可逆残差层来提高Transformer的效率,并结合相对位置编码。
链接: Reformer: The Efficient Transformer
6. “Longformer: The Long-Document Transformer”
作者: Iz Beltagy, Matthew E. Peters, Arman Cohan
摘要: Longformer是为处理长文档而设计的Transformer变体,使用相对位置编码来改进长文档处理性能。
链接: Longformer: The Long-Document Transformer
这些论文涵盖了相对位置编码在时间序列和长序列处理中的各种应用和改进方法,对于理解相对位置编码在深度学习中的重要性和具体实现具有重要参考价值。