【LLM】位置编码
- 1 绝对位置嵌入
- 2 相对位置嵌入
- 2.1 Shaw等人的方法(2018)
- 2.2 Dai等人的方法(2019)
- 2.3 Raffel 等人的方法(2020)
- 2.4 He 等人的方法(2020)
- 2.4 RoPE(2023)
1 绝对位置嵌入
绝对位置嵌入是将每个位置独立编码为一个固定向量,并添加到对应的词嵌入中,使模型能够感知单词在序列中的绝对位置。其公式为:
f t : t ∈ { q , k , v } ( x i , i ) : = W t : t ∈ { q , k , v } ( x i + p i ) f_{t: t \in \{q, k, v\}}\left(x_i, i\right) := W_{t: t \in \{q, k, v\}}\left(x_i + p_i\right) ft:t∈{q,k,v}(xi,i):=Wt:t∈{q,k,v}(xi+pi)
其中, p i ∈ R d p_i\in\mathbb{R}^d pi∈Rd是依赖于token x i x_i xi所在位置的 d 维向量。例如,Vaswani 等人提出使用正弦函数生成 p i p_i pi:
{ p i , 2 t = sin ( p o s / 1000 0 2 t / d ) p i , 2 t + 1 = cos ( p o s / 1000 0 2 t / d ) \begin{cases} p_{i, 2t} = \sin\left( pos / 10000^{2t / d} \right) \\ p_{i, 2t + 1} = \cos\left( pos / 10000^{2t / d} \right) \end{cases} {pi,2t=sin(pos/100002t/d)pi,2t+1=cos(pos/100002t/d)
式中, pos表示 x i x_i xi在序列中的绝对位置。 p i , 2 t p_{i, 2t} pi,2t 是d维向量 p i p_i pi 的第 2 t 2t 2t 个元素。
为什么用 1000 0 2 t d 10000^{\frac{2t}{d}} 10000d2t?
核心是让不同维度的位置编码有不同的 “频率”,模拟人类对 “绝对位置 + 相对距离” 的感知:
这种设计能让模型通过三角函数的相位差,隐式学习到 “相对位置”(比如词 A 和词 B 隔 5 个词,它们的位置编码在各维度的正弦 / 余弦值差异,会和 “隔 5 个词” 的模式对应 ),同时用固定公式避免了可学习位置编码的参数开销。
2 相对位置嵌入
传统绝对位置编码给每个位置分配固定编码,难以灵活体现元素间相对关系(比如长序列里 “词 A 与词 B 相隔多远” 的信息)。相对位置编码的目标,是让模型感知 “元素间相对距离” 对语义的影响—— 比如句子里 “苹果” 和 “吃”,不管它们在序列中绝对位置多靠后,“相邻” 或 “间隔 1 个词” 的相对关系,会让注意力权重、语义关联有差异.
2.1 Shaw等人的方法(2018)
核心思想:对键(Key)和值(Value)添加可训练的相对位置嵌入,并对超出一定范围的相对距离进行截断。
2.2 Dai等人的方法(2019)
核心思想:分解查询(Query)与键(Key)的内积,将绝对位置嵌入替换为正弦编码的相对位置嵌入。
2.3 Raffel 等人的方法(2020)
核心思想:简化内积为内容项与可训练偏置项的和。
2.4 He 等人的方法(2020)
核心思想:完全用相对位置嵌入替代绝对位置嵌入,强调相对位置的建模。
2.4 RoPE(2023)
Rotary position embedding(RoPE)是一种在 Transformer 架构中用于编码位置信息的方法,其核心是利用旋转矩阵对绝对位置进行编码,并在自注意力机制中融入相对位置依赖关系。具体做法如下:
我们可以进一步将 f { q , k } f_{\{q,k\}} f{q,k}写成乘法矩阵形式
具体来说,融入相对位置嵌入的方式非常直接:只需将仿射变换后的词嵌入向量按其位置索引的角度倍数进行旋转,这正是RoPE背后的核心思想。
为了将我们在二维情况下的结果推广到任意 x i ∈ R d x_i\in\mathbb{R}^d xi∈Rd(其中 d 为偶数)的情形,我们将 d 维空间划分为 d/2 个子空间,并利用内积的线性性质将它们组合起来,使 f { q , k } f_{\{q,k\}} f{q,k}变为
将我们的 RoPE 应用于 q T k q^Tk qTk的自注意力机制中
其中
**与先前工作(即2.1-2.3节)中采用的加法性质位置嵌入方法不同,我们的方法是乘法性质的。**此外,当将 RoPE 应用于自注意力机制时,它通过旋转矩阵乘积自然地融入相对位置信息,而不是在加法位置编码的展开式中修改项。
不过以上的计算方式并非高效。
遵循Vaswani[2017]的做法,,可以证明RoPE具有长期衰减性,即相对距离较远的一对 tokens 之间的关联应当更弱。