on-policy distillation 2
Illustration下面我们看到一个真实的例子展示了教师对学生错误轨迹的评分。这个例子来自 依赖于模型做出了一个关键观察问题的前提很重要。正确答案是B因为冰块在平底锅中会融化。学生模型Qwen3-4B-instruct-2507错误地将这个问题当作纯数学问题处理没有考虑物理背景这是一个关于平均数的数学题但是带有一个“现实常识”的陷阱冰块在煎锅里已知条件第1分钟放入四个冰块第2分钟放入五个冰块第3分钟放未知数量的冰块第四分钟放入0块冰块。关键条件放入冰块的平均数是每分钟个问第3分钟结束时锅里一共有多少个完整的冰块。如果只考虑到数学那么就是4*520 有20个完整的冰块。看这个note:图片中的Note部分非常重要。AI意识到在现实中冰块放在煎锅里frying pan煎蛋frying a crispy egg肯定会融化。但是为了做这道数学题AI通过高亮部分自我修正/假设“假设冰块没有融化或被移除”。如果不做这个假设答案就是0全化了。题目问的是“how many whole ice cubes”暗示我们要按数学逻辑算忽略物理融化。深色表示从教师模型Qwen3-235B-A22B-Instruct-2507获得更高惩罚的token该教师模型正确解决了这个问题。我们看到她惩罚哪些开始引导学生走向错误方向的短语token直觉上对应于引导推理的重要分叉token。超越80/20法则高熵少数token驱动LLM推理的有效强化学习。最终答案虽然错误但没有被惩罚--它在整个前序序列条件下是完全可预测的这句话的核心含义是最终答案虽然错误但没有被惩罚。它在整个前序条件下是完全可预测的。不是关键决策点所以不惩罚教师模型惩罚的是 分叉token关键决策点最终答案不是关键决策点因为它是可以根据前面的条件预测的教师模型只惩罚关键决策点不惩罚可预测的tokenPseudocode 伪代码我们在Tinker的强化学习RL脚本之上实现了在线策略蒸馏该脚本已经实现了采样、奖励计算以及策略梯度(policy gradient)风格的训练1.初始化教师客户端initialize teacher client)Tinker AP支持轻松地为不同的模型创建不同的客户端而无需担心模型引擎的利用率问题。我们使用一个采样客户端sampling client)因为我们不需要教师模型反向传播对数概率logprobs)2.采样轨迹Sample trajectories)。我们完全按照强化学习RL中的方式从学生模型student中采样rollout.在采样过程中RL模块已经计算了学生的对数概率logπθ(x),以便将其作为重要性采样损失(importance-sampling loss的一部分来使用3.计算奖励(Compute reward).我们使用compute_logprobs函数向教师客户端查询采样的轨迹该函数会返回教师模型在学生采样的词元tokensx 上的对数概率。随后我们利用这个结果来计算反向 KL 散度reverse KL。4.使用 RL 进行训练Train with RL。 我们将每个词元per-token的优势值advantage设置为负的反向 KL 散度并调用 RL 的重要性采样损失函数来对学生模型执行训练更新。也就是其实就是计算学生的log计算教师的log就行了序列是学生自己的教师只需要计算是学生产生的token的log就行了在线策略蒸馏的详细流程步骤1学生生成序列- 学生模型生成轨迹序列- 序列是学生自己生成的- 不是教师生成的步骤2计算学生的log概率- 学生模型计算自己生成token的log概率- log π_θ(x)- 用于计算反向KL散度步骤3教师计算log概率- 教师模型计算学生生成token的log概率- log π_teacher(x)- 教师不需要生成序列只需要计算log概率步骤4计算反向KL散度- reverse_kl log π_θ(x) - log π_teacher(x)- 作为奖励优势- 用于训练学生模型关键- 序列是学生自己生成的- 教师只需要计算log概率- 不需要教师生成序列在下面的实验中我们通常使用在线策略蒸馏(on-plicy distillation)应用于那些已经在特定领域知识熵进行了中间预训练(mid-training的模型。这种训练增加了学生模型生成属于教师模型分布范围内的token的概率但这通常不足以完全复刻教师模型的性能不是说反转KL的意思是 教师模型生成这个的概率高然后如果学生生成这个的概率低的话那么就惩罚。但是我看到这里发现不是这样的是学生生成这样的token看教师生成这个token的概率是多少然后让学生去更接近教师乐意生成的token是这样的吗那这样不就会导致学不到教师的更高级的学生一开始根本不会生成的token我看到这里的时候就有这个疑问问了ai回答是:反向KL散度的局限性问题1学生不生成教师的高级token- 学生一开始不会生成教师的高级token- 如果学生不生成这些token就无法学习这些token- 反向KL只在学生生成的token上计算问题2无法学习新token- 反向KL是模式寻找的- 学生只能在已有的支持内学习- 无法学习新的token问题3初始化很重要- 学生需要先学会生成相关token- 否则反向KL无法学习这些token- 需要先用SFT训练关键- 反向KL确实有这个局限性-需要先用SFT让学生学会生成相关token- 然后用反向KL进行模式寻找监督微调SFT使用的是前向·KL它能够增加对新token的支持让学生模型学会生成原本不会的词随后反向KL可以在初始化模型的支持域内进行模式寻找(mode seeking).通常正如我们将在个性化示例中看到的那样由于学生模型缺乏任何相关的领域知识其生成相关token的初始概率往往为0我们使用在线策略蒸馏进行训练后处理并将其与专家模型训练最后关键阶段的其他方法进行比较。666还有第二关还有SFT的事情下个博客继续