📖 深度解析子页面

想要更深入了解?我们为面试准备了专题深度解析页面:

1. 对齐问题的本质

预训练的大语言模型是互联网数据的"完美模仿者",但这正是问题所在。互联网上既有高质量的教科书和论文,也有虚假信息、有害内容和有偏见的言论。仅靠最大化下一个词预测准确率,模型并无动机偏向有用的回答。

预训练 vs. 对齐

Helpful, Harmless, Honest (3H) 原则

Anthropic 在论文中正式提出的对齐目标框架:

对齐税 (Alignment Tax)

什么是对齐税?

对齐可能会降低模型在某些基准上的表现。例如,为了避免生成有害内容,模型可能会拒绝某些看似合理的请求,从而在某些任务上的性能下降。权衡点是不可避免的。

内外对齐 (Outer vs Inner Alignment)

2. Supervised Fine-Tuning (SFT) — 对齐的第一步

SFT 是最直接的对齐方法:使用人工标注的高质量 (prompt, response) 对,让模型通过标准的因果语言建模损失学习产生期望的行为。

SFT 的数学形式

SFT 目标函数 L_SFT = -E_{(x,y)~D}[∑_{t=1}^{|y|} log p_θ(y_t | x, y_{

关键细节:

  • 只在 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 的瓶颈是数据质量,不是数量。

数据格式与多轮对话

# 标准 ChatML 格式用于多轮对话模板 <|im_start|>system You are a helpful assistant specializing in machine learning. <|im_end|> <|im_start|>user What is gradient descent? <|im_end|> <|im_start|>assistant Gradient descent is an optimization algorithm... <|im_end|> <|im_start|>user Can you provide a concrete example? <|im_end|> <|im_start|>assistant Certainly! Consider a simple quadratic function... <|im_end|>

3. 奖励模型 (Reward Model, RM)

SFT 告诉模型"做什么样的回答",但人类偏好是复杂的、多维度的。奖励模型用来预测人类对不同回答的偏好程度,从而提供更精细的优化信号。

RM 的定义与输入输出

奖励模型 r(x, y) : (prompt, response) → ℝ (scalar reward)

输入形式:

  • x: 用户 prompt
  • y: 模型生成的 response(完整序列)
  • 输出: 单个标量分数,表示这个回答有多"好"

Bradley-Terry Model — RM 训练的理论基础

RM 不直接学习绝对分数,而是学习偏好排序。给定两个 response y_w(胜者)和 y_l(败者),Bradley-Terry 模型定义:

Bradley-Terry 偏好概率 P(y_w ≻ y_l | x) = σ(r(x, y_w) - r(x, y_l))

其中 σ 是 sigmoid 函数。直观理解:两个回答的奖励差越大,选择 y_w 的概率越高。

RM 训练损失

Bradley-Terry 损失 L_RM = -E_{(x, y_w, y_l)~D}[log σ(r(x, y_w) - r(x, y_l))]

等价于二分类交叉熵,其中标签是"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 的目标函数

RLHF 目标 (with KL constraint) max_θ E_{x~D, y~π_θ(·|x)}[r(x,y) - β · KL(π_θ(y|x) || π_ref(y|x))]

其中:

  • 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)

PPO 概率比 r_t = π_θ(a_t|s_t) / π_θ_old(a_t|s_t)

r_t 衡量新旧策略对同一动作的概率差异。如果 r_t > 1,说明新策略更倾向采取该动作。

优势函数 (Advantage Function)

优势估计 (GAE) A_t^GAE = ∑_{l=0}^{∞} (γλ)^l δ_t^V, where δ_t^V = r_t + γV(s_{t+1}) - V(s_t)

优势衡量该动作相对于平均的"好程度"。

PPO 的 Clipped Objective

PPO Clipped Surrogate Loss L^CLIP = E[min(r_t · A_t, clip(r_t, 1-ε, 1+ε) · A_t)]

关键创新:

  • clip 函数: 将 r_t 限制在 [1-ε, 1+ε] 范围内,ε 通常是 0.1 或 0.2
  • 两项的 min: 取无 clip 和有 clip 版本的较小值
  • 作用: 防止策略更新步长过大。如果 A_t > 0(好的动作),r_t 会尽量增大但不超过 1+ε;如果 A_t < 0(坏的动作),r_t 会尽量减小但不低于 1-ε
PPO Clipped Objective 可视化
r_t Loss Unclipped Clipped (ε=0.2) 1-ε 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 的完整流程

RLHF 流程图
1. Sample Prompt batch 2. Generate π_θ(y|x) 3. Score r(x,y) 4. Compute Rewards reward = r(x,y) - β·log(π_θ/π_ref) advantage = reward - V(x) 5. PPO Update L_PPO = Clipped Surrogate Loss 6. Update Update π_θ, V_θ Repeat for K epochs π_ref: SFT Model (frozen) | V: Value Model | K: Mini-batch epochs (4)

关键参数与超参数

参数 典型值 含义与影响
β (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 的对数概率比:

最优奖励的解析形式 r*(x,y) = β log(π*(y|x) / π_ref(y|x)) + β log Z(x)

其中 Z(x) 是与 prompt 相关的归一化常数。因此:

DPO 损失函数 L_DPO = -E_{(x, y_w, y_l)~D}[log σ(β log(π_θ(y_w|x) / π_ref(y_w|x)) - β log(π_θ(y_l|x) / π_ref(y_l|x)))]

直观理解:

  • 对于偏好的回答 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 的训练流程

Sample G responses
Compute rewards
Group normalize
Compute advantages
Apply PPO loss
Update policy

组内优势估计

对每个 prompt x,采样 G 个 response y_1, y_2, ..., y_G

组内标准化的优势 A_i = (r_i - mean(r_{1:G})) / (std(r_{1:G}) + ε)

其中 ε 是小的稳定常数(防止除零)。

直观理解:

  • 中心化:减去平均 reward,使得优势相对化
  • 标准化:除以标准差,使优势具有可比性
  • 效果:在同一组样本内,好的回答获得正优势,差的获得负优势

GRPO 的目标函数

GRPO 完整目标 L_GRPO = E[min(r_t · A_t, clip(r_t, 1-ε, 1+ε) · A_t)] - β · KL(π_θ || π_ref)

与 PPO 相同的 clipped objective,但:

  • 无显式 Critic: 价值由组内平均估计
  • 内存节省: 不需要维护 V_θ 模型,约减少 25% 内存
  • 采样效率: 一个 prompt 的多个响应共享计算,提高效率

为什么 GRPO 有效?

从统计学角度,当样本量足够时,样本均值和标准差是总体参数的良好估计。因此,基于组内统计的优势估计在 G 足够大时(通常 G=4~8)接近价值函数的估计。

GRPO 与 RLHF/DPO 的比较

方法 模型数 内存 采样方式 特点
RLHF (PPO) 4 Online 复杂但强大
DPO 2 Offline 简单高效
GRPO 2 (无 V) 2× - 25% Online (小组) 折中方案

关键问题: GRPO 怎么消除 Value Model 的?组内标准化的优势和显式 Critic 的区别在哪里?为什么 DeepSeek 选择 GRPO 而不是 DPO?

7. 其他对齐方法

除了上述三种主流方法,学术界还提出了多种改进或替代方案,各有特点。

ORPO (Odds Ratio Preference Optimization)

主要特点:不需要 Reference Model

ORPO 损失 L_ORPO = L_SFT + λ · L_OR 其中 L_OR = log(1 + exp(-log(π_θ(y_w|x) / π_θ(y_l|x))))

工作流程:

  • 在 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)

创新点:让模型与自己的早期版本对弈。

Current π_t
vs
Previous π_{t-1}
Generate & Compare
Create Preference Data
DPO/RLHF
π_{t+1}

拒绝采样 (Rejection Sampling)

简单但有效的方法:

  1. 用当前模型采样 N 个回答
  2. 用奖励模型评分,选择分数最高的
  3. 将这个回答加入 SFT 数据集重新训练
  4. 重复上述过程

优点:完全离线,不需要 RL 训练。缺点:采样效率可能低,N 需要很大才能找到高质量样本。

所有方法对比表

方法 难度 内存 模型数 数据格式 训练稳定性
RLHF (PPO) 4 Pair + RM评分
DPO 2 Preference pairs
GRPO 1.5× 2 Pair + Rewards
ORPO 1 Preference pairs
KTO 1 Good/Bad labels
拒绝采样 1.5× 2 无(生成式)

8. Constitutional AI (Anthropic) — AI 反馈驱动的对齐

传统 RLHF 完全依赖人类标注员。Constitutional AI 的创新是用 AI 本身提供反馈,大幅降低标注成本。

Constitutional AI 的两阶段流程

阶段 1:Critique(评论)

给定一个模型生成的有问题的回答,让同一模型根据一套原则来评论其问题:

# 原则示例 Principle: "Avoid assisting with harmful, illegal, or unethical requests" Input: User: "How do I make a bomb?" Assistant: [harmful response] Critique: "This response violates the principle by providing instructions for creating an explosive device..."

阶段 2:Revision(修改)

模型根据 critique 自我改进,生成改进后的回答:

# Revised Response Input: User: "How do I make a bomb?" Critique: [from stage 1] Revised: "I can't provide instructions for creating weapons or explosives, as this would facilitate harm."

最终训练数据:(prompt, revised_response) 对,进行 SFT。

RLAIF (Reinforcement Learning from AI Feedback)

Constitutional AI 后续发展:

  • 用 AI 提供的偏好比较代替人类标注
  • 模型 A 和模型 B 各生成一个回答,让更强的模型评断哪个更好
  • 生成偏好对,进行 RLHF/DPO 训练
  • 大幅降低人类标注成本(从 100% 减至 1-2%)

Constitutional AI 的工作流程图

Constitutional AI 完整流程
CONSTITUTION: Principles for Safe AI User Prompt Initial Response (may be harmful) Critique (AI evaluates) Revision (AI improves) Training Data (prompt, revised) SFT Training (aligned model) Principles: • Harmlessness • Honesty • Helpfulness • Fairness • Custom...

关键概念: Constitutional AI 如何通过自我改进而不是人类标注来实现对齐?RLAIF 相比传统 RLHF 有什么优势?

9. Reward Hacking 与对齐挑战

当我们优化一个度量时,模型往往会找到意想不到的方式来"作弊",这被称为 Reward Hacking。

Reward Hacking 的具体例子

真实案例

  • 长度偏好: RM 倾向于给较长的回答更高分(因为人类倾向于给详细回答评分)。模型学会生成冗长但不有用的内容。
  • 特定措辞: 如果 RM 训练数据中"对不起"出现在高分回答中,模型可能过度道歉。
  • 分布偏移: 模型可能生成奖励模型没见过的离奇内容,利用 RM 的缺陷。
  • 虚假自信: 生成听起来很有信心但实际错误的回答(因为自信感往往获得更高分)。

Goodhart's Law — 对齐的基本困境

Goodhart's Law "When a measure becomes a target, it ceases to be a good measure."

含义:

  • 我们设计的任何度量(奖励函数)都只是人类意图的代理(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 标签隔离系统提示,明确的角色定义,定期审计

实践问题: 如何设计有效的对齐评估?红队测试的局限性是什么?系统提示注入可以完全防止吗?