这项由南京大学软件新技术国家重点实验室、南京大学智能科学与技术学院以及字节跳动联合开展的研究,于2026年7月28日以预印本形式发布,编号为arXiv:2607.25659。有兴趣深入了解的读者可以通过该编号在arXiv平台查询完整论文。
一、一个"偷懒"的教师问题
假设你是一位老师,正在批改学生的作文。这篇作文有三项要求:必须提到"环保"这个关键词、必须使用Markdown格式的分项列表、必须以特定的结束语收尾。学生交上来的作文中,有些地方认认真真地按要求写了关键词,有些地方则是普通的过渡句,完全和要求无关。
现在,你给这篇作文打了85分。但问题来了——当你把这个85分"反馈"给学生时,你是怎么做的?你会告诉学生"因为你在第三段用了'环保'这个词,所以那段写得好;但第二段的过渡句跟要求没关系,那里的分数可以少给一点"吗?还是说,你把85分这个结果平均分配到作文的每一个字上,每个字获得的"认可"是一样多的?
现实中,绝大多数AI语言模型的训练方式恰恰是后者——"平均主义"地把分数反馈给每一个生成的词。这正是这项研究想要解决的核心问题。
二、大语言模型是怎么"学习"的?先从头说起
要理解这项研究,得先搞清楚大语言模型(也就是ChatGPT、DeepSeek这类AI)是怎么被"训练"成听话的助手的。
最近几年,研究人员发现,单靠让AI模仿人类写的例子来学习(这叫"监督微调")还不够,还需要让AI通过"试错"来提升——这个过程叫做"强化学习"。具体来说,就是让AI先尝试回答一个问题,然后有一个"评分员"给这个回答打分,AI再根据分数调整自己下次的回答策略。
其中有一种特别流行的训练方法叫GRPO(Group Relative Policy Optimization,可以理解为"小组相对优化法")。它的做法是:对同一个问题,让AI同时生成好几个不同的回答,然后把这些回答的分数做比较,分数高于平均水平的回答被"鼓励",分数低于平均水平的被"抑制"。这样一来,AI就能在一批回答的相互比较中,逐渐学会哪种方式更好。
近年来,研究人员还引入了一种更结构化的训练信号——"评分标准"(Rubric,类似于考试评分细则)。这份评分细则会明确列出好的回答需要满足哪些具体条件,比如"必须用英语回答"、"必须包含恰好三个Markdown项目符号"、"必须以某个固定短语结尾"等。有了这份细则,AI的表现评估就更精确了。
然而,就是在这里,一个隐藏的问题出现了。
三、"平均主义"的代价:明明知道哪里重要,却不区别对待
当AI生成一段回答时,这段回答由几百甚至几千个词(在AI眼里是"词元",token)组成。有些词是关键的——比如那个表示Markdown格式的星号"*"、表示项目编号的"三"、特定的结束短语——这些词直接决定了回答有没有满足评分细则的要求。但另一些词,比如中间那些解释性的过渡句,完全和评分细则的要求无关,只是普通的内容填充。
问题在于,当GRPO把"这个回答得了高分"这个信息反馈给AI时,它是把这个分数的激励信号**均匀地洒**在回答的每一个词上的。关键的星号和普通的过渡词,得到的"表扬"是完全一样多的。换句话说,AI知道这次整体回答做得不错,但它不知道哪些词是因为满足了评分细则而得分的,哪些词只是搭了顺风车。
这就好像一个厨师做了一道菜,顾客给了好评,但厨师不知道是因为那一撮特别的香料起了作用,还是因为盛菜的碗比较漂亮。每次训练,所有的食材和工序都得到了等量的"表扬",即便有些食材根本没贡献什么。
这个"平均主义"问题的直接后果是:训练效率不够高,评分细则里蕴含的结构化信息被大量浪费了,AI没办法精确地学到"哪些地方要特别注意"。
四、以前有人想解决这个问题吗?有,但代价很大
当然,研究界意识到了这个问题。最直接的解法是:训练一个专门的"词级别评分模型"——让这个辅助模型学会判断每个词对满足评分细则有多重要,然后用这些细粒度的分数替代粗糙的整体分数。
这个思路的代表工作是一个叫做RTT(Rubrics-to-Tokens,"从评分细则到词")的方法。RTT的做法是训练一个专门的"词级别相关性判别器",这个判别器能判断回答里的每一个词有多大程度上是因为评分细则才出现的。
但这条路走起来并不轻松——训练这个判别器需要一套专门的数据生成流程,要产生大量带有词级别标注的训练样本,这是一个额外的、非常耗费资源的工程。而且,这个判别器是一个独立的模型组件,把它嫁接到训练流程里,增加了整个系统的复杂度和维护成本。
于是,南京大学与字节跳动的研究团队提出了一个更直接的问题:有没有一种方法,完全不需要训练额外的模型,只用AI自己已有的能力,就能判断出哪些词更依赖于评分细则?
五、"反事实重播":拿走细则,看看哪里变了
这个研究团队的核心洞察,来自一个非常简洁的思想实验。
考虑这样一个场景:AI已经生成了一段回答,回答里有某个词,比如那个表示项目符号的星号"*"。现在我们问:如果当初的提示词里**没有**那条"必须包含Markdown项目符号"的要求,AI还会在这个位置生成星号吗?
答案显而易见——很可能不会。那个星号之所以出现,正是因为AI在遵照评分细则里的格式要求。换句话说,这个星号对评分细则有"强烈依赖"。
相比之下,回答中间某个普通的连接词,比如"因此",不管有没有评分细则,它出现在那里的概率大致是差不多的。它对评分细则的依赖程度很低。
这个思路就是"反事实重播"(Counterfactual Replay)——所谓"反事实",就是在保持所有其他条件不变的情况下,只改变一件事(移除评分细则),然后观察结果有什么不同。"重播"则意味着我们并不重新生成新的回答,而是把已经生成的那段回答,拿到没有评分细则的新情境下"重新打分",看看每个词的可能性有没有变化。
技术上说,AI在生成每个词时,会计算一个"这个词出现在这个位置的概率有多大"的值,叫做"对数概率"(log probability)。研究团队发现,只需要分别计算:在有评分细则的原始提示词下,这个词的对数概率是多少;在去掉评分细则的提示词下,这个词的对数概率是多少。两者之差,就是这个词对评分细则的"依赖程度"。
差值大的词,说明它高度依赖于评分细则,应该得到更多的训练激励;差值小甚至为负的词,说明它和评分细则关系不大,不需要太多额外关注。
这个方法妙在哪里?它完全不需要训练任何额外的模型,因为"对同一段文字在不同提示词下打分"这件事,AI自己就能做到,只需要多做一次前向计算(forward pass)就够了,代价极低。
六、CoRT方法的完整运作方式
研究团队把这套方法命名为CoRT,全称是"Counterfactual Replay for Token-level credit weighting"(反事实重播词级别信用加权)。下面来完整描述它是怎么工作的。
训练流程中,AI对同一个问题生成若干个不同的回答。传统GRPO的做法是:给每个回答打分、算出"这个回答比同批次平均水平高多少或低多少"的优势值(advantage),然后把这个优势值平均地用于回答里的每一个词的训练。
CoRT在这个基础上加了一个步骤。在生成了回答、得到了整体分数之后,对于每一个回答,CoRT把这段已经生成的文字,拿到去掉了评分细则的"对照提示词"下重新计算每个词的概率。把有细则时的概率和没有细则时的概率相减,得到一个"对比差值",记作Δ。
接下来,为了让这些差值不会因为模型大小不同或措辞差异而变得忽大忽小、难以控制,研究团队用了一个叫做"sigmoid函数"的数学工具把Δ压缩到一个有界的范围里——简单说就是无论差值多大或多小,最终得到的分数都落在一个合理的区间内,不会出现极端值。这个压缩后的分数叫做"重播边际得分"(replay-margin score)。
然后,这些分数被转换成"词级别权重"(token weights)。权重大的词,代表它对评分细则的依赖程度高;权重小的词,代表依赖程度低。这些权重经过一个"响应归一化"(response normalization)步骤——也就是把一段回答里所有词的权重的平均值固定为1,确保整体的训练力度不变,只是在回答内部做了重新分配。
最后,这些词级别的权重乘以原来的GRPO优势值,就得到了每个词专属的"带信用权重的优势值"。优势值的正负方向(这段回答是该被鼓励还是该被压制)完全由原来的GRPO决定,CoRT只负责在方向确定的前提下,调整各个词得到的"力度大小"。
此外,研究团队还设计了一个"平滑渐进激活"机制(SmoothStep ramp)。在训练的早期阶段,CoRT的词级别权重影响很小,训练过程接近普通GRPO;随着训练进行,权重影响逐渐平滑增大,在一定步数后才达到完整强度。这样做的好处是:在早期训练还不稳定时,不会因为引入词级别权重而导致训练震荡;等到训练稳定之后,词级别的精细调整才开始发挥作用。
七、拿真实例子来验证:那些高亮的词确实是关键词
为了说明这套方法真的抓到了"正确的"关键词,研究团队用了一个非常直观的案例。
他们让训练好的AI回答一个问题:"解释运动员保持均衡饮食的重要性。"评分细则要求:用英语回答、至少五句话、恰好包含三个Markdown项目符号、加一段以"P.S."开头的附言、以固定短语"Is there anything else I can help with?"结尾、整个回答用双引号括起来。
AI生成了一段完整的回答。然后,研究团队把这段回答"重播"给去掉了评分细则的提示词,计算每个词的对比差值Δ。结果非常清晰:开头的双引号Δ值高达26.37(对比之下,内容词"balanced"、"diet"的Δ值接近0);词"three"(代表恰好三个项目符号)的Δ值是16.96;Markdown格式的星号"*"的Δ值是20.75;"P"和".S"(附言标记)的Δ值分别是12.62和7.47;结束短语开头的"Is"的Δ值是13.61;结尾的问号和双引号"?\""的Δ值是3.17。
换句话说,那些被评分细则明确要求的格式符号和特定词汇,在移除细则之后概率大幅下降,对比差值明显更高;而描述营养学内容的普通词汇,无论有没有评分细则,概率几乎没变,对比差值接近零。这正好说明,反事实重播确实能准确识别出哪些词是"因为评分细则才出现的"。
研究团队还做了更严格的对照实验来排除"是不是只因为提示词变短了"这个干扰因素。他们分别用去掉细则的提示词、长度相近但内容无关的填充文字替代细则、以及来自另一个问题的评分细则来做重播对比。结果发现,在这三种情况下,和评分细则直接相关的关键词(如格式符号、要求的关键词)的平均对比差值,都明显高于其他普通词汇。这说明信号来自细则内容本身,而不是提示词长度的变化。
他们还做了"逐条移除细则"的实验:每次只去掉某一条要求,看看受影响最大的词是不是那条要求对应的词。比如只去掉"必须包含项目符号"这条要求时,项目符号标记"–"的Δ值猛增到35.87,排名最高;而去掉"必须用英语"这类全局性的要求时,没有哪个特定的词出现集中的高Δ值。这进一步验证了:反事实重播的信号是有具体语义的,它能定向地感知到哪些词和哪条具体要求有关联。
八、实验结果:跑了多少模型、多少基准?结果怎么样?
研究团队做了规模相当全面的实验来验证CoRT的效果。
训练数据用的是HIR-16k数据集,这是一个专门用于指令遵循任务的强化学习训练集,每个样本都自带"有评分细则的提示词"和"原始提示词"两个版本,恰好满足CoRT的双提示词需求。
评分方式测试了两种:CSR(约束满足率,按满足了多少条细则打分)和AON(全有或全无,只有全部细则都满足才给满分)。前者给的信号更"平滑",后者更"严苛"。
测试模型包括Qwen3-4B-Instruct(一个40亿参数的模型)和Qwen2.5-7B-Instruct(70亿参数),此外还有更大的Qwen3-14B(140亿参数)用于验证方法在更大规模上是否同样有效。
评测基准覆盖四个专门测试指令遵循能力的标准:IFBench、IFEval(测严格的提示级和指令级准确率)、MultiDimIF(测多维度指令约束准确率)、AdvancedIF(用另一个AI模型作为裁判来评估,测试更复杂的综合指令遵循能力)。
结果层面,在绝大多数比较对中,CoRT都超过了使用相同设置的普通GRPO,平均提升幅度达到4.4个百分点。具体来看,以Qwen3-4B在CSR奖励设置下为例:GRPO在IFEval的提示级准确率是84.29,CoRT提升到86.06,提升了1.77个百分点;MultiDimIF准确率从74.38提升到80.48,提升了6.10个百分点。在Qwen2.5-7B的CSR设置下,MultiDimIF的提升更为显著,从66.67跳升到78.52,足足提升了11.85个百分点。
与需要额外训练判别器的RTT方法相比,CoRT在多数情况下与其持平甚至更强,而CoRT不需要那个额外的训练阶段。这个对比说明,花大力气训练一个专门的词级别相关性判别器,并不一定比直接利用AI自身的反事实感知能力更有效。
在140亿参数的Qwen3-14B上,CSR设置下CoRT提升了所有指标;AON设置下,IFBench和MultiDimIF有所提升,IFEval略有下降。这表明方法在更大规模上同样适用,只是在特定稀疏奖励设置下某些指标会有小幅波动。
研究团队还将CoRT嫁接到了另外两种主流的强化学习优化方法——DAPO和GSPO上。在这两种基础方法之上加入CoRT,前者五个指标全部提升,后者四个提升一个轻微下降,证明CoRT不是只能配合GRPO使用的专属工具,而是一个通用的"词级别信用分配"模块,可以搭配不同的基础优化算法。
九、如果拆掉关键部件会怎样?稳定性拆解实验
任何一个工程设计都需要回答:每个组件是必要的吗?研究团队专门做了一系列"拆零件"实验来测试CoRT的两个核心设计:响应归一化(保持权重平均值为1)和平滑渐进激活(SmoothStep ramp,逐步增强词级别权重)。
实验在Qwen2.5-7B的CSR设置下进行,对比了四种情况:完整的CoRT、去掉响应归一化的CoRT、去掉渐进激活的CoRT、两者都去掉的CoRT。
去掉响应归一化之后,词级别权重的平均值会随训练进行而逐渐漂移,训练到后期达到1.04左右。听起来只偏了一点点,但这个微小的漂移带来了明显的连锁反应——长度截断比例(length clip ratio,一个衡量生成文本被截断的指标,截断多意味着模型在走极端)在训练后期急剧上升,梯度范数和策略熵也出现了明显的不稳定。直觉上,这是因为当权重平均值不再是1时,CoRT的词级别加权实际上也在悄悄改变每个回答的整体训练力度,这相当于无意中引入了一个"可变的响应级别乘数",破坏了GRPO的原始平衡。
去掉渐进激活但保留归一化时,权重平均值虽然控制住了,但因为在训练一开始就使用了完整强度的词级别权重,训练后期仍然出现了梯度和熵的突刺,长度截断比例也高于完整配方。相比之下,完整的CoRT配方将激活推迟到早期训练趋于稳定之后才逐渐引入词级别权重,整个训练过程中梯度范数平稳、截断比例接近零、策略熵保持稳定。
研究团队还测试了"只用CoRT的词级别对比扰动,但不用GRPO的奖励方向"这个极端情况——即词级别权重没有与组相对优势值绑定,而是直接作为独立的训练信号。结果是训练奖励明显更低,且长度截断比例出现了大幅波动,训练在500步不久后就不得不停止。这个对比说明了一个重要的设计原则:CoRT的词级别权重必须是"信用分配器"而不是"独立的训练信号",它的作用是在GRPO已经确定了"这个回答该被鼓励还是抑制"的前提下,告诉训练过程"在这个方向上,哪些词应该更用力,哪些词可以少用力"。如果缺少GRPO提供的奖励方向,词级别的对比权重就失去了锚定,反而会引入噪声。
十、这套方法对模型的常规能力有没有副作用?
一个合理的担忧是:专注于提升指令遵循能力的训练,会不会让模型在其他方面退步?毕竟,AI的知识和推理能力也很重要。
研究团队用Math500(数学推理)、GPQA-Diamond(研究生水平的科学知识问答)和MMLU-Pro(广泛知识覆盖的多选题)三个通用能力基准,对训练前后的模型进行了对比测试。结果显示,在Qwen3-4B和Qwen2.5-7B两个模型上,CoRT训练之后的这些通用能力指标相比原始模型几乎没有变化,部分指标甚至略有提升。这说明CoRT的指令遵循优化训练并不会以牺牲通用能力为代价。
说到底,CoRT这项研究从一个很朴素的问题出发——训练AI时,为什么要把奖励平均地给每一个词,当我们明明知道有些词比其他词更重要?然后用一个同样朴素的方法回答了这个问题:把已经生成的回答在去掉评分细则的情况下重新打分,差值大的词就是依赖评分细则的词,它们值得更多的训练关注。整个方法不需要额外的模型,不需要额外的数据标注,只需要一次额外的计算,就能把原本被浪费掉的评分细则结构信息充分利用起来。
读完这篇文章,你可能会想:以后AI在遵循那些"必须包含某某要素"的复杂要求时,是不是会更加精准可靠?答案很可能是肯定的。更有趣的问题是:这套"反事实感知"的思路,能不能进一步延伸到更复杂的场景——比如多轮对话、工具调用、乃至AI完成跨步骤任务时的信用分配?研究团队在论文末尾也明确指出,这是他们下一步想探索的方向。感兴趣的读者可以通过arXiv:2607.25659查阅原始论文获取更多技术细节。
Q&A
Q1:CoRT方法在训练大语言模型时具体解决了什么问题?
A:在用强化学习训练大语言模型时,传统GRPO方法会把对整段回答的评分奖励平均分配给回答中的每一个词,即使有些词对满足评分细则至关重要,有些词只是普通填充内容。CoRT通过"反事实重播"——把已生成的回答拿到去掉评分细则的提示词下重新打分,识别出哪些词更依赖于评分细则——从而实现对关键词更有针对性的训练激励,提升模型遵循复杂指令的能力。
Q2:CoRT与RTT方法相比有什么区别?
A:RTT需要训练一个单独的"词级别相关性判别器"模型来识别哪些词和评分细则有关,这需要额外的数据生成和训练流程,增加了工程复杂度。CoRT不训练任何额外模型,只利用AI自身的前向计算能力做反事实重打分,成本更低。实验结果显示,CoRT的效果与RTT相当甚至更好,同时避免了额外的训练阶段。
Q3:CoRT的反事实重播训练会不会损害模型的数学推理或通用知识能力?
A:根据实验结果,经过CoRT训练的模型在Math500、GPQA-Diamond和MMLU-Pro三个通用能力基准上的得分与原始模型相比几乎没有变化,部分指标略有提升。这说明CoRT的指令遵循优化是在不牺牲通用能力的前提下实现的。