AdaRoPE 论文精读:为什么不同注意力头不应该使用相同的旋转和缩放方式
论文信息
论文题目:AdaRoPE: Not All Attention Heads Should Rotate and Scale Equally
会议:ICML 2026
这篇论文研究的是 Transformer 中的旋转位置编码(RoPE)。它没有重新设计注意力,而是提出一个很轻量的改造:让不同注意力头学习不同的 RoPE 频率,并让不同注意力头拥有不同的长上下文缩放方式。
先说结论
标准 RoPE 默认所有注意力头共享同一套旋转频率。长上下文扩展方法又经常对所有头使用同一个缩放规则。但真实模型中的注意力头并不完全相同:
- 有的头只关注前一个或附近 token;
- 有的头负责在长文本中检索一个关键 token;
- 有的头负责汇总整段上下文。
因此,论文提出 AdaRoPE:
AdaFreq:每个头、每个二维维度对学习自己的旋转频率;AdaScale:每个头学习随上下文长度变化的注意力缩放。
一句话概括:AdaFreq 调整每个头如何感知距离,AdaScale 调整每个头应该关注多大范围。
1. Transformer 注意力在做什么
一个 token 进入注意力头后,会被投影成 Query、Key 和 Value:
- Query:当前位置想寻找什么;
- Key:当前位置能否被某个 Query 匹配;
- Value:匹配成功后真正取走的内容。
标准注意力先计算:
再进行 softmax,得到注意力权重 ,最后计算:
问题在于,普通注意力本身并不知道 token 的顺序。位置编码的作用,就是让模型知道两个 token 相隔多远,以及这个距离是否重要。
2. RoPE 是怎样编码位置的
RoPE 不直接给 token 加一个额外的位置向量,而是根据 token 的位置旋转 Query 和 Key。
假设一个向量为:
RoPE 将它两两分组:
每个二维维度对都像一个速度不同的钟表。二维旋转矩阵为:
对于位置 ,第 个维度对的旋转角度为:
标准 RoPE 使用固定频率:
通常 。编号靠前的维度对频率较高,编号靠后的维度对频率较低。
为什么最后得到的是相对位置
位于位置 的 Query 和位置 的 Key 分别被旋转为:
它们的内积为:
由于旋转矩阵满足:
所以:
最终:
虽然 Query 和 Key 使用了各自的绝对位置,但相互作用时最终保留的是 ,也就是相对距离。
高频旋转得快,适合区分局部位置;低频旋转得慢,适合表达更平滑的长距离关系。标准 RoPE 的问题不是没有多种频率,而是所有注意力头都共享同一套频率安排。
3. 动机一:固定频率可能浪费维度
论文构造了 Needle Retrieval from a Window(NRW)任务:
[很多 BG token, 一个 NEEDLE token, 很多 BG token, QUERY] -> YES / NO
模型需要判断 NEEDLE 是否位于以 为中心、宽度为 的窗口中。
- 较小:任务需要精确区分局部位置;
- 较大:任务只需要判断较宽的区域。


图中的横轴是 Query 和 Key 的相对距离,纵轴是 RoPE 维度对。颜色表示某个维度对对 attention logit 的贡献,深红或深蓝表示绝对贡献较大,接近白色表示贡献较小。
标准 RoPE 的贡献集中在少数频率带上,其他维度对接近没有贡献。学习频率后,更多维度对能够参与任务。
这不是说每个维度必须完全平均地使用,而是说明固定频率表可能与当前任务的窗口尺度不匹配。

在右侧准确率曲线中,学习频率的模型在不同窗口宽度下整体优于固定 RoPE。
附录中,作者把 needle 的注意力分数写成有限傅里叶和:
窗口边界内外需要有足够的分数差异,因此频率质量必须落在由窗口宽度 决定的范围内。直观上,窄窗口更依赖高频,宽窗口更偏向低频。
4. 动机二:长上下文会稀释注意力
假设目标 token 的 logit 是 ,它的注意力权重为:
上下文变长时,分母中会出现大量无关 token。即使目标 token 的 logit 不变,它的权重也会被分摊,这就是 attention dilution。
可以放大 logits:
较大的 会让分布更尖锐,较小的 会让分布更平滑。
但不同注意力头的目标不同:
- 检索头希望集中地找到一个 token;
- 全局聚合头希望广泛地汇总很多 token。
一个统一的 无法同时满足这两个目标。
5. 有效注意力长度
论文使用有效序列长度描述一个头实际关注了多少 token:
实验中主要使用:
它有两个容易理解的极端:
- 如果平均关注 个 token,;
- 如果只关注一个 token,。
因此, 越小,注意力越集中; 越大,注意力越分散。
论文在 LLaMA-3-8B 中观察到:有的头的有效长度随上下文增长,像全局聚合头;有的头始终维持在 1–2,像局部或检索头。


这说明真实模型内部确实存在明显的头级异质性。
6. AdaRoPE 的两个组件
AdaFreq
AdaFreq 用每个头、每个维度对独立的可学习频率替代固定频率:
其中 是注意力头, 是二维维度对, 是可训练的 log-frequency 参数。
对于 MHA,每个头可以拥有自己的频率表。对于 GQA,论文在 KV group 级别共享 AdaFreq,因为多个 Query 头共享同一个 Key。
AdaScale
AdaScale 给每个头一个长度相关的逆温度:
参数含义:
- :整体缩放强度;
- :上下文变长时缩放增长的强度;
- :参考上下文长度。
最终只缩放 Query:
因为:
所以缩放 Query 等价于缩放 attention logits。
7. 为什么兼容 FlashAttention 和 KV Cache
AdaRoPE 的前向流程是:
输入 X
-> 线性投影得到 Q、K、V
-> AdaFreq 旋转 Q、K
-> AdaScale 只缩放 Q
-> 送入原来的 attention kernel
-> softmax(QKᵀ)V
AdaRoPE 没有引入新的 attention bias,也没有改变 Q、K、V 的张量形状。FlashAttention 仍然接收普通的 Q、K、V,因此不需要修改 fused kernel。
在 KV Cache 中:
- 旋转后的 K 按原来的结构缓存;
- V 原样缓存;
- 新 token 的 Q 旋转并缩放后,查询历史 K、V。
因此 KV Cache 的布局和推理流程都不变。
额外参数主要是每层每个头的 个频率参数,以及 AdaScale 的 和 。论文报告额外参数通常约为 10K–50K,约占总参数量的 。计算上,AdaFreq 仍然是逐元素正弦/余弦旋转,AdaScale 只增加每头一次标量乘法。
8. 预训练实验
作者在 FineWeb-Edu-100B 上训练了四类模型:LLaMA-430M、LLaMA-1.3B、OLMoE-2.7B 和 Qwen3 Gated Attention-430M。
AdaRoPE 的七任务平均准确率如下:
| 模型 | AdaRoPE | RoPE |
|---|---|---|
| LLaMA 430M | 51.23 | 50.65 |
| OLMoE 2.7B | 56.66 | 55.76 |
| LLaMA 1.3B | 57.94 | 56.71 |
| Qwen3 430M | 51.36 | 50.42 |
四个 backbone 上 AdaRoPE 都优于标准 RoPE。论文统计平均准确率提高约 0.91,预训练 loss 平均降低约 0.016。

图 3 左侧的 CoV 越低,说明不同频率维度的利用越均衡。AdaRoPE 的 CoV 低于 RoPE 和 PRoPE,说明模型不再只依赖少数维度对。
9. 从 8k 扩展到 64k
作者使用原生上下文为 8k 的 LLaMA-3-8B 和 SmolLM-2-1.7B,把上下文扩展到 64k。
在第一种外推设置中,作者冻结 backbone,只用 PG19 的前 100 个样本训练 AdaRoPE 参数。
LLaMA-8B 结果
| 方法 | NLU | RULER-8k | RULER-16k | RULER-32k | RULER-64k |
|---|---|---|---|---|---|
| AdaRoPE | 63.05 | 82.07 | 77.86 | 70.55 | 51.87 |
| YaRN | 62.53 | 75.76 | 71.10 | 66.84 | 12.80 |
最显眼的是 RULER-64k:
AdaRoPE:51.87
YaRN:12.80
这说明仅调整位置编码和缩放参数,就可以明显改善极长上下文中的检索能力。

图 4 中 AdaRoPE 的 NLL 在长位置上更加稳定,而 YaRN 在 64k 附近明显上升。
需要注意的是,AdaRoPE 的短文本 NLU 不一定超过原始 backbone。例如 LLaMA-8B 原始 NLU 是 64.79,AdaRoPE 是 63.05。这说明长上下文适配仍可能带来轻微的短上下文代价。
10. 继续预训练策略
作者进一步使用约 600M token 的 PG19 数据和 LoRA,比较了不同策略。
最好的策略是:
AdaRoPE -> Joint
即:
- 先冻结模型,预热 AdaRoPE;
- 再联合训练 AdaRoPE 和 LoRA。
LLaMA-8B 在 RULER-64k 上的结果:
| 策略 | RULER-64k |
|---|---|
| AdaRoPE -> Joint | 69.09 |
| AdaRoPE -> LoRA | 63.27 |
| AdaRoPE + LoRA Joint | 61.62 |
| YaRN -> LoRA | 61.60 |
作者认为,先进行位置对齐,可以给后续 LoRA 优化提供更好的起点。
11. 消融实验
在 SmolLM 上,完整 AdaRoPE 和删除组件后的结果如下:
| 方法 | RULER-8k | RULER-64k |
|---|---|---|
| AdaRoPE | 51.92 | 31.07 |
| 删除 AdaFreq | 41.11 | 28.07 |
| 删除 AdaScale | 41.99 | 28.35 |
| 所有头共享频率 | 46.85 | 25.49 |
| YaRN -> LoRA | 33.76 | 25.06 |
结论很明确:
- 只删除 AdaFreq,长上下文能力下降;
- 只删除 AdaScale,长上下文能力也下降;
- 让所有头共享频率,同样明显变差。
这验证了两个组件都重要,而且“按头独立学习”本身很重要。
12. 机制验证:模型到底学到了什么
论文还做了几类头级分析。
AdaScale 学出了不同注意力范围
作者发现 较大的头,平均有效长度更小; 较小的头,允许有效长度随上下文增长。

这与理论预测一致:
较大 γ -> 更集中 -> 更像检索头
较小 γ -> 更分散 -> 更像全局聚合头
AdaFreq 不是统一缩放
一些头会学习比标准 RoPE 更高的频率,另一些头会学习更低的频率。它不是把整张频率表统一乘以一个数,而是对不同头、不同维度对进行非均匀重塑。
少数头重要,但收益来自协同
作者逐个恢复注意力头的 AdaFreq 或 AdaScale 初始值,发现大多数头影响较小,少数头形成长尾,其中检索头比较敏感。
但单个头的最大影响仍小于 AdaRoPE 和 YaRN 的整体差距。因此更合理的理解是:少数头承担关键角色,但整体提升来自很多头的协同调整。
只扩展需要扩展的头

图 12 的横轴是原始模型有效长度,纵轴是扩展后有效长度,对角线 表示保持不变。
- YaRN 不缩放:长范围头扩展不足;
- YaRN 全局缩放:长范围头改善,但短范围头也被扭曲;
- AdaRoPE:短范围头基本保持不变,长范围头被选择性扩展。
这张图最直接地说明了 AdaRoPE 的核心价值:不是让所有头都变长,而是只让需要变长的头变长。
13. 如何评价这篇论文
这篇论文的证据链比较完整:
合成任务发现频率依赖窗口
↓
真实模型发现注意力头存在异质性
↓
提出 AdaFreq 和 AdaScale
↓
预训练和长上下文实验获得提升
↓
消融实验验证两个组件
↓
头级分析验证模型确实学到了分工
但它也有局限:
- 理论使用了简化的检索任务和高斯 logit 假设;
- 长上下文评测主要集中在 PG19 和 RULER;
- 表格主要报告汇总结果,没有展示完整的多随机种子置信区间;
- 长上下文能力提高时,短文本能力可能略有下降;
- AdaRoPE 是对 RoPE 的细粒度适配,不是解决所有长上下文问题的万能方案。
最后总结
标准 RoPE 的核心问题不是“旋转位置编码完全错误”,而是它对所有注意力头使用了过于统一的配置。
AdaRoPE 做了两件很小但有针对性的修改:
AdaFreq让不同注意力头学习不同的频率;AdaScale让不同注意力头学习不同的长度缩放。
因此它既能保持标准 RoPE 的高效实现,又能让模型在长上下文中保留局部检索能力和全局汇总能力。
See also
- SCRWKV 论文总结:用结构校准 RWKV 做轻量裂缝分割 2026-07-27
- MambaLiteUNet:用 Mamba、双门控与净化跳连做轻量皮肤病变分割 2026-07-26
- UTANet:用任务自适应专家混合重构 U-Net 跳跃连接 2026-07-25
- DSC:让 U 型网络的跳跃连接在测试时适配医学图像 2026-07-23
- TG-HEM:用拓扑困难样本挖掘改进拥挤病理细胞检测 2026-07-22