先记住一句话

SFT 模仿示范答案,RLHF 学人类相对偏好再优化策略,DPO 直接用偏好对训练策略,RLVR 则用程序化可验证结果提供奖励。

Base model示范 SFT采样多个回答人类偏好 / verifierpolicy updateheld-out eval
SFT 信号目标 token
Preference 信号$y_w \succ y_l$
RLVR 信号程序 reward
共同目标改变回答概率
监督越来越从“照抄哪句话”转向“哪条完整轨迹更好”,同时信用分配与 reward hacking 风险增加。

1. 为什么预训练模型还不是助手?

Base model 在海量文本上优化 next-token likelihood。看到“请解释量子力学”,训练分布里可能接着出现答案、评论、广告、另一段问题或网页模板。模型学会语言与知识,并不自动知道用户更喜欢简洁、诚实、有帮助且遵循格式的回答。

后训练不是简单“继续喂更多知识”,而是改变输出行为分布:哪些 prompt 应如何回应、哪些答案相对更好、在可验证任务上哪些策略能得到正确结果。

2. SFT:模仿理想示范

Supervised Fine-Tuning 数据通常是 $(x,y^*)$:prompt $x$ 和示范回答 $y^*$。训练仍用 teacher forcing cross-entropy,但通常只对回答 token 计算 loss:

$$\mathcal L_{SFT}=-\sum_t\log\pi_\theta(y_t^*\mid x,y_{<t}^*)$$

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:

$$\mathcal L=(-\ln0.8-\ln0.5-\ln0.25)/3=(0.223+0.693+1.386)/3=0.767$$

若错误地把 prompt 也监督,模型会浪费容量复现用户输入,且平均 loss 的含义改变。

3. RLHF 的三阶段 pipeline

  1. SFT policy:先让模型能按基本格式回答。
  2. Reward model:对同一 prompt 的多个回答做人类排序,训练标量评分 $r_\phi(x,y)$。
  3. RL policy optimization:从当前 policy 采样回答,最大化 reward,同时用 KL penalty 限制偏离 reference model。

常见 pairwise reward model 假设 preferred answer $y_w$ 胜过 rejected $y_l$ 的概率为:

$$P(y_w\succ y_l\mid x)=\sigma(r_\phi(x,y_w)-r_\phi(x,y_l))$$

Policy objective 的概念形式:

$$\max_\pi\;\mathbb E_{y\sim\pi}[r_\phi(x,y)]-\beta D_{KL}(\pi\Vert\pi_{ref})$$

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:

$$P(y_w\succ y_l)=\sigma(1.5)=1/(1+e^{-1.5})\approx0.818$$

某 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:

$$-\log\sigma\left(\beta\left[\log\frac{\pi_\theta(y_w|x)}{\pi_{ref}(y_w|x)}-\log\frac{\pi_\theta(y_l|x)}{\pi_{ref}(y_l|x)}\right]\right)$$

直觉是:相对 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$:

$$L_{DPO}=-\ln\sigma(0.8)=-\ln0.690=0.371$$

若更新后差增至 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 条,至少一条成功的概率:

$$1-(1-0.05)^{32}=1-0.95^{32}\approx0.806$$

更多 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$。