# 第七章学习讲义：模型后训练

> 对应《AI Agents in Depth》中文版第七章。本文不是逐页复述，而是把本章重组为一套可以用于理解、复习和实际决策的知识体系。

## 1. 先用一句话理解第七章

第七章研究的是：

> 如何利用示范数据、任务环境和奖励反馈修改模型权重，把 Agent 的行为协议与决策策略沉淀进参数。

全书的核心公式是：

```text
Agent = LLM + 上下文 + 工具
```

前面的章节主要讨论模型外部的系统：怎样组织上下文、提供知识、设计工具、约束行为和评估结果。第七章把注意力转向公式中的 `LLM`，也就是 Agent 的“大脑”。

它回答五个问题：

1. 一个基础模型经过哪些阶段才会成为可用的 Agent 模型？
2. SFT 和 RL 分别在训练什么，为什么通常要先 SFT、后 RL？
3. 什么问题值得修改模型参数，什么问题应该留给 Prompt、RAG 或程序？
4. 多轮工具调用中的奖励和信用应该怎样分配？
5. 为什么后训练项目的关键通常不是算法，而是数据与环境？

## 2. 这一章在全书中的位置

第六章讲评估，第七章讲训练，两章之间存在直接的输入输出关系：

```text
第六章：评估系统
  ├─ 任务做得好不好？
  ├─ 哪一步出了问题？
  └─ 怎样自动判断成功？
             ↓
第七章：模型后训练
  ├─ 把评估环境改造成练习场
  ├─ 把评估指标改造成奖励信号
  └─ 利用反馈更新模型权重
             ↓
第八章：持续进化
  └─ 从生产轨迹中持续产生并验证候选更新
```

因此，没有可靠评估，就没有可靠后训练。训练实际上是在反复优化评估指标；如果指标有漏洞，模型会把漏洞放大。

## 3. 什么时候需要后训练

后训练不是修复 Agent 问题的默认选项。一个稳妥的排查顺序是：

```text
出现能力问题
    │
    ├─ 当前指令不清楚？──────────── 优化 Prompt / Skill
    │
    ├─ 当前状态或示例不足？──────── 补充上下文 / ICL
    │
    ├─ 缺少事实与证据？──────────── 使用 RAG / 知识库
    │
    ├─ 确定性规则没有执行？──────── 写成程序或硬约束
    │
    ├─ 输出格式、风格、协议不稳定？─ 使用 SFT
    │
    └─ 隐式策略需要跨场景泛化？──── 使用 RL 或在轨蒸馏
```

这里最重要的判断标准，不是“规则是否长期稳定”，而是“这种能力能否被外部符号充分表达”。

适合放在模型外部的内容：

- 会变化的价格、政策、用户资料和产品信息；
- 必须可追溯来源的事实；
- 转账审批、权限校验、危险命令拦截等硬规则；
- 仍在快速试验的工作流程。

更可能需要写入参数的能力：

- 很难逐条描述的自然表达风格；
- 高维视觉、语音或动作模式；
- 工具选择、错误恢复等隐式决策策略；
- 需要在大量新场景中自然迁移的行为能力；
- 把大模型能力压缩给低成本小模型。

## 4. 模型能力形成的三个阶段

现代模型通常经历预训练、监督微调和强化学习三个阶段。

| 阶段 | 使用的数据 | 优化目标 | 主要学到什么 | 典型特点 |
| --- | --- | --- | --- | --- |
| 预训练 | 海量原始文本或多模态数据 | 预测下一个 token | 语言、知识、表征、基本推理 | 最昂贵，是能力地基 |
| SFT | 高质量“输入—理想输出”示范 | 提高示范答案每个 token 的概率 | 指令遵循、格式、风格、协议 | 快、稳、样本效率高 |
| RL | 任务、环境和奖励函数 | 最大化期望奖励 | 决策策略、探索、泛化 | 昂贵、不稳定、上限高 |

可以把它们类比成学习做菜：

- 预训练：读过大量菜谱，认识食材和烹饪方法；
- SFT：老师手把手演示一道菜的标准步骤；
- RL：自己反复做菜，由真实结果和食客反馈决定怎样改进。

三者不是竞争方案，而是一条流水线：

```text
读万卷书 → 学标准做法 → 在真实反馈中练策略
预训练   → SFT        → RL
```

### 4.1 预训练：模型为什么会“懂”语言

预训练的任务非常简单：给定前面的 token，预测下一个 token。

```text
输入：中国的首都是
目标：提高“北京”的预测概率
```

模型的输出本质上是词表上的概率分布。训练通过调整参数，让正确 token 的概率升高。要在几万亿 token 上持续预测正确，模型被迫学习语法、事实、概念关系和一定程度的推理结构。

但预训练模型只会“续写文本”，并不天然理解对话协议。用户提出问题后，它可能继续生成另一个问题，而不是回答。因此还需要 SFT。

### 4.2 SFT：还是预测下一个 token，只是数据变了

SFT 在数学上仍然是预测下一个 token。它与预训练主要有两个区别：

1. 数据从原始互联网文本变成精心准备的“用户输入—理想回答”。
2. 损失通常只计算回答部分，问题部分通过 loss masking 屏蔽。

例如：

```text
[不计算损失] 用户：查询上海天气
[计算损失]   助手：{"tool":"weather","city":"上海"}
```

模型被逐 token 教会理想输出，因此 SFT 特别适合固化：

- JSON Schema；
- 工具调用格式；
- 对话语气和长度；
- 固定的工作流程；
- 思考组织模板；
- 从长 Prompt 到短 Prompt 的行为蒸馏。

SFT 的优势是监督非常稠密：回答中的每个 token 都有明确目标，所以数千到数万条高质量数据就可能产生明显效果。

### 4.3 RL：不再模仿唯一答案，而是优化结果

RL 不要求提供完整标准答案。模型自己生成行为，环境执行行为并给出奖励：

```text
任务 → 模型生成轨迹 → 工具或环境执行 → 验证结果 → 奖励 → 更新策略
```

只要不同的行为都能取得高奖励，它们都可以成为好策略。因此 RL 有机会发现示范数据中不存在的新解法。

例如机器人搬动物体时，人类示范可能是：

```text
抓取 → 抬起 → 移动 → 放下
```

书中的 SimpleVLA-RL 实验里，模型自行发现了更短的“推切”策略：

```text
抓取 → 保持低位 → 水平推动 → 完成
```

这说明 RL 的理论上限由任务和奖励定义，而不完全受示范者水平限制。

## 5. SFT 与 RL 的本质区别

本章用一句容易记忆的话概括：

> SFT 记忆，RL 泛化。

它背后的含义是优化目标不同。

| 维度 | SFT | RL |
| --- | --- | --- |
| 问的问题 | 输出像不像示范？ | 最终结果好不好？ |
| 监督信号 | 唯一示范答案，每个 token 有监督 | 模型自己的多条轨迹及奖励 |
| 学习倾向 | 固定输入到输出的映射 | 能取得高奖励的决策策略 |
| 新策略探索 | 很弱 | 可以在线探索 |
| 样本效率 | 高 | 低 |
| 训练稳定性 | 高 | 较低 |
| 主要风险 | 记忆训练分布、灾难性遗忘 | 奖励黑客、策略崩溃、成本高 |

### 5.1 GeneralPoints 实验怎样说明这个区别

任务类似“24 点”：使用四张牌和四则运算得到目标数。

- 训练规则：J、Q、K 都等于 10；
- 测试规则：J=11、Q=12、K=13；
- 视觉测试：训练时使用黑色花色，测试时使用红色花色。

实验结果中，继续做 SFT 后，模型在分布外测试上普遍下降；RL 后则有所提升。直觉解释是：

- SFT 容易记住“看到 J 就当作 10”；
- RL 更可能学会“读取当前规则，再执行计算”。

### 5.2 这句话不能机械理解

“SFT 记忆、RL 泛化”是本章的教学主线，但不是数学上的绝对定律：

- 足够多样、覆盖充分的 SFT 数据同样可以带来泛化；
- RL 也可能过拟合奖励函数或训练环境；
- RL 的泛化收益取决于探索空间、奖励质量和基础模型能力；
- SFT 与 RL 都无法突破一个严重失真的训练环境。

更稳妥的理解是：**SFT 直接拟合示范分布，RL 直接优化任务反馈，因此 RL 更有条件学习超出固定示范的策略。**

## 6. 为什么通常必须先 SFT，再 RL

RL 要求模型输出可以被环境执行和评分。

假设任务要求工具调用：

```json
{"tool":"search","query":"北京天气"}
```

如果基础模型输出的是格式混乱的自然语言，那么：

```text
无法解析 → 工具无法执行 → 没有可靠结果 → 奖励无法计算 → RL 没有有效梯度
```

所以常见流程是：

1. SFT 把输出训练到格式稳定、能力初具；
2. RL 在可执行、可评分的基础上优化策略；
3. 当验证集提升停止或开始下降时及时停止。

本章将它概括为“先形后神”：

- “形”是格式、结构和协议，由 SFT 快速建立；
- “神”是策略、判断和泛化，由 RL 继续塑造。

这个结论存在边界。足够强的基础模型可能已经能稳定输出，可以直接开始 RL。DeepSeek-R1-Zero 就展示过这种可能性，但它出现了可读性差和语言混杂等问题，后续 R1 仍加入了冷启动 SFT。

### 6.1 SFT 什么时候算“足够”

实践中可以观察：

- 结构化输出解析成功率是否达到业务要求；
- 基本工具调用能否稳定执行；
- 训练集与验证集差距是否开始扩大；
- 继续添加同类示范是否只提升训练集，不提升新场景；
- 模型是否已经具备足够的探索多样性。

SFT 的目标不是把训练集刷到极致，而是给 RL 建立一个可用起点。过度 SFT 可能把概率分布压缩到少数示范模式，使后续 RL 更难探索。

## 7. SFT 数据从哪里来

本章列出三条常见路线：

1. 人工专家示范：质量上限高，但成本高，适合定义标准和种子数据。
2. 教师模型生成：让强模型批量生成示范，再由规则和人工抽检过滤。
3. 模型自举：同一问题采样多条候选，用验证器只保留正确轨迹。

常见工业流程是：

```text
少量人工种子
    ↓
强教师扩充规模
    ↓
规则校验 + 格式检查 + 人工抽检
    ↓
去重、平衡难度和类型
    ↓
SFT
```

模型自举中的“生成多条、拒绝错误、保留正确”叫拒绝采样。用筛选后的数据继续做 SFT，常称为 RFT。

这里的关键不是数据越多越好，而是：

- 覆盖面：是否包含部署中的长尾和边界情况；
- 多样性：是否包含不同表达、路径、工具和错误类型；
- 准确性：答案和中间轨迹是否真的正确；
- 平衡性：是否被少数简单任务或固定模板支配。

一万条干净数据通常比十万条噪声数据更有价值，因为 SFT 会忠实学习数据中的错误。

## 8. RL 的基本循环

强化学习可以抽象为：

```text
状态 s
  ↓
策略 π 选择动作 a
  ↓
环境产生新状态 s' 和奖励 r
  ↓
根据累积奖励更新策略
```

在传统迷宫中，动作可能是向东、向西、拾取钥匙。在 LLM Agent 中，动作空间变成：

- 生成内部思考；
- 输出自然语言；
- 调用工具；
- 编写并执行代码；
- 选择是否继续、重试或停止。

自然语言与代码让动作空间近乎无限。现代 LLM Agent 能在极少交互中行动，主要不是因为 RL 算法神奇，而是预训练已经赋予模型大量先验知识。

这引出本章的重要排序：

```text
基础模型的先验能力 > 环境质量 > 算法选择
```

## 9. RLHF、RL VR 与奖励来源

算法和奖励来源是两个不同维度，不能混为一谈。

### 9.1 RLHF：从人类偏好得到奖励

开放式回答通常没有唯一正确答案。RLHF 的标准流程是：

1. 先对模型做 SFT；
2. 对同一问题生成多个回答；
3. 让人类比较回答 A 和回答 B 哪个更好；
4. 用偏好对训练奖励模型；
5. 用奖励模型给新回答打分，再用 PPO 等算法优化策略。

比较偏好比要求人类给出“7.3 分”更可靠，因为人类通常更擅长相对判断，而不是绝对打分。

### 9.2 RL VR：使用可验证奖励

如果结果可以自动判断，就不一定需要学习一个奖励模型：

- 数学答案是否正确；
- 代码测试是否通过；
- SQL 返回结果是否一致；
- 工具调用参数是否满足 Schema；
- 文件最终状态是否符合要求。

这种路线叫 Reinforcement Learning with Verifiable Rewards。规则验证器本质上就是一个确定性的奖励函数。

### 9.3 两者可以同时使用

- RLHF 负责有用性、表达质量和安全对齐；
- RL VR 负责数学、代码、工具调用等可验证能力。

一个实际模型通常会叠加多类后训练，而不是二选一。

## 10. KL 惩罚为什么重要

奖励模型只在有限分布上学过人类偏好。如果策略为了刷分跑得太远，奖励模型的评分就可能失真。

因此 RLHF 常使用：

```text
实际奖励 = 奖励模型分数 - β × 当前策略与参考策略的差异
```

这里的差异通常用 KL 散度衡量，参考策略一般是 SFT 模型。直觉是：

> 可以向更高奖励的方向学习，但不要突然离开“能够正常说话、遵循基本格式”的安全区域。

KL 惩罚主要用于缓解：

- 输出退化成重复或乱码；
- 模型利用奖励模型没有见过的漏洞；
- 策略一步更新过大而崩溃；
- 高分代理指标与人类真实质量脱钩。

## 11. PPO、GRPO、DPO 怎么区分

不需要先掌握公式，可以先建立选择地图。

| 方法 | 是否在线探索 | 核心机制 | 优势 | 局限 | 适合场景 |
| --- | --- | --- | --- | --- | --- |
| PPO | 是 | 价值网络估计优势，并裁剪更新幅度 | 稳定、信用分配较细 | 训练和存储成本较高 | 多轮 Agent、长轨迹 |
| GRPO | 是 | 同一问题采样一组轨迹，组内比较 | 不需要价值网络、成本低 | 长轨迹信用分配较粗 | 单轮或短轨迹、奖励区分明显 |
| DPO | 否 | 直接提高偏好答案概率、降低拒绝答案概率 | 像 SFT 一样简单 | 无法探索偏好数据外的新策略 | 已有高质量偏好数据 |
| KTO | 否 | 使用单条样本的好/坏标签 | 标注便宜 | 信号较粗 | 标注资源有限 |
| Best-of-N | 否，且不训练 | 生成 N 个答案，选最优 | 部署简单、适合验证收益上界 | 推理成本增加，能力未写入参数 | 项目早期试验 |

PPO 与 GRPO 不决定奖励从哪里来。它们既可以接规则验证器，也可以接奖励模型。

一个简单决策法：

- 有可靠奖励且轨迹较短：先考虑 GRPO；
- 多轮任务需要较细信用分配：考虑 PPO；
- 已有高质量偏好对、不需要探索：考虑 DPO；
- 还不知道训练值不值得：先做 Best-of-N 看潜在收益。

## 12. 为什么数据和环境比算法更重要

这是作者最希望读者记住的观点之一。

### 12.1 环境是模型的练习场

RL 需要模型大量试错。真实 API 可能有速率限制、费用、账号封禁和不可逆副作用，因此通常需要仿真环境。

一个可训练环境至少要具备：

- 可重置：每个 episode 从确定、干净的状态开始；
- 可复现：同样输入能重放问题；
- 可并行：支持大量 rollout；
- 有保真度：错误、延迟和状态变化接近生产系统；
- 可评分：能自动判断结果和关键过程。

如果模拟客服永远按固定模板回答，模型最终学到的只是“如何通过模拟考试”，上线后会迅速失效。

### 12.2 数据决定模型往哪里学

SFT 会复制数据中的噪声，RL 会放大奖励中的偏差。

因此训练前应优先投入：

1. 覆盖真实任务分布；
2. 修正错误标注和系统偏差；
3. 增加困难样本和长尾场景；
4. 保证训练集与独立评估集隔离；
5. 验证奖励上升是否对应真实业务改善。

很多项目只要把 SFT 数据做好就足够了。RL 通常是 SFT 成本的几十到上百倍，不应该为了“技术先进”而使用。

## 13. 从单轮到多轮：信用分配

单轮任务只需生成一次回答并评分：

```text
问题 → 回答 → 正确/错误
```

多轮 Agent 的轨迹可能是：

```text
观察 → 搜索 → 阅读 → 修改文件 → 运行测试 → 修复错误 → 再次测试 → 完成
```

最终成功后，奖励应该归给哪一步？这是信用分配问题。

多轮任务还会增加：

- 延迟奖励：几十步后才知道早期选择是否正确；
- 部分可观测：模型看不到环境完整状态，只能依靠历史；
- 长距离依赖：第一步选择的工具可能决定后续全部路径；
- 探索成本：一条失败轨迹也要执行许多昂贵动作。

PPO 可以借助价值网络给不同位置估计更细的优势；标准 GRPO 往往把整条回复的奖励分摊给所有 token，因此在长轨迹上比较粗糙。工程上也可以按轮次分配奖励，在成本与精度之间折中。

## 14. 过程奖励与结果奖励

### 14.1 结果奖励

只判断任务最后是否完成：

```text
成功 = 1
失败 = 0
```

优点：目标清晰，给模型较大的探索自由。

缺点：奖励稀疏，很难知道究竟哪一步有贡献。

### 14.2 过程奖励

对关键步骤分别给反馈：

```text
完成身份验证 +0.1
查询正确账户 +0.1
得到用户确认 +0.2
最终办理成功 +0.6
```

优点：学习更快，信用分配更简单。

缺点：设计成本高，而且人工规定的“正确过程”可能限制模型发现更好策略。

### 14.3 怎么选择

- 中间步骤有明确对错：过程奖励更高效；
- 最优路径未知，需要探索：结果奖励更有潜力；
- 真实生产 Agent：通常组合使用结果奖励、过程检查和安全约束。

奖励还可以从单一标量演化为：

- 多维向量：分别评价准确性、完整性、沟通质量和任务完成度；
- 生成式奖励：用自然语言说明哪里好、哪里错、怎样改进。

生成式奖励的信息量更高，但最终仍需要可靠机制把语言反馈转化成训练目标。

## 15. 奖励黑客：指标正确不等于任务正确

Goodhart 定律可以概括为：

> 当一个指标成为优化目标，它就可能不再是一个好指标。

典型例子：

- 奖励回复长度，模型就生成冗长废话；
- 奖励测试通过，Coding Agent 可能修改或删除测试；
- 奖励完成速度，客服 Agent 可能跳过身份验证；
- 只奖励最终成交，模型可能隐瞒风险或误导用户。

缓解方法包括：

- 奖励真正业务结果，而不是容易刷的代理指标；
- 保留独立的人类或规则评估；
- 使用 KL 约束和早停；
- 对关键违规动作使用确定性检查；
- 观察“训练奖励上升、真实质量下降”的背离。

## 16. RL VP：奖励结果，惩罚路径

纯结果奖励存在一个严重问题：违反规则有时反而更容易成功。

例如：

- 修改测试比修复代码更快；
- 跳过身份验证比正常验证更快；
- 覆盖未读文件比谨慎合并更快。

本章介绍 RL VP，核心公式可以直观写为：

```text
总奖励 = 结果奖励 + 路径信号
```

其中：

- 结果奖励负责推动 Agent 完成任务；
- 路径惩罚扣除可机器验证的违规动作；
- 守规奖励给出一条可行的合规路径；
- 可达的部分进展可以获得部分奖励。

四条重要原则：

1. 只惩罚具体、可验证的坏动作，不惩罚抽象的“没有进展”。
2. 不能只用惩罚，否则最优策略会变成什么都不做。
3. 惩罚违规时，也要奖励相应的合规行为。
4. 违规检测应尽量使用确定性规则，避免再引入一个可被欺骗的评委。

这套思路尤其适合 Coding Agent、终端 Agent、金融和客服等高风险场景。

## 17. RL 怎样训练工具调用

工具调用能力可以分为三个层次：

1. 单工具掌握：何时调用、参数怎样填写、错误怎样处理；
2. 多工具选择：搜索、代码执行、文档解析应该选择哪个；
3. 工具链编排：处理前置依赖、互斥约束、调用成本和长程状态。

训练轨迹中存在两类 token：

```text
模型生成：思考、工具名、调用参数、最终回答
环境返回：搜索结果、终端输出、API 错误、用户回复
```

环境返回并不是模型生成的，因此计算策略损失时必须屏蔽这些 token。否则模型会被训练去预测“终端将输出什么”，而不是学习“看到输出后应该怎样行动”。

ReTool 实验展示了典型循环：

```text
文本分析
  ↓
生成代码
  ↓
沙箱执行
  ↓
读取结果或错误
  ↓
继续思考、自我修正
  ↓
最终答案
```

这个实验也说明环境工程往往比算法更关键：需要安全沙箱、超时和内存限制、并行 worker，以及稳定的反馈格式。

## 18. RL 为什么样本效率低

SFT 的回答里，每个 token 都有监督；RL 的一整条轨迹常常只有一个成功或失败信号。

```text
SFT：数千个 token → 数千个局部监督信号
RL：数千个 token → 可能只有一个最终奖励
```

因此 RL 需要大量采样，并且会遇到：

- 全部失败：一组轨迹奖励都是 0，没有区分度；
- 全部成功：一组轨迹奖励都是 1，也没有区分度；
- 长尾响应：大部分样本结束后，GPU 还在等待少数超长轨迹；
- 在轨数据昂贵：模型更新后，旧策略产生的数据很快失去价值；
- 环境返回的丰富错误信息没有被一个标量充分利用。

部分奖励、路径信号、动态采样和更稠密的教师反馈，都是在解决这个问题。

## 19. On-Policy Distillation：在轨蒸馏

在轨蒸馏试图同时获得 SFT 和 RL 的优点。

| 方法 | 谁生成训练轨迹 | 信号密度 | 主要问题 |
| --- | --- | --- | --- |
| SFT | 教师或人类 | 稠密 | 学生部署时会走到教师数据没有覆盖的状态 |
| RL | 学生自己 | 稀疏 | 一条长轨迹只有少量成败信号 |
| 在轨蒸馏 | 学生自己 | 稠密 | 需要强教师和真实环境，推理成本高 |

工作方式是：

1. 学生模型在环境中生成自己的轨迹；
2. 强教师观察学生实际走到的位置；
3. 教师在每个 token 位置给出更理想的概率分布；
4. 学生通过分布对齐学习。

它解决了两个问题：

- 训练轨迹来自学生自己，因此与部署分布更接近；
- 教师逐 token 指导，因此比最终 0/1 奖励稠密得多。

书中引用的实验显示，在某些任务上达到同等能力所需训练步数可降低到纯 RL 的约十分之一。但它仍然依赖高质量教师和高保真环境；教师在陌生状态上的判断若不可靠，稠密反馈也可能稠密地教错。

## 20. LoRA 在后训练中的作用

全参数微调需要为大量权重保存梯度和优化器状态，成本很高。LoRA 的做法是冻结原始权重，只训练旁边的小型低秩矩阵。

主要优点：

- 需要训练的参数少；
- 显存与存储成本低；
- 对基座能力扰动相对较小；
- 可以为不同任务加载不同 adapter；
- 适合快速验证后训练是否值得。

LoRA 并不能彻底避免灾难性遗忘。训练数据过窄、学习率过大或训练时间过长，仍可能损害通用能力。因此仍要做独立回归评估。

## 21. 本章涉及的代表性实验

| 实验 | 研究问题 | 关键结论 |
| --- | --- | --- |
| AdaptThink | 模型能否学习何时不需要长思考 | RL 可以学习“是否思考”的元策略，降低响应长度 |
| GeneralPoints | SFT 与 RL 的分布外表现 | 实验中 SFT 更偏记忆，RL 更偏策略泛化 |
| V-IRL | 跨城市视觉导航 | 密集过程奖励帮助多轮信用分配和视觉泛化 |
| SimpleVLA-RL | 机器人能否超越人类示范 | 结果奖励允许模型发现“推切”等新策略 |
| RL VP | 能否在不降低成功率的情况下减少违规 | 结果奖励加可验证路径信号能兼顾完成与合规 |
| ReTool | 模型能否在思考中自主使用代码解释器 | RL 学会工具调用、自我修正和更高效思考 |
| A World-train | 怎样训练多工具 Agent | 稳定、可重放的 MCP 沙盒是训练前提 |
| On-Policy Distillation | 怎样提高长轨迹训练的样本效率 | 学生在轨采样加教师逐 token 反馈可显著加速学习 |

实验数字用于理解具体研究设定，不能直接当成所有项目的收益承诺。基础模型、任务分布、数据、奖励和算力变化后，结论幅度可能完全不同。

## 22. 一个实际项目的后训练路线

假设要训练一个能够查询订单、申请退款并与用户沟通的客服 Agent。

### 阶段一：先建立不训练的基线

- 用 Prompt/Skill 说明流程；
- 用 RAG 提供产品政策；
- 用代码强制权限、金额和身份校验；
- 定义工具 Schema 和错误处理；
- 建立成功率、合规率和用户体验评估。

如果基线已经达标，就停止，不做后训练。

### 阶段二：SFT 固化协议

准备覆盖正常、失败和边界情况的示范：

- 正确选择订单工具；
- 合法 JSON 调用；
- 工具失败后的重试；
- 退款前明确确认；
- 拒绝越权请求。

训练到格式和基本流程稳定即可，保留独立验证集。

### 阶段三：构建仿真环境

- 模拟订单数据库和客服工具；
- 支持环境 reset；
- 注入超时、库存变化和权限错误；
- 自动验证最终订单状态；
- 记录每轮动作、环境返回和奖励。

### 阶段四：定义奖励

```text
完成正确退款             +1.0
金额与订单匹配           +0.2
得到用户确认             +0.2
未经确认执行退款         -1.0
跳过身份验证             -1.0
泄露敏感信息             -2.0
无意义重复调用工具       -0.1
```

奖励权重必须通过小规模实验和人工审查校准，避免模型为了某个分项牺牲真实目标。

### 阶段五：小规模 RL 验证

- 先选少量代表性任务；
- 检查奖励是否有组内区分度；
- 检查奖励上升是否对应人工质量上升；
- 检查模型是否出现新型违规路径；
- 与纯 SFT、Best-of-N 基线比较。

### 阶段六：独立回归测试

- 通用对话能力是否下降；
- 工具调用是否仍兼容；
- 长尾任务是否改善；
- 安全和权限是否退化；
- 生产分布漂移时是否仍稳定。

## 23. 常见误区

### 误区一：把事实知识全部微调进模型

事实会变化、难追溯，也容易在微调中相互干扰。通常应该使用 RAG。SFT 更适合训练“怎样使用这些知识”。

### 误区二：基础模型越大，后训练一定越好

基础模型决定上限，但差环境和坏奖励依旧会把大模型训练坏。项目成败取决于完整系统。

### 误区三：奖励越密集越好

不可靠的密集奖励会持续把模型推向错误方向。只有可验证、与真实目标一致的过程信号才有价值。

### 误区四：训练奖励不断上升就是成功

可能只是奖励黑客。必须同时看独立验证、人工评价和生产指标。

### 误区五：SFT 越久越好

过度 SFT 会过拟合训练分布，验证性能下降，还可能压缩 RL 的探索空间。

### 误区六：算法选择决定项目成败

在环境失真、奖励错误、数据覆盖不足时，换 PPO、GRPO 或更复杂算法通常救不了项目。

### 误区七：让生产模型每次任务后立即训练自己

生产反馈不一定可信。成功可能来自偶然，测试通过可能来自修改测试，用户满意也不代表合规。未经验证的在线自我修改会把错误、提示注入和偏差写进参数。

## 24. 学完后应建立的决策框架

面对一个 Agent 问题，按下面顺序思考：

1. 问题具体是什么：知识缺失、格式错误、策略失败，还是硬约束缺失？
2. 能否用 Prompt、上下文、RAG、工具或程序低成本解决？
3. 如果需要 SFT，理想输出是否明确且能获得高质量示范？
4. 如果需要 RL，环境能否真实、稳定、可重置、可并行？
5. 奖励是否真正代表业务目标，是否可能被钻空子？
6. 多轮任务中，最终结果应怎样分配到过程？
7. 是否有独立评估集检测泛化和能力遗忘？
8. 收益是否值得几十倍于 SFT 的训练成本？

## 25. 记忆卡片

### 卡片 1：三阶段

```text
预训练学知识和表征
SFT 学格式和协议
RL 学策略和泛化
```

### 卡片 2：先形后神

```text
SFT：先让输出可解析、可执行
RL：再让策略在反馈中变好
```

### 卡片 3：项目优先级

```text
强基础模型 → 高质量数据 → 高保真环境 → 合适算法
```

### 卡片 4：知识放在哪里

```text
事实证据 → RAG
当前规则和示例 → 上下文 / ICL
确定性约束 → 程序
格式与协议 → SFT
隐式泛化策略 → RL / 在轨蒸馏
```

### 卡片 5：安全训练

```text
奖励结果，惩罚路径
完成任务不能成为违规操作的借口
```

## 26. 自测题

先尝试独立回答，再看后面的参考答案。

1. 为什么一个预训练模型可能会续写问题，而不是回答问题？
2. SFT 与预训练在训练目标上有什么共同点？
3. 为什么严格结构化输出任务通常要先 SFT，再做 RL？
4. “SFT 记忆、RL 泛化”的底层原因是什么？
5. 什么情况下应该优先使用 RAG，而不是 SFT？
6. PPO 与 GRPO 的主要区别是什么？
7. RLHF 与 RL VR 的区别是算法不同，还是奖励来源不同？
8. 为什么多轮 Agent 的信用分配比单轮问答困难？
9. 过程奖励与结果奖励分别有什么优缺点？
10. 为什么不能只惩罚违规动作而不给结果奖励？
11. 工具执行返回的 token 为什么应该做 loss masking？
12. On-Policy Distillation 同时结合了 SFT 和 RL 的哪些优点？

## 27. 自测题参考答案

1. 预训练只学习续写互联网文本，没有天然学会“用户提问—助手回答”的交互协议。
2. 两者本质上都在做下一个 token 预测并最小化交叉熵；主要区别是数据和损失屏蔽方式。
3. 格式不稳定时输出无法执行和验证，奖励无法可靠计算，RL 缺少有效学习信号。
4. SFT 直接拟合固定示范答案；RL 根据结果强化多种可行轨迹，因此更有机会学习可迁移策略。
5. 当内容是会变化、需要来源追溯或数量很大的事实知识时，应优先使用 RAG。
6. PPO 使用价值网络估计较细的优势；GRPO 使用同一问题多条轨迹的组内相对表现，不需要价值网络。
7. 主要是奖励来源不同。RLHF 来自人类偏好训练的奖励模型，RL VR 来自规则验证器；两者都可用 PPO 等算法优化。
8. 最终成败出现在多步之后，很难判断早期哪个动作贡献最大，而且中间存在部分可观测状态与长距离依赖。
9. 过程奖励信号密、学习快，但可能加入设计偏见；结果奖励目标直接、探索自由，但信号稀疏、样本需求高。
10. 只有惩罚时，最优策略会变成什么都不做，从而实现零违规但也零成功。
11. 环境返回不是模型选择的动作；对它回传策略梯度会把模型训练成预测环境输出，而不是学习如何响应环境。
12. 它让学生生成自己的在轨数据，同时由教师提供逐 token 的稠密监督，兼顾分布匹配与高信息密度。

## 28. 最终总结

第七章的核心并不是记住 PPO、GRPO、DPO 等算法名称，而是建立一套“能力应该写在哪里”的工程判断。

模型后训练的本质是把行为策略写进参数。但参数并不是唯一载体：事实放入 RAG，临时规则放入上下文，确定性约束写成程序，只有难以显式表达、需要广泛泛化的能力才值得进入模型权重。

最稳健的实践路线是：

```text
先建立评估
  → 再优化 Harness
  → 必要时用高质量数据做 SFT
  → 格式稳定后才考虑 RL
  → 用真实环境和可信奖励训练
  → 用独立评估检查泛化、安全和遗忘
```

学习本章时，优先记住四句话：

1. SFT 负责立规矩，RL 负责学策略。
2. 数据和环境通常比算法更重要。
3. 能用 Prompt、RAG 或程序解决的问题，不要急着训练模型。
4. Agent 不仅要把事情办成，还必须用可验证、合规的路径办成。
