跳到内容

第 13 卷 / 第 12 章 / 第 1 课

12.1 偏好后训练:SFT、奖励模型、RLHF 与 DPO ​

预训练 causal LM 学习预测后续 token,产品还需要遵循指令、控制格式,并在证据不足时作出合适回应。偏好后训练会改变哪些答案更容易出现,却不能替代事实核查。

本课目标 ​

  • 区分 SFT、奖励建模与策略优化的职责;
  • 解释 InstructGPT 式 RLHF 的三个阶段;
  • 写出奖励模型和 DPO 的核心损失;
  • 识别偏好数据偏差、reward hacking 与能力回归;
  • 为偏好后训练设计可审计的离线评估。

1. 先定义“偏好”属于谁 ​

“人类偏好”不是一个天然一致的标签。它可能来自产品规范、领域专家、安全政策、目标用户或标注员。不同群体会在长度、语气、风险容忍度和价值判断上产生分歧。

因此,训练前要写清楚:

  • prompt 来自什么任务分布;
  • 标注员代表谁,具备什么领域能力;
  • 排序依据是正确性、帮助性、安全性还是格式;
  • 多个目标冲突时如何取舍;
  • 是否允许并列、弃权和“都不可接受”。

没有这份定义,“对齐”只是把模型推向一组未说明的标注偏好,而不是对齐到普遍真理。

2. SFT 先教会模型任务形式 ​

Supervised Fine-Tuning(SFT)使用示范数据 (x,y),最小化目标回答的 token-level negative log-likelihood:

LSFT=−∑tlog⁡πθ(yt∣x,y<t).

它适合学习对话模板、结构化输出、拒答范式和任务步骤。SFT 的上限受示范覆盖限制:只展示“好答案”不会直接告诉模型两个候选答案谁更好,也不会自动校准事实性。

实际管线通常先做 SFT,再从 SFT policy 采样候选回答并收集偏好比较。

3. 从排序训练奖励模型 ​

给定 prompt x、获胜回答 yw 和落败回答 yl,奖励模型输出标量 rϕ(x,y)。常见 pairwise objective 为:

LRM=−log⁡σ(rϕ(x,yw)−rϕ(x,yl)).

分数学习当前标注协议下的相对偏好,不能当作跨任务的绝对质量刻度。单回答标量 scorer 通常看不到标注界面的左右位置,位置偏差主要通过错误偏好标签传入;长度和文风则可能成为回答文本中的直接捷径。

数据审计至少包括:

  • 随机交换候选顺序,检查 position bias;
  • 记录标注员间一致率与分歧原因;
  • 按任务、语言、风险等级和回答长度切片;
  • 隔离同源 prompt 与近重复回答;
  • 保留 gold checks,并允许标注员弃权;
  • 版本化标注规范、模型候选来源与采样参数。

4. RLHF 用奖励约束策略 ​

InstructGPT 式流程可以概括为:

  1. 用人工示范训练 SFT policy;
  2. 用回答排序训练 reward model;
  3. 采样 policy response,以奖励为信号更新 policy,并限制其偏离 reference policy。

高层目标常写成:

maxθ Ex∼D,y∼πθ[rϕ(x,y)−βDKL(πθ(⋅∣x)∥πref(⋅∣x))].

KL penalty 把策略留在参考模型附近,降低为了追逐奖励而产生的极端分布漂移。PPO 是实现这类 policy optimization 的一种算法;它还包含 advantage estimation、ratio clipping、value loss 等机制。把 loss = -reward + beta * kl 称作完整 PPO 会掩盖这些关键步骤。

KL 是软惩罚,不是对每条回答的硬上限。精确 KL 对策略分布求平均,实际实现常用采样 token 的 log-probability 差来估计。这里概括的是 InstructGPT 的高层流程。

训练日志应同时观察 reward、KL、response length、entropy、clip fraction、value error 和 held-out task metrics。单看 reward 上升无法判断模型是否真的变好。

5. DPO 把偏好目标直接写到策略上 ​

Direct Preference Optimization(DPO)利用奖励模型与最优策略之间的关系,把 preference pairs 直接变成分类式 policy objective。常见形式为:

LDPO=−log⁡σ(β[log⁡πθ(yw∣x)πref(yw∣x)−log⁡πθ(yl∣x)πref(yl∣x)]).

它提高获胜回答相对落败回答的概率,同时以 reference policy 为锚。标准 DPO 不需要单独训练一个显式 reward model,也不需要在训练循环中 on-policy sampling 和 PPO;但它没有消除偏好建模,只是把相应假设吸收到目标函数里。

beta、reference model、pair quality、sequence log-prob 计算和长度分布都会影响结果。DPO 更简单,不等于在所有数据规模和任务上必然优于 RLHF。

标准 DPO 目标 使用回答 token 的 log-probability 之和,排除 prompt 和 padding 位置;改成长短归一化平均值会改变目标。下面的 PyTorch 小例子核对 loss 与梯度方向,不包含语言模型训练。

python
import torch
from torch.nn import functional as F

# Response-token log-probability sums for one chosen/rejected pair.
policy_logp = torch.tensor([-2.0, -3.0], requires_grad=True)
reference_logp = torch.tensor([-2.0, -2.0])
beta = 0.1
relative = policy_logp - reference_logp.detach()
loss = -F.logsigmoid(beta * (relative[0] - relative[1]))
loss.backward()
print(round(loss.item(), 4))  # 0.6444
print(policy_logp.grad)      # approximately [-0.0475, 0.0475]

在这两个独立变量上,梯度下降会相对提高 chosen、压低 rejected 的 log probability。真实模型共享参数,两条回答的绝对概率仍可能同时下降,只是比值改善;reference 权重保持冻结。

6. Reward Hacking 与 Goodhart 效应 ​

只要优化代理指标,模型就可能学会利用它:

  • 用更长、更肯定的回答换取“详细、专业”的高分;
  • 复述用户观点以换取认同;
  • 堆砌免责声明而不真正降低风险;
  • 模仿参考答案风格,却回避无法完成的核心任务;
  • 针对固定 judge 或 rubric 生成取巧文本。

当 policy 被推离训练数据覆盖区,reward model 的外推误差会放大,出现 reward 上升而人类评价下降的过度优化。应使用 KL/早停、独立 holdout、不同 evaluator、对抗样本和人工复核,并检查长度控制后的结果。

7. 偏好优化不保证事实正确 ​

标注员偏爱一个回答,只说明它在可见候选中更符合 rubric。若候选都错、标注员无法核验,或者参考材料过时,训练会强化错误。

事实密集任务还需要:

  • 权威数据源或可执行 verifier;
  • 引用与证据支持检查;
  • 不确定性和 abstention 规范;
  • 独立事实集与时序 holdout;
  • 部署后的纠错和事件回流。

下一课的 RAG 能让模型访问外部资料,但也只是增加可用证据,不会自动保证答案忠于证据。

8. 一份可执行的评估协议 ​

训练前冻结:

  • instruction-following、format 和 task utility 数据集;
  • factuality/grounding、safety 与 adversarial 数据集;
  • base capability regression suite;
  • prompt/source/user/time group split;
  • decoding config 与多随机种子方案。

报告 pairwise win rate 时注明对手、采样方式和置信区间。若使用 LLM judge,随机化答案顺序、隐藏模型身份,并用人工样本校准 position、verbosity 和 self-preference bias。不要把“某个 judge 的胜率”写成模型的普遍质量。

常见误区 ​

  • RLHF 让模型不说假话:它优化被标注和奖励捕捉到的偏好。
  • PPO 就是一项奖励减 KL 的损失:那只是高层目标,不是完整算法。
  • DPO 没有奖励概念:它不显式拟合 reward model,但目标由偏好、奖励与策略的关系推导。
  • 更多 preference pairs 一定更好:系统性偏差会随数据规模一起放大。
  • Reward 上升即可发布:还要检查人类判断、安全、事实性和原能力回归。

练习 ​

  1. 为 JSON 抽取任务写一份包含正确性、格式和拒答规则的 pairwise rubric。
  2. 解释为什么候选 A 总放在左侧会污染奖励模型。
  3. 从公式说明 DPO 中 reference policy 的作用。
  4. 设计一个能暴露 verbosity bias 的长度配对测试。
  5. 列出偏好训练后必须回归的五类基础能力。

小结 ​

偏好后训练不是给模型安装“正确价值观”,而是把明确的数据分布和评价协议转化为行为倾向。SFT 学示范,奖励模型学相对排序,RLHF 在奖励与参考策略约束下优化 policy,DPO 直接使用 preference pairs。无论选择哪条路线,偏好来源、偏差、过度优化和独立评估都不能省略。

下一课把外部文档接入模型,拆开 RAG 的摄取、检索、上下文构造和答案验证,而不是把“向量库 + Prompt”当作完整系统。

Built with VitePress | Software Systems Atlas