一、相对位置编码
相对位置编码是针对绝对位置编码的一种改进,旨在捕捉序列中元素之间的相对位置信息。相对位置编码在处理长距离依赖关系和泛化到不同长度的序列时表现更好。
1、工作原理
相对位置编码的核心思想是,位置关系是相对的而不是绝对的。相对位置编码将位置差异(相对位置)纳入注意力计算中。
假设有一个序列长度为 \( N \),位置 \( i \) 和位置 \( j \) 的相对位置编码可以表示为 \( r_{ij} \),并用于调整注意力得分 \( e_{ij} \)。
2、实现方式
(1)相对位置嵌入
使用一个相对位置嵌入矩阵 \( W_r \) 来表示位置差异。位置 \( i \) 和位置 \( j \) 的相对位置编码 \( r_{ij} \) 可以通过查询这个嵌入矩阵得到。
\[
r_{ij} = W_r[j - i + N - 1]
\]
其中 \( N \) 是序列的最大长度,确保索引 \( j - i + N - 1 \) 在有效范围内。
(2)相对位置编码与注意力计算