基于李博杰《深入理解 AI Agent:设计原理与工程实践》第7章学习笔记。
开篇:一间”三师”训练房
想象一位教练带三个阶段的学徒:第一阶段,学徒读万卷书,建立广阔的知识底子(预训练);第二阶段,师父手把手示范标准动作,学徒照着模仿(SFT);第三阶段,师父丢下一套规则和计分板,让学徒自己上场实战,赢了加分、输了扣分,越练越会找最优解(RL)。
第 7 章的核心就是讲清这条”三阶段”训练链的后半程:预训练给了模型”知识”,SFT 教会它”规矩”,RL 逼出它”策略”。 对 Agent 工程师而言,真正能动手参与的正是后两个阶段——这也是本章标题”模型后训练(Post-training)”的含义。作者还给出贯穿全章的两条主线:主线一是 SFT 记住、RL 泛化;主线二是数据和环境,比算法更重要。
一、三阶段全景:预训练、SFT、RL
| 维度 | 预训练 | SFT(监督微调) | RL(强化学习) |
|---|---|---|---|
| 目标 | 预测下一个词 | 模仿示范输出 | 最大化期望奖励 |
| 数据 | 海量互联网文本 | 数千到数万条输入-输出示范对 | 任务 + 奖励函数(可复用、可迁移) |
| 学到什么 | 知识地基 | 指令遵循、格式与风格协议 | 可迁移的策略、探索新解法 |
| 代价 | 最贵(GPU 数月) | 较便宜 | 昂贵(在线采样 + 反复迭代) |
SFT 常见误区是把它当成”补知识”的手段:SFT 数据量只有几万条,根本喂不饱新知识。它固化的是“协议”而非事实——回答的格式、语气、流程。例如 Orpheus/Sesame 这类语音模型的 SFT 数据里用 <laugh>、<sigh> 这类特殊标记,让模型学会在正确时机发出拟人化反应。
微调阶段常用 LoRA(低秩适配) 做参数高效微调:冻结主干,只训练 1%~5% 的额外参数,效果接近全参微调。经验参数:学习率约为全参微调的 10 倍;SFT 常用 rank 64~256,RL 常用 rank 8~32(RL 训练不稳定,秩太高反而易崩)。
二、SFT 与 RL 的本质区别:记忆与泛化
两者差异远不止”有没有奖励函数”:
| 维度 | SFT | RL |
|---|---|---|
| 优化目标 | 最大化标注答案的概率(极大似然) | 最大化期望奖励(多条回答取优) |
| 学习方式 | 固定映射:一个问题一个标准答案 | 可迁移策略:学会”解题方法”而非背答案 |
| 数据形态 | 离线数据,无需交互 | 在线采样,与环境交互 |
| 覆盖行为 | mass-covering(雨露均沾) | mode-seeking(赢者通吃) |
| 天花板 | 数据天花板:只能学到数据里有的 | 任务天花板:可探索数据之外的解法 |
验证比生成容易是 RL 的底层优势:生成正确答案难,但验证一个候选答案是否对往往简单。这带来一个关键推论——SFT 是离线学习,泛化上限受限于示范数据的多样性;RL 是在线学习,能超出数据分布。
为什么实践中”先 SFT、后 RL”?原因有二:其一,RL 需要模型能输出可解析的结构(如 JSON、工具调用)才能计算奖励,SFT 先教会格式;其二,先”形”后”神”,直接 RL 容易输出乱格式。但并非绝对——DeepSeek-R1-Zero 凭借强基础模型跳过 SFT 直接 RL 也能激发出推理能力,只是输出可读性差、夹杂多种语言,最终官方版本还是加了冷启动 SFT 兜底。
三、何时用 SFT,何时用 RL
作者给出清晰的决策顺序:
- 先问:真的需要后训练吗? 很多问题用 Harness(提示词、RAG、工具)就能解决,不一定要动模型。
- 再试 SFT:成本低、稳定,先看能否覆盖主要场景。
- SFT 不够再加 RL:当”无论增加多少示范数据,新场景表现依然不佳”时,就该转向 RL。
书中用 GeneralPoints 实验对比了两者的泛化能力:视觉 OOD(分布外)场景下,SFT 准确率下降 9.9%,而 RL 提升 17.6%;数学推理的分布外泛化 SFT 掉 8.1%,RL 涨 3.5%。AdaptThink 实验还发现 RL 能学会“何时不思考”:响应长度减少 45%~64%,准确率不降反升——这是 SFT 示范数据很难教出来的元技能。
四、RLHF:从人类偏好到奖励模型
经典的 InstructGPT 三段式:
1
2
3
4
第1步 SFT:用人写的高质量示范微调模型
第2步 RM:标注员对同一问题的多个回答排序,训练奖励模型
(Bradley-Terry 模型:P(A 优于 B) = sigmoid(score_A - score_B))
第3步 PPO:以 RM 为奖励,用强化学习优化策略,同时加 KL 惩罚
KL 惩罚是把策略”摁”在参考模型附近——反向 KL 是 mode-seeking 的,防止策略在奖励函数的犄角旮旯里”走极端”。这对应 Goodhart 定律:当指标成为目标,它就不再是好指标。奖励模型被过度优化的经典现象是:代理奖励持续上升,但真实质量先升后降——reward hacking(奖励黑客)。
DPO(直接偏好优化) 则跳过显式奖励模型,直接从偏好数据优化策略,简单得多。更重要的是区分两条路线:RLHF(奖励来自人类偏好)与 RLVR(奖励来自规则验证器,如代码测试、数学答案比对)。Agent 任务大多可自动验证,这正是 RLVR 在 Coding Agent 中大放异彩的原因。
五、强化学习算法地图
| 算法 | 在线/离线 | 特点 | 适用场景 |
|---|---|---|---|
| REINFORCE | 在线 | 整条轨迹给奖励,方差大 | 理论基准(GRPO 本质是带组内基线的它) |
| PPO | 在线 | 裁剪限制更新幅度 + 价值网络,稳定 | 多轮长轨迹、需要价值估计 |
| GRPO | 在线 | 组内相对比较,无需价值网络,成本低 | 单轮/短轨迹、奖励区分度好 |
| DPO | 离线 | 直接偏好优化,极简 | 有偏好数据、预算有限 |
| KTO | 离线 | 只需”好/坏”二元标签 | 标注成本低 |
| Best-of-N | 推理时 | 采样 N 次取最优,不改模型 | 推理算力充裕时 |
简单选型:单轮 Agent 任务用 GRPO 性价比最高;多轮长轨迹用 PPO 更稳;只有离线偏好数据就上 DPO/KTO。
六、数据与环境:比算法更重要的事
作者给出明确的优先级:基础模型先验 > 环境 > 算法。算法优化是”边际改进”,而数据和环境决定上限。
- 环境失真的代价:若环境与真实任务差距过大,模型会学会”应试策略”——训练时高分,上线即露馅。
- 造不出真实环境时,让模型扮演环境:ZeroSearch 用模型模拟搜索引擎供检索 Agent 训练;DreamGym 动态蒸馏环境;τ-bench 用用户模拟器训练对话 Agent。但要注意模拟器偏差:模拟器的缺陷会成为训练天花板,且容易引发 reward hacking。
- 数据质量三维度:覆盖面(覆盖多大任务空间)、多样性、标注准确性。Anthropic 曾表示:2025 年前把 SFT + RLAIF 的数据质量做到极致,Coding 模型已经相当出色——很多场景下 SFT 数据质量到位,根本不需要做 RL。
- 拒绝采样流水线:采样 k 条候选 → 验证器筛选 → 去重 → SFT → 迭代。
合理用力顺序:先选对强基础模型 → 把环境与数据打磨到位 → 最后才做算法层面的边际优化。
七、多轮与工具调用:RL 的进阶战场
单轮 vs 多轮 RL 的核心差异:多轮面临延迟奖励(成败在最后一步)与信用分配(哪一步该背锅)难题,且部分可观测。奖励设计因此分化出结果奖励(稀疏)与过程奖励(密集)。RLVP 的思路是”奖励结果、惩罚路径“:只惩罚可验证的错误动作,结果正确是主驱动力,惩罚配守规奖励。在 TerminalBench 上,违规次数从 3.71 降到 0.66(约 6 倍改善),全败组占比从 65% 降到 8%。
RL 学工具调用面临三层递进挑战:单工具掌握 → 多工具选择 → 工具链编排。实践要点是 loss masking:屏蔽环境反馈 token 的梯度,让模型只学”该做什么动作”而非”复读环境提示”。ReTool 用代码解释器增强数学解题,AIME 2024 从纯文本 RL 基线的约 40%(1080 步)提升到 67%(仅 100 步)。DAPO 则贡献了四项改进:Clip-Higher(放宽裁剪上限)、Token-Level Policy Gradient Loss、Dynamic Sampling、Overlong Reward Shaping。
小结与实践建议
本章核心:SFT 记住协议、RL 学会泛化;数据和环境比算法更值钱;样本效率仍是当前最大瓶颈。
实践清单:
- 先诊断是否真需要后训练;要训就先 SFT,用 LoRA 控制成本,格式协议先固化。
- 判断 SFT 还是 RL:增加示范数据无效时果断转 RL;单轮任务优先 GRPO,多轮优先 PPO。
- RLHF 记得加 KL 惩罚防 reward hacking;Agent 任务能自动验证就用 RLVR 而非人工偏好。
- 把最多的精力花在数据质量和环境保真度上,算法是最后 5% 的边际优化。
- 多轮任务用过程奖励 + 路径惩罚;工具调用训练务必做 loss masking。
下一篇进入第 8 章:Agent 的持续进化——模型与 Agent 如何在学习与迭代中持续成长。