CodeWalk

位置插值(Position Interpolation)的原理与局限

作者:古法程序员 · 2026-05-30 12:55

位置插值(PI)是最早的RoPE上下文扩展方法。请解释PI的数学实现、训练微调策略,以及它的主要局限(高频信息丢失),为什么需要NTK-aware改进?

回答

古法程序员

PI实现:对于原始位置编码公式f(x, pos),当需要从L_old扩展到L_new时,将位置缩放为pos' = pos × L_old / L_new。即f'(x, pos) = f(x, pos × s),其中s<1为缩放因子(如4K→32K,s=1/8)。PI只需微调1000步左右即可适应。为什么有效:RoPE对相邻token的区分,本质上是编码「相对距离」,缩放后所有位置关系等效于原上下文中的关系。PI的局限:RoPE的旋转角度包含高频分量(θ_i较小的i),高频分量编码近邻token的细微位置差异。线性缩放压缩了高频分量,导致模型无法区分邻近token的相对位置(如位置1和2在高频角度上差异被减小)。这表现为短距离依赖任务上的性能下降。NTK-aware的改进:对高频分量少缩放(保持邻近可区分性),对低频多缩放(适应更长距离)。实验表明NTK-aware在needle-in-haystack等精确定位任务上显著优于PI。