【大模型】- DPO:直接偏好优化
DPO:直接偏好优化
无需强化学习的简化对齐
类型: 学习 | 语言: Python | 🏷 前置:《DPO》(本系列第 7 篇)
学习目标
- 理解 DPO 与 RLHF 的区别
- 实现 DPO 损失函数
- 训练 DPO 模型
- 比较 DPO 和 RLHF 的性能
- 处理 DPO 训练的常见问题
DPO 概述
DPO(直接偏好优化)是一种简化的对齐方法,它直接从偏好数据优化策略,无需训练单独的奖励模型或使用强化学习。
DPO vs RLHF
| 方面 | RLHF | DPO |
|---|---|---|
| 奖励模型 | 需要单独训练 | 隐式包含在策略中 |
| 训练稳定性 | 较低(RL 不稳定) | 较高 |
| 计算成本 | 较高(PPO 复杂) | 较低 |
| 超参数 | 较多 | 较少 |
| 理论基础 | 策略梯度 | 对比学习 |
理论基础
DPO 的核心思想是直接优化策略,使其最大化与人类偏好对齐的奖励,同时最小化与参考策略的 KL 散度。
DPO 损失函数
1 | import torch |
数据集实现
1 | from torch.utils.data import Dataset |
模型实现
1 | class DPOModel(nn.Module): |
训练循环
1 | def train_dpo(model, ref_model, train_dataloader, config): |
评估指标
1 | def compute_accuracy(model, ref_model, dataloader, config): |
生成和评估
1 | def generate_dpo(model, tokenizer, prompt, max_new_tokens=512): |
超参数调优
1 | config = { |
常见问题
过拟合:DPO 容易在小数据集上过拟合
- 解决方案:使用数据增强,减少训练轮数
模式崩溃:模型只生成一种类型的回答
- 解决方案:调整 beta,增加数据多样性
奖励黑客:模型学会利用偏好数据的模式
- 解决方案:使用更多样化的数据,定期评估
完整训练流程
1 | # 1. 加载模型 |
总结
DPO 是 RLHF 的简化替代方案,直接从偏好数据优化策略。它更稳定、计算成本更低,但需要仔细调整超参数以避免过拟合和模式崩溃。
下一步
下一课将介绍 Constitutional AI,一种自我改进的对齐方法。
📚 本文改编自 AI Engineering from Scratch(MIT License · 作者 Rohit Ghumare),中文内容来自官方中文镜像。原课程共 503 课 · 20 阶段 · 免费开源,教程网站见 aiengineeringfromscratch.com。
📝 自我检查(课程配套测验)
Q1(学前) DPO 相比 RLHF 的主要优势是什么?
A. 需要更多人类标注
B. 无需单独奖励模型和 PPO 训练——直接在偏好对上优化,更简单稳定
C. 产生更大模型
D. 只适用于分类任务
答案: B 解析: DPO(直接偏好优化)将 RLHF 的奖励建模和 RL 阶段合并为单一监督学习目标。直接在(chosen, rejected)回答对上训练,无需 PPO 或独立奖励模型。
Q2(学前) DPO 损失函数鼓励什么?
A. 模型对所有输入给出相同回答
B. 提高 chosen 回答相对 rejected 回答的对数概率,同时保持接近参考模型
C. 最大化训练 loss
D. 最小化模型大小
答案: B 解析: DPO 损失增加模型对 preferred(chosen)回答的概率,降低对 rejected 回答的概率,用参考模型(通常是 SFT 模型)的隐式 KL 约束防止偏离过远。
Q3(学后) DPO 中的 β(beta)参数控制什么?
A. 学习率
B. 对参考模型的约束强度:β 越大,优化后的模型越接近参考模型
C. batch 大小
D. 训练 epoch 数
答案: B 解析: β 是 DPO 损失中的温度参数,控制偏离参考(SFT)策略的惩罚。高 β 使模型保守(贴近 SFT);低 β 允许更大变化以更好匹配偏好,但有遗忘风险。
Q4(学后) 为什么 DPO 在 2024–2025 年广泛采用?
A. 它比 RLHF 需要更多 GPU
B. 实现更简单、训练更稳定、算力需求更低,同时达到与 RLHF 相当的对齐效果
C. 它完全取代预训练
D. 它只适用于开源模型
答案: B 解析: DPO 消除了 RLHF 的奖励模型和 PPO 阶段,将偏好对齐简化为类似 SFT 的训练。更稳定、更易复现、资源需求更低,被 Llama、Mistral 等广泛采用。
Q5(学后) DPO 仍可能有什么问题?
A. 无法使用偏好数据
B. 偏好数据质量至关重要——有噪声或有偏的偏好会导致错误对齐;且 DPO 仍可能被 exploit
C. 不能用于对话模型
D. 需要 RL 基础设施
答案: B 解析: DPO 直接从偏好数据学习——垃圾输入产生垃圾对齐。标注者分歧、文化偏见或标注错误会直接变成模型行为。DPO 也面临与 RLHF 类似的 reward hacking 风险。
- 标题: 【大模型】- DPO:直接偏好优化
- 作者: 宋
- 创建于 : 2026-08-19 09:08:00
- 更新于 : 2026-08-21 16:20:12
- 链接: https://sxl-space.tk/2026/08/19/010_LLM/010_LLM-08-DPO/
- 版权声明: 版权所有 © 宋,禁止转载。