位置编码为模型提供 token 的序列位置,或 token 之间的相对位移。 词嵌入告诉模型输入了哪些符号;位置机制进一步让它利用这些符号的排列关系。
把“狗咬人”和“人咬狗”都按三个 token 理解,两句话包含相同的词,施事与受事却交换了。对于没有位置项、也没有顺序掩码的双向自注意力,“咬”看到的仍是同一组内容,缺少区分谁在左、谁在右的信号。
无位置的注意力究竟缺少什么
这里更准确的术语是置换等变。把输入的 token 重新排列,逐 token 输出也跟着做相同排列,而不是所有输出都原封不动。
如果再对这些输出取均值,汇总结果才具有置换不变性。附录给出这一关系的推导。因此,“像词袋”是帮助理解的比喻,不能把两种数学性质混写。
这个结论有条件。固定的因果掩码只允许每个位置看到自己及左侧 token,本身就带入了顺序结构;带这种掩码的模型不能直接套用任意置换下的结论,也不能一概称为无序词袋。
先看位置项能插入哪一步
以一个注意力头为例,输入隐藏向量经过投影,得到 Query、Key 和 Value。Query 表示位置 用来查询的内容,Key 用来与它匹配,Value 是匹配后参与汇总的信息。
标准的计算可以写成
是 Query 与 Key 的维度; 是尚未归一化的分数, 是对当前 Query 归一化后的注意力权重。 是掩码项,允许访问时为 0,禁止时可在数学上记为负无穷。分数、权重和最终输出是三个不同对象。(Vaswani et al., 2017)
位置机制可以改变投影前的输入,也可以改变投影后的向量或 Softmax 前的分数。“编码什么位置关系”与“插在流程哪一步”是两条分类轴。 下文的入口相加、分数偏置和向量旋转,是常见实现路径,不是所有可能方案的定义边界。
绝对位置:先把位置向量加入输入
经典绝对位置编码为位置 提供向量 ,与 token 向量 相加。
随后进入注意力层,生成 Query、Key、Value。因此,位置信息虽然只在入口显式加入,仍会影响后续计算。相加保持表示维度不变;位置向量不必是 one-hot,也不要求不同位置彼此正交。
固定的正弦与余弦
原始 Transformer 使用多组频率生成位置向量。设模型维度 为偶数,。
位置 从 0 开始,每一对坐标以不同的频率变化,编码本身无需学习。取 ,可得到下面的教学算例,数值四舍五入显示。
| 位置 | 前两个坐标 | 后两个坐标 |
|---|---|---|
| 0 | ||
| 1 | ||
| 2 |
同一个 token 放到位置 0 与位置 1,会与不同的向量相加。正余弦还让固定偏移对应可表达的线性变换,这是原论文考虑相对位置关系的依据之一。它并不意味着整个注意力分数只由相对距离决定。(Vaswani et al., 2017)
可学习的位置表
另一种做法是保存一张 的参数表,用位置索引查出 ,再通过训练更新。 是位置表覆盖的最大长度。
BERT 是这一做法的例子,其输入还包含 segment embedding;论文给出三类向量相加的结构,官方实现将位置表定义为可学习变量。(Devlin et al., 2019) 对照实现可读 BERT 的 embedding_postprocessor。
超出表范围时,需要扩展或其他处理;即使表里预留了某些位置,也不代表模型已经在那些位置上学得充分。
Shaw 相对位置:为当前词对加入关系向量
相对位移同时包含距离和方向。本文统一用 ,即 Key 位置减 Query 位置。对位置 1 的“咬”,位置 0 的“狗”在左侧一步,;位置 2 的“人”在右侧一步,。
Shaw 方法为相对位移学习向量。将位移裁剪为 ,其中 是裁剪半径,区间外的距离共用边界表示。其分数项可写为
是与当前词对有关的相对向量。把它展开后,多出的项是 ,同时依赖 Query 内容和相对位移,不是只查距离就能得到的固定标量。(Shaw et al., 2018)
“给 Key 加向量”是这一计算的直观说法,但应理解为 ,不能当作所有 Query 共用的一份 。
原论文的完整形式还可把相对关系加入 Value 汇总。
是另一组相对向量,维度与 Value 一致。原文分别检验了 Key 与 Value 两种扩展,所以介绍 Shaw 时只写“修改 Key”会省略一部分设计。(Shaw et al., 2018)
相对偏置:直接调整 Softmax 前的分数
也可以不增加词对关系向量,而是给每个注意力头的分数加上标量偏置。
表示注意力头。T5 根据相对距离的分桶查出可学习标量,多个距离可以落入同一桶。这个位置项直接由相对位置决定,与 Shaw 的 有不同的内容依赖。(Raffel et al., 2020)
ALiBi(Attention with Linear Biases)则使用预先固定、每个头不同的斜率。在因果注意力允许的 范围内,其偏置可写为
斜率 在原方法中不随训练更新。教学上若两个词对的缩放后内容分数都为 2,令 ,向左距离为 1 和 4 时,偏置后的分数分别为 1.5 和 0。这形成近期偏好,但远处 Key 的内容分数足够高时,仍可能获得较高权重。(Press et al., 2022)
这两类偏置都在 Softmax 之前加入。把偏置直接加到已经归一化的注意力权重上,会变成另一种计算。
RoPE:旋转 Q 和 K,让位置关系体现为角度差
RoPE 即 Rotary Position Embedding,由 RoFormer 提出。它用位置索引决定旋转角度,在 Query 与 Key 点积中呈现相对位移;原始 LLaMA、PaLM 均采用了这一机制。(Chowdhery et al., 2023; Su et al., 2021; Touvron et al., 2023)
先看一个二维旋转
取一组二维坐标,位置 对应旋转矩阵
是这组坐标的角速度,角度单位为弧度。旋转保持向量长度,但不同位置的旋转会改变两向量的相对方向。
先看教学设定 、。这只是一个二维块的演示角速度,不是实际模型的标准频率。
| Query 位置 | Key 位置 | 位移 | 旋转后点积 |
|---|---|---|---|
| 0 | 1 | 1 | 0 |
| 4 | 5 | 1 | 0 |
| 0 | 2 | 2 | −1 |
前两行的绝对位置不同,角度差相同,点积也相同。第三行改变了位移,结果随之改变。但若固定第一行的位置,只把 Key 内容换成 ,点积会从 0 变为 −1。相同距离不等于相同分数,内容仍然参与计算。
为什么会出现相对位移
标准 RoPE 先投影得到 ,再旋转,最后计算点积。用列向量记号表示,有
关键是 。位置变换部分可写成相对位移,但完整分数还依赖 、。 若它们本来就受上下文或其他位置信号影响,不能进一步声称整个网络只依赖距离,或整体平移输入后所有结果都不变。(Su et al., 2021)
在偶数维 的基本形式中,将坐标两两分组,各组使用不同角速度,原始频率选择可写为 ,。完整的 由这些二维旋转块组成,而非让所有坐标共用一个角度。
标准 RoPE 位置操作作用于 Q、K,不要求给入口嵌入另加绝对位置表,也不要求旋转 V。它可在每层注意力的投影之后、点积之前应用。逐 token 的旋转处理是线性的附加工作,但不会把密集注意力本身的二次计算变成线性注意力。
用两个问题比较这些方法
读到一种位置机制时,先问它表示什么关系,再问它修改哪个计算对象。
| 方法 | 显式表示的位置关系 | 常见注入位置 | 需要留意的条件 |
|---|---|---|---|
| 正余弦绝对编码 | 位置索引 | 投影前与输入相加 | 公式可延伸,效果仍需评价 |
| 可学习绝对编码 | 位置索引对应的参数行 | 投影前查表并相加 | 表范围与训练覆盖有限 |
| Shaw | 裁剪后的有向位移 | 词对分数,另可扩展 Value | 相对项随 Query 内容变化 |
| T5/ALiBi | 距离桶/因果距离 | Softmax 前加标量偏置 | 分桶与近期偏好各有取舍 |
| RoPE | 绝对旋转所形成的相对角度 | 投影后旋转 Q、K | 点积仍依赖内容与频率设定 |
“绝对编码在入口,相对编码在内部”适合记住这些经典路径;RoPE 则说明,使用绝对索引计算位置变换,也能在词对运算中形成相对关系。
能计算更长位置,不代表能可靠阅读更长文本
正余弦和 RoPE 的公式可以在训练长度之外继续求值,ALiBi 也可以继续生成距离偏置。它们解决了位置表示怎样延伸的部分问题,却没有自动证明模型能利用所有长距离信息。
训练覆盖、相位与距离分布变化、掩码、上下文内容,以及推理时的显存与计算预算,都影响实际使用。RoPE 的单个旋转块具有周期性,不能理解为“距离越大,每个词对的分数就必然越低”。比较外推能力应固定模型和训练条件,再用任务结果检验;ALiBi 原文的外推实验也有具体模型与长度设置。(Press et al., 2022)
位置机制与 Tokenizer 的工作不同。Tokenizer决定输入怎样切成 token,词向量与表示学习解释内容表示怎样学习,位置机制则提供这些 token 的排列关系。继续阅读可返回 LLM 专题。
附录:置换等变的一个推导
设输入矩阵 每行对应一个 token, 是重排行的置换矩阵。令 、、, 为共享的投影参数。无位置项、无固定顺序掩码且关闭随机 dropout 时,注意力映射为
重排输入后,三种投影变为 。逐行 Softmax 会跟随行、列的相同重排,因此
这叫等变。再对行取均值,重排不改变均值,才得到不变。固定因果掩码通常不会随输入一同变成 ,所以前述等式不能原样用于这种设置。
原文版本与链接
RoFormer 的机制说明采用 2021 年预印本的 v5(2023-11-08)。模型采用情况依据原始 LLaMA 论文和 2023 年正式发表于 JMLR 的 PaLM 论文,后续版本的配置应分别核对。