当大语言模型在通用任务上展现出惊人能力后,如何让它们的行为更符合人类期望就成了关键挑战。2017年OpenAI提出的强化学习人类反馈(RLHF)技术路线,通过将人类偏好信号转化为可优化的奖励函数,开创了AI对齐的新范式。而2023年斯坦福团队提出的直接偏好优化(DPO)方法,则通过巧妙的数学变换绕过了传统RLHF中的强化学习环节,成为当前最受关注的对齐方案。
这两种技术本质上都在解决同一个核心问题:当目标函数难以显式定义时(比如"什么是好的对话回应"),如何通过人类对样本的相对评价来训练模型。作为实践者,我们需要深入理解两者的数学本质和工程实现差异,才能在实际项目中做出合理选择。
典型的RLHF实现包含三个关键阶段:
其中第二阶段收集的人类偏好数据通常呈现三元组形式:(prompt, chosen_response, rejected_response)。标注者需要从模型生成的多个响应中选择更符合要求的答案。
奖励模型训练实则是学习一个标量函数r_φ(x,y),使其对偏好数据的对数似然最大化。采用Bradley-Terry模型,偏好概率可表示为:
P(y₁ ≻ y₂ | x) = σ(r_φ(x,y₁) - r_φ(x,y₂))
其中σ是sigmoid函数。损失函数因此设计为:
L(φ) = -E[log σ(r_φ(x,y_w) - r_φ(x,y_l))]
实践中常用6B左右的模型作为奖励模型,太大容易过拟合,太小则表达能力不足。需特别注意防止奖励黑客(reward hacking)现象,即模型找到欺骗奖励函数的方式。
在强化学习阶段,近端策略优化(PPO)是最常用的算法,其目标函数包含三个关键项:
L(θ) = E[min( ratio * A, clip(ratio, 1-ε, 1+ε) * A )]
- c1 * E[(V_φ(s) - V_targ)^2]
+ c2 * H(π_θ)
其中ratio=π_θ(a|s)/π_old(a|s),A是优势函数估计。关键实现细节包括:
重要提示:PPO的clip机制是稳定训练的关键,但过小的ε会导致更新过于保守,需要根据具体任务调整。
DPO的核心洞见在于:当满足特定条件时,最优策略π*与奖励函数r之间存在显式关系:
r*(x,y) = β log(π*(y|x)/π_ref(y|x)) + β log Z(x)
利用这个关系,可以直接将偏好损失表示为策略的函数,从而绕过显式的奖励建模和强化学习步骤。
经过数学变换,DPO的损失函数最终形式为:
L_DPO(πθ) = -E[log σ( β log(πθ(y_w|x)/π_ref(y_w|x))
- β log(πθ(y_l|x)/π_ref(y_l|x)) )]
其中β是控制偏离参考策略程度的超参数,通常取0.1~0.5。与RLHF相比,DPO具有以下优势:
在实际代码实现时,有几个易错点需要特别注意:
典型训练代码如下片段:
python复制def dpo_loss(policy_chosen_logps, policy_rejected_logps,
ref_chosen_logps, ref_rejected_logps, beta):
log_ratios_chosen = policy_chosen_logps - ref_chosen_logps
log_ratios_rejected = policy_rejected_logps - ref_rejected_logps
losses = -F.logsigmoid(beta * (log_ratios_chosen - log_ratios_rejected))
return losses.mean()
| 指标 | RLHF | DPO |
|---|---|---|
| GPU显存 | 需3个模型 | 只需2个模型 |
| 训练时间 | 较长 | 缩短30-50% |
| 超参敏感性 | 高 | 中等 |
| 数据效率 | 较低 | 较高 |
在对话任务上的对比实验显示:
奖励值异常增长
模型退化
过拟合迹象
当前最值得关注的技术演进包括:
在实际项目中,建议百亿参数以下模型优先尝试DPO方案,当遇到性能瓶颈时再考虑RLHF。最新的融合方法如IPO(Identity Preference Optimization)也显示出将两者优势结合的可能性,这可能是下一代对齐技术的发展方向。