后训练
本文介绍大语言模型从基础模型走向助手模型的后训练技术。
快速开始¶
后训练 (Post-training) 是预训练之后的一组训练过程,目标是让模型更会遵循指令、更符合人类偏好、更安全,并在特定能力上表现更强。
典型路线是:
预训练让模型学会语言和知识,后训练让模型学会如何回答。对于现代大模型,后训练已经不只是“对齐”,还包括工具调用、长上下文、代码、数学、风格控制和推理强化。
后训练目标拆解¶
后训练通常同时服务多个目标:
| 目标 | 含义 | 常见数据或方法 |
|---|---|---|
| Instruction following | 按用户指令完成任务 | 指令问答、格式遵循数据 |
| Helpfulness | 回答有用、具体、可执行 | 人类偏好、优质回答筛选 |
| Harmlessness | 避免危险或不当内容 | 安全数据、拒答数据、红队数据 |
| Honesty | 不确定时承认限制 | 幻觉评测、引用和校验数据 |
| Reasoning | 数学、代码、规划、多步推理 | CoT、RLVR、verifier |
| Tool use | 调用函数、搜索、代码执行 | 工具轨迹、API schema 数据 |
| Style control | 控制语气、长度、格式 | 多风格 SFT、偏好数据 |
这些目标之间可能冲突。例如更强的 harmlessness 可能带来过度拒答,更强的 helpfulness 可能增加幻觉风险。
有监督微调¶
有监督微调 (Supervised Fine-Tuning, SFT) 使用人工构造或筛选的指令数据训练模型。数据通常是“指令 -> 理想回答”的形式。
SFT 的作用是建立基础交互格式:
- 理解用户指令;
- 按对话格式回答;
- 学习拒答、解释、步骤化输出等基本行为;
- 为后续偏好优化提供初始策略模型。
SFT 数据设计比数量更关键。常见类型包括单轮问答、多轮对话、拒答、格式遵循、工具调用、代码、数学、长上下文和多语种数据。
SFT 的限制是它只模仿标注答案,不直接优化“哪个答案更好”。
SFT 损失仍然是条件语言建模损失,只是只在回答部分计算:
其中 \(x\) 是用户指令或对话上下文,\(y\) 是标注回答。实践中通常会 mask 掉 prompt 部分,只让模型学习 assistant response。
RLHF¶
基于人类反馈的强化学习 (Reinforcement Learning from Human Feedback, RLHF) 通常包含三个阶段:
flowchart LR
A[Prompt] --> B[SFT Model Samples]
B --> C[Human Preference Ranking]
C --> D[Reward Model]
D --> E[PPO / KL Optimization]
E --> F[Eval / Red Team]
- 使用 SFT 得到初始策略模型;
- 收集多个回答的人类偏好排序,训练奖励模型;
- 使用 PPO 等强化学习算法优化策略模型。
奖励模型常被训练为给 chosen 回答比 rejected 回答更高分。pairwise loss 常写成:
其中 \(y_w\) 是偏好回答,\(y_l\) 是较差回答。
策略优化时通常加入 KL penalty,防止模型偏离参考模型太远:
RLHF 的价值在于把人类偏好转化为可优化信号。它能提升有用性、无害性和回答风格,但训练链路复杂,奖励模型也可能被策略模型钻空子。
DPO¶
直接偏好优化 (Direct Preference Optimization, DPO) 试图绕开奖励模型和在线强化学习,直接用偏好数据优化模型。
DPO 的常见数据形式是:同一个问题下,一个 chosen 回答和一个 rejected 回答。目标可以直观理解为提高 chosen 相对 rejected 的概率,同时受参考模型约束。
简化形式为:
其中 \(y_w\) 是偏好回答,\(y_l\) 是较差回答,\(\beta\) 控制偏离参考模型的强度。
相比 RLHF,DPO 更简单、稳定、易复现,但它仍依赖高质量偏好数据。
一个 DPO batch 的伪代码如下:
输入: prompt x, chosen y_w, rejected y_l, policy π, reference π_ref
logp_w = log π(y_w | x)
logp_l = log π(y_l | x)
ref_w = log π_ref(y_w | x)
ref_l = log π_ref(y_l | x)
margin = β * ((logp_w - ref_w) - (logp_l - ref_l))
loss = -log_sigmoid(margin)
更新 policy 参数
DPO 的关键是比较“相对参考模型,policy 是否更偏向 chosen 而不是 rejected”。
DPO 系列方法¶
DPO 之后出现了多种偏好优化变体,例如 IPO、KTO、ORPO。它们的共同目标是简化偏好优化流程,减少对奖励模型或复杂 RL 训练的依赖。
需要注意,这些方法是偏好优化,不等价于完整强化学习。对于可验证的数学、代码任务,直接使用环境或验证器反馈的强化学习仍然很重要。
RLAIF 与 Constitutional AI¶
基于 AI 反馈的强化学习 (Reinforcement Learning from AI Feedback, RLAIF) 使用模型辅助生成偏好反馈,降低人工标注成本。
Constitutional AI 使用一组原则约束模型行为,让模型根据原则自我批判和修正回答。这类方法的重点是把安全、诚实、有帮助等要求写入反馈过程。
AI feedback 的优势是成本低、规模大,但风险是反馈模型自身偏差会被放大。因此它通常需要人工审核、红队评测和安全基准配合。
推理强化¶
推理模型的后训练越来越依赖可验证奖励。可验证奖励强化学习 (Reinforcement Learning with Verifiable Rewards, RLVR) 使用规则、测试、答案校验器或编译器判断回答是否正确。
适合 RLVR 的任务包括:
- 数学题:最终答案可校验;
- 代码题:可运行单元测试;
- 形式逻辑:可用符号工具验证;
- 工具调用:可检查 API 调用结果。
组相对策略优化 (Group Relative Policy Optimization, GRPO) 常用于推理模型训练。它对同一问题采样一组回答,用组内相对表现构造优势估计,减少对单独价值模型的依赖。
flowchart LR
A[Prompt] --> B[Sample Response Group]
B --> C[Verify Each Answer]
C --> D[Group-relative Advantage]
D --> E[Policy Update]
E --> F[Reasoning Model]
这类方法与 推理能力 中的测试时扩展密切相关。
数据与评测¶
后训练效果高度依赖数据质量。常见数据类型包括:
- 指令问答数据;
- 多轮对话数据;
- 偏好比较数据;
- 安全拒答数据;
- 代码、数学、工具调用等能力数据;
- 模型自生成并经筛选的数据。
评测不能只看通用榜单,还要看实际使用中的一致性、幻觉率、安全性、格式遵循、工具调用成功率和长上下文稳定性。
| 评测方向 | 关注问题 |
|---|---|
| 指令遵循 | 是否按要求格式、范围和约束回答 |
| 安全 | 是否拒绝危险请求,是否过度拒答 |
| 幻觉 | 是否编造事实、链接、引用或 API |
| 推理 | 数学、代码、规划、多步问答是否可靠 |
| 工具调用 | 参数是否正确,是否能处理错误返回 |
| 人类偏好 | 实际用户是否觉得有用、清晰、可信 |
副作用与失败模式¶
后训练可能带来新的问题:
- over-refusal:对安全请求也过度拒绝;
- sycophancy:迎合用户错误观点;
- verbosity bias:偏好冗长回答;
- reward hacking:利用奖励模型漏洞;
- style homogenization:风格趋同,信息密度下降;
- catastrophic forgetting:专项训练损害通用能力。
这些问题说明后训练不是单向提升,而是在多个目标之间做平衡。
常见误区¶
| 误区 | 更准确的理解 |
|---|---|
| SFT 数据越多越好 | 数据质量、覆盖和一致性通常更重要 |
| DPO 完全替代 RLHF | DPO 简化偏好优化,但不覆盖所有 RL 场景 |
| 安全训练只是在结尾加拒答 | 安全需要数据、偏好、评测和红队闭环 |
| 推理能力只靠 CoT 数据 | 还需要可验证奖励、采样、验证器和测试时计算 |