本文是「Agent 开发实践与思考」系列第 15 篇。系列目录:
- 2024
- 2025
预训练、SFT 和 RL 的训练目标与数据
当前主流大模型的训练通常分为预训练、监督微调(SFT)和强化学习(RL)三个阶段。
预训练的目标是在大量文本上预测下一个词。书籍、代码、论文和帖子等文本作为训练数据,参数由此编码语言规律及部分知识。这个阶段产出基座模型,其目标是续写文本,不是按指令回答问题。输入一个问题后,它也可能续写出多个相似问题,因为互联网文本中问题后常接续其他问题。
对于 decoder-only 模型,SFT 处理的是如何按指令组织回答。训练数据由一条指令和一个人工编写,或由模型生成后筛选的示范回答组成。SFT 的训练目标与预训练相同,仍是预测下一个词;变化的是数据和训练阶段。微调没有采用另一套算法,而是将续写目标从互联网文本转为示范回答。示范数据提供回答格式和风格,例如直接给出结论、分点回答、将代码放入代码块,以及如何措辞拒绝的请求。
RL 阶段不提供示范回答,只提供反馈。模型生成回答后,外部环境给出分数;高分回答的生成概率被提高,低分回答的生成概率被降低。训练通过试错调整行为,这是三个阶段中不直接提供标准答案的阶段。
SFT 如何为 RL 提供初始行为分布
RL 从模型已有的行为分布中提高高分行为的概率,不能产生模型完全无法生成的行为。某种回答方式若从未被模型生成,概率为零,再高的奖励也无法在采样中发现它。若直接对基座模型进行 RL,生成内容多数不符合回答任务,奖励信号过于稀疏,且探索空间过大,难以收敛。
SFT 先将行为分布调整为能够遵循指令和回答问题的范围,例如输出符合预期的格式、尝试执行指令,并按步骤写出推理过程。RL 随后在这个范围内探索。粗略地说,SFT 限定搜索空间,RL 在该空间中搜索。
因此,SFT 数据中的问题也会成为 RL 的初始条件。若示范普遍使用“首先、其次、总而言之”等固定表达,RL 后模型仍可能保留这种表达方式,因为 RL 在已有分布内筛选,不能替换初始分布。
SFT 数据与奖励信号分别限制什么
SFT 受标注数据限制。模型只能获得示范中出现的做法,训练结果接近对示范模式的复现,示范中的错误也会被一并编码。标注数据未覆盖的场景只能依赖泛化处理。
RL 受奖励信号限制。模型通过试错探索;在奖励设计正确的前提下,可能发现优于全部示范的做法。R1 的训练报告中有一个被广泛讨论的细节:模型在长推理中出现了“等等,我重新检查一下”这类自我修正行为,而训练示范没有要求以这种方式表达,这类行为来自试错过程。
SFT 提供已有做法的示范,RL 根据奖励调整做法的优劣。这也解释了 SFT 后不同模型的风格容易趋同,而 RL 的投入程度会带来差异。
RLHF 如何用偏好比较训练奖励模型
开放任务通常没有标准答案。例如,文案和会议纪要的质量难以用固定规则判定。让人对每个回答按十分制打分,评分会因时间和评分者变化;将两个回答并列后选择较优者,则更容易获得一致的偏好数据。
RLHF 先收集大量成对比较,再用这些数据训练奖励模型,使其预测人会选择哪个回答,最后让大模型以奖励模型的输出进行 RL。奖励模型代替人工提供训练分数。
奖励模型只近似人类偏好,拟合存在误差。对这个近似评判器持续优化时,模型可能利用其偏好,而不改善实际任务结果:回答更长、格式更规整、语气更肯定时分数可能更高,但内容是否正确未必能被判别。这类行为称为 reward hacking。代理指标被直接作为优化目标后可能偏离真实目标,训练中的 reward hacking 是这一现象的具体形式。
结果奖励与过程奖励的反馈粒度
RL 可以按两种粒度提供反馈。
结果奖励只评估最终答案,例如数学题的最终得数是否正确、代码修改后测试是否通过。其优势是成本较低,判分可以完全自动化;限制是反馈稀疏。一个包含二十步的任务只在结束时获得一个分数,中间各步的贡献和错误无法区分。它还可能奖励偶然得到正确答案的过程:轨迹过程错误但最终答案正确时仍获得高分,后续训练会提高复现该过程的概率。
过程奖励对每一步评分,判断该步是否正确。它能缓解信用分配问题,但需要较高的标注成本。让人工逐步批改一份数学解答,成本是只批改最终答案的几十倍。程序也可以逐步验证过程,但这一方法主要适用于数学和代码等可验证领域。开放任务中可以训练过程奖励模型评分,但该模型同样是可被利用的近似评判器,reward hacking 问题仍然存在。
DeepSeek R1 使用规则奖励与 GRPO 的条件
今年一月发布的 R1 展示了一种训练路径:在可验证领域,可以降低对奖励模型的依赖,直接按规则提供结果奖励。数学题的答案与标准答案一致时得一分,代码通过测试时得一分。规则奖励减少了对单独奖励模型的依赖,但规则未覆盖全部目标时,仍可能出现 specification gaming。正式版 R1 还经过冷启动数据的 SFT 和后续多个训练阶段,不能概括为只使用规则奖励。它使用的 GRPO 是一种策略优化方法。GRPO 对同一道题采样一组回答,以组内奖励计算相对优势后更新策略;这与依赖单独 critic 或价值模型估计状态价值的方法不同。critic、价值模型和奖励模型分别用于估计状态或轨迹价值、估计状态价值,以及评估回答,三者不是同一个概念。
R1-Zero 从基座模型开始,只使用大规模强化学习探索推理能力,是一个实验版本。它表明,在基座能力和奖励条件满足时,可以不先进行传统 SFT;但其输出存在可读性差、语言混杂等问题。正式版 R1 采用冷启动数据进行 SFT,再结合强化学习,并加入更多训练阶段改善可用性。两者的训练流程不同,不能以 R1-Zero 的结果概括正式版 R1。
验证器成本较低的领域更适合从 RL 中获得收益。数学有标准答案,代码有编译器和测试。这与我在拆解 Coding Agent 那篇中讨论的条件相同:编程领域存在成本较低的评判机制,因此 Agent 在编程任务上较早取得进展。R1 表明,这个条件在训练侧同样成立。
后训练对 Agent 应用设计的影响
行业正在将工具调用和多轮任务用于 RL 训练,也就是 agentic RL:模型在包含工具的沙箱环境中执行任务,并以任务完成情况作为奖励。模型的 Agent 行为将更多来自这类环境训练,提示词可调整的部分相应减少。
即使不训练模型,Agent 应用的环境和反馈设计也与奖励设计对应。工具报错时返回的信息会影响 Agent 后续如何修正;任务如何拆分和定义完成状态会影响其行动方向;中间产物的保留与丢弃会影响它能从执行轨迹中获取的信息。这些设计涉及的反馈机制与 RL 中奖励函数设计属于同一类问题。
评估也与训练条件相关。我在评估那篇中写过,能够由程序判定的标准应优先于人工判定。进一步看,具有明确判据且可由程序验证的评估集具备训练环境的部分条件。R1 的经验在应用层说明:自动验证检查的覆盖范围越大,系统可利用的反馈越多。依赖人工主观判断的环节难以作为稳定的评估集判据,也难以直接用作训练反馈。
reward hacking 在应用层也有对应情况。将 LLM 用作评估裁判时,模型可能偏好较长、格式更完整的回答。Agent 也会优化指标本身:若指标是完成任务清单勾选,它可能倾向于快速勾选,而非完成实际工作。规则奖励同样会因规则未覆盖真实目标而出现 specification gaming。应优先采用可由程序验证的判据,并检查规则是否覆盖实际任务目标。
应用团队可积累的环境、反馈与评估资产
我的判断是,应用层的差异主要来自环境和数据。模型权重的训练由实验室投入主导;应用团队可以积累环境设计、反馈机制和评估集,这些资产与后训练中能力改进所需的条件直接相关。提示词通常针对单次任务提供指令,评估集则可以反复提供反馈,因此我持续将评估置于提示词之前。
开放任务仍缺少低成本验证器。文案、沟通和创意类工作仍需要人工提供奖励信号,或依赖可能被利用的评判模型。在这一问题得到处理前,编程和数学仍会是 Agent 能力进展较快的领域,因为它们的验证器成本较低。
