Illustration
下面我们看到一个真实的例子,展示了教师对学生错误轨迹的评分。这个例子来自 依赖于模型做出了一个关键观察:问题的前提很重要。正确答案是B,因为冰块在平底锅中会融化。学生模型Qwen3-4B-instruct-2507,错误地将这个问题当作纯数学问题处理,没有考虑物理背景
这是一个关于平均数的数学题,但是带有一个“现实常识”的陷阱(冰块在煎锅里)
已知条件:第1分钟放入四个冰块,第2分钟放入五个冰块,第3分钟放未知数量的冰块,第四分钟放入0块冰块。关键条件:放入冰块的平均数是每分钟个,问第3分钟结束时,锅里一共有多少个完整的冰块。如果只考虑到数学:那么就是4*5=20 ,有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(关键决策点),最终答案不是关键决策点,因为它是可以根据前面的条件预测的,教师模型只惩罚关键决策点,不惩罚可预测的token
Pseudocode 伪代码
我们在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函数向教师客户端查询采样的轨迹,该函数会返回教师模型在学生采样的词元(tokens)x 上的对数概率。随后,我们利用这个结果来计算反向 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的事情,下个博客继续