2.4 位置编码与相对注意力


2.4 位置编码与相对注意力

位置信息的必要性

注意力机制本身是排列不变的(permutation invariant),这意味着交换输入序列中任意两个元素的位置,注意力输出的结果也会相应地交换位置,但注意力权重矩阵本身不会改变。这一特性使得纯注意力模型无法区分"今天天气很好"和"天气今天很好"这两个句子的区别。

位置编码的存在就是为了打破这种排列不变性,让注意力模型能够感知输入序列中各元素的相对或绝对位置信息。位置编码的设计和与注意力的交互方式,直接决定了模型的序列建模能力。

绝对位置编码

1. 正弦余弦位置编码

Transformer原始论文提出了经典的正弦余弦位置编码。对于位置pos和维度i,位置编码定义为:

PE(pos, 2i) = sin(pos / 10000^(2i/d_model)) PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))

这种编码具有优雅的数学性质:

  • 线性可表达性:任何固定偏移k的线性变换都可以通过位置编码的线性组合来近似表达。
  • 相对位置敏感性:由于sin(a+b) = sin(a)cos(b) + cos(a)sin(b),位置pos+k的编码可以表示为位置pos编码的线性变换,这在理论上赋予模型某种相对位置感知能力。
  • 连续性:位置编码随位置平滑变化,避免了学习式编码可能出现的离散性问题。

2. 可学习位置编码

GPT系列和BERT等模型采用了可学习的位置编码。在训练过程中初始化一组可训练的位置嵌入向量,通过反向传播优化这些参数。

可学习位置编码的优势在于灵活性——模型可以根据任务需求学习最优的位置表示。然而,其局限也很明显:

  • 外推能力差:训练中未见过的位置长度,模型无法产生合理的编码,限制了序列长度的泛化能力。
  • 参数效率低:每个位置都需要一个独立的嵌入向量,对于长序列来说参数量较大。

相对位置编码的兴起

1. 相对位置的核心思想

相对位置编码的基本理念是:在很多自然语言任务中,元素之间的相对距离比绝对位置更重要。"苹果"和"树上"的相邻关系,比它们分别出现在第3和第4个位置更重要。

相对位置编码直接在注意力计算中编码两个元素之间的距离信息,而不是为每个元素分配一个独立的位置编码。

2. Transformer-XL的相对位置编码

Transformer-XL首次在语言建模中展示了相对位置编码的有效性。其注意力计算公式修改为:

Attention(Q_i, K_j) = (Q_i · K_j + Q_i · R_{i-j}) / sqrt(d_k)

其中R是一个可学习的相对位置嵌入矩阵,i-j表示两个位置之间的距离。这种设计有以下特点:

  • 不需要修改输入表示:相对位置信息直接在注意力分数计算中引入,不影响Q、K、V的计算。
  • 更好的外推能力:由于使用的是相对距离,对于训练中未出现的序列长度,只要距离在训练范围内,模型仍能产生合理的编码。
  • 与自回归生成天然兼容:在生成过程中,新的token的相对位置关系与训练时保持一致。

3. T5的相对位置编码(RPE)

T5模型采用了桶式(bucketed)相对位置编码,将相对距离离散化到若干个"桶"中:

  • 近距离桶:距离0, 1, 2, ..., k各自对应一个独立的桶
  • 远距离桶:更大的距离被对数映射到更少的桶中

这种设计的直觉是:近距离的位置关系信息量更大,需要更精细的区分;远距离的关系虽然信息量较小,但模型仍需要感知"某个元素在较远处"的信息。

T5的桶式编码将无限的距离空间映射到了有限的编码空间,同时保持了近距离的精细区分能力。

4. DeBERTa的相对位置编码

DeBERTa提出了另一种相对位置编码方案,将位置信息同时注入到注意力分数的Q和K中:

Attention(Q_i, K_j) = ((Q_i + q_{i-j}) · (K_j + k_{i-j})) / sqrt(d_k)

通过展开计算,这等价于在标准注意力分数基础上添加了四项相对位置交叉项。DeBERTa的实验表明,同时在Q和K中引入位置信息的方案比只在K中引入的方案表现更好。

旋转位置编码(RoPE)

1. 核心思想

旋转位置编码(Rotary Position Embedding, RoPE)是目前大语言模型中应用最广泛的位置编码方案,被LLaMA、Qwen、ChatGLM等主流模型采用。

RoPE的核心思想是:通过在嵌入空间中施加旋转变换来编码位置信息。具体地,对于位置m处的二维特征向量(m·x, m·y),RoPE将其旋转m个单位:

[x_m, y_m] = [x·cos(mθ) - y·sin(mθ), x·sin(mθ) + y·cos(mθ)]

当Q和K都经过旋转变换后,它们的点积自然包含了两个位置之间的相对角度信息:

(Q_m · K_n) = Σ q_i · k_i · cos((m-n)θ_i)

这意味着注意力分数自动携带了m-n(相对位置)的信息。

2. RoPE的优势

RoPE之所以成为主流选择,源于其多方面的优势:

  • 相对位置编码的优雅实现:通过旋转操作,RoPE在Q和K的点积中自然地编码了相对位置信息,而不需要额外的位置嵌入参数。
  • 外推性:RoPE的编码基于连续的旋转角度,理论上可以外推到任意序列长度。
  • 不增加参数量:RoPE不需要可学习的参数,通过数学变换直接在注意力计算中引入位置信息。
  • 与自回归模型兼容:RoPE在推理时的增量计算非常高效,只需要对新token施加旋转。

3. RoPE的外推扩展

虽然RoPE理论上可以外推,但在实际应用中,直接使用训练窗口外的序列长度会导致性能显著下降。研究者提出了多种扩展策略:

  • 位置插值(Position Interpolation):将训练窗口外的位置线性映射到训练窗口内,保持旋转角度的范围不变。
  • NTK感知缩放:修改RoPE的频率基数,使得高频分量保持不变,低频分量适当压缩,更好地保持近距离关系的精确性。
  • YaRN:结合NTK缩放和温度调节,在长文本外推中取得了最佳效果。

ALiBi:线性偏置位置编码

ALiBi(Attention with Linear Biases)是一种极简的位置编码方案,直接在注意力分数上添加与距离成正比的线性偏置:

Attention(Q, K)_{i,j} = (Q_i · K_j) / sqrt(d_k) - m * |i - j|

其中m是一个正的斜率参数,不同注意力头可以有不同的斜率。

ALiBi的优势在于极简性:

  • 无需修改模型输入:不修改Q、K、V的计算,只需在注意力分数上加偏置
  • 零额外参数(或极少):只需要每头一个斜率参数
  • 优秀的长度外推能力:在线性偏置下,外推到更长序列时性能下降很小

然而,ALiBi在需要精确位置信息的任务(如需要知道具体位置的任务)上表现不如RoPE。

位置编码的选择指南

选择位置编码方案需要考虑以下因素:

  1. 模型类型:自回归模型(GPT系列)通常选择RoPE;双向编码器(BERT风格)适合可学习位置编码或T5 RPE。
  2. 序列长度需求:如果需要处理超长序列,RoPE(配合外推策略)或ALiBi是更好的选择。
  3. 训练成本:可学习位置编码需要更多参数和训练时间;RoPE和ALiBi更加参数高效。
  4. 下游任务特性:需要精确位置的任务选择RoPE;注重相对关系的任务选择相对位置编码。

小结

位置编码是注意力机制中不可或缺的组件。从最初的绝对位置编码到各种形式的相对位置编码,再到如今的旋转位置编码RoPE,位置编码的设计经历了从简单到复杂再到简洁优雅的演化。RoPE通过数学上的旋转变换,将位置信息自然地融入注意力计算,兼顾了表达力、效率和可扩展性,已成为大语言模型的标配选择。理解各种位置编码的设计原理和适用场景,对于模型设计和优化具有重要的指导意义。


作者与出处
整理: 灏天文库整理
本站整理收录,版权归原作者/开源协议所有;欢迎通过原文链接访问源仓库。
发布者: 作者: 秃头披风侠的小龙虾 转发
评论区 (0)
U