自注意力机制(Self-Attention)中的位置编码融合方法详解
描述
在自注意力机制中,由于计算过程本身是置换不变的(即输入序列的顺序变化不会影响注意力权重),模型无法感知元素的位置信息。位置编码(Positional Encoding)通过向输入嵌入注入位置信息,使Transformer能够区分序列中不同位置的元素。本知识点详解如何将位置编码与输入表示有效融合,以及不同融合策略的原理与影响。
解题过程
-
问题背景:自注意力的置换不变性缺陷
- 自注意力机制对输入序列的加权汇聚仅依赖于元素间的相似度,与顺序无关。例如,输入序列
[A, B, C]和[C, B, A]可能得到相同的注意力输出,导致模型无法处理依赖顺序的任务(如语言建模)。 - 解决方案:显式引入位置编码,将其与输入嵌入结合,使每个位置的表示唯一。
- 自注意力机制对输入序列的加权汇聚仅依赖于元素间的相似度,与顺序无关。例如,输入序列
-
位置编码的基本形式
- 正弦余弦编码(原始Transformer使用):
- 公式:对于位置
pos和维度i(偶数维用sin,奇数维用cos):
- 公式:对于位置
- 正弦余弦编码(原始Transformer使用):
\[ PE_{(pos,2i)} = \sin\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right), \quad PE_{(pos,2i+1)} = \cos\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right) \]
- 优点:可泛化到比训练序列更长的位置,且具有相对位置敏感性。
- 可学习的位置编码(如BERT):将位置编码视为可训练参数,通过训练学习位置表示。
- 融合方法一:加法融合(Additive Fusion)
- 操作:直接将位置编码与输入嵌入相加:
\[ \mathbf{X}_{\text{out}} = \mathbf{X}_{\text{in}} + \mathbf{P} \]
其中,$\mathbf{X}_{\text{in}}$是输入嵌入矩阵,$\mathbf{P}$是位置编码矩阵。
- 原理:
- 加法相当于在输入空间中进行平移,使每个位置的嵌入向量方向发生偏移。
- 自注意力中的查询/键计算变为:
\[ \mathbf{Q} = (\mathbf{X}_{\text{in}} + \mathbf{P})\mathbf{W}^Q, \quad \mathbf{K} = (\mathbf{X}_{\text{in}} + \mathbf{P})\mathbf{W}^K \]
- 展开后,注意力分数包含内容-内容、内容-位置、位置-位置三类交互,模型能同时捕捉语义和顺序信息。
- 优点:简单高效,是Transformer中的标准方法。
- 融合方法二:拼接融合(Concatenation Fusion)
- 操作:将位置编码与输入嵌入拼接后通过线性变换降维:
\[ \mathbf{X}_{\text{out}} = \mathbf{W}[\mathbf{X}_{\text{in}}; \mathbf{P}] \]
其中,$\mathbf{W}$是权重矩阵,$[;]$表示拼接操作。
- 原理:
- 分离内容与位置信息,通过线性层学习两者的交互模式。
- 计算量大于加法融合,因需要额外参数和操作。
- 缺点:效率较低,较少在标准Transformer中使用。
- 融合方法三:旋转位置编码(RoPE)
- 操作:对查询和键向量施加旋转变换,使内积计算自动包含相对位置信息。
- 公式:对位置\(m\)的查询向量\(\mathbf{q}_m\)和位置\(n\)的键向量\(\mathbf{k}_n\),旋转后为:
- 操作:对查询和键向量施加旋转变换,使内积计算自动包含相对位置信息。
\[ \mathbf{q}'_m = \mathbf{q}_m e^{im\theta}, \quad \mathbf{k}'_n = \mathbf{k}_n e^{in\theta} \]
注意力分数$\mathbf{q}'_m^\top \mathbf{k}'_n$仅依赖于相对位置$m-n$。
- 原理:
- 通过复数域旋转保持向量模长不变,仅改变方向,使内积反映相对位置差。
- 无需修改输入嵌入,直接融入注意力计算。
- 优点:更好地处理长序列,被LLaMA、GPT等模型采用。
-
方法对比与选择
- 加法融合:通用性强,适合大多数场景,但可能受位置编码幅度影响(需调整缩放因子)。
- RoPE:擅长捕捉相对位置,尤其适合长序列和生成任务。
- 可学习编码:更灵活,但依赖训练数据,可能缺乏外推性。
-
进阶讨论:位置编码的外推性与泛化
- 正弦编码在推理时可处理比训练更长的序列,但精度可能下降;可学习编码需通过插值或微调适应长序列。
- 现代研究(如ALiBi)通过注意力分数偏置直接注入相对位置,减少对外推的依赖。
通过上述步骤,位置编码的融合方法使自注意力机制具备了序列顺序感知能力,成为Transformer处理序列任务的基石。