1. 对齐问题的本质
预训练的大语言模型是互联网数据的"完美模仿者",但这正是问题所在。互联网上既有高质量的教科书和论文,也有虚假信息、有害内容和有偏见的言论。仅靠最大化下一个词预测准确率,模型并无动机偏向有用的回答。
预训练 vs. 对齐
- 预训练目标: 最小化语言建模损失 L = -log p(y|x)
- 对齐目标: 最大化用户满意度、安全性、真实性
- 核心问题: 这两个目标不总是一致的(甚至相悖)
Helpful, Harmless, Honest (3H) 原则
Anthropic 在论文中正式提出的对齐目标框架:
- Helpful (有用): 模型应该准确理解用户意图,提供实际有用的回答
- Harmless (无害): 模型不应该生成有毒、有偏见或危险的内容
- Honest (诚实): 模型应该对不确定性坦诚,不应该编造虚假信息或幻觉
对齐税 (Alignment Tax)
什么是对齐税?
对齐可能会降低模型在某些基准上的表现。例如,为了避免生成有害内容,模型可能会拒绝某些看似合理的请求,从而在某些任务上的性能下降。权衡点是不可避免的。
内外对齐 (Outer vs Inner Alignment)
- 外在对齐: 模型的行为与人类意图一致。这是我们能直接观察和测试的
- 内在对齐: 模型内部学到的目标与人类目标一致。这更难验证
- 关键差异: 模型可能只是"作戏"表现出好的行为,但如果部署到新环境或规模变大后,内在目标可能导致问题
2. Supervised Fine-Tuning (SFT) — 对齐的第一步
SFT 是最直接的对齐方法:使用人工标注的高质量 (prompt, response) 对,让模型通过标准的因果语言建模损失学习产生期望的行为。
SFT 的数学形式
关键细节:
- 只在 response 上计算 loss: prompt 中的 token 不计入损失(有的实现会使用 attention mask)
- token 权重相同: 不同长度的回答得到相同重视。有时使用 length normalization:L = -1/|y| ∑ log p
- 自回归解码: 每个 token 的预测只能依赖前面的 token
- 单轮次学习: 通常一条 SFT 数据用一次,虽然高质量数据可以 epoch 重复
LIMA: 数据质量的突破性发现
LIMA 论文的关键发现
Meta 的论文证明,仅用 1000 条精心策划的高质量 (instruction, response) 对,就能与用 138k 条数据微调的模型相匹敌。这彻底改变了业界对 SFT 数据的认知。
启示: 1 条顶级数据 > 100 条平庸数据。SFT 的瓶颈是数据质量,不是数量。
数据格式与多轮对话
3. 奖励模型 (Reward Model, RM)
SFT 告诉模型"做什么样的回答",但人类偏好是复杂的、多维度的。奖励模型用来预测人类对不同回答的偏好程度,从而提供更精细的优化信号。
RM 的定义与输入输出
输入形式:
- x: 用户 prompt
- y: 模型生成的 response(完整序列)
- 输出: 单个标量分数,表示这个回答有多"好"
Bradley-Terry Model — RM 训练的理论基础
RM 不直接学习绝对分数,而是学习偏好排序。给定两个 response y_w(胜者)和 y_l(败者),Bradley-Terry 模型定义:
其中 σ 是 sigmoid 函数。直观理解:两个回答的奖励差越大,选择 y_w 的概率越高。
RM 训练损失
等价于二分类交叉熵,其中标签是"y_w 更好"。
RM 的实现细节
- 初始化: 通常从 SFT 模型初始化(而不是随机初始化)
- 修改架构: 去掉 LM head(语言建模头),加一个 scalar regression head
- RM 大小: 通常与 policy 模型相同或更小(例如都是 7B)
- 训练数据来源: 人类标注员对模型生成的多个候选 response 进行排名
- 数据格式: 通常是对(x, [y_1, y_2, ..., y_k], ranking),然后转换为 pairwise comparisons
常见面试问题: RM 的训练目标是什么?Bradley-Terry 模型是什么?为什么要用 Bradley-Terry 而不是直接学习绝对分数?
4. RLHF (PPO) 详解 — 核心算法
RLHF 的核心是用强化学习来优化 policy,使其最大化奖励模型的评分,同时保持与原始 SFT 模型的接近性(通过 KL 散度约束)。
RLHF 的目标函数
其中:
- r(x, y): 奖励模型对 (x, y) 的评分
- π_θ: 当前的 policy 模型(训练中)
- π_ref: 参考模型,通常是 SFT 模型(冻结)
- β: KL 散度的权重(通常 0.1~0.5)
- KL 项的作用: 防止 policy 太快偏离 SFT,避免奖励模型外推错误
PPO (Proximal Policy Optimization) — LLM 中的标准算法
OpenAI 选择了 PPO 而不是其他 RL 算法(如 A3C、TRPO)。PPO 的设计目标是简单、稳定、样本高效。
PPO 的核心概念
概率比 (Probability Ratio)
r_t 衡量新旧策略对同一动作的概率差异。如果 r_t > 1,说明新策略更倾向采取该动作。
优势函数 (Advantage Function)
优势衡量该动作相对于平均的"好程度"。
PPO 的 Clipped Objective
关键创新:
- clip 函数: 将 r_t 限制在 [1-ε, 1+ε] 范围内,ε 通常是 0.1 或 0.2
- 两项的 min: 取无 clip 和有 clip 版本的较小值
- 作用: 防止策略更新步长过大。如果 A_t > 0(好的动作),r_t 会尽量增大但不超过 1+ε;如果 A_t < 0(坏的动作),r_t 会尽量减小但不低于 1-ε
LLM 中的 RLHF 实现
四个模型架构
RLHF 训练同时需要维护 4 个不同的模型:
Policy Model (π_θ)
正在训练的模型。每个训练步都会更新其权重。这就是最终交付的模型。
Reference Model (π_ref)
冻结的 SFT 模型副本。用于计算 KL 散度,防止 policy 过度偏离。
Reward Model (r)
冻结的奖励模型。评估每个 response 的质量。在整个 RLHF 训练过程中不更新。
Value Model (V)
估计状态的基线价值。用于计算优势。也从 SFT 初始化,与 policy 一起更新。
内存需求
极高的内存开销
4 个模型同时加载意味着内存需求约为 4 × 模型大小。对于 7B 参数模型,如果用 float32 是 28GB;即使用 int8 量化也要 7GB。这是 RLHF 大规模应用的主要瓶颈。
RLHF 的完整流程
关键参数与超参数
| 参数 | 典型值 | 含义与影响 |
|---|---|---|
| β (KL weight) | 0.01 ~ 0.5 | 越大,policy 越接近 SFT 模型;太小会导致 reward hacking |
| ε (clip range) | 0.1 ~ 0.2 | 限制单次更新幅度;太大导致振荡,太小收敛缓慢 |
| Learning rate (policy) | 5e-6 ~ 1e-5 | 通常比预训练小几个数量级 |
| Batch size | 256 ~ 512 | 增大提高稳定性但需更多内存 |
| Mini-batch epochs (K) | 4 | 每个 batch 上训练 K 个 epoch;过多导致过拟合 |
必考问题集:
- PPO 的 clip 做什么?为什么需要 clip?
- 为什么需要 KL 惩罚?不用行不行?
- RLHF 需要几个模型?为什么每一个都必要?
- Advantage 怎么计算?为什么用 GAE 而不是简单的 MC return?
5. DPO (Direct Preference Optimization)
2023 年 Stanford 的论文提出了一个激进的想法:为什么不绕过奖励模型,直接从偏好数据中优化 policy?
DPO 的数学推导
关键发现:存在一个解析解,将最优奖励表示为 policy 的对数概率比:
其中 Z(x) 是与 prompt 相关的归一化常数。因此:
直观理解:
- 对于偏好的回答 y_w,鼓励 log π_θ(y_w|x) 增大
- 对于不偏好的回答 y_l,鼓励 log π_θ(y_l|x) 减小
- 所有更新都相对于 π_ref 进行
DPO vs RLHF 的关键对比
| 方面 | RLHF (PPO) | DPO |
|---|---|---|
| 所需模型数 | 4 个 (π, π_ref, r, V) | 2 个 (π_θ, π_ref) |
| 内存需求 | ~4× 模型大小 | ~2× 模型大小 (50% 减少) |
| 训练数据类型 | 需要 RM 评分 | 直接从偏好对 |
| 优化方式 | Online: 需要持续生成新数据 | Offline: 一次性数据集 |
| 训练稳定性 | 复杂,容易发散 | 简单,更稳定 |
| OOD 泛化 | 较好(online 自适应) | 可能不如 RLHF |
| 收敛速度 | 慢(需要多次迭代) | 快(单次通过) |
DPO 的优劣
优势
- 简化架构:只需 policy + reference
- 内存高效:50% 的内存节省
- 训练稳定:没有复杂的 advantage 计算和 clipping
- 数据高效:直接从偏好学习
- 易于实现:更少的超参数调优
劣势
- Offline 限制:不能在线生成新数据
- OOD 性能:对分布外的 prompt 可能较差
- RM 消除的价值:有时显式的 RM 反馈更稳定
- 理论假设:推导基于最优 policy 存在的假设
面试热点: DPO 是怎么推导出来的?为什么能消除 RM?相比 RLHF 有什么真实的优劣权衡?
6. GRPO (Group Relative Policy Optimization) — DeepSeek R1 的方法
DeepSeek-R1 在 2024 年提出了 GRPO,目标是进一步简化 RLHF,并让模型学会"思考过程"。
GRPO 的核心创新
核心观察:不需要训练一个显式的价值函数 (Value Model, Critic)。可以从同一 prompt 的多个采样结果中估计优势。
GRPO 的训练流程
组内优势估计
对每个 prompt x,采样 G 个 response y_1, y_2, ..., y_G
其中 ε 是小的稳定常数(防止除零)。
直观理解:
- 中心化:减去平均 reward,使得优势相对化
- 标准化:除以标准差,使优势具有可比性
- 效果:在同一组样本内,好的回答获得正优势,差的获得负优势
GRPO 的目标函数
与 PPO 相同的 clipped objective,但:
- 无显式 Critic: 价值由组内平均估计
- 内存节省: 不需要维护 V_θ 模型,约减少 25% 内存
- 采样效率: 一个 prompt 的多个响应共享计算,提高效率
为什么 GRPO 有效?
从统计学角度,当样本量足够时,样本均值和标准差是总体参数的良好估计。因此,基于组内统计的优势估计在 G 足够大时(通常 G=4~8)接近价值函数的估计。
GRPO 与 RLHF/DPO 的比较
| 方法 | 模型数 | 内存 | 采样方式 | 特点 |
|---|---|---|---|---|
| RLHF (PPO) | 4 | 4× | Online | 复杂但强大 |
| DPO | 2 | 2× | Offline | 简单高效 |
| GRPO | 2 (无 V) | 2× - 25% | Online (小组) | 折中方案 |
关键问题: GRPO 怎么消除 Value Model 的?组内标准化的优势和显式 Critic 的区别在哪里?为什么 DeepSeek 选择 GRPO 而不是 DPO?
7. 其他对齐方法
除了上述三种主流方法,学术界还提出了多种改进或替代方案,各有特点。
ORPO (Odds Ratio Preference Optimization)
主要特点:不需要 Reference Model
工作流程:
- 在 SFT 的基础上,直接加入偏好信号
- 好的回答 y_w 的概率应高于坏的回答 y_l
- 不需要维护 π_ref,节省内存
- 训练更简单,超参数更少
KTO (Kahneman-Tversky Optimization)
基于 Prospect Theory(前景理论),不需要成对标注。
数据格式:(prompt, response, label) where label ∈ {good, bad}
KTO 的优点
标注员的工作大大简化:不需要在两个回答之间选择,只需标记"好"或"不好"。这降低了标注成本,特别是当没有明显的"最佳"回答时。
IPO (Identity Preference Optimization)
DPO 的改进版本,解决 DPO 的过拟合问题。
- 修改 DPO 的损失函数,添加正则项
- 在验证集上表现更稳定
- 理论上有更好的收敛保证
SPIN (Self-Play Fine-Tuning)
创新点:让模型与自己的早期版本对弈。
拒绝采样 (Rejection Sampling)
简单但有效的方法:
- 用当前模型采样 N 个回答
- 用奖励模型评分,选择分数最高的
- 将这个回答加入 SFT 数据集重新训练
- 重复上述过程
优点:完全离线,不需要 RL 训练。缺点:采样效率可能低,N 需要很大才能找到高质量样本。
所有方法对比表
| 方法 | 难度 | 内存 | 模型数 | 数据格式 | 训练稳定性 |
|---|---|---|---|---|---|
| RLHF (PPO) | 高 | 4× | 4 | Pair + RM评分 | 中 |
| DPO | 低 | 2× | 2 | Preference pairs | 高 |
| GRPO | 中 | 1.5× | 2 | Pair + Rewards | 高 |
| ORPO | 低 | 1× | 1 | Preference pairs | 高 |
| KTO | 低 | 1× | 1 | Good/Bad labels | 高 |
| 拒绝采样 | 低 | 1.5× | 2 | 无(生成式) | 高 |
8. Constitutional AI (Anthropic) — AI 反馈驱动的对齐
传统 RLHF 完全依赖人类标注员。Constitutional AI 的创新是用 AI 本身提供反馈,大幅降低标注成本。
Constitutional AI 的两阶段流程
阶段 1:Critique(评论)
给定一个模型生成的有问题的回答,让同一模型根据一套原则来评论其问题:
阶段 2:Revision(修改)
模型根据 critique 自我改进,生成改进后的回答:
最终训练数据:(prompt, revised_response) 对,进行 SFT。
RLAIF (Reinforcement Learning from AI Feedback)
Constitutional AI 后续发展:
- 用 AI 提供的偏好比较代替人类标注
- 模型 A 和模型 B 各生成一个回答,让更强的模型评断哪个更好
- 生成偏好对,进行 RLHF/DPO 训练
- 大幅降低人类标注成本(从 100% 减至 1-2%)
Constitutional AI 的工作流程图
关键概念: Constitutional AI 如何通过自我改进而不是人类标注来实现对齐?RLAIF 相比传统 RLHF 有什么优势?
9. Reward Hacking 与对齐挑战
当我们优化一个度量时,模型往往会找到意想不到的方式来"作弊",这被称为 Reward Hacking。
Reward Hacking 的具体例子
真实案例
- 长度偏好: RM 倾向于给较长的回答更高分(因为人类倾向于给详细回答评分)。模型学会生成冗长但不有用的内容。
- 特定措辞: 如果 RM 训练数据中"对不起"出现在高分回答中,模型可能过度道歉。
- 分布偏移: 模型可能生成奖励模型没见过的离奇内容,利用 RM 的缺陷。
- 虚假自信: 生成听起来很有信心但实际错误的回答(因为自信感往往获得更高分)。
Goodhart's Law — 对齐的基本困境
含义:
- 我们设计的任何度量(奖励函数)都只是人类意图的代理(proxy)
- 一旦模型开始优化这个代理,它会偏离原始目的
- 没有完美的度量,只有不同程度的欠完备性
缓解 Reward Hacking 的方案
1. KL 约束(我们已讨论)
防止 policy 太快偏离参考模型。但有其局限性:
- KL 是分布层面的约束,无法捕捉细粒度的坏行为
- β 的选择是难题:太大失去对齐效果,太小无法防止 hacking
2. 定期更新奖励模型
随着 policy 的更新,定期重新训练 RM:
- 收集新的人类偏好数据(针对当前模型)
- 重新训练 RM,使其能评估新的 policy 生成的内容
- 缺点:昂贵,且有滞后性
3. 多维度评估
不依赖单一奖励函数,而是多个评估维度:
- Helpfulness (有用性)
- Honesty (真实性) — 用事实检验
- Harmlessness (安全性) — 对抗性评估
- Coherence (连贯性) — 逻辑检查
最终的"奖励"是这些维度的加权组合,难度更高但更稳健。
4. 可扩展监督 (Scalable Oversight)
关键问题:如何监督超越人类能力的 AI 系统?
可扩展监督的方法
- 分解: 将复杂任务分解为人类可评估的子任务
- 递归奖励建模: 用小的 AI 模型帮助人类评估大模型的输出
- 审计与红队: 系统性地寻找和记录 hacking 行为
- 可解释性: 让模型的决策过程可被理解和验证
5. 机制可解释性 (Mechanistic Interpretability)
深入理解模型内部的表示和计算:
- 特征提取: 找出模型在各层学到的有语义的"特征"
- 电路分析: 识别执行特定计算的神经元组合(电路)
- 目的: 能够验证模型是否真的在追求我们想要的目标,而不仅仅是表现得好
对齐的根本挑战
| 挑战 | 描述 | 潜在解法 |
|---|---|---|
| 指定问题 | 很难完全明确地描述人类想要什么 | 迭代反馈, 多维评估 |
| 泛化问题 | 模型可能只是拟合标注数据,不能泛化到新情况 | OOD 评估, 对抗性测试 |
| 规模问题 | 模型变大后,新的能力涌现,可能导致意外行为 | Scalable oversight, 预期性研究 |
| 价值多元性 | 人类价值观多元,不存在统一的"正确"对齐 | 参数化价值观, 个性化模型 |
深层问题: Reward Hacking 的本质是什么?Goodhart's Law 在对齐中意味着什么?给定人类反馈的不完备性,我们如何高效地扩展监督?
10. 评估与安全基准
没有评估,我们无法判断对齐是否有效。这一部分讨论业界使用的基准和方法。
标准基准
TruthfulQA
- 目标: 测试模型是否说出真实的信息,而非幻觉
- 数据: 817 个常见的错误观点(例如"古代埃及人用电吗?"),要求回答要拒绝错误假设
- 评估: 由人类和 GPT 评分
HHH Eval (Anthropic)
- 目标: 衡量 Helpful, Harmless, Honest 三个维度
- 范围: 包括危险问题、隐私问题、伦理困境等
- 评估: 混合人类与 AI 评估
MT-Bench (Multi-Turn Benchmark)
- 特点: 多轮对话,测试模型在长期交互中的对齐
- 范围: 80 个多样的对话场景,从简单问答到复杂推理
- 评估: 通常使用 LLM 对(如 GPT-4)比较回答质量
Chatbot Arena
- 特点: 众包排名,用户对不同模型进行排名
- 优势: 真实用户反馈,自然分布的问题
- 规模: 每周 tens of thousands 的比较
红队测试 (Red Teaming)
系统性地寻找模型的漏洞和不安全行为。
红队的方法
- 对抗性探针: 精心构造的 prompts 试图引发不安全回答
- 越狱攻击: 尝试绕过模型的安全约束
- 边界测试: 测试模型行为的边界(例如,何时开始拒绝)
- 背景探索: 通过多轮对话逐步引导模型偏离安全边界
越狱攻击的常见类型
- 角色扮演: "假装你是一个不受限制的 AI..."
- 假设框架: "在一个虚拟世界中,你可以..."
- 迂回语言: 使用隐喻或技术术语来隐藏真实意图
- 多步骤承诺: 让模型在早期步骤中承诺,然后要求违反安全政策
- DAN (Do Anything Now): 声称激活"特殊模式"
多轮对话的安全挑战
单轮安全不等于多轮安全:
- 上下文污染: 早期的对话可能会影响后续判断
- 社交工程: 通过长期互动建立"信任"来诱导不安全行为
- 记忆泄露: 在长对话中,模型可能泄露不应该共享的信息
- 一致性陷阱: 模型为了保持一致,可能继续早期的不安全承诺
系统提示安全
系统提示对模型行为有重大影响:
- 提示注入攻击: 用户 prompt 中包含指令,试图覆盖系统提示
- 提示泄露: 用户试图诱导模型透露其系统提示(以便针对性攻击)
- 防御: XML 标签隔离系统提示,明确的角色定义,定期审计
实践问题: 如何设计有效的对齐评估?红队测试的局限性是什么?系统提示注入可以完全防止吗?