ROPE外推:从PI、NTK-Aware到YaRN一统江湖

发布时间:2026/10/5 6:51:51
ROPE外推:从PI、NTK-Aware到YaRN一统江湖 没研究过RoPE的小伙伴可以先看一下一文讲透ROPE什么是长度外推有什么问题假设我们训练模型的时候最大的序列长度是4096但是在推理的时候来了一个8192的长度序列这就是要求模型具备处理超出训练长度的能力这就是长度外推。前文说过RoPE通过在在源数据中添加绝对位置使得内积后只和相对距离有关理论上直接输入8192的长度公式照样能算。但是实际上如果直接这么做模型的推理结果将会非常糟糕。为什么会这样简单来说就是外推会导致没见过的角度出现未见过的相位角也就是我们常说的Out-of-DistributionOOD分布外问题。在4096长度的训练中模型见过最大的相对距离是4096意味着对某个维度来说最多只见过的角度。但是在推理时却要转模型能不懵逼吗。其实这个问题对高频区即转的快的维度区域和低频区的影响是完全不一样的对高频区来说在训练的时候在4096长度内早就已经转了好多圈了0-360度内每个角度都已经见过所以高频区不怕外推。例如对第0维来说默认Base10000即对第0维来说相距一个token就转了57.2角度转的飞快那么在4096的长度内已经转了650圈阅历相当丰富完全不怕外推。但是对低频区来说外推却是非常的致命。对一个128维的多头注意力来说最后一个维度即每过1个token才转0.006611度在4096长度最多才转了27度而在8192长度token下最大却转了54度这就是模型懵逼的原因了。那么有什么办法来解决这个问题呢方案一线性位置内插Position Interpolation, PI核心思想压缩既然训练时只见过0~4096的长度现在要处理8192那么就等比例把0~8192压缩到0~4096.PI是怎么做的只需要引入一个缩放因子即可scale factors)还是用训练时的L4096而推理的最大长度为8192,那么缩放因子s8192/40862。在ROPE中对位置m的token的旋转角度是现在变成了把原本外推8192的角度变成了4096的了保证了低频旋转角度的绝对安全。PI有什么问题PI 看起来很完美但它有一个致命的副作用导致它不能直接拿来就用Zero-shot必须收集长文本数据对模型进行微调Fine-tuning才能恢复效果。对于低频区这种压缩是救命的因为它把超出的角度拉回了安全区对高频区这种压缩是毁灭性的。原本的高频区转得飞快的秒针用来精准区分相邻的词汇。词元 A 在位置 1词元 B 在位置 2它们之间的夹角原本是现在除以s2后他们之间的夹角变成了直接砍半。模型变得“近视”了它看远处的宏观结构看得很清楚但看紧挨着的两个词却觉得极其模糊难以分辨它们到底是谁在前、谁在后。这种高频特征的粘连导致如果没有后续的微调让模型重新适应这种“近视眼”它输出文本的质量依然会大幅下降。简单来说就是原本在高频区相邻词的角度是相差很大的(例如57度在这么大的角度上直接砍半会导致得到的角度和原先的角度相差太大模型适应不了因此必须微调。方案二NTK-AwareNTK-Aware是怎么解决PI高频区的问题的既然PI会导致高频区崩溃那么能不能通过只修改ROPE的底数Base原始默认底数为10000使得第0维不压缩最后一维变为PI的1/s的安全压缩从第0到底d/2-1维是一种缓慢变化的过程首先对于第0维不管Base变成多少也就是在高频区做到几乎不压缩。那么现在的问题变成求解使得在最后一维d/2 - 1)有以下方程关系简化后继续简化最终得到为我们来看一下和Base的比例关系NTK-Aware的缺陷NTK-Aware当然不是完美的它有什么问题呢从上述的分析过程我们得知NTK-Aware除了在第0维i0)处完全不压缩其他维都进行了压缩。 我们不禁有一个思考真的需要对除了i0外的维度都进行压缩吗假如在训练集长度L内且维度在n内即这些维度在训练集中都已经转过了360那么这些维度对0-360的角度全部都已经见过了即使是推理时的长度比训练集要大但是三角函数是周期性的所以哪怕推理时转480度都没有问题。哪些维度是不需要压缩的上面说过我们认为在训练长度L内哪些能完整转过360度的维度是不需要压缩的那么具体是哪些维度i呢 现在我们来计算一下对每一维度都对应一个旋转角度那么波长就代表维度i转了360度2Π弧度所需要的token距离那么那么当时这些维度i在训练集长度L内都是已经转过360的也就是说完全不需要压缩经过简单的变换可以得到对训练长度L4096,多头注意力维度d128Base10000计算即45以内的维度其实都是不需要压缩的但是NTK-Aware为了追求平滑的曲线反而导致好心办坏事了。但是NTK-Aware却把这些维度都强行进行压缩这会带来混乱问题训练时的记忆模型在这个中频维度上已经学得非常精细了。它知道“如果两个词在这个维度的夹角是90度说明它们相隔 50 个词比如刚好跨越一个段落”。NTK 压缩后的错乱现在你为了追求“平滑过渡”给这个维度强行打了个 0.7 倍的折。原本相隔 50 个词的夹角变成了63度模型看到63度会怎么想它会翻阅训练记忆得出结论“哦这俩词相隔 35 个词。”注意力发散角度被压缩了说明相似度变小了q和k在空间中的分布更加密集了计算的注意力得分时整体的差异就变小了这就会导致原本高度集中的注意力变成一盘散沙模型抓不住重点注意力变得涣散了。方案三YaRNYet another RoPE for NTK一统江湖既然NTK-Aware的问题是把一些本不应该压缩的维度压缩了YaRN的解决办法也很简单把特征维度划分成三个部分分段压缩高频区不压缩纯外推低频区完全PI插值即压缩1/s中频区过渡区使用一个平滑的斜坡函数在这高频区和低频区之间做线性过渡避免相邻维度间产生剧烈的突变上述已经有波长公式YaRN引入两个超参和通常设定在波长空间中画出两条线来把特征维度划分成高中低频三个部分下边界高频边界在训练长度L内至少转了圈如1圈这是高频区上边界低频边界在训练长度L内连圈如圈都转不完这是低频区那么波长介于就是中频过度区现在根据波长公式计算出高中低频的维度i根据上述波长公式解出i的公式维那么则到此我们已经确定了不压缩的高频区的维度是哪些完全PI内插压缩1/s的低频区维度是哪些当然中频区的维度是哪些也是知道的但是还不知道中频区是如何从高频区的压缩系数为1过度到低频区压缩系数为1/s的也就是要找到关于中频区的压缩系数的函数YaRN定义了一个斜坡函数有了插值权重中频区每个维度的最终频率采用凸组合进行加权融合由于上述公式简化为那么最终得到中频区的压缩系数为为什么要设计这样的斜坡函数呢能不能不要这个过渡区也就是除了高频区不压缩之外压缩系数等于1剩下的全部压缩1/s这样很符合我们的直观高频区全部都是至少转了360度的剩下的维度全部压缩1/s多安全但是这会导致一个问题会导致频谱相位不连续。相邻的两个维度和之间原本在空间中承担着连续的正交表征功能却因为缩放比例从 1.0瞬间骤降到1/s导致它们的相位变化率产生了巨大的阶跃断层。在自注意力机制中这种断层会在点乘矩阵中引入高频噪声破坏特征向量的高维正交性引发类似信号处理中的吉布斯现象震荡通过斜坡函数的缓冲缩放系数变成了一条平滑连接的折线:这条斜坡既保证了高频区的“零扭曲”又保证了低频区的“防爆 OOD”同时消除了中频区的频谱断层噪声。到此YaRN解决了NTK-Aware对高频区也进行压缩的问题但是注意力涣散问题还没得到解决注意力温度缩放self-attention 的注意力公式为YaRN的做法很简单不改变注意力公式的主体结构而是直接在生成ROPE向量时把cos和sin项乘以一个固定的标量mscale(mscale1)。当QK矩阵融入了mscale之后其内积被放大了倍将此公式改写为统计学中常见的带温度参数的 Softmax形式如下YaRN 论文中给出了mscale随压缩系数s变化的最佳经验公式为什么只是把mscale乘以ROPE的旋转矩阵中的cos和sin就能放大注意力呢推导过程如下对原始Q矩阵中某一组二维向量对其旋转的旋转矩阵为旋转后的q向量为YaRN将cos和sin修改为带入旋转矩阵得到新的旋转矩阵为那么将mscale乘以cos和sin后新的旋转q向量为同理在n处新的旋转k向量为那么和向量的内积为那么从二维q和k向量推广到Q和K矩阵有矩阵乘法那么logits为在机器学习中温度 ScalingTemperature Scaling的标准数学形式是将除以一个温度参数 T:那么容易看出最后推导得出最终的注意力公式为其中mscale公式的由来我们不禁要思考mscale为什么要写成而不是其他的是YaRN团队拍脑袋想出来的吗当然不是。大模型计算某个关键词的概率为Z为所有词的总和分母Z其实大多数都是背景噪音当外推文本s倍时新加入的词也是和原来差不多的背景噪音那么新的分母此时关键词新的概率变小了在深度学习中对概率的分析通常放到对数空间中来进行分析对两边取对数经过简单的简化也就是说文本长度拉伸s倍之后对某个关键词的概率在对数空间中的差值恰好约等于即损失了.YaRN通过将cos和sin乘以mscale使得Q和K的点积结果放大了倍。假设没放大之前关键词得分背景噪声得分两者的差为那么施加mscale之后关键词得分背景噪声得分两者的差为添加mscale是为了带来扩大关键词和背景噪声之间的差距的收益带来的差距收益为那么现在我们的目标很明确了让添加mscale之后带来的收益恰好能够抵消掉文本拉伸s倍后损失掉的即那么当x1时有泰勒展开令则可能大家有疑惑为什么可以认为是一个1的值当s2,,,,,经过充分学习一般在之间他们的比值也确实1即使是后面令a0.1他们的比值不再1经过学习也能吸收掉这个误差。令常数项则优美的公式1.0时边界不外推时不做处理是文本拉伸s倍后softmax分母也扩增s倍导致关键词在对数空间中损失是在真实模型如 LLaMA上的平均得分差拟合值是一个经验值全流程可总结为到此我们已经把PINTK-AwareYaRN完整的学习一遍了如果有错误的地方欢迎大家指出我们一起交流学习

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询