人类对齐
问题
什么是对齐(Alignment)?SFT、RLHF、DPO 分别是什么?如何让 LLM 既有用又安全?
答案
对齐(Alignment) 是将 LLM 的行为调整为符合人类期望的过程——让模型有帮助(Helpful)、诚实(Honest)、无害(Harmless),即"3H 原则"。
一、从 Base Model 到 Chat Model
| 阶段 | 输入 | 输出行为 | 训练数据 |
|---|---|---|---|
| Base Model | "写一封邮件" | 可能续写"给老板的格式是..."(不执行) | 互联网文本 |
| SFT | "写一封邮件" | 直接写一封邮件(执行指令) | 人工标注的指令-回复对 |
| RLHF/DPO | "写一封邮件" | 写出高质量、安全、有帮助的邮件 | 人类偏好排序 |
二、SFT(Supervised Fine-Tuning)
用高质量的指令-回复对微调 Base Model,教会模型"听懂指令并执行"。
数据格式
{
"messages": [
{"role": "system", "content": "你是一个有帮助的助手。"},
{"role": "user", "content": "解释什么是递归"},
{"role": "assistant", "content": "递归是指函数调用自身的编程技巧..."}
]
}
关键要点
- 数据量不需要很大(1K-100K 条就足够)
- 数据质量极其重要——少量高质量数据 > 大量低质量数据
- Loss 只计算 assistant 的回复部分(不计算 user 的输入部分)
三、RLHF(Reinforcement Learning from Human Feedback)
RLHF 是 ChatGPT 的核心训练方法,分为三步:
奖励模型(Reward Model)
- 输入:Prompt + 回复
- 输出:标量分数(越高表示回复越好)
- 训练:从人类排序的偏好数据中学习
PPO 目标函数
- 第一项:最大化奖励(但不要变化太大)
- 第二项:KL 惩罚——防止模型偏离参考模型太远(避免 reward hacking)
四、DPO(Direct Preference Optimization)
DPO 是 2023 年提出的 RLHF 替代方案——不需要训练单独的奖励模型。
核心思想
直接将偏好数据转化为策略优化目标:
- :人类偏好的回复(winner)
- :人类不偏好的回复(loser)
- 直觉:增加好回复的概率,降低差回复的概率
RLHF vs DPO
| 对比 | RLHF | DPO |
|---|---|---|
| 训练阶段 | 3 阶段 | 2 阶段(跳过 RM) |
| 复杂度 | 高(需要 RM + PPO) | 低(一个 Loss 函数) |
| 稳定性 | PPO 不稳定,超参敏感 | 更稳定 |
| 性能上限 | 理论上更高 | 接近 RLHF |
| 实际使用 | GPT-4、Claude | LLaMA 3、Mistral、Qwen |
DPO 为什么成为主流?
DPO 实现简单、训练稳定、效果接近 RLHF,且不需要维护一个单独的奖励模型。对于大多数团队来说,DPO 是性价比最高的对齐方案。
五、其他对齐方法
| 方法 | 特点 |
|---|---|
| ORPO | 无需参考模型,将 SFT 和偏好优化合为一步 |
| KTO | 不需要偏好对,只需要"好/坏"标签 |
| SPIN | 自我对弈,用自身生成的数据迭代对齐 |
| Constitutional AI | 用 AI 自身做评判(Anthropic 的方法) |
| GRPO | DeepSeek-R1 使用的强化学习方法 |
六、对齐税(Alignment Tax)
对齐有代价——对齐后的模型在某些维度上可能退化:
- 创造力降低(过度安全导致拒绝合理请求)
- 部分知识丢失(灾难性遗忘)
- 讨好用户(sycophancy,总是同意用户观点)
常见面试问题
Q1: SFT 和 RLHF 的区别是什么?各自解决什么问题?
答案:
- SFT 教模型"如何回答"——格式、风格、指令跟随
- RLHF 教模型"什么是好回答"——质量、安全性、人类偏好
SFT 像教学生"模仿标准答案",RLHF 像让学生"理解什么是好答案"。只做 SFT 的模型会生硬地模仿训练数据的风格,RLHF 让模型学会泛化到新场景。
Q2: DPO 相比 RLHF 的优势是什么?
答案:
- 简单:不需要训练单独的奖励模型
- 稳定:没有 PPO 的超参调优难题
- 高效:训练流程从 3 阶段简化为 2 阶段
- 效果好:在多数评测上接近或达到 RLHF 水平
Q3: 什么是 Reward Hacking?如何防止?
答案: Reward Hacking 是模型学会了"欺骗"奖励模型获取高分,但实际回复质量并没有提升。例如模型发现"生成更长的回复"总是得到更高分,就开始注水。防止方法:
- KL 散度约束:限制策略不能偏离参考模型太远
- 改进奖励模型:提高 RM 的鲁棒性
- 人工评估:定期检查模型行为
Q4: Constitutional AI 是什么?
答案: Anthropic 提出的方法——用 AI 评判 AI。流程:
- 让模型生成多个回复
- 让另一个 AI(或自身)根据"宪法原则"(如"不歧视"、"诚实")评判哪个更好
- 用这些 AI 生成的偏好数据做 DPO/RLHF
好处:减少人工标注成本,可扩展到更多场景。Claude 的安全性很大程度来自 Constitutional AI。