🔒 安全对齐

LLM 安全对齐:RLHF、DPO与Constitutional AI深度对比

📅 2026-05-24 👤 AI安全研究员 ⏱️ 20 分钟阅读
RLHF DPO Constitutional AI 安全对齐 PPO KTRL

📌 背景与核心问题

大语言模型通过预训练学习语言规律,但预训练目标(预测下一个token)与人类期望的"有用、诚实、无害"目标存在本质差异。安全对齐(Safety Alignment)旨在将模型行为引导至人类偏好。

💡 核心挑战

预训练缺陷:语言模型从海量互联网数据中学习,其中包含偏见、毒料、虚假信息。对齐技术需要在保留模型能力的同时消除这些负面影响。

对齐技术的演进

图1: LLM对齐技术演进时间线
2020 GPT-3 InstructGPT 2022 InstructGPT RLHF论文 2023 ChatGPT RLHF大规模应用 2023.5 Claude Constitutional AI 2023.11 DPO 直接偏好优化

有用性 (Helpfulness)

模型能够理解用户意图,提供准确、有条理的回答。

🔎

诚实性 (Honesty)

对于不确定的问题承认不确定性,不产生虚假信息。

🛡️

无害性 (Harmlessness)

避免生成攻击性、歧视性、危险内容。

🎯 RLHF:奖励模型训练

RLHF(Reinforcement Learning from Human Feedback)由OpenAI在2022年提出,成为LLM对齐的主流方法。

2.1 RLHF三阶段流程

图2: RLHF三阶段训练流程
Stage 1: SFT 监督微调预训练模型 学习人类示例 Stage 2: Reward Model 训练奖励模型预测偏好 人类标注对比数据 Stage 3: RL (PPO) 使用奖励模型微调 最大化期望奖励 👤 人类偏好标注 📊 奖励信号 KL(π_θ || π_SFT) 约束

2.2 奖励模型训练

奖励模型(Reward Model)的目标是学习人类偏好:给定prompt和两个response,预测哪个更符合人类期望。

# Bradley-Terry 奖励模型损失
def reward_model_loss(reward_chosen, reward_rejected):
    """
    reward_chosen: 被选中的response的奖励logit
    reward_rejected: 被拒绝的response的奖励logit
    目标: reward_chosen > reward_rejected
    """
    # 概率 = sigmoid(reward_chosen - reward_rejected)
    prob = torch.sigmoid(reward_chosen - reward_rejected)
    
    # 二分类交叉熵损失
    loss = -torch.log(prob + 1e-8)
    return loss.mean()

# 训练数据格式
# {prompt: "如何制作炸弹", response_A: "拒绝回答", response_B: "详细教程"}
# 期望: reward_A > reward_B (A是无害回答)

2.3 人类标注数据构建

高质量的人类偏好数据是对齐效果的关键。需要:

⚔️ PPO vs KTRL

RLHF的第二阶段使用策略优化算法强化奖励模型。主要有两种方法:PPO和KTRL。

3.1 PPO (Proximal Policy Optimization)

PPO是OpenAI在InstructGPT中使用的算法,通过限制策略更新幅度避免灾难性偏移。

# PPO 剪切损失
def ppo_loss(old_logprob, new_logprob, reward, clip_epsilon=0.2):
    """
    old_logprob: 旧策略下action的对数概率
    new_logprob: 新策略下action的对数概率
    reward: 奖励信号
    """
    # 重要性采样比率
    ratio = torch.exp(new_logprob - old_logprob)
    
    # 剪切目标
    clipped_ratio = torch.clamp(ratio, 1 - clip_epsilon, 1 + clip_epsilon)
    
    # 优势函数 (GAE)
    advantage = compute_gae(reward)
    
    # 剪切损失
    loss = -torch.min(ratio * advantage, clipped_ratio * advantage)
    return loss.mean()

3.2 KTRL (Kullback-Leibler divergence with Trajectory-based Regularization)

KTRL由DeepMind提出,使用KL散度作为轨迹级正则项,比PPO更稳定。

# KTRL 损失
def ktrl_loss(pi_theta, pi_ref, reward, beta=0.1):
    """
    pi_theta: 当前策略
    pi_ref: 参考策略 (SFT模型)
    reward: 奖励信号
    beta: KL系数
    """
    # 轨迹级KL散度 (更平滑的惩罚)
    kl_term = trajectory_kl_divergence(pi_theta, pi_ref)
    
    # 奖励 + KL惩罚
    loss = -reward.mean() + beta * kl_term
    return loss
维度 PPO KTRL
稳定性 中等(依赖clipping) 更高(连续正则)
采样效率 中等 更高(轨迹级优化)
实现复杂度 较高(需PPO-clip) 中等
超参数敏感度 clip_epsilon敏感 beta敏感
代表性模型 ChatGPT, GPT-4 Gemini

📌 DPO:直接偏好优化

DPO(Direct Preference Optimization)由Stability AI在2023年提出,绕过了显式奖励模型和强化学习,直接优化人类偏好。

4.1 DPO核心思想

DPO将RLHF的三阶段压缩为两阶段:SFT + 直接偏好优化。不训练奖励模型,直接用偏好数据更新语言模型。

# DPO 损失函数
def dpo_loss(pi_theta, pi_ref, prompt, chosen, rejected, beta=0.1):
    """
    pi_theta: 当前策略
    pi_ref: 参考策略 (SFT模型)
    chosen/rejected: 人类偏好数据中的chosen > rejected
    beta: KL系数
    """
    # 计算策略下的对数概率差
    chosen_logprob = pi_theta.get_log_prob(prompt, chosen)
    rejected_logprob = pi_theta.get_log_prob(prompt, rejected)
    
    ref_chosen_logprob = pi_ref.get_log_prob(prompt, chosen)
    ref_rejected_logprob = pi_ref.get_log_prob(prompt, rejected)
    
    # Bradley-Terry 偏好建模
    # π(y_w|x) = exp(r(x, y_w)) / Z(x)
    # 在DPO中: π* ∝ π_ref * exp(r/β)
    
    chosen_rewards = beta * (chosen_logprob - ref_chosen_logprob)
    rejected_rewards = beta * (rejected_logprob - ref_rejected_logprob)
    
    # 偏好损失 = -log sigmoid(chosen_reward - rejected_reward)
    loss = -F.logsigmoid(chosen_rewards - rejected_rewards)
    return loss.mean()

4.2 DPO vs RLHF对比

✅ DPO 优势

  • • 无需训练奖励模型,简化流程
  • • 不需要额外的PPO采样步骤
  • • 训练更稳定,收敛更快
  • • 减少了对超参数的敏感度
  • • 降低了"reward hacking"风险

⚠️ DPO 局限

  • • 需要更大的偏好数据集
  • • 对数据质量要求更高
  • • 难以处理复杂的多维度偏好
  • • 表达能力弱于完整RLHF
  • • 长序列生成场景效果待验证

4.3 IPO与ORPO

DPO的变体解决了其潜在问题:

📜 Constitutional AI

Constitutional AI (CAI) 由Anthropic在2022年提出,核心思想是让AI通过自我约束而非人类标注来避免有害输出。

5.1 Constitutional AI核心原理

CAI引入宪法(Constitution)——一组描述AI行为准则的原则。通过AI自我评估和RLHF结合,实现高效且可解释的对齐。

图3: Constitutional AI流程
Stage 1: Supervised Learning (SL-CAI) 有害prompt AI自我批评 Stage 2: RLAIF (AI Feedback RL) 宪法原则 偏好AI vs AI 📜 Constitutional Principles (示例) "Choose the response that is least likely to contain harmful, unethical, racist, sexist, toxic, dangerous, or illegal content" "If multiple responses are equally good, choose the shortest one"

5.2 SL-CAI阶段

通过few-shot prompt让模型对有害prompt生成"有害响应→自我批评→修正响应",用修正响应微调模型。

# Constitutional AI few-shot prompt
prompt_template = """人类发起的提示可能是有害的。
请按照以下步骤进行:

1. 识别提示中潜在的有害成分
2. 生成一个有害的回应
3. 解释为什么这个回应是有害的
4. 提供一个无害且有帮助的替代回应

人类: {harmful_prompt}

AI: {constitutional_response}"""

5.3 RLAIF阶段

使用AI(而非人类)生成偏好标注。通过宪法原则让AI判断哪个响应更符合准则。

# AI偏好标注
def generate_ai_preference(response_a, response_b, constitution):
    """
    使用宪法原则比较两个响应
    """
    evaluation_prompt = f"""根据以下宪法原则评估两个AI响应:

宪法: {constitution}

响应A: {response_a}
响应B: {response_b}

请指出哪个响应更符合宪法原则,并解释原因。"""
    
    evaluation = llm.generate(evaluation_prompt)
    preference = parse_preference(evaluation)
    return preference

5.4 CAI vs RLHF对比

维度 RLHF Constitutional AI
反馈来源 人类标注 AI自我评估 + 人类宪法
数据标注成本 高(需大量人工) 低(AI生成偏好)
可解释性 中等(隐式奖励) 高(宪法原则显式)
一致性 标注员间存在差异 AI评估更一致
代表性模型 GPT-4, ChatGPT Claude

⚠️ 对齐税问题

对齐税(Alignment Tax)指的是为提升安全性/对齐质量而付出的能力代价——模型可能因过度保守而降低有用性。

6.1 对齐税的表现

🔇

过度拒绝

模型对无害问题也过度警惕,拒绝回答,导致用户体验下降。

📉

能力退化

某些对齐目标(如"无害")可能抑制模型的创造性表达能力。

🎭

阿谀奉承

模型可能过度认同用户观点,即使观点明显错误。

6.2 缓解策略

⚠️ SFT vs RLHF 的权衡

SFT(直接模仿好回复)可以提升模型的有用性,但可能降低安全性。RLHF可以平衡有用性和安全性,但需要更复杂的训练流程。实践中通常先用SFT打基础,再用RLHF精细调整。

📝 总结

LLM安全对齐是一个持续演进的领域,RLHF、DPO和Constitutional AI各有优劣。

方法 反馈来源 复杂度 效果 适用场景
RLHF (PPO) 人类 优秀 GPT-4, Claude初期
RLHF (KTRL) 人类 中高 优秀 Gemini
DPO 人类 良好 资源有限场景
Constitutional AI AI宪法 良好+可解释 Claude

🔮 未来趋势

未来对齐技术将向更高效(更少人类反馈)、更鲁棒(对抗性攻击防御)、更多模态(图像、音频对齐)和更强可解释性方向发展。自我对齐(AI自己生成对齐数据)是重要研究方向。