ROSS: Relearning from Self-Generated Rollouts through Selective Supervision
Zhiwei Zhang, Huayu Deng, Fei Zhao, Jiayan Fu, Bin Liang, Kam-Fai Wong, Mu Chuan
cs.LG, cs.AI
2026-09-29
ROSS无需新采样,对历史成功轨迹做片段级掩码SFT并超过继续训练。Qwen3.6-35B上MOPD均分从58.40%升到62.20%,SWE-bench Verified从64.20%升到68.40%。
RL和on-policy distillation都会留下模型自己采样的轨迹。On-policy distillation是学生先自己走,教师只在学生到过的状态上给监督。训练往前走,这些轨迹通常被当成过期数据丢掉。后期策略的采样分布已经变了,早期发现过的有效行为,当前checkpoint不一定还能稳定打出来。
在100道最难训练题上,最终策略对历史上做过对的题pass@1只有37.7%,98道里有74道成功率不超过50%;同一批题pass@32却到99.0%。行为还在支持集里,只是没压实。这些历史回复在当前策略下的token负对数似然接近当前自己采样,明显低于外部教师GLM-5.2。兼容,但没巩固。
整条轨迹最终答对,也不等于每一步都该模仿。中间仍可能夹着算错再改、放弃的尝试、代码里的无效探索。按结果做整段SFT,会把这些一起写进梯度。
ROSS从原训练的最终checkpoint出发,对存下来的历史轨迹做一轮离线masked SFT,不再额外采样。筛选分两层。
训练时整条历史原样当上下文,包括前面的错和弯路;loss只加在mask为1的模型token上。看完整现场,只背该背的那几步。单轮用正跨度抽取,agent历史用缺陷定位,最后都编译成同一套token mask。
对照里还有ROSS w/o mask:例子集合和完整ROSS相同,但对所有模型生成token都算loss,用来把「挑对轨迹」和「挑对片段」拆开。
主实验模型是Qwen3.6-35B-A3B。单轮设定为no-thinking,SFT三个epoch。对照包括开源Base、原RL或MOPD终点Upstream、按原流程再训两epoch或200步的Continued,以及对全部成功轨迹整段SFT的Positive-Rollout SFT。Agent侧在OpenSWE上做agentic RL,用Codex CLI经Harbor操作容器仓库,评测固定在SWE-bench Verified。
| 设置 | 指标 | Upstream | Continued | 整段SFT | ROSS |
| Math RL | Math Avg. | 75.19 | 75.43 | 75.99 | 76.98 |
| Code RL | Code Avg. | 42.09 | 42.31 | 40.84 | 44.21 |
| MOPD | 六项均分 | 58.40 | 59.16 | 57.70 | 62.20 |
| Agentic RL | SWE-bench Verified | 64.20 | 未报告 | 65.20 | 68.40 |
MOPD上整段SFT会掉点:均分57.70,低于Upstream的58.40,IFBench从44.58掉到41.49。ROSS w/o mask把均分拉回58.49。完整ROSS到62.20,比不加mask高3.71分。token级mask贡献了大部分增益。
同一套轨迹和mask,从Base起步和从Upstream起步分数接近。Math RL设定下Math Avg.分别是77.09和76.98。这些行为可以迁到没吃过那次RL更新的权重上。
被mask掉的内容并不随策略变稳而消失。前100个RL rollout step里策略熵在降,但保留轨迹的target exclusion rate(不进入loss的响应token比例)在Math上从11.60%只降到9.27%,在Code上从22.65%升到28.07%。抽1185条分类:Math约七成是「先写错再改」(早期72.7%,后期68.3%);Code最大类是冗余探索,从67.9%升到76.6%。附录另有4B Math RL:Upstream出现重复作答模式,ROSS把Avg. Math从52.05%拉到63.65%。
Math RL之后离域也不掉:Avg. Code从41.21到44.24,IFBench从33.30到34.60;Code RL之后Avg. Math从74.19到75.03。多轮工具调用BFCL分别从44.12到45.62、从46.25到49.38。
后训练日志里的成功轨迹是现成的近on-policy数据。已经在存rollout的团队,可以在最终checkpoint上加一轮离线SFT,不必再烧采样。和再跑一轮RL比,这是把已经付过采样成本的日志再榨一遍。存盘策略要提前定:中间checkpoint的成功轨迹如果当时没留,事后补不回来。MOPD上整段模仿成功轨迹是负收益,片段筛选过不去就不要做。方法骨架接近SWE-Prime的「全上下文、选片段」SFT,新意在数据从哪来:中间策略自己发现、后来又表达不稳的行为。
没有存历史rollout、或没有可靠verifier的任务,这套用不上。这颗35B模型上大约2到4分,属于巩固已有行为。
正文没有独立Limitations节。主结果几乎全在Qwen3.6-35B-A3B;4B只给了数学。片段标注绑在GLM-5.2上,主文没有与人类标注的一致性,也没有标注成本。Continued基线只多训两epoch或200步,「比继续训更好」的对照偏弱。单轮评测是no-thinking,不能和带思考的agent数字混读。AIME 25上ROSS是76.46,略低于w/o mask的76.67,mask不是每个子集都加分。