Skip to content
🔗 分享本题
查看我的学习进度 →

位置编码与 RoPE 动漫知识图:绝对位置编码给每个位置添加编号向量,RoPE 按位置旋转 Q/K,使注意力点积携带相对距离,并提示长度外推仍需缩放、训练和评测

🧠 图解记忆:绝对编码记位置编号,RoPE 让 QK 角度携带相对距离;点击图片可查看原图。

Position Encoding = 给每个位置的 Token 加上位置信息,因为 Attention 本身不具备感知顺序的能力。

为什么需要位置编码?

Transformer 的 Self-Attention 是对称操作:
  Attention(Q, K, V) 只看 token 之间的相似性,不看它们的先后顺序

"猫追狗" 和 "狗追猫" 用 Self-Attention 处理得到的向量几乎一样!
→ 所以需要额外注入位置信息来区分顺序

三种主流位置编码对比

编码方式代表模型原理优点缺点
绝对位置编码BERT, GPT-2训练时学一个位置查找表实现简单无法外推到训练时长度的新位置
RoPELLaMA, Qwen, DeepSeek通过旋转矩阵嵌入位置信息天然支持外推、数学优雅实现稍复杂
ALiBiT5, Bloom在 Attention 分数上加线性偏置推理时无需知道最大长度效果略逊于 RoPE

RoPE(Rotary Position Embedding)详解(面试重点)

核心思想:把两个向量的点积转化为角度差函数
  q·k = |q||k|cos(θ_q - θ_k + φ_pos)

具体做法(2D 平面旋转):

给定位置 pos 和维度索引 m,频率 ω_m = 10000^(-2m/d):

[ q₀ ]  ← cos(pos·ω_m)  -sin(pos·ω_m) ][ q₀ ]
[ q₁ ]    sin(pos·ω_m)   cos(pos·ω_m) ][ q₁ ]

即:q 和 k 分别旋转到自己的位置角度,然后点积自动包含位置差信息

RoPE 的三个关键优势:

  1. 绝对位置→相对位置转化q(pos_i)·k(pos_j) 只依赖于 pos_j - pos_i(相对位置),更符合语言规律
  2. 长度外推能力强:理论上可以推理到比训练更长序列(虽然实践中有退化)
  3. 不需要重新训练:已有的预训练模型只需加 RoPE 即可支持更长上下文

面试加分点

  • YaRN(Yet another RoPE extension):2025-2026 年的改进方案,通过在 RoPE 基础上加入缩放因子,让模型能处理比训练长数倍的上下文(如训练 8K、推理 128K)
  • 工程建议:部署开源模型时如果要做长上下文推理,优先选 RoPE 系列模型(LLaMA/Qwen/DeepSeek)

面试话术:

"Self-Attention 本质是对称操作,无法区分'猫追狗'和'狗追猫'的顺序差异,所以必须加位置编码。RoPE 是目前最主流的方案——它通过旋转矩阵把位置信息嵌入到 Q/K 向量中,好处是点积自动变成相对位置依赖,还支持长度外推。现在主流的 LLaMA、Qwen、DeepSeek 都用 RoPE。如果需要比训练更长的上下文,可以用 YaRN 这类扩展方法。"