1. 背景
在大模型对齐(alignment)里,常见的两类方法是:
PPO:强化学习经典算法,OpenAI 在 RLHF 里用它来“用奖励模型更新策略”。
DPO:2023 年提出的新方法(参考论文《Direct Preference Optimization: Your Language Model is Secretly a Reward Model》),绕过了奖励模型,直接用偏好对 (chosen/rejected) 来优化。
2. PPO(Proximal Policy Optimization)
2.1 核心思想
来自强化学习领域,是一种 on-policy 策略梯度方法。
用奖励模型(Reward Model)给生成的文本打分。
目标是最大化期望奖励,同时用 KL 惩罚 约束策略不要偏离初始模型太远。
2.2 损失函数(简化)
LPPO(θ)=Et[min(rt(θ)A^t, clip(rt(θ),1−ϵ,1+ϵ)A^t)]L^{PPO}(\theta) = \mathbb{E}_t \Big[ \min( r_t(\theta) \hat{A}_t, \; \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon)\hat{A}_t ) \Big]
其中:
rt(θ)=πθ(at∣st)πθold(at∣st)r_t(\theta) = \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_\text{old}}(a_t|s_t)}(策略比值)
A^t\hat{A}_t:优势函数(由奖励模型给出)
clip:限制更新幅度,避免策略崩溃。
2.3 特点
优点:稳定性较好;能处理连续更新。
缺点:需要训练一个独立的奖励模型,流程复杂;计算成本大。
3. DPO(Direct Preference Optimization)
3.1 核心思想
用人类/自我博弈生成的偏好对:
chosen
= 更好的回答rejected
= 更差的回答
不需要显式训练奖励模型,而是把“奖励隐含在概率分布里”。
直接优化策略模型,使得它更偏向
chosen
。
3.2 损失函数(简化)
LDPO(θ)=−E(x,y+,y−)[logσ(β⋅(logπθ(y+∣x)−logπθ(y−∣x)−logπref(y+∣x)+logπref(y−∣x)))]L^{DPO}(\theta) = - \mathbb{E}_{(x, y^+, y^-)} \Big[ \log \sigma\big(\beta \cdot (\log \pi_\theta(y^+|x) - \log \pi_\theta(y^-|x) - \log \pi_{\text{ref}}(y^+|x) + \log \pi_{\text{ref}}(y^-|x)) \big) \Big]
其中:
y+y^+:chosen
y−y^-:rejected
πref\pi_{\text{ref}}:参考模型(通常是初始 SFT 模型)
β\beta:温度参数,调节强度
本质上是一个 对比学习(contrastive learning) 的形式。
3.3 特点
优点:
不需要奖励模型,流程更简单。
样本利用率高,对训练稳定。
缺点:
需要偏好对 (chosen/rejected),不能直接用单个答案 + 分数。
不适合在线优化,更适合离线批量训练。
4. 对比总结
特点 | PPO | DPO |
---|---|---|
提出时间 | 2017(RL 算法)→ RLHF | 2023(斯坦福团队) |
是否需要奖励模型 | ✅ 需要 | ❌ 不需要 |
输入形式 | 答案 + 奖励分数 | 偏好对 (chosen, rejected) |
优化方式 | 强化学习(on-policy) | 直接偏好对比(对比学习) |
训练稳定性 | 相对复杂,易发散 | 更稳定,收敛快 |
适合场景 | 在线训练,奖励函数明确(数学/代码/对话安全性) | 离线批量微调,数据是偏好对(人类标注/自我博弈) |
代表案例 | OpenAI GPT-4 RLHF | DeepSeek R1(自博弈 + DPO) |
5. 与 RLHF、自我博弈的关系
RLHF + PPO = 经典路线(GPT-4、Claude):人类标注 → 奖励模型 → PPO 优化。
自我博弈 + DPO = 新兴路线(DeepSeek R1):模型自己对弈 → 偏好对 → DPO 微调。
混合范式:
有人类数据时用 PPO 强化价值观对齐;
有大规模自生成数据时用 DPO 提升推理/逻辑能力。
6. 一句话理解
PPO:模型像在健身,奖励模型是教练,不断纠正姿势。
DPO:模型像在辩论,直接看“好答案 vs 坏答案”,学会站在胜方。