先记住一句话
SFT 模仿示范答案,RLHF 学人类相对偏好再优化策略,DPO 直接用偏好对训练策略,RLVR 则用程序化可验证结果提供奖励。
1. 为什么预训练模型还不是助手?
Base model 在海量文本上优化 next-token likelihood。看到“请解释量子力学”,训练分布里可能接着出现答案、评论、广告、另一段问题或网页模板。模型学会语言与知识,并不自动知道用户更喜欢简洁、诚实、有帮助且遵循格式的回答。
后训练不是简单“继续喂更多知识”,而是改变输出行为分布:哪些 prompt 应如何回应、哪些答案相对更好、在可验证任务上哪些策略能得到正确结果。
2. SFT:模仿理想示范
Supervised Fine-Tuning 数据通常是 $(x,y^*)$:prompt $x$ 和示范回答 $y^*$。训练仍用 teacher forcing cross-entropy,但通常只对回答 token 计算 loss:
SFT 教会对话格式、指令模式、工具调用 schema、回答风格和任务模板。它很稳定,但只学习数据中出现的动作;同一 prompt 有多个好答案时,单一示范也不能表达“哪个更好、好多少”。
高质量小数据往往比大量低质量模板更有用,因为 SFT 直接塑造模型输出分布。它也可能造成 capability regression,因此数据混合、学习率和保留通用数据很重要。
例 1:SFT 只对回答 token 算 loss
Prompt 有 4 tokens,回答有 3 tokens,正确回答 token 概率为 $[0.8,0.5,0.25]$。Prompt 标签设为 ignore,回答 loss:
若错误地把 prompt 也监督,模型会浪费容量复现用户输入,且平均 loss 的含义改变。
3. RLHF 的三阶段 pipeline
- SFT policy:先让模型能按基本格式回答。
- Reward model:对同一 prompt 的多个回答做人类排序,训练标量评分 $r_\phi(x,y)$。
- RL policy optimization:从当前 policy 采样回答,最大化 reward,同时用 KL penalty 限制偏离 reference model。
常见 pairwise reward model 假设 preferred answer $y_w$ 胜过 rejected $y_l$ 的概率为:
Policy objective 的概念形式:
KL 项防止模型为了 reward model 的漏洞走得太远。PPO 是实现这类更新的常见算法,但 RLHF 不等于 PPO;反馈来源、reward 建模和 policy optimizer 都可替换。
例 2:reward pair 与 KL-regularized score
Reward model 给 preferred 2.0、rejected 0.5,差为 1.5:
某 rollout reward=3,policy/reference 的序列 log-ratio 为 0.8,$\beta=0.2$,正则后目标是 $3-0.2\times0.8=2.84$。偏离 reference 必须用 reward 增益来支付。
4. Reward hacking 从哪里来?
Reward model 只是人类偏好的近似。如果训练数据里“更长、格式更完整”经常获胜,policy 可能学会冗长而非真正有帮助;若 judge 容易被特定措辞骗过,优化会放大这个漏洞。
所以 reward 变高不自动等于真实质量变高。需要 held-out human eval、多维指标、对抗测试、KL 控制和不断刷新数据分布。
5. DPO:为什么可以绕过显式 RL loop?
DPO 从同样的 preference pairs $(x,y_w,y_l)$ 出发,利用 KL-regularized RL 最优策略与 reward 的关系,把 reward 差写成 policy/reference log-probability 差,直接做一个二分类式 loss:
直觉是:相对 reference,提高 preferred response 的概率,同时相对降低 rejected response。它不需要单独训练 reward model,也不需要训练时在线 rollout + PPO,因此简单稳定。
但 DPO 没有消除偏好数据问题:pair 的覆盖、噪声、长度偏好和 reference quality 仍决定上限。它也不是所有 RL 问题的替代品;需要探索、长 horizon 或环境交互时,on-policy RL 仍有价值。
例 3:DPO 的一个 pair
设 policy 相对 reference 的 log-ratio:preferred 为 0.6,rejected 为 -0.2,$\beta=1$。括号内差为 $0.6-(-0.2)=0.8$:
若更新后差增至 1.5,loss 降为 $-\ln0.818=0.201$。优化直接扩大 preferred 的相对优势。
6. RLVR:当答案能由程序验证
数学最终答案、代码测试、定理检查器、格式约束等任务有可程序化 reward。Reinforcement Learning with Verifiable Rewards 可以从模型采样多条轨迹,按是否通过 verifier 给 reward,再提高成功轨迹概率。
它的优势是反馈规模大、比主观人类评分一致,且允许模型探索人类没有写出的推理路径。DeepSeek-R1 等工作展示了在数学、代码等可验证任务上,大规模 RL 能强化自检、回溯和更长推理模式。
边界同样明显:
- 最终答案正确不保证中间理由真实或最简。
- 稀疏 reward 可能难学习,需要合适采样、advantage 与 curriculum。
- Verifier 有漏洞时模型会 exploit。
- 开放式写作、价值判断和真实世界任务通常没有完美程序验证器。
例 4:组内相对 advantage
同一数学题采样 4 个回答,verifier rewards 为 $[1,0,1,0]$,组平均 0.5。用最简单的中心化 advantage 得 $[+0.5,-0.5,+0.5,-0.5]$:成功轨迹概率上调,失败轨迹下调。真实算法还会标准化、clip 或使用 value baseline。
7. 四者不是互斥选择
base pretraining
→ SFT(格式和基本行为)
→ preference optimization(RLHF / DPO)
→ verifiable-task RL(RLVR)
→ targeted safety / tool / domain tuning
真实 pipeline 常反复混合这些阶段。核心问题不是方法名,而是:监督信号从哪里来、它评价输出的哪一部分、模型能否利用或欺骗它。
例 5:为什么成功率决定采样成本
当前策略单次通过 verifier 的概率只有 5%。独立采样 32 条,至少一条成功的概率:
更多 rollout 提高得到正奖励样本的机会,但训练计算也线性增加。
自测:先算后展开
1. SFT 与 preference learning 的标签有何不同?
SFT 给一个应模仿的目标回答;preference learning 给同一 prompt 下两个或多个回答的相对排序。
2. RLHF 为什么需要 KL penalty?
限制 policy 为追逐不完美 reward model 而远离可靠 reference 分布,降低 reward hacking 和语言退化。
3. DPO 简化了哪些组件,又没有解决什么?
它省去显式 reward model 和 PPO rollout loop;但偏好数据偏差、reference 选择与离线覆盖问题仍存在。
4. RLVR 最适合哪类任务?
结果能由可靠程序检查的任务,例如数学答案、代码测试、形式证明和严格格式。
5. Reward 差为 0 时,pairwise 胜率是多少?
$\sigma(0)=0.5$,reward model 认为两者没有可分辨优势。
6. 单次成功率 0.2,独立采样 3 次至少一次成功概率?
$1-0.8^3=0.488$。