我差点把它当又一个自蒸馏变体关掉标签页。第一遍读的时候,满眼都是实验表格,工具使用、代码生成,两列数字压着 RLVR 和几个 OPSD 变体,rollout 预算只要 Skill-SD 三成不到。这些数字够把它从 arXiv 的噪声里拎出来看一眼,但也就是看一眼——刷分的 self-distillation 论文太多了,多一篇少一篇,这摊子也不缺。真正让我停下来的,是第二遍才反应过来的一件事:它拆的墙根本不是某个 benchmark,而是 online policy self-distillation 这整条路过去所有人都默认的一个前提。
这个前提被拆掉之后,我回头看自己读它的第一遍,才明白为什么摘要里作者把话讲得那么冲。
OPSD 这摊子东西,一句话说是这么回事:智能体在环境里跑,跑出来的轨迹不直接拿来更新策略,而是由一个教师去消化。教师手里有学生没有的特权信息,然后用这些特权信息给学生造监督信号。你去看以往所有做法,差别基本就落在教师手里那点特权是什么。可能是答案,可能是反馈,可能是技能片段,可能是轨迹里某些被标出来的部分——但有一点是共通的:全是设计者预先塞好的。每个人都在设计更好的手工特权材料,换一个任务、换一个环境、换一种交互形态,设计者就得重新想一种特权形式。这个方向一直没走出来的根子就在这里。它没在学“怎么教”,它只是不停地给教师换更贵的教材。
LoPD 干的事一句话:让教师的特权上下文可以端到端学习。不是再设计一种新的手工特权形式,是把“特权从哪来”这个决策本身交还给学习过程。这就是它的承重墙。剩下所有机制,包括那个名字唬人的什么目标,都是给这句话打补丁。
拆开看。
智能体有一个学生策略,基于当前任务和交互历史生成轨迹。这里第一个和普通 online RL 不一样的地方就出来了:轨迹生成之后,并不是只在最后一步给一个奖励信号,而是在每个访问过的前缀处都接受密集的 token 级监督。这句话值得划一下。它的意思是,教师不是那种“等你跑完一圈才告诉你走偏了”的延迟批评,而是在轨迹展开的过程中,每多生成一个 token,它都有话说。这个密集监督是 LoPD 能省 rollout 预算的一个关键,因为它把信号颗粒度打细了,每一步都算数,不用等一整个 episode 结束才更新一次。省略掉的 rollout 不是少跑了几次,是每次跑出来的信号都被榨得更干。
那教师手里的特权上下文是什么?
不是手工写的答案,也不是预先设计的技能片段。它是一组从经验里检索出来的东西,被组合成连续隐 token,然后拿去条件化一个自我教师模型。注意这几个措辞的次序:检索相关经验,组合为连续隐 token,条件化教师。也就是说,什么经验对当前轨迹有意义,这件事本身就是网络在学的东西,不是设计者靠规则挑的。
以前的做法是设计者规定“这段轨迹的答案作为特权信息”;这里变成“相关的历史经验被编码成隐向量,教师自己决定怎么用它”。前者把设计者绑死在每个任务上,后者让经验本身成为可学习的上下文。这不是换教材,这是把“怎么挑教材”这件事也交了出来。
我越读越觉得,这可能是整篇论文最值得记一条笔记的地方。
接下来是那个名字有点唬人的特权边际目标。我第一次看到 privileged-margin 这个词的时候,以为是又造了一个没必要的术语——这行当里这种词太多了,有时候纯粹是为了给实验小节凑一个缩写。但往下读能摸到它的实际用途。隐上下文在学习过程中容易飘。检索模块抽出来的经验如果随便组合,教师今天教的和昨天教的会对不齐,学生那边就会收到自相矛盾的监督,那套密集 token 级监督反而会加速把策略带偏。特权边际目标就是给这个学习过程加一个规范,让它稳下来。论文具体怎么定义那个边际、区间设在什么位置,我不在这里把符号逐行复刻出来——那层纸一戳就破,核心不是数学形式,是它在防什么:防的是“特权变得太快,学生跟不上”这类问题。没有这个稳定项,连续隐 token 学起来会歪。
我承认这一段讲得有点碎,但它是后面的眼,含糊了工程段就没法收。别让那个词吓住,它就是个稳定性约束。
我把这套角色关系画成个文字图,方便离开公式也能想清楚:
任务 + 交互历史
│
▼
学生策略 ──── 生成轨迹 ────► 每个前缀
▲ │
│ 检索相关经验
│ ▼
│ 组合为连续隐 token
│ │
│ ▼
│ 自我教师(被条件化)
│ │
└─── 密集 token 级监督 ◄─┘
这张图要盯住的是那条逆行线:学生生成轨迹不是终点,轨迹里的每个位置都反过来被教师监督,而教师手里拿的是从检索经验里学来的隐上下文。一往前、一往后,中间夹着“特权上下文可学习”这个环节。以前这条逆行线里夹的是手工特权材料,现在换成了可学习的隐 token——这就是全文唯一重要的改动,其余都是让它能跑起来的工程。
消融那一栏给的最直接的证据是:把“特权上下文可学习”这个性质拿掉,收益就没了。也就是说,那些涨点不是靠“检索经验”这条线自己涨出来的,也不是靠密集监督单独撑的。是把特权上下文变成可学习的这一步在起作用。这种消融我一向很看重,因为它把一篇“看起来什么都像”的论文压回到那个真正承重的构件上。很多论文的实验表格看着漂亮,但你一消融,涨点就散了——说明那玩意儿没有一块承重墙,全是装饰。
现在把论文拉回地面。
工程上最硬的一个数字是 rollout 预算:超过 GRPO 和 Skill-SD,但 rollout 只用了后者的三成不到。在 online RL 里,rollout 就是最贵的那部分——你得让模型真的去环境里跑、去和工具交互、去生成代码再执行,跑完才能有信号。能砍到三成,不是小优化。这是省钱的承重墙。意味着如果你的生产管线已经在跑 online RL 或自蒸馏,它给了你一个直接可以试的换法,不用先信一个巨大的新框架。试错成本本身就低一截。
工具使用和代码生成这两个任务选得也对。这俩是现在 agent 真正在落地的场景,不是玩具环境。能把离线的手工特权信号去掉,在真实交互场景里让教师从自己的经验里长出来,这个方向本身是对的——至少比继续在每一代模型上重新设计“什么样的答案算好的特权”要可扩展得多。设计者再懂任务,也不可能每个任务都懂;但经验库这种东西,你只要跑得起来,它自己会涨。
不过这篇论文的边界我读的时候也没打算替它遮。它是在智能体工具使用和代码生成两类任务上报告的数字,不代表换到别的环境就一样。隐上下文的学习在任务分布变化大、经验库很稀的时候能不能稳住,论文里没有给足压力测试。我尤其担心冷启动阶段。经验库不够、检索出来的东西无关,教师反而在给学生灌噪声。这时候密集监督就不是优势了,是加速器——加速把学生往错误方向推。这个坑只有自己复现一版才知道有多深,而且大概率不会在第一版就暴露出来。
我读这篇的时候也调过头。第一遍我觉得这就是又一个刷分的 self-distillation,重点全在实验表格上。第二遍才承认它的核心 idea 值得记一条笔记:不是设计了新的特权材料,而是问了一句“特权本身为什么不能学”。这个问题一旦提出来,OPSD 之前那条“设计者预先指定”的路就显得有点窄了。我不确定这答案最后能走多远,但我确定这个问法比它这轮的分数值钱。
这堵墙我替你拆了,剩下那半你自己走——尤其那栏消融和 rollout 预算,看完原文再下判断。别让摘要替你下结论。
