RoPE 如今是大语言模型的业界标配,Llama、DeepSeek 等主流模型都在用,但它的长度外推能力一直被诟病,位置插值、YaRN 等补丁层出不穷。9 月 10 日,法兰克福歌德大学的 Nevermann 与 Gros 在 arXiv:2609.11913 上提出一个更基础的问题:位置编码对「距离泛化」到底有没有帮助?实测答案有点反直觉——多数情况下,把它整个关掉反而最好。
先分清两种泛化
长度泛化研究「训练短上下文、推理长上下文」,模型同时面对没见过的位置和没见过的依赖关系,两种失败混在一起。这篇论文定义距离泛化:上下文长度固定,只改变源 token 与复述位置之间的间隔,把「处理不了新位置」和「处理不了新依赖」拆开看。实验用两个合成延迟拷贝任务:完整拷贝要延迟复述 10 个源 token,选择性拷贝只复述其中的偶数 token。训练时间隔在 15 到 25 之间均匀采样,测试时间隔拉到 1-120,大量超出训练分布。
NoPE 多数场景拿下最佳
模型是 8 层、8 头、512 维的标准 decoder-only Transformer,分别跑 RoPE、ALiBi 和不加位置编码的 NoPE 三种配置。结果显示距离泛化对位置编码方案高度敏感,NoPE 在多数设置下泛化最好,与 Kazemnejad 等人 2023 年在长度泛化上的结论一致。更扎心的是 RoPE:它在距离泛化上落后,而测试序列并没有超出训练上下文,RoPE 并未遇到未训练过的旋转角度——锅甩不到「外推到陌生角度」头上,机制层面另有原因。
数据多样性与迁移的两个附带发现
第二组结论关于训练数据多样性:加大训练时见过的间隔数量,绝对性能确实提升,但按相对口径衡量,收益强烈递减。第三组关于迁移学习:主任务与辅助任务同训,收益可正可负——从更复杂的选择性拷贝迁往完整拷贝出现正向收益,但在完整拷贝自己的训练区间内反而出现破坏性效应;RoPE 的迁移整体偏弱,却有一个独特优点:几乎不产生破坏性干扰。
先别急着拆 RoPE
两个限定值得记住。其一,NoPE 对模型规模敏感:模型变小时,NoPE 甚至学不会分布内的拷贝机制,显式位置编码在小模型上稳定得多。其二,这是 8 层小模型加合成任务的结论,作者在讨论里写明,距离泛化最终需要拿到预训练模型上检验,从合成任务到 LLM 之间还隔着规模、预训练数据和多任务混杂好几道沟。
对做长上下文工程的人来说,这篇论文的价值不在「立刻换掉 RoPE」,而在把一个被混淆的变量拆干净了:很多「长上下文不行」的问题,可能不是位置编码外推的锅,而是模型没学会处理没见过的 token 依赖。下次 RULER 分数上不去时,或许该先问:到底是位置没见过,还是依赖没见过?