Skip to content
Gains Summary
Main Navigation 首页 / Home
C++ 编程 / C++ Programming
系统与高性能 / Systems & Performance
Web 开发 / Web Development
人工智能 / Artificial Intelligence
工业软件 / Industrial Software
其他内容 / Other Topics
C++ 编程 / C++系统与性能 / SystemsWeb 开发 / Web人工智能 / AI工业软件 / Industrial

外观

Sidebar Navigation

← 人工智能 / Artificial Intelligence

大语言模型 / Large Language Models

1. LLM 前置知识学习路线 / A Prerequisite Learning Path for Large Language Models

2. 神经网络基础 - 从零理解 AI 的"计算单元" / Neural Network Fundamentals from Artificial Neurons

3. Token 与上下文窗口 - LLM 的计费与记忆单位 / Tokens and Context Windows as the Units of LLM Cost and Memory

4. 解码策略 - 控制 LLM 输出的艺术 / Decoding Strategies for Controlling LLM Output

5. 消息角色 - 构建 Agent 对话的基础 / Message Roles as the Foundation of Agent Conversations

6. 流式输出 - 实时交互的体验优化 / Streaming Output for Responsive Interaction

7. Prompt 工程基础 - 与 LLM 高效对话的技巧 / Prompt Engineering Fundamentals for Effective LLM Interaction

8. LLM 进化史 - 从词向量到 Transformer / The Evolution of LLMs from Word Embeddings to Transformers

9. Transformer 手动计算:从 Attention 到 Encoder-Decoder 完整数据流

10. Transformer 核心原理 - 现代 LLM 的基石 / Transformer Fundamentals Behind Modern LLMs

11. Decoder-Only LLM 深度解析:为什么扔掉 Encoder,以及 KV Cache 如何工作

12. 训练 vs 推理:同一个 Transformer,两条完全不同的执行路径

13. Transformer 训练阶段计算详解 - 手算每一行矩阵 / Transformer Training Computation Matrix by Matrix

14. Transformer 推理阶段详解 — 模型如何"思考"并生成回答 / Transformer Inference and Autoregressive Generation

15. 训练基础扫盲 - 理解 Fine-tune 在做什么 / A Training Primer for Understanding Fine-Tuning

16. LLM 预训练全景:数据管道、Scaling Laws 与训练稳定性

17. 训练基础设施 - 从单卡到千卡集群 / Training Infrastructure from One GPU to Thousand-GPU Clusters

18. Post-Training Pipeline - 从 Base Model 到可用助手 / The Post-Training Pipeline from Base Model to Assistant

19. SFT 深度解析:从 Base Model 到指令跟随——后训练第一步 / SFT Deep Dive: Teaching Base Models to Follow Instructions

20. RLHF 深度解析:从 Reward Model 到 PPO 的完整对齐流程

21. DPO 与对齐方法:从 RLHF 复杂度到直接偏好优化

22. 研究视角:DL/RL 理论到 LLM 训练的完整映射

本页目录

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。    │   │
│  │ 沟通成本极高。                                       │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

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,再强化学习"两步,                   │
│  合并成了"直接对偏好数据做最大似然估计"一步。                 │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

直觉版理解:

  • 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
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

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})               │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

逐项拆解:

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

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。       │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47

关键本质: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 个模型                                         │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
┌─────────────────────────────────────────────────────────────┐
│                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 个模型                 │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

2.2 详细对比表 ​

维度RLHFDPO
Reward Model需要单独训练一个 RM(另一个大模型)不需要——奖励隐式编码在 loss 中
训练阶段3 阶段:SFT + RM + PPO2 阶段: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          │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

第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            │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

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 就够了。       │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

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。
1
2
3
4
5
6
7
8
9
10
11

第4部分:Constitutional AI —— 人类反馈不够用时怎么办 ​

4.1 RLHF 的缩放问题 ​

┌─────────────────────────────────────────────────────────────┐
│           RLHF 的缩放瓶颈:人类标注根本跟不上                  │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  场景:模型发布后,用户发现了新的 jailbreak 方法。            │
│                                                             │
│  RLHF 的应对:                                               │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ 1. 收集这种新攻击的样本                               │   │
│  │ 2. 人类标注员标注"安全"vs"不安全"回应                 │   │
│  │ 3. 重新训练 Reward Model                              │   │
│  │ 4. 重新跑 PPO                                         │   │
│  │                                                     │   │
│  │ 周期:几周到几个月                                   │   │
│  │ 问题:攻击方法无穷无尽,标注速度永远赶不上            │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  Constitutional AI 的应对:                                   │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ 1. 写一条宪法原则:"不要帮用户做违法的事"            │   │
│  │ 2. 模型自己读原则 → 自己批判自己的输出 → 自己修改    │   │
│  │ 3. 用修改后的好版本训练                               │   │
│  │                                                     │   │
│  │ 周期:自动化的,不需要人类标注                        │   │
│  │ 优势:可以覆盖无限多种攻击(只要原则写得对)          │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

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   │   │
│  │                                                     │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

4.3 宪法的例子——Anthropic 实际使用的原则 ​

Anthropic 的宪法包含约 20 条原则,来源于联合国人权宣言、Apple 的服务条款、以及其他伦理指南。几条代表性的原则:

┌─────────────────────────────────────────────────────────────┐
│           Anthropic 宪法原则示例                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  1. 请根据"你不应促进不必要的伤害、痛苦或苦难"这一原则,    │
│     选择更无害、更不引起痛苦的回答。                          │
│                                                             │
│  2. 请选择在最大程度上不鼓励仇恨言论、暴力言论和歧视的       │
│     回答。如果两个回答都符合,选择更尊重所有群体的那个。      │
│                                                             │
│  3. 请选择更不涉及色情、性暗示或不当内容的回答。             │
│                                                             │
│  4. 请选择更加诚实、准确、不会误导用户的回答。               │
│                                                             │
│  5. 请选择更适合所有年龄段用户、更像是"家庭友好"的回答。     │
│                                                             │
│  核心思想:宪法是可编辑的——不同文化、不同应用场景可以        │
│  定义不同的宪法。Anthropic 希望宪法最终由公众协商制定。       │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

4.4 RLAIF:AI 反馈替代人类反馈 ​

RLAIF(RL from AI Feedback)是 Constitutional AI 的核心技术组件:

┌─────────────────────────────────────────────────────────────┐
│         RLAIF vs RLHF:反馈来源的差异                         │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  RLHF:                                                      │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ 人类标注员 → 阅读两个回答 → 选择更好的 → 偏好数据    │   │
│  │                                                     │   │
│  │ 优点:真实的人类价值观                                │   │
│  │ 缺点:慢、贵、不一致(不同标注员标准不同)            │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  RLAIF:                                                     │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ LLM 法官 → 阅读两个回答 + 宪法原则 → 选择更好的      │   │
│  │                                                     │   │
│  │ 优点:快、便宜、一致、可规模化(无限量生成偏好数据)  │   │
│  │ 缺点:AI 的价值观可能和人类有偏差                     │   │
│  │       宪法写得不好,AI 就会学到错误的价值观           │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  Google 的 2024 研究发现:                                    │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ 在摘要质量任务上,RLAIF 和 RLHF 的人类评分差异        │   │
│  │ 在统计上不显著。                                      │   │
│  │                                                     │   │
│  │ 也就是说:用一个好 LLM 做裁判,和用人类做裁判,       │   │
│  │ 训练出来的模型质量可以很接近。                        │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

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     │   │
│  │ 问题:人类偏好是主观的、因文化而异的                  │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

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                    │   │
│  │   快、便宜,但受裁判模型偏见影响                      │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

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 在安全和能力上同时提升                     │
│  • 趋势:好的对齐可以同时提升安全和能力                   │
│  • 关键 → 高质量、多样化的偏好数据                        │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

5.4 红队测试(Red-Teaming) ​

红队测试是对齐 pipeline 中不可或缺的一环——它不是评测,而是"找漏洞"。

┌─────────────────────────────────────────────────────────────┐
│              红队测试的工作流                                 │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  目标:在对齐后的模型发布前,尽可能找到安全漏洞。             │
│                                                             │
│  方法1:人工红队                                             │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ 招聘各领域的专家(网络安全、生化、心理学...)         │   │
│  │ 给他们不受限的模型访问权限                            │   │
│  │ 让他们尽可能让模型说出不该说的话                      │   │
│  │                                                     │   │
│  │ 发现的攻击类型:                                      │   │
│  │ • Jailbreak(角色扮演绕过限制)                       │   │
│  │ • Prompt Injection(注入恶意指令)                    │   │
│  │ • 多语言攻击(用稀有语言绕过安全过滤)                │   │
│  │ • 编码攻击(base64、摩尔斯码编码有害内容)            │   │
│  │ • 逐步诱导(先问无害问题,逐步引导到有害话题)        │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  方法2:自动化红队                                           │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ 用另一个 LLM 自动生成大量攻击 prompt                  │   │
│  │ 对目标模型逐一测试                                    │   │
│  │ 记录成功率 → 返回到对齐训练数据中                     │   │
│  │                                                     │   │
│  │ 工具:Garak, PromptBench, AutoDAN                    │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  红队发现的问题 → 加入宪法原则或偏好数据 → 重新对齐         │
│  这是一个持续迭代的闭环。                                    │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

5.5 对齐评测的局限性 ​

┌─────────────────────────────────────────────────────────────┐
│         对齐评测的几个关键限制                                 │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  1. 基准污染(Benchmark Contamination)                      │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ 训练数据中可能包含评测集的答案                        │   │
│  │ → 高分不代表真的学会了                                │   │
│  │ → 需要定期更换评测集                                  │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  2. Goodhart's Law(古德哈特定律)                           │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ "当一个指标成为目标,它就不再是好的指标了"            │   │
│  │                                                     │   │
│  │ 你优化 TruthfulQA 分数 → 模型学会在 TruthfulQA       │   │
│  │ 上表现好 → 但不一定在其他场景也诚实                   │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  3. 人类偏好 ≠ 客观质量                                      │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ 人类偏好受:                                          │   │
│  │ • 回答长度(长的通常被选)                            │   │
│  │ • 语气自信度(自信的通常被选,即使错了)              │   │
│  │ • 排版格式(Markdown 好看的通常被选)                 │   │
│  │ • 文化背景(不同文化偏好不同)                        │   │
│  │                                                     │   │
│  │ → Chatbot Arena 的 Elo 分数 ≠ 模型真实能力            │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  4. 评估的对齐本身在漂移                                     │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ 3 年前的"对齐"标准:不要种族歧视、不要说脏话          │   │
│  │ 今天的"对齐"标准:不要帮用户作恶、要主动识别          │   │
│  │   恶意意图、要诚实说自己不知道、要引用来源...         │   │
│  │                                                     │   │
│  │ 社会对 AI 的期望在不断变化,评测标准也必须跟着变。    │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

核心总结 ​

总结1:DPO 的本质——数学等价带来的工程简化 ​

DPO 不是 RLHF 的"近似"或"简化版本"——在 Bradley-Terry 偏好模型假设下,DPO 和 RLHF 是数学上等价的。DPO 只是把"先训 RM,再强化学习"的两步合并成了"直接对偏好数据做最大似然估计"的一步。

这带来的工程收益是巨大的:不需要 RM,不需要 PPO,不需要 Value Model。你只需要 2 个模型(策略 + 参考),训练循环和 SFT 一样简单。

总结2:DPO 损失函数的三个关键部分 ​

  1. log_ratio_chosen = log(π_θ(chosen) / π_ref(chosen)):当前模型是否比参考模型更偏爱好的回答
  2. log_ratio_rejected = log(π_θ(rejected) / π_ref(rejected)):当前模型是否比参考模型更偏爱差的回答
  3. β 控制两者差异的权重,以及模型可以偏离参考模型多远

优化目标:让 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 中不可或缺是因为:

  1. 评测基准是被动的:TruthfulQA 和 HarmBench 只能测已知的攻击模式。红队主动探索未知的攻击面。
  2. 攻击者在不断进化:模型发布后,用户会持续发现新的 jailbreak 方法。红队模拟这种对抗过程,在对齐阶段就尽可能多地发现漏洞。
  3. 评测基准有盲区:标准基准可能漏掉特定领域的风险(如生化安全、关键基础设施)。专业红队成员可以发现这些领域特有的漏洞。
  4. 形成闭环:红队发现的漏洞 → 更新宪法原则或偏好数据 → 重新对齐 → 再次红队测试。这是持续的安全迭代。

测试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——它们的核心改进点是什么

学习状态:🟡 开始学习

最后更新于:

Pager
上一篇20. RLHF 深度解析:从 Reward Model 到 PPO 的完整对齐流程
下一篇22. 研究视角:DL/RL 理论到 LLM 训练的完整映射

持续记录,持续成长

Copyright © Tidenflow