旋转位置编码的外推能力增强:NTK缩放与YaRN
技术领域:位置编码 / 长文本外推
RoPE(Rotary Position Embedding)当前占据主导地位,但直接外推到训练长度之外的文本时,注意力分数会异常升高(称为“注意力熵崩溃”)。以下两种方法可让RoPE支持数倍于训练长度的上下文。
-
NTK感知缩放:核心观察是RoPE的高频维度(旋转速度快)在长距离外推时变化过于剧烈,导致相对位置信息失准。NTK(神经正切核)方法对不同维度使用不同的缩放因子:
-
低频维度(低索引i)分配更小的缩放因子(接近1),保持远距离感知能力。
-
高频维度(高索引i)分配更大的缩放因子(如√(L_test/L_train)),使旋转角度随位置变化更平缓。
具体实现:将原始RoPE的基值θ_i = 10000^{-2i/d} 修改为 θ'_i = θ_i * (λ)^{2i/d},其中λ = L_test/L_train。高频i对应大指数,因此被拉伸更明显。
-
-
YaRN(Yet another RoPE extensioN):在NTK基础上增加两个技巧:
-
温度系数:对注意力分数量子除以一个温度参数t(通常t∈[0.1, 0.5]),使软最大值更平坦,缓解外推时的注意力尖峰。
-
长度插值微调:用少量长文本数据(500~2000步)继续训练模型,损失函数中加入外推位置的自适应权重。
YaRN能将训练长度为2k的模型无损扩展到128k,在困惑度测试中优于直接NTK约0.3 PPL。
-
-
混合位置编码:将RoPE与ALiBi(AliBi通过相对距离减法偏置注意力)结合。在低层使用RoPE(保留相对旋转信息),高层使用ALiBi偏置项(增强距离单调性)。这种混合设计对超长外推(>1M)尤其有效。
-
注意力logits的温度调节:外推时,计算每个位置的相对距离d,对注意力logits乘以
1 / sqrt(1 + γ * (d / L_train)^2),其中γ是可调参数(默认1.0)。这种软性缩放降低了远距离token之间的相关性,避免模型对未见过的位置过度自信。 -
实践基准:对于训练长度为4k的模型,若需外推至32k:优先尝试YaRN(缩放因子λ=8,温度t=0.2),配合500步微调,无额外数据时F1分数保持在原始内插范围的97%以上。