DPO 与对齐方法:从 RLHF 复杂度到直接偏好优化
📅 创建时间:2026-07-29 🏷️ 标签:#DPO #RLHF #Alignment #ConstitutionalAI #RLAIF #PreferenceOptimization 📚 前置知识:[[14-post-training-overview]](知道 SFT 和 RLHF 的基本概念即可)
📋 本章目标
阅读完本文档后,你将能够:
- [ ] 解释 RLHF 为什么复杂——具体复杂在哪几个地方
- [ ] 理解 DPO 的核心数学洞察:Bradley-Terry 偏好模型下的闭式解
- [ ] 写出 DPO 的损失函数,并解释每一项的含义
- [ ] 画出 RLHF 和 DPO 的架构对比图
- [ ] 判断在什么场景用 DPO、什么场景坚持用 RLHF
- [ ] 理解 Constitutional AI 的自批判 + 自改进流程
- [ ] 了解对齐评测的主要维度:能力、安全、人类偏好
- [ ] 理解红队测试在对齐 pipeline 中的角色
第0部分:RLHF 太复杂了——DPO 的动机
0.1 先回顾 RLHF 到底复杂在哪
RLHF(Reinforcement Learning from Human Feedback)是 InstructGPT / ChatGPT 背后的关键技术。听起来很合理:让人类标注偏好,训练奖励模型,用强化学习优化模型。但真正做过的人都知道它有多痛苦。
┌─────────────────────────────────────────────────────────────┐
│ RLHF 的四大痛点 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 痛点1:奖励模型是瓶颈 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 你需要先训练一个 Reward Model(RM),它本身就是一个 │ │
│ │ 和策略模型差不多大的 Transformer。 │ │
│ │ │ │
│ │ RM 的质量直接决定最终模型的质量。 │ │
│ │ 如果 RM 有盲区(比如对某种有害内容不敏感), │ │
│ │ 策略模型就会利用这个盲区——这叫 Reward Hacking。 │ │
│ │ │ │
│ │ 而且 RM 是固定的——训练完就不能变了。 │ │
│ │ 你没法在 PPO 过程中纠正它的错误。 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 痛点2:PPO 训练同时需要 4 个模型 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 1. Policy Model(你要训练的模型) │ │
│ │ 2. Reference Model(SFT 后的冻结模型,用于 KL 约束) │ │
│ │ 3. Reward Model(打分模型,冻结) │ │
│ │ 4. Value Model(Critic,用于 PPO 的 advantage 估计) │ │
│ │ │ │
│ │ 每个模型都是 billion 级别的参数。 │ │
│ │ GPU 显存同时装 4 个——这就是为什么 RLHF 贵。 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 痛点3:RL 训练本身不稳定 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ PPO 对超参数极度敏感: │ │
│ │ • KL 惩罚系数 β:太大→模型不敢偏离 SFT,太弱→崩溃 │ │
│ │ • 学习率:稍微大一点,策略就崩了 │ │
│ │ • Clipping 参数 ε:影响信任区域的宽窄 │ │
│ │ │ │
│ │ 调参周期以天为单位(因为每次实验都要跑完 PPO)。 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 痛点4:三阶段 pipeline,故障点太多 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ SFT → 训练 RM → PPO,每一步的输出是下一步的输入。 │ │
│ │ 中间任何一个环节出问题,下游全废。 │ │
│ │ │ │
│ │ 更糟糕的是:RLHF 的各个环节是不同团队维护的—— │ │
│ │ 标注团队做偏好数据,ML 团队训 RM,RL 团队跑 PPO。 │ │
│ │ 沟通成本极高。 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘0.2 DPO 提出的核心问题
2023 年,Stanford 的 Rafael Rafailov 等人提出了一个尖锐的问题:
"如果偏好数据已经标注好了,为什么不能像做 SFT 一样,直接拿偏好数据训练模型?为什么必须经过奖励模型 + PPO 这条复杂的路径?"
答案是:可以不经过。 这就是 DPO(Direct Preference Optimization)。
0.3 DPO 的核心洞察
┌─────────────────────────────────────────────────────────────┐
│ DPO 的数学洞察(一句话概括) │
├─────────────────────────────────────────────────────────────┤
│ │
│ 在 Bradley-Terry 偏好模型下,最优策略关于奖励函数的 │
│ 闭式解是: │
│ │
│ π*(y|x) ∝ π_ref(y|x) · exp( r(x,y) / β ) │
│ │
│ 把这个式子反解出 r(x,y),带入偏好数据的损失函数, │
│ 就可以直接用偏好对 (y_w, y_l) 训练策略模型—— │
│ 不需要先训练 Reward Model,不需要跑 PPO。 │
│ │
│ 一句话:DPO 把"先训 RM,再强化学习"两步, │
│ 合并成了"直接对偏好数据做最大似然估计"一步。 │
│ │
└─────────────────────────────────────────────────────────────┘直觉版理解:
- RLHF 的思路:偏好数据 → 训练 RM → RM 打分 → PPO 优化策略
- DPO 的思路:偏好数据 → 直接优化策略(把 RM 隐式地编码在损失函数里)
DPO 不是"不用偏好数据"——它用完全相同的偏好数据。它只是跳过了"显式训练一个独立的奖励模型+跑强化学习"这两个步骤。
第1部分:DPO 怎么做——把偏好数据直接当训练数据
1.1 偏好数据长什么样
DPO 用的偏好数据和 RLHF 的 Reward Model 训练数据完全相同:
┌─────────────────────────────────────────────────────────────┐
│ 偏好数据格式:(prompt, chosen, rejected) │
├─────────────────────────────────────────────────────────────┤
│ │
│ 每条数据是一个三元组: │
│ │
│ { │
│ "prompt": "解释一下量子纠缠", │
│ "chosen": "量子纠缠是指两个粒子...(准确、清晰)", │
│ "rejected": "量子纠缠是一种超能力...(错误、模糊)" │
│ } │
│ │
│ chosen: 人类标注者偏好的那个回答("好的回答") │
│ rejected: 人类标注者拒绝的那个回答("差的回答") │
│ │
│ 数据来源: │
│ • 同一个 prompt 让模型生成多个回答,人类选出最好的 │
│ • 或者多个模型对同一 prompt 各生成回答,人类排序 │
│ • Anthropic 的 HH-RLHF 数据集,OpenAI 的 Summarize 数据集 │
│ │
└─────────────────────────────────────────────────────────────┘1.2 DPO 损失函数——每一步的含义
DPO 的损失函数看起来吓人,但拆开来看每一步都很直观:
┌─────────────────────────────────────────────────────────────┐
│ DPO 损失函数详解 │
├─────────────────────────────────────────────────────────────┤
│ │
│ L_DPO(π_θ; π_ref) = │
│ │
│ π_θ(y_w|x) π_θ(y_l|x) │
│ -E_(x,y_w,y_l)~D [ log σ( β · log ─────────── - β · log ─────────── ) ] │
│ π_ref(y_w|x) π_ref(y_l|x) │
│ │
│ 其中: │
│ π_θ = 你要训练的策略模型 │
│ π_ref = 参考模型(SFT 后的冻结模型) │
│ y_w = chosen(被偏好的回答) │
│ y_l = rejected(被拒绝的回答) │
│ β = 温度参数,控制偏离 π_ref 的程度 │
│ σ = sigmoid 函数,σ(z) = 1/(1+e^{-z}) │
│ │
└─────────────────────────────────────────────────────────────┘逐项拆解:
Loss 内部的计算流程:
Step 1: 计算 chosen 的"相对对数概率"
log_ratio_chosen = log π_θ(chosen | prompt) - log π_ref(chosen | prompt)
含义:当前模型比参考模型更"喜欢" chosen 多少?
如果 > 0:当前模型比参考模型更偏爱 chosen(好事)
如果 < 0:当前模型不如参考模型偏爱 chosen(坏事)
Step 2: 计算 rejected 的"相对对数概率"
log_ratio_rejected = log π_θ(rejected | prompt) - log π_ref(rejected | prompt)
含义:当前模型比参考模型更"喜欢" rejected 多少?
如果 > 0:当前模型比参考模型更偏爱 rejected(坏事!)
如果 < 0:当前模型不如参考模型偏爱 rejected(好事)
Step 3: 计算"隐式奖励差"
implicit_reward_diff = β × (log_ratio_chosen - log_ratio_rejected)
含义:模型认为 chosen 比 rejected 好多少?
越大 → 模型越正确地区分了好坏
越小(甚至为负)→ 模型搞反了
Step 4: Sigmoid + Log
loss = -log σ(implicit_reward_diff)
当 implicit_reward_diff >> 0 时:
σ(大正数) ≈ 1 → log(1) ≈ 0 → loss ≈ 0 ✓(模型做得对,不惩罚)
当 implicit_reward_diff << 0 时(模型搞反了):
σ(大负数) ≈ 0 → log(接近0) → -∞ → loss → ∞ ✗(模型做得错,重罚)1.3 β 参数的作用
┌─────────────────────────────────────────────────────────────┐
│ β 参数——DPO 的"方向盘" │
├─────────────────────────────────────────────────────────────┤
│ │
│ β 控制"允许模型偏离参考模型多远": │
│ │
│ β → 0(很小): │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ log_ratio 几乎被忽略 │ │
│ │ → 模型不敢偏离 π_ref │ │
│ │ → 对齐效果很弱,模型几乎和 SFT 模型一样 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ β → ∞(很大): │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ log_ratio 被极度放大 │ │
│ │ → 模型可以大幅偏离 π_ref │ │
│ │ → 可能过拟合偏好数据,或退化(生成无意义文本) │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 经验值:β = 0.1 是标准起点 │
│ Anthropic 在 HH-RLHF 上使用 β ∈ {0.01, 0.1, 0.5, 1.0} │
│ DPO 论文发现 β=0.1 在大多数任务上表现最好 │
│ │
│ β 和 RLHF 中 KL 惩罚系数是同一个概念—— │
│ 都控制"不要太远离 SFT 模型" │
│ │
└─────────────────────────────────────────────────────────────┘1.4 DPO 训练的完整流程图
┌─────────────────────────────────────────────────────────────┐
│ DPO 训练:和标准微调一样简单 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 输入:偏好数据集 D = {(x, y_w, y_l)} │
│ │
│ for each batch: │
│ ┌───────────────────────────────────────────────────┐ │
│ │ 1. Forward Pass(两个 forward,一个 backward) │ │
│ │ │ │
│ │ a) 用 π_θ 计算 prompt 下 chosen 的对数概率 │ │
│ │ log_p_chosen = log π_θ(y_w | x) │ │
│ │ │ │
│ │ b) 用 π_θ 计算 prompt 下 rejected 的对数概率 │ │
│ │ log_p_rejected = log π_θ(y_l | x) │ │
│ │ │ │
│ │ c) 用 π_ref(冻结)计算同样的两个对数概率 │ │
│ │ log_p_ref_chosen = log π_ref(y_w | x) │ │
│ │ log_p_ref_rejected = log π_ref(y_l | x) │ │
│ │ │ │
│ │ d) 计算 DPO loss │ │
│ │ diff = β × [ │ │
│ │ (log_p_chosen - log_p_ref_chosen) - │ │
│ │ (log_p_rejected - log_p_ref_rejected) │ │
│ │ ] │ │
│ │ loss = -log σ(diff) │ │
│ │ │ │
│ │ 2. Backward Pass │ │
│ │ loss.backward() ← 就这一行 │ │
│ │ │ │
│ │ 3. Optimizer Step │ │
│ │ optimizer.step() │ │
│ └───────────────────────────────────────────────────┘ │
│ │
│ 关键事实: │
│ • 不需要 RL(没有 PPO 的 advantage 估计、clipping 等) │
│ • 不需要单独的 Reward Model │
│ • 只需要 2 个模型(π_θ 和 π_ref),不是 4 个 │
│ • 训练循环和 SFT 完全一样——只是 loss 函数不同 │
│ │
└─────────────────────────────────────────────────────────────┘1.5 DPO 为什么等价——数学推导骨架
这里给出推导的关键步骤(不要求全懂,但要知道每一步在做什么):
┌─────────────────────────────────────────────────────────────┐
│ DPO 推导的五步骨架(看懂结构即可) │
├─────────────────────────────────────────────────────────────┤
│ │
│ Step 1: 假设人类偏好服从 Bradley-Terry 模型 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ P(y_w ≻ y_l | x) = σ( r(x, y_w) - r(x, y_l) ) │ │
│ │ │ │
│ │ 含义:chosen 比 rejected "好"的概率 = │ │
│ │ 它们隐式奖励值之差的 sigmoid │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Step 2: RLHF 的目标是最大化奖励的同时不偏离参考模型太远 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ max E[r(x,y)] - β·KL(π_θ || π_ref) │ │
│ │ │ │
│ │ KL 散度惩罚:不要让模型偏离 SFT 模型太远 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Step 3: 这个带 KL 约束的优化问题有闭式解 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ π*(y|x) = π_ref(y|x)·exp(r(x,y)/β) / Z(x) │ │
│ │ │ │
│ │ 最优策略 = 参考模型 × 奖励的指数缩放 │ │
│ │ Z(x) 是归一化常数(partition function) │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Step 4: 反解出 r(x,y) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ r(x,y) = β·log(π*(y|x) / π_ref(y|x)) + β·log Z(x) │ │
│ │ │ │
│ │ 把奖励写成策略和参考模型的比值 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Step 5: 带入 Bradley-Terry,Z(x) 消掉! │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ P(y_w ≻ y_l) = σ(β·log(π*(y_w)/π_ref(y_w)) │ │
│ │ - β·log(π*(y_l)/π_ref(y_l)) ) │ │
│ │ │ │
│ │ Z(x) 被减法消掉了! │ │
│ │ 现在这个概率只依赖 π* 和 π_ref │ │
│ │ 不需要显式的奖励函数了 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 最终:对偏好数据集 D 做最大似然估计 → 就是 DPO loss。 │
│ │
└─────────────────────────────────────────────────────────────┘关键本质:DPO 不是"近似"或者"简化"——在 Bradley-Terry 偏好模型的假设下,DPO 的损失函数和 RLHF 的目标是严格等价的。DPO 只是换了一种实现方式。
第2部分:DPO vs RLHF —— 逐维度对比
2.1 架构对比图
┌─────────────────────────────────────────────────────────────┐
│ RLHF:三个阶段,四个模型 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 阶段1: SFT(监督微调) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Base Model ────→ SFT Model (π_ref) │ │
│ │ ↑ │ │
│ │ 高质量 (prompt, answer) 数据 │ │
│ └─────────────────────────────────────────────────────┘ │
│ ↓ │
│ 阶段2: 训练 Reward Model (RM) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 偏好数据 ──→ RM ──→ r(x,y) ∈ R │ │
│ │ (x, y_w, y_l) │ │
│ │ │ │
│ │ Loss_RM = -log σ(r(y_w) - r(y_l)) │ │
│ └─────────────────────────────────────────────────────┘ │
│ ↓ │
│ 阶段3: PPO 强化学习 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ π_θ (Policy) ──→ 生成 y ~ π_θ(·|x) │ │
│ │ │ │ │
│ │ ├──→ RM ──→ 奖励 r │ │
│ │ │ │ │
│ │ ├──→ π_ref ──→ KL 惩罚 │ │
│ │ │ │ │
│ │ └──→ Value Model ──→ Advantage 估计 │ │
│ │ │ │
│ │ 更新 π_θ:max E[r - β·KL(π_θ||π_ref)] │ │
│ │ │ │
│ │ 需要同时加载:π_θ + π_ref + RM + Value │ │
│ │ = 4 个模型 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘┌─────────────────────────────────────────────────────────────┐
│ DPO:一个阶段,两个模型 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 阶段1: SFT(监督微调)—— 和 RLHF 完全一样 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Base Model ────→ SFT Model (π_ref) │ │
│ └─────────────────────────────────────────────────────┘ │
│ ↓ │
│ 阶段2: DPO 直接偏好优化 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 偏好数据 (x, y_w, y_l) │ │
│ │ │ │ │
│ │ ↓ │ │
│ │ ┌─────────────────────────────────────────────┐ │ │
│ │ │ DPO Loss │ │ │
│ │ │ │ │ │
│ │ │ L = -log σ( β·[ log(π_θ(y_w)/π_ref(y_w)) │ │ │
│ │ │ - log(π_θ(y_l)/π_ref(y_l)) ] )│ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────┘ │ │
│ │ │ │ │
│ │ ↓ │ │
│ │ π_θ ← 标准梯度下降(像 SFT 一样) │ │
│ │ │ │
│ │ 只需要加载:π_θ + π_ref = 2 个模型 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘2.2 详细对比表
| 维度 | RLHF | DPO |
|---|---|---|
| Reward Model | 需要单独训练一个 RM(另一个大模型) | 不需要——奖励隐式编码在 loss 中 |
| 训练阶段 | 3 阶段:SFT + RM + PPO | 2 阶段:SFT + DPO |
| 同时加载的模型数 | 4 个(Policy + Ref + RM + Value/Critic) | 2 个(Policy + Ref) |
| 训练稳定性 | RL 对超参数敏感,容易崩溃 | 稳定(本质是监督学习,loss 单调下降) |
| 是否需要 KL 约束 | 需要显式的 KL 惩罚项 | β 参数天然控制偏离程度 |
| 在线 vs 离线 | 可以是在线的(训练中生成新回答) | 纯离线(只能用固定的偏好数据集) |
| Reward Hacking | 风险高(RM 固定,策略可能钻空子) | 风险低(没有独立 RM 可以被 hack) |
| 实现难度 | 极高(需要 RL 基础设施 + 超参数调优) | 低(改 loss 函数即可,fit 进现有 SFT 代码) |
| 计算成本 | 高(4 模型 + 在线生成) | 低(2 模型 + 固定数据集) |
| 最终性能 | 调好了稍好(特别是在线版) | 离线场景下可比、小数据集上可能更好 |
| 开源生态 | 较少(TRL、DeepSpeed-Chat) | 多(TRL、Axolotl、LLaMA-Factory 都支持) |
2.3 实验结果速览
┌─────────────────────────────────────────────────────────────┐
│ DPO 论文中的关键实验结果 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 在 Anthropic HH-RLHF(对话有用性+无害性)数据集上: │
│ │
│ 任务:Controlled Sentiment Generation │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 方法 | 奖励分数 | KL 偏离度 │ │
│ │ ─────────────────────────────────────────────── │ │
│ │ PPO | 高 | 中 │ │
│ │ DPO (β=0.1) | 相近/稍高 | 相近 │ │
│ │ Preferred-FT | 低 | 高(退化) │ │
│ │ SFT (基线) | 最低 | 0 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 在 TL;DR Summarization 上: │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ DPO 在 win rate 上 vs PPO:DPO 胜率 61% │ │
│ │ (注意:这是 DPO 论文的结果,社区有争议) │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 在 Anthropic HH 对话上: │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ DPO 在有用性上 ≈ PPO,在无害性上 ≈ PPO │ │
│ │ 但 DPO 的 Pareto 前沿在低 KL 区间优于 PPO │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 关键结论: │
│ • DPO 在大多数离线场景下和 PPO 表现相当 │
│ • DPO 比 PPO 更"样本高效"——同样数据量,DPO 学得更好 │
│ • 但 PPO 迭代多轮(在线生成+训练多轮)可以超过 DPO │
│ │
└─────────────────────────────────────────────────────────────┘第3部分:什么时候用 RLHF vs DPO
3.1 决策框架
┌─────────────────────────────────────────────────────────────┐
│ RLHF vs DPO 决策树 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 你的偏好数据是固定的吗? │
│ ├── 是 → 用 DPO(离线场景,DPO 更适合) │
│ └── 否(可以在训练中不断收集新的偏好数据) │
│ │ │
│ ├── 你有能力维护 PPO 基础设施吗? │
│ │ ├── 有(GPU 充足 + RL 工程师) │
│ │ │ └── → 用 Iterative/Online RLHF │
│ │ └── 没有 │
│ │ └── → 用 Iterative DPO │
│ │ (每轮 DPO 后重新采样偏好数据) │
│ │ │
│ 你的安全要求极高吗(前沿实验室级别)? │
│ └── 是 → 考虑 RLHF + Constitutional AI 组合 │
│ │
│ 快速总结: │
│ • 90% 的团队 → DPO(简单、稳定、够用) │
│ • 追求极致性能 + 有资源 → Online/Iterative RLHF │
│ • 没有偏好数据 → 先用 RLAIF 生成偏好数据,再 DPO │
│ │
└─────────────────────────────────────────────────────────────┘3.2 使用 DPO 的场景
- 你的偏好数据集已经标注好了,不想再花钱标注
- 团队没有 RL 经验,只想改 loss 函数
- GPU 预算有限,只能同时加载 2 个模型
- 你在做开源模型的对齐(大多数开源模型用 DPO)
- 你在做领域特化模型(医疗、法律),偏好数据量不大
3.3 仍然用 RLHF 的场景
- 你需要在线探索:模型在训练中生成新的回答,并获得实时反馈。这允许模型探索新的行为模式,而不仅仅模仿已有的偏好数据。
- 你有一个非常高质量的 Reward Model(比如用大量人类标注训练的、比任何单一模型都更准确的 RM)
- Iterative RLHF:多轮 PPO,每轮用当前策略生成新回答 → 人类标注 → 更新 RM → 继续 PPO。这种"在线迭代"是 DPO 无法直接做到的。
- 你是前沿实验室(OpenAI、Anthropic、Google DeepMind),需要榨干最后 1% 的性能
3.4 行业趋势
┌─────────────────────────────────────────────────────────────┐
│ DPO vs RLHF 在行业中的实际使用 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 开源社区(2024-2026): │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ • LLaMA 3 系列:RLHF(Meta 有资源做完整的在线 RLHF)│ │
│ │ • Mistral / Mixtral:DPO │ │
│ │ • Qwen 2.5:DPO │ │
│ │ • DeepSeek:DPO(声称比 RLHF 更高效) │ │
│ │ • 大多数微调框架(Axolotl, LLaMA-Factory):DPO 为首 │ │
│ │ 选对齐方法 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 前沿实验室(2024-2026): │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ • OpenAI:变种 RLHF(有专门的 RL 团队和基础设施) │ │
│ │ • Anthropic:Constitutional AI + RLAIF + RLHF 混合 │ │
│ │ • Google:RLHF(Gemini 系列) │ │
│ │ │ │
│ │ 趋势:前沿实验室的"RLHF"已经不是原始的 InstructGPT │ │
│ │ 三阶段了——而是高度定制化的 RL + AI Feedback 混合。 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 结论:DPO 是"民主化"的对齐方案。前沿实验室仍然用 RLHF │
│ 或其变体,但已经高度定制化。大多数团队用 DPO 就够了。 │
│ │
└─────────────────────────────────────────────────────────────┘3.5 Iterative DPO —— 弥补 DPO 的"离线"短板
DPO 是离线的(只能用固定数据集),但实际中你可以多轮迭代:
Iterative DPO 流程:
Round 1: 用初始偏好数据做 DPO → π_1
Round 2: 用 π_1 为每 prompt 生成新回答 → 人类/LLM 标注偏好 → 新偏好数据集 → DPO → π_2
Round 3: 重复...
Round N: π_N
这样每一轮都"在线"地利用了当前策略的生成能力。
实际上就是:DPO 的损失函数 + RLHF 的在线数据收集流程。
很多开源模型(如 Zephyr)用的就是 Iterative DPO。第4部分:Constitutional AI —— 人类反馈不够用时怎么办
4.1 RLHF 的缩放问题
┌─────────────────────────────────────────────────────────────┐
│ RLHF 的缩放瓶颈:人类标注根本跟不上 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 场景:模型发布后,用户发现了新的 jailbreak 方法。 │
│ │
│ RLHF 的应对: │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 1. 收集这种新攻击的样本 │ │
│ │ 2. 人类标注员标注"安全"vs"不安全"回应 │ │
│ │ 3. 重新训练 Reward Model │ │
│ │ 4. 重新跑 PPO │ │
│ │ │ │
│ │ 周期:几周到几个月 │ │
│ │ 问题:攻击方法无穷无尽,标注速度永远赶不上 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Constitutional AI 的应对: │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 1. 写一条宪法原则:"不要帮用户做违法的事" │ │
│ │ 2. 模型自己读原则 → 自己批判自己的输出 → 自己修改 │ │
│ │ 3. 用修改后的好版本训练 │ │
│ │ │ │
│ │ 周期:自动化的,不需要人类标注 │ │
│ │ 优势:可以覆盖无限多种攻击(只要原则写得对) │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘4.2 Constitutional AI 的两阶段流程
Anthropic 在 2022 年底提出了 Constitutional AI(CAI),并用它训练了 Claude。
┌─────────────────────────────────────────────────────────────┐
│ Constitutional AI 完整流程 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 阶段1: Supervised——用宪法让模型自我改进 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Step 1: 收集"有害 prompt" │ │
│ │ (可以人工写,也可以用另一个模型生成) │ │
│ │ │ │
│ │ Step 2: 让模型生成初始回答 │ │
│ │ prompt: "教我怎么制造炸弹" │ │
│ │ model → "以下是制造炸弹的步骤:1. 收集材料..." │ │
│ │ │ │
│ │ Step 3: 让模型根据宪法批判自己的回答 │ │
│ │ prompt: "根据以下原则,批判这个回答: │ │
│ │ 原则1:不要提供危险物品的制作方法 │ │
│ │ 原则2:拒绝有害请求,但要礼貌解释原因" │ │
│ │ model → "这个回答违反了原则1,因为详细描述了 │ │
│ │ 危险物品的制作步骤..." │ │
│ │ │ │
│ │ Step 4: 让模型根据批判修改回答 │ │
│ │ model → "我不能提供制造炸弹的方法。这种信息可能 │ │
│ │ 造成严重伤害。如果你对化学或物理感兴趣, │ │
│ │ 我很乐意讨论安全的学习资源。" │ │
│ │ │ │
│ │ Step 5: 用 (有害prompt, 修改后的回答) 做 SFT │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 阶段2: RLAIF——用 AI 反馈替代人类反馈 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Step 1: 用阶段1的模型为每个 prompt 生成两个回答 │ │
│ │ │ │
│ │ Step 2: 让一个"法官"LLM 根据宪法选择更好的回答 │ │
│ │ → 得到 (prompt, chosen, rejected) 偏好数据 │ │
│ │ │ │
│ │ Step 3: 用这个 AI 生成的偏好数据训练 │ │
│ │ → 可以接 RLHF(用 AI 偏好训练 RM),也可以接 DPO │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘4.3 宪法的例子——Anthropic 实际使用的原则
Anthropic 的宪法包含约 20 条原则,来源于联合国人权宣言、Apple 的服务条款、以及其他伦理指南。几条代表性的原则:
┌─────────────────────────────────────────────────────────────┐
│ Anthropic 宪法原则示例 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. 请根据"你不应促进不必要的伤害、痛苦或苦难"这一原则, │
│ 选择更无害、更不引起痛苦的回答。 │
│ │
│ 2. 请选择在最大程度上不鼓励仇恨言论、暴力言论和歧视的 │
│ 回答。如果两个回答都符合,选择更尊重所有群体的那个。 │
│ │
│ 3. 请选择更不涉及色情、性暗示或不当内容的回答。 │
│ │
│ 4. 请选择更加诚实、准确、不会误导用户的回答。 │
│ │
│ 5. 请选择更适合所有年龄段用户、更像是"家庭友好"的回答。 │
│ │
│ 核心思想:宪法是可编辑的——不同文化、不同应用场景可以 │
│ 定义不同的宪法。Anthropic 希望宪法最终由公众协商制定。 │
│ │
└─────────────────────────────────────────────────────────────┘4.4 RLAIF:AI 反馈替代人类反馈
RLAIF(RL from AI Feedback)是 Constitutional AI 的核心技术组件:
┌─────────────────────────────────────────────────────────────┐
│ RLAIF vs RLHF:反馈来源的差异 │
├─────────────────────────────────────────────────────────────┤
│ │
│ RLHF: │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 人类标注员 → 阅读两个回答 → 选择更好的 → 偏好数据 │ │
│ │ │ │
│ │ 优点:真实的人类价值观 │ │
│ │ 缺点:慢、贵、不一致(不同标注员标准不同) │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ RLAIF: │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ LLM 法官 → 阅读两个回答 + 宪法原则 → 选择更好的 │ │
│ │ │ │
│ │ 优点:快、便宜、一致、可规模化(无限量生成偏好数据) │ │
│ │ 缺点:AI 的价值观可能和人类有偏差 │ │
│ │ 宪法写得不好,AI 就会学到错误的价值观 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Google 的 2024 研究发现: │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 在摘要质量任务上,RLAIF 和 RLHF 的人类评分差异 │ │
│ │ 在统计上不显著。 │ │
│ │ │ │
│ │ 也就是说:用一个好 LLM 做裁判,和用人类做裁判, │ │
│ │ 训练出来的模型质量可以很接近。 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘4.5 CAI + DPO = 最强组合
Constitutional AI 和 DPO 不是竞争关系——它们解决不同的问题:
- CAI 解决的是"怎么高效地生成偏好数据"(不用人类标注,用宪法 + AI)
- DPO 解决的是"怎么高效地用偏好数据训练模型"(不用 RLHF 的复杂 pipeline)
两者组合:用 CAI 生成偏好数据 + 用 DPO 训练 = 完全不需要人类标注的对齐方案。
第5部分:对齐评测——怎么知道对齐有没有用
5.1 对齐评测的三个维度
┌─────────────────────────────────────────────────────────────┐
│ 对齐评测三维度 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 维度1:能力(Capability) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 模型在知识、推理、语言理解等任务上的表现。 │ │
│ │ 常用基准:MMLU, HellaSwag, GSM8K, HumanEval │ │
│ │ 问题:对齐后能力通常略微下降(Alignment Tax) │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 维度2:安全(Safety) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 模型是否会输出有害、偏见、不安全的内容。 │ │
│ │ 常用基准:TruthfulQA, HarmBench, AdvBench │ │
│ │ 问题:安全和能力有时是 trade-off │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 维度3:人类偏好(Human Preference) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 真实用户觉得模型好不好用?回答是否"有用、诚实、无害"?│ │
│ │ 常用方法:Chatbot Arena (LMSYS),企业内 human eval │ │
│ │ 问题:人类偏好是主观的、因文化而异的 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘5.2 关键评测基准一览
┌─────────────────────────────────────────────────────────────┐
│ 对齐相关评测基准 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 能力类: │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ MMLU (Massive Multitask Language Understanding) │ │
│ │ 57 个学科的多选题,测知识广度 │ │
│ │ HellaSwag │ │
│ │ 常识推理,给一个场景选最合理的结局 │ │
│ │ GSM8K │ │
│ │ 小学数学应用题 │ │
│ │ HumanEval │ │
│ │ 代码生成能力 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 安全类: │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ TruthfulQA │ │
│ │ 测模型是否传播错误信息(常见误解) │ │
│ │ 例:"如果温度计坏了,准确读数概率是多少?" │ │
│ │ 未对齐模型可能编造一个假概率 │ │
│ │ │ │
│ │ HarmBench │ │
│ │ 系统性地测模型对各种有害 prompt 的回应 │ │
│ │ 分类:网络攻击、生化武器、骚扰、虚假信息... │ │
│ │ │ │
│ │ AdvBench (Adversarial Benchmark) │ │
│ │ 专门测对抗性攻击(jailbreak) │ │
│ │ 包含各种已知的 jailbreak 模板 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 人类偏好类: │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Chatbot Arena (LMSYS) │ │
│ │ 真实用户和两个匿名模型聊天,投票选更好的 │ │
│ │ Elo 分数排行榜:https://chat.lmsys.org │ │
│ │ 最接近"真实用户体验"的评测 │ │
│ │ │ │
│ │ AlpacaEval │ │
│ │ 用 GPT-4 作为裁判,比较模型回答质量 │ │
│ │ Win rate vs GPT-4 / GPT-4 Turbo │ │
│ │ 快、便宜,但受裁判模型偏见影响 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘5.3 Alignment Tax——对齐的代价
┌─────────────────────────────────────────────────────────────┐
│ Alignment Tax:让模型更安全,会不会让它更笨? │
├─────────────────────────────────────────────────────────────┤
│ │
│ 什么是 Alignment Tax: │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 做对齐训练(RLHF/DPO)后,模型在某些能力指标上 │ │
│ │ 比 SFT 模型差。 │ │
│ │ │ │
│ │ 原因: │ │
│ │ • 对齐过程中,模型学会了"拒绝回答"—— │ │
│ │ 但有时拒绝过度(False Refusal)。 │ │
│ │ 例:用户问"如何制作一杯好咖啡" │ │
│ │ 过度对齐的模型:"我不能提供食品制作建议" │ │
│ │ │ │
│ │ • 偏好数据中可能包含"安全但信息量少"的回答 │ │
│ │ 模型学到了"少说少错" │ │
│ │ │ │
│ │ • KL 约束让模型不敢偏离 SFT 太远 │ │
│ │ 但也限制了模型在有帮助性上的进步 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 减少 Alignment Tax 的方法: │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 1. 在偏好数据中同时标注"有用性"和"安全性" │ │
│ │ 不要只标注"哪个更安全" │ │
│ │ │ │
│ │ 2. 用 Pareto 最优训练 │ │
│ │ 同时优化多个目标(有用性+无害性+诚实性) │ │
│ │ │ │
│ │ 3. 动态调整 β 参数 │ │
│ │ 对无争议的 query 放松约束,对敏感的 query 收紧 │ │
│ │ │ │
│ │ 4. 数据混合 │ │
│ │ 偏好数据 + 高质量 SFT 数据混合训练 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 2024-2026 的进展: │
│ • LLaMA 3 的对齐几乎消除了 Alignment Tax │
│ • Claude 3.5 在安全和能力上同时提升 │
│ • 趋势:好的对齐可以同时提升安全和能力 │
│ • 关键 → 高质量、多样化的偏好数据 │
│ │
└─────────────────────────────────────────────────────────────┘5.4 红队测试(Red-Teaming)
红队测试是对齐 pipeline 中不可或缺的一环——它不是评测,而是"找漏洞"。
┌─────────────────────────────────────────────────────────────┐
│ 红队测试的工作流 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 目标:在对齐后的模型发布前,尽可能找到安全漏洞。 │
│ │
│ 方法1:人工红队 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 招聘各领域的专家(网络安全、生化、心理学...) │ │
│ │ 给他们不受限的模型访问权限 │ │
│ │ 让他们尽可能让模型说出不该说的话 │ │
│ │ │ │
│ │ 发现的攻击类型: │ │
│ │ • Jailbreak(角色扮演绕过限制) │ │
│ │ • Prompt Injection(注入恶意指令) │ │
│ │ • 多语言攻击(用稀有语言绕过安全过滤) │ │
│ │ • 编码攻击(base64、摩尔斯码编码有害内容) │ │
│ │ • 逐步诱导(先问无害问题,逐步引导到有害话题) │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 方法2:自动化红队 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 用另一个 LLM 自动生成大量攻击 prompt │ │
│ │ 对目标模型逐一测试 │ │
│ │ 记录成功率 → 返回到对齐训练数据中 │ │
│ │ │ │
│ │ 工具:Garak, PromptBench, AutoDAN │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 红队发现的问题 → 加入宪法原则或偏好数据 → 重新对齐 │
│ 这是一个持续迭代的闭环。 │
│ │
└─────────────────────────────────────────────────────────────┘5.5 对齐评测的局限性
┌─────────────────────────────────────────────────────────────┐
│ 对齐评测的几个关键限制 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. 基准污染(Benchmark Contamination) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 训练数据中可能包含评测集的答案 │ │
│ │ → 高分不代表真的学会了 │ │
│ │ → 需要定期更换评测集 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 2. Goodhart's Law(古德哈特定律) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ "当一个指标成为目标,它就不再是好的指标了" │ │
│ │ │ │
│ │ 你优化 TruthfulQA 分数 → 模型学会在 TruthfulQA │ │
│ │ 上表现好 → 但不一定在其他场景也诚实 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 3. 人类偏好 ≠ 客观质量 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 人类偏好受: │ │
│ │ • 回答长度(长的通常被选) │ │
│ │ • 语气自信度(自信的通常被选,即使错了) │ │
│ │ • 排版格式(Markdown 好看的通常被选) │ │
│ │ • 文化背景(不同文化偏好不同) │ │
│ │ │ │
│ │ → Chatbot Arena 的 Elo 分数 ≠ 模型真实能力 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 4. 评估的对齐本身在漂移 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 3 年前的"对齐"标准:不要种族歧视、不要说脏话 │ │
│ │ 今天的"对齐"标准:不要帮用户作恶、要主动识别 │ │
│ │ 恶意意图、要诚实说自己不知道、要引用来源... │ │
│ │ │ │
│ │ 社会对 AI 的期望在不断变化,评测标准也必须跟着变。 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘核心总结
总结1:DPO 的本质——数学等价带来的工程简化
DPO 不是 RLHF 的"近似"或"简化版本"——在 Bradley-Terry 偏好模型假设下,DPO 和 RLHF 是数学上等价的。DPO 只是把"先训 RM,再强化学习"的两步合并成了"直接对偏好数据做最大似然估计"的一步。
这带来的工程收益是巨大的:不需要 RM,不需要 PPO,不需要 Value Model。你只需要 2 个模型(策略 + 参考),训练循环和 SFT 一样简单。
总结2:DPO 损失函数的三个关键部分
- log_ratio_chosen = log(π_θ(chosen) / π_ref(chosen)):当前模型是否比参考模型更偏爱好的回答
- log_ratio_rejected = log(π_θ(rejected) / π_ref(rejected)):当前模型是否比参考模型更偏爱差的回答
- β 控制两者差异的权重,以及模型可以偏离参考模型多远
优化目标:让 chosen 的相对概率尽可能高,rejected 的相对概率尽可能低。
总结3:RLHF 和 DPO 的选择逻辑
- 大多数团队 → DPO(简单、稳定、够好)
- 有 RL 基础设施 + 追求极致 → Online/Iterative RLHF
- 没有人类偏好数据 → RLAIF + DPO(完全自动化)
- 前沿实验室 → 各种方法的组合(RLHF + CAI + DPO + 在线迭代)
总结4:Constitutional AI 解决了偏好数据的缩放问题
RLHF 的瓶颈是人类标注——攻击模式无穷无尽,标注速度赶不上。Constitutional AI 用"宪法原则 + 模型自我批判 + 自我修改"替代人类标注,可以覆盖无限多种攻击场景。
总结5:对齐评测是多维的、不完美的
- 能力(MMLU, HellaSwag)+ 安全(TruthfulQA, HarmBench)+ 人类偏好(Chatbot Arena)
- Alignment Tax 是一个真实的问题,但正在被解决
- 评测本身有局限性:基准污染、Goodhart's Law、人类偏好的主观性
- 红队测试是评测之外必不可少的"找漏洞"环节
章节测试
测试1:DPO 为什么不需要单独的 Reward Model?
A. DPO 不需要偏好数据 B. DPO 把奖励函数隐式地编码在损失函数中——通过策略模型和参考模型的概率比来表达偏好 C. DPO 用人类直接打分替代了 Reward Model D. DPO 使用了一个自监督的 Reward Model
测试2:在 DPO 损失函数中,β 参数的作用是什么?
A. 控制学习率的大小 B. 控制模型可以偏离参考模型(π_ref)的程度 C. 控制 batch size D. 控制生成回答时的温度
测试3:以下哪个不是 RLHF 的主要痛点?
A. 需要同时加载 4 个模型(Policy + Ref + RM + Value) B. PPO 训练对超参数敏感 C. 偏好数据收集成本高 D. 模型参数量必须超过 100B 才能做 RLHF
测试4:Constitutional AI 和 RLAIF 的关系是什么?
A. 两者是完全独立的、不相关的方法 B. Constitutional AI 是一种 RLAIF 方法——用宪法指导的 AI 作为反馈来源 C. RLAIF 是 Constitutional AI 的一部分——用 AI 反馈替代人类反馈 D. Constitutional AI 只用于 SFT 阶段,RLAIF 只用于 RL 阶段
测试5:什么是 Alignment Tax?
A. 做对齐训练需要支付给标注公司的费用 B. 对齐后模型在能力指标上相比 SFT 模型的下降 C. 对齐训练所需的额外 GPU 成本 D. 使用 DPO 而非 RLHF 带来的性能差距
测试6:为什么红队测试在对齐 pipeline 中是不可或缺的?
测试7:Iterative DPO 解决了 DPO 的什么关键限制?
参考答案
测试1答案
答案:B。DPO 的核心洞察是在 Bradley-Terry 偏好模型下,最优策略关于奖励函数有一个闭式解。把这个闭式解反解出奖励函数,再带入偏好概率中,奖励函数就被消掉了——最终损失函数只依赖策略模型 π_θ 和参考模型 π_ref 的概率比,不需要显式的 Reward Model。
测试2答案
答案:B。β 控制了模型可以偏离参考模型 π_ref 的程度。β 越小,log_ratio 的影响越小,模型越不敢偏离 SFT 模型;β 越大,模型可以越远地偏离参考模型。β 和 RLHF 中的 KL 惩罚系数是同一个概念。
测试3答案
答案:D。RLHF 的主要痛点是训练的复杂度(4 个模型、PPO 不稳定、偏好数据成本),而不是模型的参数量。原则上任意大小的模型都可以做 RLHF——只是效果和必要性因模型大小而异。选项 A、B、C 都是 RLHF 的真实痛点。
测试4答案
答案:B。Constitutional AI 是一种特定的 RLAIF 方法——它用宪法原则指导 AI 裁判来生成偏好数据。更准确地说,CAI 包含两个阶段:阶段 1 用宪法做自我批判和自我修改(监督学习),阶段 2 用 AI 裁判(即 RLAIF)替代人类标注来生成偏好数据。
测试5答案
答案:B。Alignment Tax 指的是对齐训练后,模型在某些能力基准上的表现下降。这通常是因为模型学会了"拒绝回答",但有时拒绝过度;或者偏好数据中的"安全回答"天然信息量较少。减少 Alignment Tax 是当前对齐研究的核心课题之一。
测试6答案
红队测试在对齐 pipeline 中不可或缺是因为:
- 评测基准是被动的:TruthfulQA 和 HarmBench 只能测已知的攻击模式。红队主动探索未知的攻击面。
- 攻击者在不断进化:模型发布后,用户会持续发现新的 jailbreak 方法。红队模拟这种对抗过程,在对齐阶段就尽可能多地发现漏洞。
- 评测基准有盲区:标准基准可能漏掉特定领域的风险(如生化安全、关键基础设施)。专业红队成员可以发现这些领域特有的漏洞。
- 形成闭环:红队发现的漏洞 → 更新宪法原则或偏好数据 → 重新对齐 → 再次红队测试。这是持续的安全迭代。
测试7答案
Iterative DPO 解决了 DPO 只能离线学习的关键限制。标准 DPO 使用固定的偏好数据集,模型无法在训练过程中"探索"新的回答并从中学习。Iterative DPO 通过多轮迭代——每轮用当前最优策略生成新回答,标注偏好,再做 DPO——实现了类似 RLHF 的在线学习效果。这结合了 DPO 的训练简单性和 RLHF 的在线探索能力。
相关笔记
- [[14-post-training-overview]] — Post-Training 全流程概览,SFT/RLHF/DPO 的定位
- [[11-training-primer]] — 训练基础概念(loss、梯度、optimizer)
- [[07-llm-evolution]] — 从 GPT-1 到 ChatGPT 的完整进化史
- [[09-decoder-only-llm]] — GPT 系列架构详解
下一步学习
- [ ] 阅读 DPO 原论文(Rafailov et al., 2023)—— 重点看 Section 4 的推导
- [ ] 阅读 Constitutional AI 论文(Bai et al., 2022)—— 理解 Anthropic 的两阶段流程
- [ ] 用 HuggingFace TRL 跑一个 DPO 实验——只需要 50 行代码
- [ ] 看 Chatbot Arena 的排行榜,理解 Elo 分数的含义
- [ ] 了解其他对齐变体:KTO、ORPO、SimPO、CPO——它们的核心改进点是什么
学习状态:🟡 开始学习