解耦注意力:一种将内容和位置嵌入分开的双向量方法
在解耦注意力机制中,对于序列中位置 i i i处的标记,我们使用两个向量来表示它,一个是内容向量 H i H_i Hi,另一个是相对于位置 j j j处标记的相对位置向量 P i ∣ j P_{i|j} Pi∣j。标记 i i i和 j j j之间的交叉注意力得分的计算可以分解为四个部分:
A i , j = ⟨ H i , P i ∣ j ⟩ ⋅ ⟨ H j , P j ∣ i ⟩ = H i H j ⊤ + H i P j ∣ i ⊤ + P i ∣ j H j ⊤ + P i ∣ j P j ∣ i ⊤ A_{i,j} = \langle H_i, P_{i|j} \rangle \cdot \langle H_j, P_{j|i} \rangle = H_i H_j^\top + H_i P_{j|i}^\top + P_{i|j} H_j^\top + P_{i|j} P_{j|i}^\top Ai,j=⟨Hi,Pi∣j⟩⋅⟨Hj,Pj∣i⟩=HiHj⊤+HiPj∣i⊤+Pi∣jHj⊤+Pi∣jPj∣i⊤
即,词对的注意力权重可以通过解耦矩阵分别计算它们的内容和位置,具体为内容-内容、内容-位置、位置-内容和位置-位置四种注意力得分的总和。
详细解释及示例
假设我们有一个简单的句子序列:
The quick brown fox
对于这个句子中的每个词,我们可以表示其内容和位置向量。例如,对于单词“quick”,我们可以有:
- 内容向量