第 17 讲:Alignment: 强化学习进阶
本讲是课程的最后一讲,将介绍 RLHF/RLVR 之外的其他 alignment 方法,包括 DPO、Expert Iteration、Constitutional AI 等,并总结当前的前沿研究方向和课程的核心要点。
本讲导航
本讲涵盖面较广,既有具体的算法(DPO、RLAIF),也有高层次的方法论(Constitutional AI、Expert Iteration),最后是对整个课程的回顾和对未来方向的展望。
1. DPO (Direct Preference Optimization)
1.1 DPO 的动机
RLHF 的 PPO 阶段在工程实现上非常复杂:需要同时维护四个模型(policy, reference, reward, value),训练过程涉及 RL 的各种不稳定性问题(reward hacking、value function 估计不准、超参数敏感等)。
DPO (Rafailov et al., 2023) 的核心洞察是:可以绕过 reward model 的显式训练,直接将人类偏好数据用于优化 policy。
1.2 DPO 的数学推导
DPO 的推导从 RLHF 的优化目标出发。RLHF 的目标是:
这个 KL-constrained optimization 问题有一个解析解:
从这个最优 policy 的表达式中,可以反解出 reward function:
将这个 implicit reward 代入 Bradley-Terry model 的偏好概率公式,Z(x) 项抵消掉,最终得到 DPO 的 loss function:
1.3 DPO 的实现
import torch
import torch.nn.functional as F
def dpo_loss(policy_model, ref_model, input_ids_w, input_ids_l,
prompt_length, beta=0.1):
"""Compute DPO loss given a preference pair."""
# Compute log probabilities for winning response
policy_logp_w = get_sequence_logprob(policy_model, input_ids_w, prompt_length)
ref_logp_w = get_sequence_logprob(ref_model, input_ids_w, prompt_length)
# Compute log probabilities for losing response
policy_logp_l = get_sequence_logprob(policy_model, input_ids_l, prompt_length)
ref_logp_l = get_sequence_logprob(ref_model, input_ids_l, prompt_length)
# DPO loss
log_ratio_w = policy_logp_w - ref_logp_w
log_ratio_l = policy_logp_l - ref_logp_l
logits = beta * (log_ratio_w - log_ratio_l)
loss = -F.logsigmoid(logits).mean()
return loss
def get_sequence_logprob(model, input_ids, prompt_length):
"""Compute log probability of response given prompt."""
outputs = model(input_ids)
logits = outputs.logits[:, prompt_length-1:-1, :]
target = input_ids[:, prompt_length:]
logprobs = F.log_softmax(logits, dim=-1)
token_logprobs = logprobs.gather(-1, target.unsqueeze(-1)).squeeze(-1)
return token_logprobs.sum(dim=-1)
1.4 DPO 的优缺点
优点:
- 实现简单:本质上就是一个 supervised learning 问题,不需要 RL 的复杂基础设施
- 训练稳定:没有 RL 训练中的 reward hacking、value estimation 等不稳定因素
- 内存高效:只需要 policy model 和 reference model,不需要 reward model 和 value model
- 超参数少:主要就是 β 一个超参数
缺点:
- On-policy vs Off-policy:DPO 本质上是 off-policy 的(使用固定的偏好数据集),可能不如 on-policy RL 高效
- 数据效率:DPO 需要大量高质量的偏好数据对,且数据必须来自与 reference model 相近的 policy
- 表达能力:DPO 的 implicit reward 受限于 policy 和 reference model 的比值,可能无法表达复杂的 reward function
- 实践效果:在一些经验报告中,DPO 在某些场景下不如 PPO(尤其是在需要大幅偏离 reference model 的情况下)
2. DPO vs PPO 对比
| 方面 | PPO (RLHF) | DPO |
|---|---|---|
| 训练复杂度 | 高(RL 训练循环) | 低(类似 SFT 的 supervised loss) |
| 模型数量 | 4 个(policy, ref, RM, value) | 2 个(policy, ref) |
| 内存需求 | 非常高 | 较低 |
| 训练稳定性 | 较差,超参数敏感 | 较好,训练稳定 |
| On-policy 数据 | 是(在线生成) | 否(离线数据集) |
| Reward Model | 需要显式训练 | 隐式包含在 loss 中 |
| Scalability | 经过充分验证(GPT-4, Claude) | 大规模经验相对较少 |
| 迭代优化 | 自然支持(在线生成新数据) | 需要 iterative DPO(多轮生成数据) |
Online DPO / Iterative DPO
为了克服 DPO off-policy 的局限,研究者提出了 Online DPO:在训练过程中,用当前的 policy model 不断生成新的回答,然后用 reward model 对这些回答进行排序来创建新的偏好数据对。这种方法结合了 DPO 的简洁性和 on-policy 训练的优势。
3. Expert Iteration(专家迭代)
Expert Iteration (ExIt) 是一种结合了 planning/search 和 policy learning 的方法,受 AlphaGo 启发,应用于 LLM alignment。
3.1 核心思想
Expert Iteration 的思路很直观:
- Expert(搜索/采样阶段):对于每个 prompt,让模型生成多个候选回答(例如 N=64 个),使用 reward model 或 verifiable reward 选出最佳回答
- Imitation(模仿阶段):用选出的最佳回答对模型进行 SFT
- 重复以上两步多轮
直觉上,这相当于让模型"多试几次,然后从最好的那次中学习"。
3.2 Rejection Sampling
Expert Iteration 的 Expert 阶段本质上就是 Rejection Sampling (RS):
def rejection_sampling(model, reward_fn, prompt, n_samples=64, top_k=1):
"""Generate multiple responses and select the best ones."""
responses = []
rewards = []
for _ in range(n_samples):
# Sample with temperature > 0 for diversity
response = model.generate(prompt, temperature=0.7)
reward = reward_fn(prompt, response)
responses.append(response)
rewards.append(reward)
# Sort by reward and select top-k
sorted_indices = sorted(range(len(rewards)),
key=lambda i: rewards[i],
reverse=True)
best_responses = [responses[i] for i in sorted_indices[:top_k]]
return best_responses
3.3 ReST (Reinforced Self-Training)
Google 的 ReST 方法是 Expert Iteration 在 LLM 中的一个具体实例:
- Grow:使用当前模型生成大量回答
- Improve:用 reward 过滤出高质量回答,对模型进行 SFT
- 重复多轮,每轮生成和筛选的标准逐步提高
3.4 Expert Iteration 的优劣
- 优点:实现简单(只需要 generation + SFT),不需要 RL 算法;直觉清晰;效果往往很好
- 缺点:sample efficiency 较低(需要生成大量候选才能找到好的回答);可能陷入 mode collapse(只从已有能力范围内选择,难以探索新能力)
4. Constitutional AI (CAI)
Constitutional AI 是 Anthropic 提出的一种 alignment 方法,核心思想是使用一组"宪法原则"来指导 AI 系统的行为。
4.1 CAI 的动机
传统 RLHF 的问题:
- 人类标注者可能有偏见,不同标注者标准不一致
- 标注过程让人类暴露于大量有害内容
- 标注成本高,难以覆盖所有 edge case
- "安全"的标准难以明确定义和传达给标注者
CAI 的解决方案:用一组明确的、可解释的原则("宪法")来替代/补充人类标注。
4.2 CAI 的两阶段流程
阶段 1:Critique and Revision(自我批评与修改)
- 给模型一个可能引发有害回答的 prompt
- 让模型生成一个初始回答(可能包含有害内容)
- 要求模型根据宪法原则评估自己的回答(critique)
- 要求模型修改回答使其符合宪法原则(revision)
- 将原始 prompt + 修改后的回答作为 SFT 数据
宪法原则示例:
- "请选择最有用、最准确、最无害的回答"
- "请选择不包含种族歧视、性别歧视或其他社会偏见的回答"
- "请选择最尊重用户隐私和自主权的回答"
阶段 2:RLAIF(RL from AI Feedback)
- 对每个 prompt 生成多个回答
- 让模型根据宪法原则选择哪个回答更好(AI 做评判者)
- 用这些 AI-generated 的偏好数据训练 reward model
- 用 reward model 进行 RL 训练
5. RLAIF (RL from AI Feedback)
RLAIF 是 CAI 中提出的一个重要概念,后来发展成一个独立的研究方向。
5.1 核心思想
用 AI 模型(通常是一个更强的模型)代替人类标注者来提供偏好反馈。流程如下:
def generate_ai_feedback(judge_model, prompt, response_a, response_b,
principle):
"""Use an AI model to compare two responses based on a principle."""
comparison_prompt = f"""Given the following user question and two responses,
determine which response better adheres to this principle:
"{principle}"
User question: {prompt}
Response A: {response_a}
Response B: {response_b}
Which response is better? Output only "A" or "B"."""
judgment = judge_model.generate(comparison_prompt)
return judgment.strip() # "A" or "B"
5.2 RLAIF 的有效性
Google 的研究表明,RLAIF 在许多场景下可以达到与 RLHF 相当的效果:
- 在无害性(harmlessness)方面,RLAIF 效果特别好,因为安全原则可以被清晰地表达
- 在有用性(helpfulness)方面,RLAIF 也表现不错,但可能不如人类标注精确
- RLAIF 的最大优势是成本极低且可以大规模扩展
- 可以使用多个不同的原则来引导 AI 评判者,覆盖不同方面
5.3 LLM-as-Judge
RLAIF 的一个延伸是 "LLM-as-Judge" 范式:使用强大的 LLM(如 GPT-4)作为评判者来评估其他模型的输出质量。这种方法被广泛用于 LLM 评估(如 MT-Bench、Chatbot Arena 的自动评估)以及训练数据的筛选。
自我提升的边界
RLAIF 引发了一个重要的理论问题:模型能否通过自己的反馈不断提升自己?理论分析表明,这种"自我提升"存在上限 — 模型无法可靠地评判超出自身能力范围的回答。因此,RLAIF 更适合用于格式化、安全性等"易于评判"的维度,而非前沿推理能力的提升。
6. 前沿方向总结
6.1 Reasoning 能力提升
提升 LLM 的 reasoning(推理)能力是当前最热门的研究方向之一:
- Chain-of-Thought (CoT):让模型在回答前进行逐步推理。最初是 prompting 技术,现在通过 RL 训练让模型自主产生 CoT
- Long CoT / Extended Thinking:DeepSeek-R1、OpenAI o1 等模型展示了长链推理的威力。模型可以生成数千 token 的推理过程
- Self-Verification:模型在推理过程中验证自己的步骤,发现错误时回溯重试
- Tool Use:让模型调用计算器、代码执行器、搜索引擎等工具辅助推理
6.2 Test-Time Compute Scaling
传统的 scaling laws 关注 training-time compute(训练时的计算量)。Test-time compute scaling 则关注在推理时投入更多计算来提升性能:
- Best-of-N Sampling:生成 N 个回答,用 reward model 选择最佳。N 越大,效果越好
- Tree Search:在推理过程中进行树搜索(类似 MCTS),探索不同的推理路径
- Iterative Refinement:让模型多次修改自己的回答,逐步提升质量
- Long Thinking:通过 RL 训练让模型在推理时花更多 token 进行思考(如 o1 和 R1)
Compute Optimal 的新维度
Test-time compute scaling 为 "compute optimal" 的讨论增加了新的维度。以前我们只需要考虑 "给定 training budget,如何分配模型大小和数据量"。现在还需要考虑 "给定总 compute budget(training + inference),如何在 training-time 和 test-time 之间分配"。有时候训练一个较小的模型,但在推理时投入更多计算(如 best-of-N),可能比训练一个更大的模型更高效。
6.3 其他前沿方向
- Multimodal Alignment:将 alignment 方法扩展到视觉、音频等多模态场景
- Agent Alignment:当 LLM 作为 agent 与环境交互时(如执行代码、浏览网页),alignment 面临新的挑战
- Scalable Oversight:随着 AI 系统变得更强,人类如何有效地监督和评估超过自己能力范围的 AI 输出
- Mechanistic Interpretability:理解模型内部的工作机制,为 alignment 提供更深层的保障
7. 课程总结与展望
至此,CS336 课程的全部内容结束。让我们回顾课程的核心线索:
7.1 五大模块回顾
| 模块 | 讲次 | 核心内容 |
|---|---|---|
| 基础 (Basics) | 1-3 | Tokenization (BPE), Transformer 架构, PyTorch 基础, 训练循环 |
| 系统 (Systems) | 4-8, 10 | MoE, GPU 架构, Triton kernels, Flash Attention, 分布式训练 (DDP, FSDP, TP, PP), Inference 优化 (KV Cache, vLLM) |
| 规模 (Scaling) | 9, 11 | Scaling Laws (Chinchilla), IsoFLOP analysis, Compute-optimal training |
| 数据 (Data) | 12-14 | Evaluation (benchmarks, contamination), 数据来源与清洗, Deduplication (MinHash + LSH), 数据混合策略 |
| 对齐 (Alignment) | 15-17 | SFT, RLHF (PPO), RLVR (GRPO), DPO, Expert Iteration, Constitutional AI, RLAIF |
7.2 课程的核心思想
贯穿整个课程的几个核心思想:
- Understanding through Building(通过构建来理解):这门课程的最大特色是要求学生从零实现每个组件。只有亲手写过 BPE tokenizer、Transformer、Flash Attention、分布式训练和 RLHF,才能真正理解这些技术的原理和 trade-off。
- Scaling is the Key(规模是关键):从 Scaling Laws 到数据处理到分布式训练,规模无处不在。理解如何高效地 scale up 是 LLM 工程的核心能力。
- Data Quality Matters(数据质量至关重要):从数据来源选择到清洗过滤到去重混合,数据的每一个环节都直接影响模型性能。"模型的上限取决于数据"。
- Systems Co-design(系统协同设计):算法和系统不是独立的。Flash Attention 是算法与 GPU 内存层次结构的协同设计;分布式训练策略需要根据模型大小和硬件拓扑来选择;Inference 优化需要理解 KV Cache 的内存特性。
- Alignment is Not Optional(对齐不可或缺):Pre-training 只是起点,alignment 决定了模型是否真正有用。从 SFT 到 RLHF 到 RLVR,alignment 技术正在快速发展。
7.3 展望未来
LLM 领域仍在快速发展,以下方向值得持续关注:
- 更高效的训练:新的架构(如 State Space Models)、更好的优化算法、更高效的硬件利用
- 更强的推理能力:通过 RL 和 test-time compute scaling 提升复杂推理任务的表现
- 多模态统一:文本、图像、音频、视频的统一理解和生成
- Agent 能力:让 LLM 能够规划、使用工具、与环境交互
- 安全与可控性:随着模型能力增强,确保 AI 系统安全可控的重要性日益增加
写在最后
从 BPE tokenizer 到 RLHF,从 GPU kernel 到 Scaling Laws,这门课程覆盖了构建语言模型所需的全部核心技术。但技术只是工具,真正重要的是用这些工具解决实际问题、创造价值。希望这些知识能帮助你在 LLM 的时代中找到自己的方向。