前面三篇(5080/5090/5100)反复引用一个结论:"直接外推 RoPE 会崩"。这篇把这个"崩"拆到单维度层面:不是均匀劣化,而是按波长分批阵亡。拆开看才能明白为什么所有成功的扩长方案都做同一件事——只动低频维。
打分函数的逐维分解
RoPE 注入位置后的注意力 logit,用第 5060 篇的复数形式展开(记 $\Delta = m - n$):
$$ a_{ij} = \mathrm{Re}\big[\tilde q_i\, \overline{\tilde k_j}\big] = \sum_{l=1}^{d/2} |q_l|\,|k_l|\,\cos\big(\Delta\,\theta_l + \phi_l\big), $$
其中 $\phi_l$ 是 query/key 的内容相位。这是一个关键形式:位置只以 $\Delta\theta_l$ 的组合进入打分,每个维度对贡献一条以距离为变量的余弦曲线,训练做的事就是学出这些曲线的加权组合如何随内容变化。
训练给这个函数加的约束范围是 $\Delta\in[0, L)$——模型只在这个区间上拟合了"距离→打分"的映射。外推就是让这个函数在 $\Delta > L$ 的区间上求值,而每个维度对在那个区间的行为由它的波长 $\lambda_l = 2\pi/\theta_l$ 决定。
三种维度的阵亡方式
$\lambda_l \ll L$(高频维):一个训练窗口内振荡几十上百周期,训练已经把这条曲线的行为拟合得相当充分,外推区间在相位上和训练区统计同分布。这批维度本身不是外推失效的主凶——但注意它们也不是无辜的:它们的贡献不随距离衰减,$\Delta$ 很大时几十条高频余弦叠加出的打分方差很大,是远距离打分的噪声底。模型在长距离上学会的做法是压低它们的权重,这个机制在训练范围内完成。
$\lambda_l \sim L$(中频维):训练窗口内只有一两个完整周期,外推区间开始进入这条曲线的未见过弧段。模型对 $\cos(\Delta\theta_l)$ 在 $\Delta > L$ 区域的加权方式没有任何数据约束,打分在这个区间是系统性错误而不是噪声——"哪里先坏"的答案主要在这一带。
$\lambda_l \gg L$(低频维):训练范围内相位只走了周期的开头一小段,$\cos(\Delta\theta_l)\approx 1 - \frac{1}{2}(\Delta\theta_l)^2$ 近似抛物线。外推的问题不是相位没见过,而是相对距离信息在这一段几乎为零——两个相距 100 和 200 的位置,相位差分别是 $100\theta_l$ 和 $200\theta_l$,$\theta_l$ 本身极小,打分根本分不开。长程注意力的"距离感"在这一带是失明的。
和对照实验的吻合
这个分解能解释文献里的几个经验事实。其一,直接外推的困惑度劣化通常在 $\Delta$ 刚过 $L$ 时就开始,而不是等距离拉满——因为中频维的未见过弧段从边界处立刻生效。其二,NTK/YaRN 把低频维压缩 $s$ 倍($\theta_l \to \theta_l/s$)之所以够用,正是因为它们补的是"低频段相位动态范围不足"这个缺陷;而高频维不动是因为它们本来就不缺相位范围(第 5090 篇说的"糊"是把它们也压缩的代价)。其三,ALiBi(第 5050 篇)外推天然稳定,因为它没有振荡项——打分随距离单调衰减,没有"未见过弧段"这个概念,代价是距离调制的表达力远不如振荡谱。
小结
"RoPE 外推失效"不是一个现象,是三个按波长划分的子现象:高频维贡献噪声底、中频维进入未见过弧段、低频维相对距离失明。所有成功的扩长方案——PI 的均匀压缩、NTK/YaRN 的形状假设、LongRoPE 的逐维搜索——本质都是在回答同一个问题:怎么在修好后两者的同时不惹毛前者。这个三分类也是做长上下文实验时的诊断清单:外推质量异常时,先看模型在目标长度下哪些波长带实际承担了远距离打分。