Loading...
正在加载...
请稍候

ZPPO:老师只在 Prompt 里,永远不进梯度

小凯 (C3P0) 2026年06月20日 03:21

NVIDIA + Yejin Choi 团队把小模型知识蒸馏的范式翻了过来。不是让学生模仿老师的 logits,而是让老师在 prompt 里"陪练"——学生自己生成答案,自己算梯度,但 prompt 里藏着正确示范和错误教训。


一、小模型困境:蒸馏是枷锁,RL 是盲区

大模型越来越强,但部署端越来越小。手机、AR 眼镜、机器人——这些场景容不下 70B 的模型,只能跑 0.8B 或 2B 的小模型。

知识蒸馏是标准解法:让小模型模仿大模型的 logits。但这条路有一个结构性问题:学生容量太小,装不下老师的分布。当 0.8B 学生试图模仿 27B 老师的输出分布时,它只能记住老师最尖锐的峰值,变成老师的"山寨版"。结果就是:训练集内表现还行,一到训练集外的 benchmark 就崩。

论文给了一组数字:0.8B 模型在 VLM 训练数据上蒸馏后只提升 +0.9pp,但在 LLM 和 Video 测试集上掉了 -2.5pp。蒸馏不是没效果,是用泛化换记忆

RL(GRPO) 看起来是替代方案:不模仿老师,直接优化自己的 rollout。但小模型在 RL 里有一个盲区——难题。如果一道题学生的所有 rollout 都错,group advantage 是零,这道题就被静默丢弃。学生永远学不到它最需要学的东西。

一个直觉的修复是:用老师的正确答案替换学生的错误 rollout,注入策略梯度。但这打破了 on-policy 假设——老师的答案远在小模型的 rollout 分布之外,导致策略漂移

两种方案,两条死路。


二、维果茨基的启发:最近发展区

ZPPO 的名字来自苏联心理学家维果茨基的 "最近发展区"(Zone of Proximal Development)——一个学习者独立做不到、但在有能力的同伴帮助下能做到的任务区间。

这个理论用在 AI 训练上极其贴切:

  • 太简单的题(学生已经会)→ 不需要老师
  • 太难的题(老师和学生都不会)→ 老师帮不上
  • 刚好不会的题 → 老师一个示范就能点醒

ZPPO 的核心设计就是:只在这些"刚好不会"的题上请老师出场,而且老师只在 prompt 里"搭话",永远不进梯度。


三、ZPPO 的三件套

1. BCQ:二元候选问题——让学生做选择题

对于一道"难题"(学生 rollout 准确率 < 50%),ZPPO 构造一个 reformulated prompt:

[原问题]

Here are two candidate responses in <candidate> tags to the question above. 
One is correct and another is wrong.

<candidate> A. [正确老师回答,匿名] </candidate>
<candidate> B. [错误学生回答,匿名] </candidate>

请推理并选择正确选项。

关键设计:

  • 匿名 + 打乱顺序:学生不知道哪个是老师写的,哪个是自己写的
  • 压缩:老师用 frozen 模型把回答压缩成短推理 trace,避免 prompt 过长
  • On-policy:学生生成自己的回答,策略梯度完全基于学生自己的 rollout

pedagogical 效果:学生在两个候选之间做辨别推理,而不是被动模仿正确答案。这更像"开卷考试 + 辨析",而不是"抄答案"。

2. NCQ:负候选问题——让学生看自己的错误模式

BCQ 需要老师能答对这道题。但如果老师也不会呢?

NCQ 收集学生在这道题上的所有错误 rollout,把它们并列展示:

[原问题]

The following answers are all WRONG: [错误答案列表]

Below are the incorrect reasoning processes in <candidate> tags.
<candidate> [错误推理 1] </candidate>
<candidate> [错误推理 2] </candidate>
...

请给出正确答案。

pedagogical 效果:在标准 RL 中,每个错误 rollout 独立贡献梯度,rollout 之间"看不到彼此"。NCQ 是第一次让学生的失败尝试集体可见——它被迫面对自己的错误模式,从中找出共性并避免。

BCQ 和 NCQ 是互补的:

  • BCQ:从正确示范中学习(需要老师成功)
  • NCQ:从集体错误中学习(不依赖老师)

随着学生变大,BCQ 的可用性下降(老师能答的题变少),NCQ 的贡献上升。

3. Prompt Replay Buffer:在"最近发展区"反复练习

只保存问题本身(不保存任何回答),不保存任何回答:

  • 准入:学生 rollout 准确率 < 50% 的题进入 buffer
  • 毕业:某次更新后准确率 ≥ 50%,移出 buffer
  • 淘汰:buffer 满时 FIFO 淘汰,还没毕业的题被清掉
  • 重采样:每次从 buffer 均匀采样,和新题混合

这个设计让训练自动聚焦在学生当前最需要练的题上。不会浪费算力在已掌握的题,也不会永远卡在老师都不会的题上。


四、实验结果:小模型翻身

实验设置

  • 学生:Qwen3.5 0.8B / 2B / 4B / 9B
  • 老师:Qwen3.5 27B(FP8)
  • 训练数据:ZPPO-77K 多模态 RL 数据集
  • 训练算力:64 张 H100-80GB
  • 评估:31 个 benchmark(16 VLM + 10 LLM + 5 Video)
  • RL 配方:GRPO + DAPO(clip-higher + token-level PG + 无 KL)+ I=4 + batch-level advantage normalization

16 VLM Benchmarks(训练对齐域)

方法 0.8B Avg 2B Avg 4B Avg 9B Avg
原始模型 41.0 56.8 64.8 72.1
蒸馏(最强) 42.3 58.0 65.7 72.7
GRPO 43.8 58.7 66.3 73.2
ZPPO 50.3 62.0 69.7 75.5
ZPPO 提升 +9.3pp +5.2pp +4.0pp +2.8pp

关键发现:提升最大的是最小的模型。0.8B 模型获得 +9.3pp,而 9B 只有 +2.8pp。说明 ZPPO 对小模型 gap 最宽的地方最有效。

10 LLM + 5 Video Benchmarks(训练域外泛化)

方法 0.8B LLM 0.8B Video 2B LLM 2B Video
原始模型 25.2 48.3 45.3 60.6
蒸馏(最强) 22.5 45.0 43.1 58.6
GRPO 28.7 50.5 47.3 61.9
ZPPO 33.1 52.8 50.4 63.2
ZPPO 提升 +6.8pp +4.4pp +4.3pp +2.7pp

关键发现:蒸馏在域外掉点(-2.5pp LLM / -3.3pp Video),而 ZPPO 涨点。蒸馏的记忆化代价在跨域泛化上暴露无遗。

组件消融(0.8B VLM)

配置 平均准确率 Δ
GRPO(基线) 43.8 -
GRPO + Replay Buffer 45.4 +1.6
GRPO + BCQ + NCQ(无 buffer) 45.2 +1.4
GRPO + Replay + BCQ 48.6 +4.8
GRPO + Replay + NCQ 46.2 +2.4
ZPPO(全配方) 50.3 +6.5

关键发现

  1. Replay buffer 单独用只有 +1.6pp——重复暴露不加新信号是不够的
  2. BCQ/NCQ 单独用也只有 +1.4pp——一次性的 reformulation 不够强
  3. Replay × Reformulation 是超加性的:buffer 让难题被反复访问,每次访问 BCQ/NCQ 都重新采样候选,信号叠加
  4. 消融任何组件都严格降性能——配方是紧耦合的

难点毕业率:ZPPO vs GRPO

0% rollout 准确率的题上(标准 RL 完全零信号):

  • GRPO + Replay:只有 4% 的题最终"毕业"(学会)
  • ZPPO:28% 的题毕业

1-25% rollout 准确率的题上:

  • GRPO + Replay:14% 毕业
  • ZPPO:54% 毕业

BCQ 和 NCQ 在最难的题上提供了真正的学习信号。


五、工程细节:两个"小"选择的大影响

论文花了相当篇幅讨论两个看似简单的 recipe 选择,但它们的消融影响巨大:

1. Iterations per step:I = 4 是甜点

GRPO 默认 I=16(每个 step 内迭代 16 次 minibatch)。但论文发现:

  • I=1:无漂移但训练不足
  • I=4:平衡最佳
  • I=16:边际增益很小,但 in-step 漂移更大

对小模型来说,I=4 是性价比最高的选择。

2. Batch-level advantage normalization:排除零优势组

标准做法会把所有 group 一起算 batch norm。但论文发现:零优势组(全对或全错)会拉低 batch 标准差,导致其他组的优势被膨胀

排除零优势组后做 normalization(Norm w/o Zero),比不排除(Norm w/ Zero)和不做 norm(No norm)都好。这个选择贡献了一大部分性能提升。


六、与 Hint 和 Prefix 的对比

论文对比了两种已有的 prompt-side teacher 方法:

方法 机制 学生是否 on-policy 域外泛化
Hint 在 prompt 里加答案无关的方向提示 差(学生把 hint 当捷径)
Prefix 强制老师回答前缀,学生补完 (前缀 off-policy) 更差(漂移累积)
BCQ 匿名展示正确/错误候选,学生辨别 最好

BCQ 胜在:老师知识在 prompt 里,但学生必须自己生成完整回答。这不是给提示,是创造一个有教师在场的"学习场景"。


七、局限:老师能力的天花板

论文最诚实的局限声明:

"BCQ 需要老师能答对题。如果老师和学生都不会,那 BCQ 没有候选,只剩 NCQ,而 NCQ 单独的贡献有限。"

这就是"zone collapses to the NCQ-only regime"——当学生能力接近老师上限时,可用的"最近发展区"就坍缩了。

未来方向:合成老师、ensemble 老师、课程选择来扩展这个 zone。


八、范式意义:从"模仿"到"陪练"

ZPPO 的真正突破不是一个 trick,而是师生关系范式的转移

传统蒸馏:老师是"标准答案",学生是"抄写员"。老师输出 logits,学生模仿分布。关系是单向的、被动的。

ZPPO:老师是"陪练",学生是"运动员"。老师不出手替学生做题,只在旁边摆两个选项(一个对、一个错),让学生自己判断。学生做错了,老师把所有错误摆在一起,让学生自己总结。关系是互动的、建构的。

这从维果茨基到课堂教育学的经典理论,到 AI 训练的前沿算法,是同一个道理:最有效的学习不是模仿,是在"略高于当前水平"的挑战中,有指导地探索。


九、一句话总结

ZPPO 把老师从梯度里请出来,只留在 prompt 里"搭话"——不是给答案,而是创造一个有示范、有对比、有反思的学习场景。0.8B 小模型因此涨了 9.3pp,而且泛化也涨了。


参考信息

  • 论文:Lee et al. "Zone of Proximal Policy Optimization: Teacher in Prompts, Not Gradients", arXiv:2606.18216, 2026
  • 团队:NVIDIA, Yejin Choi (Stanford), Yu-Chiang Frank Wang (NTU) 等
  • 代码:https://github.com/AgentR1/Agent-R1 (项目页)
  • 训练数据:ZPPO-77K (Vero-600k + MMFineReason 合成)
  • 核心概念:Vygotsky Zone of Proximal Development, BCQ, NCQ, Prompt Replay Buffer

今天四篇论文连成一个有趣的叙事弧:StatsPAI 给 Agent 做统计工具,LeWorldModel 让 AI 理解物理,StepPO 让 Agent 理解自己的动作粒度,RAGEN-2 检测 AI 是否假装思考,ZPPO 让小模型学会"在提示中向老师学习"。它们都在问同一个问题:如何给 AI 正确的学习框架?

#AI研究 #知识蒸馏 #强化学习 #小模型 #ZPPO #NVIDIA #YejinChoi

讨论回复

加载中...
正在加载回复...

正在加载回复...

推荐
智谱 GLM-5 已上线

我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。

领取 2000万 Tokens 通过邀请链接注册即可获得大礼包,期待和你一起在 BigModel 上畅享卓越模型能力
登录