尽管绝对位置编码 (positional encoding)为Transformer提供了理解序列顺序的方式,但它们独立处理每个位置。正弦编码为隐式建模相对距离提供了良好的特性,但它是在注意力机制 (attention mechanism)运行之前 添加的。学习到的绝对嵌入 (embedding)可能难以泛化到训练时未见的更长序列。另一种方法是将token之间的相对距离 直接纳入注意力计算本身。这是相对位置编码(RPE)背后的主要思想。
直观来看,两个词之间的关系通常更多地取决于它们相距多远,而非它们在序列中的绝对位置。例如,知道一个动词紧跟其主语一个位置,可能比知道主语在位置5、动词在位置6更具泛化性。RPE旨在让模型直接感知这些相对距离。
修改注意力得分
RPE没有将位置信息添加到输入嵌入 (embedding)中,而是修改了自注意力 (self-attention)得分机制。标准缩放点积注意力计算位置 i i i 的查询 q i q_i q i 与位置 j j j 的键 k j k_j k j 之间的得分,如下所示:
得分 ( q i , k j ) = q i T k j d k \text{得分}(q_i, k_j) = \frac{q_i^T k_j}{\sqrt{d_k}} 得分 ( q i , k j ) = d k q i T k j
其中 q i = x i W Q q_i = x_i W^Q q i = x i W Q 和 k j = x j W K k_j = x_j W^K k j = x j W K , x i , x j x_i, x_j x i , x j 是输入嵌入,W Q , W K W^Q, W^K W Q , W K 是投影矩阵。
相对定位方案将有关 i i i 和 j j j 之间关系的信息直接注入此计算。存在几种变体,但它们通常涉及添加取决于相对距离 i − j i-j i − j 的项。
Shaw 等人 (2018) 的公式
一种较早且有影响的方法提出在点积之前,将学习到的相对位置嵌入 (embedding)直接添加到键(有时是值)中。令 a i j K a_{ij}^K a ij K 和 a i j V a_{ij}^V a ij V 表示与查询 i i i 和键/值 j j j 之间的相对位置相对应的可学习嵌入向量 (vector)。注意力得分计算修改为:
e i j = ( x i W Q ) T ( x j W K + a i j K ) d k e_{ij} = \frac{(x_i W^Q)^T (x_j W^K + a_{ij}^K)}{\sqrt{d_k}} e ij = d k ( x i W Q ) T ( x j W K + a ij K )
接着,使用类似的修改对值向量计算输出值 z i z_i z i :
z i = ∑ j softmax ( e i j ) ( x j W V + a i j V ) z_i = \sum_j \text{softmax}(e_{ij}) (x_j W^V + a_{ij}^V) z i = j ∑ softmax ( e ij ) ( x j W V + a ij V )
这里,a i j K a_{ij}^K a ij K 和 a i j V a_{ij}^V a ij V 通常通过相对距离 j − i j-i j − i 从嵌入查找表中检索。为了使嵌入数量可控,相对距离通常被裁剪到最大值 k k k 。也就是说,所有 j − i > k j-i > k j − i > k 的距离都映射到相同的嵌入 a i , i + k K a_{i, i+k}^K a i , i + k K ,而 j − i < − k j-i < -k j − i < − k 的距离则映射到 a i , i − k K a_{i, i-k}^K a i , i − k K 。
这种方法直接将相对空间偏差注入注意力得分。然而,它需要在注意力矩阵计算中为每个查询-键对计算和存储这些相对嵌入,这可能导致计算量大。
Transformer-XL / Dai 等人 (2019) 的公式
随 Transformer-XL 一同引入的一种更高效且被广泛采用的方法,重新构建了注意力计算,以巧妙地纳入相对位置。回顾涉及绝对位置嵌入 (embedding) P i , P j P_i, P_j P i , P j 的标准注意力得分:
A i , j 绝对 = ( E x i + P i ) T W Q T W K ( E x j + P j ) A_{i,j}^{\text{绝对}} = (E_{x_i} + P_i)^T W^{Q T} W^K (E_{x_j} + P_j) A i , j 绝对 = ( E x i + P i ) T W QT W K ( E x j + P j )
展开后得到四个项:内容-内容 (E x i T … E x j E_{x_i}^T \dots E_{x_j} E x i T … E x j )、内容-位置 (E x i T … P j E_{x_i}^T \dots P_j E x i T … P j )、位置-内容 (P i T … E x j P_i^T \dots E_{x_j} P i T … E x j ),以及位置-位置 (P i T … P j P_i^T \dots P_j P i T … P j )。
相对公式修改了这种展开方式:
**替换键投影中的绝对位置 P j P_j P j :**在涉及键位置的项中,将绝对位置 P j P_j P j 替换为表示 i i i 和 j j j 之间偏移量的相对位置编码 (positional encoding) R i − j R_{i-j} R i − j 。 R R R 可以是固定的正弦编码矩阵(类似于原始Transformer的位置编码,但使用方式不同),也可以是学习到的嵌入。
**引入可训练的位置偏差:**将查询的绝对位置项 P i T W Q T P_i^T W^{Q T} P i T W QT 替换为两个可训练向量 (vector) u u u 和 v v v 。这些向量分别代表内容和相对位置的全局“位置偏差”。
由此得到以下分解后的注意力得分计算:
A i , j 相对 = E x i T W Q T W K E x j ⏟ (a) 基于内容的 + E x i T W Q T W K R i − j ⏟ (b) 内容-相对位置 + u T W K E x j ⏟ (c) 全局内容偏差 + v T W K R i − j ⏟ (d) 全局位置偏差 A_{i,j}^{\text{相对}} = \underbrace{E_{x_i}^T W^{Q T} W^K E_{x_j}}_{\text{(a) 基于内容的}} + \underbrace{E_{x_i}^T W^{Q T} W^K R_{i-j}}_{\text{(b) 内容-相对位置}} + \underbrace{u^T W^K E_{x_j}}_{\text{(c) 全局内容偏差}} + \underbrace{v^T W^K R_{i-j}}_{\text{(d) 全局位置偏差}} A i , j 相对 = (a) 基于内容的 E x i T W QT W K E x j + (b) 内容 - 相对位置 E x i T W QT W K R i − j + (c) 全局内容偏差 u T W K E x j + (d) 全局位置偏差 v T W K R i − j
项 (a) 与标准注意力中的内容交互相同。
项 (b) 捕获了位置 i i i 的查询内容如何关联到相对位置 i − j i-j i − j 。
项 (c) 提供了纯粹基于位置 j j j 的键内容的偏差。
项 (d) 提供了纯粹基于相对位置 i − j i-j i − j 的偏差。
重要的一点是,此公式可以高效实现。涉及 R i − j R_{i-j} R i − j 的项无需显式构建所有 ( i , j ) (i, j) ( i , j ) 对的成对相对嵌入即可计算。相反,巧妙的张量操作允许同时高效地计算所有位置上的项 (b) 和 (d)。
实现考量
**裁剪距离:**与 Shaw 等人的方法一样,在索引相对位置嵌入 (embedding) (R i − j R_{i-j} R i − j ) 时,通常使用最大相对距离 k k k 。这假设超长距离的相互作用可能不需要精确的距离信息。
**嵌入类型:**相对位置表示 R R R 可以基于正弦函数(提供泛化能力),也可以是学习到的嵌入(可能更具表达力但需要更多数据和参数 (parameter))。
**共享:**相对位置嵌入(无论是正弦的还是学习到的)通常在不同注意力头之间共享,有时也在层之间共享,以减少参数数量。
相对位置编码 (positional encoding)的优势
**提高泛化能力:**RPE,特别是正弦式的或带裁剪的RPE,相比于学习到的绝对位置编码,能更好地泛化到训练时未见的序列长度。模型学习基于距离 而非具体位置 的模式。
**直接距离建模:**注意力机制 (attention mechanism)能直接感知token间的相对定位,这有利于局部语法或相对顺序很重要的任务。
**经验性成功:**RPE是包括Transformer-XL、T5和DeBERTa在内的几种高性能模型的组成部分,显示了它们的实际效用。
相对位置编码 (positional encoding)的不足
**复杂性增加:**与基线Transformer相比,注意力计算变得更复杂,尽管高效实现(如 Transformer-XL 公式)相比于朴素方法显著减轻了计算开销。
**超参数 (parameter) (hyperparameter):**引入了诸如裁剪距离 k k k 和相对编码类型(正弦 vs. 学习)的选择,这可能需要调整。
总而言之,相对位置编码通过将序列顺序信息直接嵌入 (embedding)到注意力机制 (attention mechanism)的得分计算中,为绝对位置编码提供了一个有吸引力的替代方案。通过侧重于成对距离而非绝对位置,它们可以提供更好的泛化能力,并更有效地捕获对距离敏感的关系,在各种现代 Transformer 架构中都很有价值。