大模型后训练怎么选:SFT、RL 和冷启动
训练一个会调用工具的模型,常见的失败有两种。一种是连工具名和参数都写错,接口压根没收到有效请求。另一种是工具能用,但它查不到结果就反复发同一个请求,或者拿到足够的信息还在继续查。这两种问题,适合用不同的训练信号来解决。
SFT 给示范,RL 给反馈
SFT(监督微调)拿到的是一组输入和示范输出。训练时,模型看到问题和已给出的示范前缀,学习提高下一个目标 token 的概率。比如教模型查库存,可以给它几条完整轨迹,覆盖商品名明确时怎么填参数、名称有歧义时怎么追问、接口返回空结果时怎么告诉用户。只要示范写得好,训练信号就能落到具体的输出位置。
在线 RL(强化学习)先让模型用当前策略采样,也就是做 rollout,再给它生成的回答或执行轨迹打分。训练根据奖励估计更新策略,让能带来更高期望回报的行为以后更常出现。同一条查库存任务,有的轨迹一次查对,有的换了两个关键词才查到,有的查到了却读错字段。奖励可以优先看最终结论是否正确,再考虑调用次数和耗时。
| SFT | 在线 RL | |
|---|---|---|
| 训练信号 | 高质量示范 | 模型生成的轨迹及其奖励 |
| 常见目标 | 学会按指令作答、输出指定结构、掌握工具协议 | 提高任务成功率,改善重试、停止等决策 |
| 数据准备 | 收集并校验参考回答或操作轨迹 | 准备任务、可执行环境和可靠的评分方法 |
| 先检查什么 | 示范覆盖了哪些真实场景 | 模型是否能采到成功样本,评分能否区分好坏 |
遇到什么问题,优先用什么?
模型还不知道怎么做,先看有没有能教会它的示范。 如果输出总是不符合 JSON Schema,或模型经常选错工具、漏填字段,可以先用 SFT 建立基本行为。领域适配也是类似的思路,比如用示范教模型按某个行业的术语、问答流程或文档格式作答。知识频繁变化时,可以让示范教模型怎么查和引用来源,把事实本身放在可更新的知识库里。
模型会做,但做得不够稳,且结果容易验证时,可以试 RL。 数学题可以检查答案,代码题可以跑测试,工具任务可以核对目标状态。比如模型大部分时候会查库存,但遇到空结果只会重复同一个请求。训练时可以给真正查到目标 SKU 的轨迹奖励,对重复请求加少量成本。只奖励「调用越少越好」会让跳过查询的轨迹占便宜,所以先保任务完成,再优化开销。代码测试也需要覆盖边界条件,否则模型学到的可能只是通过现有用例。
可以先拿一批留出的任务跑基座或指令模型,按失败类型做个简单统计。如果主要卡在格式、工具协议和常见流程,先补相应示范。如果已经能完成部分任务,失败集中在长链路决策,而且评分可信,在线 RL 就有发挥空间。高质量示范稀缺、奖励也不可靠时,先补数据或评分环境通常更有效。
为什么很多流程会先做 SFT?
RL 每一轮用的是模型自己生成的样本。设想模型连工具调用格式都不会,采了八条轨迹,八条都在第一步失败。即使奖励能正确地给它们低分,也很难从这批数据里看出哪种操作更接近成功。SFT 可以先给模型看完整的成功轨迹,让它学会开始做任务。之后 RL 才有更多机会比较「能做成的几种方法,哪种更好」。InstructGPT 就先用人工示范做 SFT,再用人类偏好训练奖励模型并做强化学习。InstructGPT 论文
能不能跳过 SFT,要看起点。基座如果已经能在目标任务上采到足够的有效轨迹,且结果有可靠的验证器,就可以实验直接做 RL。DeepSeek-R1-Zero 从基座直接做 RL,正式的 DeepSeek-R1 则引入了冷启动数据。两个方案说明,是否先做 SFT 是一项训练选择,取决于起始模型、样本和想改善的行为。DeepSeek-R1 技术报告
真正决定顺序的是失败发生在哪一步。接口都调不通时,先让模型看到可执行的示范。接口已经能调通时,就可以看端到端成功率,再决定是否用奖励来改进策略。
更多推荐


所有评论(0)