关掉位置编码,Transformer 反而学得更好:距离泛化的反直觉发现
假设你正在训练一个 Transformer 模型做一件极简单的事:复制一段 token,但中间隔一段距离。比如,模型在第 5 个位置看到 token "A",需要到第 25 个位置才把它写出来。训练时,你让它见过间隔 15-25 的所有距离。测试时,你给它间隔 35、45、55——从未见过的距离。
关掉位置编码,Transformer 反而学得更好:距离泛化的反直觉发现
一个让所有人都意外的实验
假设你正在训练一个 Transformer 模型做一件极简单的事:复制一段 token,但中间隔一段距离。比如,模型在第 5 个位置看到 token "A",需要到第 25 个位置才把它写出来。训练时,你让它见过间隔 15-25 的所有距离。测试时,你给它间隔 35、45、55——从未见过的距离。
这是 Nevermann 和 Gros 在 2026 年 9 月发表的论文《Distance generalization in transformers: why bother with positional encoding?》中设计的核心实验。他们问了三个问题:
1. RoPE、ALiBi 这些位置编码方案,相比"完全不给位置信息"(NoPE),到底能不能帮助模型泛化到新的距离? 2. 训练时见过的距离越多样,泛化能力是否越强? 3. 迁移学习(同时训练一个辅助任务)对距离泛化是帮还是害?
答案出乎意料:关掉位置编码,模型反而学得更好。
什么是"距离泛化"?
先区分两个概念。长度泛化(length generalization)研究的是:模型在短序列上训练,能不能处理长序列?比如训练时最长 512 token,测试时给 1024。这是被研究得很多的问题。
距离泛化(distance generalization)不同:上下文长度固定不变,但 token 之间的"依赖距离"变了。训练时模型见过"源 token 在位置 5、目标在位置 20"(距离 15),测试时给它"源在位置 5、目标在位置 40"(距离 35)。
这个区分很关键。长度泛化的失败模式是"处理不了那么长的上下文";距离泛化的失败模式是"能读到上下文,但学不会'隔这么远还要记住'这件事"。后者更接近真实场景:对话系统需要记住 20 轮前提到的实体,代码模型需要理解函数定义和调用之间隔了几百行的依赖关系。
实验设计:延迟复制任务
研究者构造了两个合成任务:
- C 任务(delay copy):把 10 个源 token 全部复制到延迟后的位置
- S 任务(selective copy):只复制源 token 中的偶数位
他们对比了三种位置编码方案:
- RoPE(旋转位置编码):当前主流大模型(LLaMA、Qwen 等)的标准配置
- ALiBi(线性偏置注意力):通过注意力偏置注入位置信息
- NoPE:完全不给位置编码,只靠因果注意力的隐式位置信号
核心发现:NoPE 赢了
结果可以用一句话概括:NoPE 在大多数情况下泛化最好。
这听起来很反直觉。位置编码存在的全部理由就是告诉模型"token 在哪个位置",为什么不给位置信息反而更好?
研究者给出的解释是:RoPE 和 ALiBi 这类显式位置编码会把"距离"信息硬编码进注意力计算中。训练时模型学到的是"距离 15-25 的处理方式",这个处理方式和距离绑定在一起。当测试距离超出训练范围,位置编码给出的信号对模型来说是"没见过的模式",反而成了干扰。
NoPE 不一样。没有显式位置编码时,模型只能依赖因果注意力的隐式机制——它必须从数据本身推断"隔了多远"。这种推断能力一旦学到,就比硬编码的距离映射更灵活,能迁移到新距离上。
研究者用"paradoxically"(矛盾地)来形容这个结果。他们还引用了之前在长度泛化上的类似发现:NoPE 在那里也表现不错。两条独立证据线指向同一个结论。
数据多样性的悖论
第二个发现同样有意思。研究者改变了训练时见过的距离数量——从只见过 1 个距离,到见过 5 个、10 个、直到连续区间。
结果:绝对值上,数据多样性越多越好;相对值上,多样性越多反而越差。
怎么理解?绝对值指的是模型在训练距离范围内的测试准确率——多样性越多,覆盖越广,表现越好。相对值指的是"每增加一个训练距离带来的边际收益"——多样性越高,每个新距离的边际收益越小,甚至变负。
这和人类学习的直觉一致:学钢琴时,从只会弹 C 大调到学会 G 大调是巨大进步;但从会 10 个调到会 11 个调,几乎感觉不到差别。边际递减是普遍规律。
但还有更微妙的发现:当训练距离太集中时,模型反而无法泛化到训练范围之外。模型学到了"距离 15-25 的处理方式",但没学到"距离本身是可以变化的"这件事。数据多样性太低,模型把训练距离当成了宇宙常数。
迁移学习:双刃剑
第三个实验是迁移学习。模型同时训练主任务(比如 C 任务)和辅助任务(比如 S 任务),看辅助任务能否帮助主任务的距离泛化。
结果:有时帮助,有时伤害。
当辅助任务和主任务的距离范围接近时,迁移学习有正面效果——模型从辅助任务学到的"距离处理方式"能直接用在主任务上。但当辅助任务的距离范围和主任务差异太大时,迁移学习反而有害——模型被辅助任务"带偏"了,学到了不适用的距离映射。
研究者特别指出:中等程度的分布外测试(moderate OOD)大多受益于迁移学习,但极端分布外测试反而受害。这暗示迁移学习有一个"甜区"——辅助任务和主任务的距离分布要有重叠但不能完全重合。
这意味着什么?
这篇论文的发现对 Transformer 架构设计有直接启示:
位置编码的角色需要重新审视。当前主流大模型几乎都用 RoPE,但这项研究表明 RoPE 可能是距离泛化的瓶颈。如果模型需要在推理时处理训练时未见过的 token 依赖距离(这在实际应用中极为常见),RoPE 的硬编码距离偏置反而成了限制。
NoPE 不是"没有位置编码",而是"另一种位置编码"。NoPE 依赖因果注意力的隐式位置信号,这本身就是一种位置编码方案——只不过它学到的不是"距离 = 15 时的处理方式",而是"如何从数据推断距离"。后者更灵活、更可迁移。
数据多样性不是万能药。增加训练数据的距离覆盖有帮助,但边际递减很快。更重要的是让模型理解"距离是可变的",而不是让它见过所有距离——后者既不现实也不必要。
迁移学习有甜区。选择辅助任务时,距离分布的重叠度是关键变量。太近没用,太远有害。
局限性
这项研究用的是合成任务(复制、选择性复制),和真实语言任务有差距。真实语言中的"距离依赖"远比复制复杂——语义依赖、句法依赖、语用依赖混在一起。NoPE 在合成任务上的优势能否迁移到真实语言任务,还需要验证。
研究者也承认,他们的实验规模较小(小型 Transformer),在大模型上的行为可能不同。但之前在长度泛化上的 NoPE 发现已经在大模型上得到验证,所以距离泛化的 NoPE 优势有较大概率也能放大。
我的看法
这篇论文最让我感兴趣的不是"NoPE 更好"这个结论本身,而是它揭示的架构偏置与泛化能力的张力。位置编码是一种归纳偏置(inductive bias)——你告诉模型"位置信息很重要,请专门处理它"。这种偏置在训练分布内有效,但在分布外反而成了枷锁。
这和深度学习中的经典悖论一脉相承:强归纳偏置在数据少时有用,在数据多时有害。卷积的平移不变性、循环的时序假设、注意力的置换不变性——都是同一类问题。NoPE 的胜利本质上是"让数据自己说话"的胜利:当你不给模型强加距离假设时,它反而能从数据中学到更灵活的距离处理能力。
位置编码不会消失——它在训练效率和推理稳定性上的优势太明显。但这项研究提醒我们:我们以为不可或缺的组件,可能只是训练便利的产物。下次当你看到模型在长上下文任务上表现不佳时,也许该问的不是"怎么改进位置编码",而是"位置编码是不是问题本身"。
论文: Distance generalization in transformers: why bother with positional encoding?
作者: Daniel Henrik Nevermann, Claudius Gros (Goethe University Frankfurt)
发布日期: 2026-09-10