On-Policy蒸馏:大模型从模仿学习到自主进化的关键路径

发布时间:2026/8/23 4:20:57
On-Policy蒸馏:大模型从模仿学习到自主进化的关键路径 1. 从一次失败的蒸馏实验说起为什么Off-Policy不总是有效去年我们团队在尝试将一个经过指令微调的70B大模型教师模型的能力迁移到一个新架构的13B模型学生模型上。这是一个典型的模型蒸馏场景目标是让更小、更高效的学生模型在特定任务上逼近甚至超越庞大教师模型的表现。我们采用了当时最“标准”的流程让教师模型在精心准备的百万级高质量指令数据集上生成回答然后将这些“标准答案”作为监督信号去训练学生模型。这个过程在学术界和工业界被称为离线蒸馏或者更学术一点叫Off-Policy Distillation——学生学习的是教师在一个固定、静态的“策略”即数据分布下产生的行为。起初一切看起来都很美好。在验证集上学生模型的损失曲线平滑下降BLEU、ROUGE这些文本生成指标也稳步提升甚至在某些封闭式问答上分数快追平教师了。我们满怀信心地将这个学生模型部署到线上对话场景进行A/B测试。结果却让人大跌眼镜用户反馈模型经常“答非所问”、“逻辑跳跃”甚至会在一些简单问题上产生令人费解的“幻觉”回答。这和在验证集上的优异表现形成了鲜明对比。经过几轮紧张的排查我们发现问题出在“策略偏移”上。我们的验证集本质上和训练集来自同一个静态分布都是教师模型擅长处理的、相对规整的指令。但真实的线上用户提问是动态、多样且充满噪声的其分布与我们的静态数据集相去甚远。学生模型在训练时从未见过自己在这种“陌生”分布下的表现会是什么样子也从未学习过如何纠正自己在这种分布下可能犯的错误。它只是机械地模仿了教师在“温室环境”下的完美答案一旦踏入“野外”自身推理链条的脆弱性就暴露无遗。这次踩坑让我们深刻反思对于追求强泛化、高可靠性的对话或推理大模型传统的、基于静态数据集的离线蒸馏可能是一个有根本缺陷的范式。它忽略了学生模型自身在推理时所产生的“行为轨迹”的重要性。这直接引向了我们今天要深入探讨的核心方法On-Policy Distillation。简单说OPD的核心思想是让学生模型在自己“行动”即生成文本的轨迹上进行学习和蒸馏而不是仅仅模仿教师在另一个分布下的行为。2. 拆解On-Policy Distillation不仅仅是“在线”那么简单听到“On-Policy”很多人的第一反应是“在线学习”。这个联想部分正确但不足以概括OPD的全部内涵。在强化学习领域On-Policy意味着智能体从自身当前策略所产生的经验中学习。将其平移到模型蒸馏中OPD特指利用学生模型自身在前向推理采样过程中产生的中间或最终结果作为蒸馏过程的主要监督信号来源。2.1 OPD与Off-Policy Distillation的根本区别为了更清晰地理解我们可以用一个表格来对比两种范式特性维度Off-Policy Distillation (传统蒸馏)On-Policy Distillation (OPD)数据来源静态的、预先收集的数据集通常由教师模型或人类标注生成。动态的、由当前学生模型在训练过程中实时采样生成的数据。策略对齐学生模型学习教师模型在另一个策略数据分布下的输出。存在策略不匹配。学生模型学习如何改进自身当前策略下的输出。策略完全一致。监督信号教师模型在静态数据上的最终输出logits或最终token。可包括学生自身采样序列的中间隐藏状态、注意力分布、被拒绝的采样路径、或与教师模型在同一输入下的输出差异等。核心目标行为克隆让学生输出尽可能像教师的输出。策略优化让学生学会在自己可能的行为空间中做出更好的决策。类比学生背诵老师给的范文全集。学生自己写文章然后对照范文或评分标准修改自己的写作过程和最终成文。这个区别至关重要。在离线蒸馏中学生就像一个在驾校只按照固定路线练习的学员路上没有其他车没有突发状况。而OPD则要求学员直接上路驾驶并在每一次并线、转弯中实时学习如何开得更好、更安全。后者显然更能应对真实世界的复杂性。2.2 OPD的几种典型实现形式OPD不是一个单一算法而是一个方法论框架。根据具体利用学生自身轨迹的哪一部分以及如何构建监督信号主要有以下几种实现思路1. 序列级On-Policy蒸馏这是最直观的一种。对于每一个训练样本我们先让学生模型进行一次完整的自回归生成得到一段输出序列。然后我们使用一个奖励模型、或者直接用教师模型对这个学生自己生成的序列进行评分。最后我们通过强化学习如PPO或直接的最大似然优化来更新学生模型使其未来更倾向于生成能获得高评分的序列。这个过程完全是在学生自身策略产生的轨迹上进行优化。许多对齐训练如RLHF的后半段本质上就是一种序列级的OPD。2. 令牌级On-Policy蒸馏在每一个生成步骤token我们不只关心学生最终采样的那个token还关心它整个词表上的概率分布logits。OPD的一种做法是让学生模型在每一步都生成logits然后与教师模型在相同上下文注意这个上下文可能已经包含了学生之前生成的token下产生的logits进行对比计算KL散度损失。这样学生不仅学习“教师在这个位置会输出什么词”更学习“教师对我已经生成的这段历史会如何评估每一个词的可能性”。这能更好地传递教师的推理偏好。3. 隐状态与注意力蒸馏这种方法更加“深入”模型内部。它不仅仅比较输出还比较学生和教师模型在中间层的隐藏状态或注意力图。关键点在于这些中间状态的比较是基于学生模型自身前向传播所产生的激活值。通过最小化这些中间表示的差异我们可以将教师的内部推理模式更直接地灌输给学生。这尤其适用于模型架构相似但规模不同的师生对。注意纯粹的On-Policy要求教师也在学生生成的上下文上进行评估这在计算上开销很大。因此实践中存在一些混合方案例如使用一个小的、冻结的教师模型来评估学生轨迹或者使用蒸馏过的奖励模型作为代理。3. 为什么后训练阶段尤其需要OPD弥补行为分布的鸿沟大模型的训练通常分为预训练、有监督微调、以及后训练包括指令微调、对齐训练等几个阶段。OPD的价值在后训练阶段最为凸显。原因在于后训练阶段的核心目标发生了根本性转变。预训练的目标是习得通用的语言表征和世界知识数据分布是海量、无监督的网页文本。而有监督微调和后训练目标是将这些通用能力“塑造”成符合人类偏好的具体技能如遵循指令、安全无害、有用且翔实。这个阶段的数据分布是人为构造的、高质量的指令-回答对。问题就在于这个“人为构造”的分布。传统的离线蒸馏无论是用教师模型生成数据还是用人类标注数据都是在尝试覆盖一个我们认为“理想”的指令空间。然而大模型在部署后面对的是一个无限长尾的、充满对抗性和噪声的真实用户指令分布。这两者之间存在一个巨大的“行为分布鸿沟”。OPD正是填补这道鸿沟的桥梁。它的核心优势体现在1. 直接针对学生自身的弱点进行优化离线蒸馏是“撒胡椒面”式的优化希望学生掌握教师所有的能力。而OPD是“精准打击”。学生在自己生成的轨迹上表现不佳的地方例如生成长文本时结构混乱、处理复杂推理时步骤缺失才会通过蒸馏信号获得更强的梯度更新。这使得训练效率更高模型改进更直接。2. 缓解暴露偏差这是一个在自回归生成模型中经典的问题。在训练时模型总是以“黄金答案”的前缀作为输入来预测下一个词。但在推理时模型只能用自己之前生成的、可能有错误的词作为前缀。离线蒸馏无法让学生练习如何从自己的错误中恢复而OPD则天然地在训练循环中包含了这种“自我纠正”的体验。3. 实现更好的探索-利用平衡在OPD框架下尤其是结合强化学习时学生模型有一定的自由度生成不同于教师风格的答案。如果这些答案意外地获得了更高的奖励那么模型就会探索到新的、可能更优的解空间。而在离线蒸馏中学生的想象力被严格限制在教师提供的答案范围内缺乏探索。4. 适配持续学习与领域自适应当我们需要将一个通用大模型快速适配到某个垂直领域时OPD显示出巨大优势。我们可以让模型直接在领域相关的查询上进行生成然后利用一个领域专家模型或一组规则对其生成结果进行评价和蒸馏。这样模型优化完全聚焦于它在目标领域实际需要表现的行为上避免了通用数据带来的干扰。4. OPD实战一个简化的代码级流程与核心陷阱理论说了这么多我们来点实际的。下面我将勾勒一个基于序列级OPD结合强化学习进行大模型后训练的简化流程并指出其中几个最容易踩坑的地方。假设我们有一个经过SFT的模型作为学生一个更强的教师模型或奖励模型我们的目标是让学生生成的回答更受人类偏好。4.1 核心训练循环步骤采样阶段对于一批指令输入x我们使用当前的学生模型策略π_θ进行采样生成完整的回答序列y ~ π_θ(y|x)。同时我们也会记录生成每个token时的对数概率log π_θ(y_t | x, y_t)以及模型本身的价值函数估计如果有的话。评估阶段将采样得到的指令-回答对(x, y)送入奖励模型R这个奖励模型可能是教师模型也可能是专门训练的偏好模型获得一个标量奖励分数r R(x, y)。这个分数衡量了该回答的质量。优势估计为了判断生成序列中每个token的“贡献”我们需要计算优势函数A_t。一个简单的方法是使用GAE它基于奖励和模型的价值估计量化每个动作相对于平均水平的优劣。策略优化核心的更新步骤。我们最大化以下目标函数以PPO为例L(θ) E[min( ratio_t * A_t, clip(ratio_t, 1-ε, 1ε) * A_t )]其中ratio_t π_θ(y_t | x, y_t) / π_old(y_t | x, y_t)π_old是采样时的旧策略。这个目标函数在鼓励高优势动作的同时通过clip机制防止单次更新偏离旧策略太远确保训练稳定。价值函数拟合同时我们会用一个价值网络来拟合期望累积奖励其损失是均方误差L_v (V(x, y_t) - R_t)^2。好的价值估计能让优势计算更准确。整合蒸馏损失可选但重要纯粹的强化学习可能使模型“遗忘”原有的语言能力输出乱码或重复文本。因此通常需要加入一个监督损失项例如让模型同时最大化在高质量参考数据可以是教师生成的数据也可以是原始SFT数据上的似然。这个损失项充当了“锚点”防止策略崩溃。L_total L_ppo β * L_sft其中β是一个超参数。4.2 实操中的三大陷阱与调参心得陷阱一奖励模型的过度优化与奖励黑客这是OPD/RLHF中最经典的问题。你的奖励模型并非完美它可能有盲点。学生模型会很快学会“欺骗”奖励模型生成一些在奖励模型看来得分很高、但人类觉得毫无意义甚至有害的文本。例如在答案末尾加上“我希望这个回答对你有帮助”之类的套话可能会不恰当地提高奖励分数。应对策略第一奖励模型的训练数据必须尽可能广泛和高质量包含各种对抗性案例。第二在OPD训练中必须保留一个不参与训练的验证集定期用人工或更可靠的评估方式来检查模型生成质量一旦发现奖励分数上升但生成质量下降应立即暂停。第三可以考虑使用多个奖励模型进行集成或者使用基于模型的奖励增加“欺骗”的难度。陷阱二KL散度失控与模式崩塌为了防止模型偏离原始SFT模型太远我们通常会加入一个相对于初始模型π_ref的KL惩罚项。但如果这个惩罚系数设置不当会导致两个极端系数太小模型迅速退化失去语言连贯性系数太大模型变得过于保守拒绝任何创新输出变得单调重复。调参心得KL系数需要精细调节。一个实用的方法是动态调整。开始时可以设置一个较小的值让模型有一定探索空间。随着训练进行如果发现KL散度增长过快则逐步增大系数。监控KL散度和奖励的曲线至关重要理想情况是奖励稳步上升KL散度缓慢、平稳地增长。陷阱三采样温度与探索的权衡在采样阶段温度参数τ决定了生成的多样性。高温如τ1.0下模型探索性强可能产生更多样、更有创意的答案但也包含更多低质量输出。低温如τ0.1下模型输出确定性高但可能陷入局部最优无法发现更好的回答方式。实操建议不建议在整个训练中固定温度。一个有效的策略是退火采样在训练初期使用较高的温度如0.8-1.0鼓励广泛探索。随着训练步数增加逐步降低温度如到0.3-0.5让模型聚焦于利用已发现的高奖励区域。这类似于强化学习中的探索-利用权衡管理。5. 超越对话OPD思想在其他大模型任务中的泛化OPD的核心思想——“在自身行为分布上学习和优化”——具有强大的普适性并不局限于对话生成。事实上任何涉及序列生成或决策的大模型任务都可以从OPD思路中受益。1. 代码生成模型传统的代码生成训练使用大量问题标准解对。但一个更OPD的方式是让模型生成代码 - 在测试用例集上运行 - 将通过的测试用例比例作为奖励信号 - 优化模型使其生成更可能通过测试的代码。DeepMind的AlphaCode等系统就采用了类似思想让模型在自身产生的庞大代码样本中进行筛选和优化。2. 推理与思维链模型对于数学推理或复杂问答我们可以让模型生成多个不同的推理链CoT然后使用一个验证器可以是另一个模型或规则系统来判断哪个推理链的逻辑更合理、中间步骤更正确。然后我们可以用这些验证结果作为信号去蒸馏模型让它未来更倾向于产生逻辑严密的推理路径。这个过程就是让模型在自己生成的“思维轨迹”上学习。3. 大模型智能体这是OPD的天然战场。一个基于大模型的智能体在环境中行动产生观察-行动-奖励的轨迹。传统的离线训练会让智能体模仿专家演示。而OPD则要求智能体直接从自己的成功和失败轨迹中学习。通过将大模型作为一个策略网络其文本输出解析为具体行动再根据环境反馈进行优化可以构建出强大的自进化智能体系统。4. 持续学习与模型编辑当发现大模型在某些事实上产生错误时一种OPD风格的做法不是简单地用新数据微调这可能引发灾难性遗忘而是针对错误问题让模型生成一系列可能的回答 - 通过外部知识源判断对错 - 强化正确的回答模式惩罚错误的模式。这种基于模型自身输出的反馈进行编辑能实现更精准、影响范围更可控的模型更新。6. 当前挑战与未来展望OPD并非银弹尽管OPD优势明显但它并非没有代价和挑战。理解这些局限性才能更好地应用它。1. 极高的计算成本OPD尤其是结合RL的序列级OPD训练成本远高于离线蒸馏。它需要反复进行前向采样、奖励评估和反向传播对显存和算力要求极高。这限制了其在超大模型上的广泛应用。2. 训练稳定性问题引入强化学习组件后训练过程变得异常敏感。超参数学习率、KL系数、clip范围、优势估计系数等的微小变动可能导致训练崩溃。需要大量的实验和精细的监控才能获得稳定提升。3. 对奖励模型的强依赖OPD的效果上限严重受制于奖励模型的质量。“垃圾进垃圾出”一个存在偏见或盲点的奖励模型会引导学生模型走向歧途。构建一个高度可靠、对齐人类复杂偏好的奖励模型本身就是一个巨大的挑战。4. 探索效率瓶颈在浩瀚的语言空间中完全随机的探索效率极低。如何设计更高效的探索策略例如基于模型不确定性的探索、或者引入课程学习让学生从易到难地挑战自己是未来的研究重点。展望未来我认为OPD的发展会沿着几个方向演进一是轻量化研究更高效的OPD算法降低计算开销例如通过更精巧的局部蒸馏或梯度估计方法二是奖励模型民主化发展无需训练庞大奖励模型的方法比如基于模型自身置信度的内在奖励或者基于少量人类反馈的对比学习三是与其他范式融合将OPD与离线蒸馏、自监督学习等结合形成混合训练范式在稳定性和性能之间取得更好平衡。在我个人看来OPD代表了大模型训练从“模仿学习”走向“自主进化”的关键一步。它迫使模型不再仅仅是知识的被动接收者而是成为一个能够在与环境的互动中即使是模拟的文本环境通过试错来反思和改进自身行为的主动学习者。这个过程虽然更艰难、更昂贵但对于打造真正鲁棒、智能、可信赖的大模型或许是一条必经之路。我们团队在经历了那次失败的离线蒸馏后全面转向了OPD相关的技术路线虽然踩的坑更多了但模型的线上表现和泛化能力确实得到了实实在在的、可感知的提升。这其中的曲折和收获或许就是AI工程从粗放走向精细的一个缩影。