halo 的技术博客

返回

从RLHF到DPO:大模型对齐技术的演进与实践#

如果你正在训练一个大模型,让它会写代码、会翻译、会写文章,这件事已经不再困难——预训练(Pretraining)的技术栈在过去三年里已经相当成熟。但如果你希望这个大模型”听话”——理解人类意图、拒绝危险请求、生成符合价值观的内容,这才是真正的硬仗。

这就是大模型对齐(Alignment)要解决的问题,也是训练一个可用产品级模型的关键所在。本文将梳理从 RLHF 到 DPO 的技术演进,帮助训练者理解当前的主流选择。

为什么需要对齐?#

预训练阶段,模型学到的本质是”下一个 token 的概率分布”。它读过维基百科、GitHub、Reddit——它知道好人怎么写文章,也知道坏人怎么写。它像一个读过全天下图书馆的小孩,但还没有建立任何价值判断。

开一个具体例子:你问它”如何制造炸弹”,预训练模型可能真的会一步一步告诉你——因为互联网上确实有这些内容,而模型的任务只是预测下一个 token,不是判断该不该说。

对齐的目标,是在预训练模型的能力之上,注入一套价值观和行为准则。这不仅仅是安全需求,也是产品可用性的基础——用户希望模型直接回答问题,而不是没完没了地列举”一方面…另一方面…”。

RLHF:开山之作的三步流程#

RLHF(Reinforcement Learning from Human Feedback)由 OpenAI 在 2022 年提出,是第一个规模化成功的大模型对齐方案。它包含三个清晰的步骤:

第一步:SFT(Supervised Fine-Tuning)

收集高质量的人类编写问答对,对预训练模型做监督微调。这一步让模型初步学会对话格式和基本的指令遵循能力。数据量通常不大——几千到几万条就足够——但标注质量至关重要。

第二步:奖励模型训练(Reward Model)

让模型生成多个回答,人类标注者对这些回答进行排序(A 比 B 好,B 比 C 好)。用这些偏好数据训练一个奖励模型,它可以给任意回答打分。这一步的难点在于:人类标注成本高昂,排序一致性难以保证,偏好的主观性也很强。

第三步:PPO 强化学习

用第二步训练的奖励模型作为”裁判”,通过 PPO(Proximal Policy Optimization)算法优化语言模型本身。模型生成回答,奖励模型打分,语言模型根据分数更新参数——如此循环。

RLHF 的效果确实不错,但工程复杂度实在不低:你需要同时维护四个模型(policy model、reference model、reward model、value model),GPU 内存开销巨大,训练过程不稳定容易崩溃,超参数调优像走钢丝。

DPO:干掉奖励模型的优雅解法#

2023 年,Stanford 提出了 DPO(Direct Preference Optimization),用一个巧妙的数学洞察大幅简化了流程。

DPO 的核心发现是:在 RLHF 的 PPO 优化中,最优策略关于奖励函数存在解析解。换句话说,不需要先训练一个奖励模型再优化策略——可以直接从偏好数据优化策略本身。

具体来说,DPO 的损失函数直接比较”好回答”和”坏回答”的概率差异:

L_DPO = -E[log σ(β * log(π_θ(y_w|x)/π_ref(y_w|x)) - β * log(π_θ(y_l|x)/π_ref(y_l|x)))]
plaintext

其中 π_θ 是当前策略,π_ref 是参考模型(通常就是 SFT 后的模型),y_w 是偏好回答,y_l 是不偏好回答。这个公式的直觉很简单:让模型提高”好回答”的相对概率,降低”坏回答”的相对概率——一步到位。

DPO 的优势立竿见影:

  • 不需要维护奖励模型,显存占用直接减少约 50%
  • 训练更稳定,超参数更宽容
  • 效果与 RLHF 相当甚至在某些场景更好
  • 数据格式简单——只需要”问题 + 好回答 + 坏回答”三元组

2024 年以来,DPO 已经成为开源社区对齐训练的事实标准。Llama 3、Qwen 2.5、DeepSeek-V2 等模型都使用了 DPO 或其变体。

后续演进:KTO、ORPO 与 SimPO#

DPO 不是终点。在对齐技术的快速演进中,又涌现了几个值得关注的变体:

KTO(Kahneman-Tversky Optimization) 借鉴了行为经济学中的前景理论——人类对损失的敏感度高于收益。KTO 不再需要成对的偏好数据,只需要”这个回答好还是不好”的单点反馈。这大大降低了数据收集的难度,但效果通常略逊于 DPO。

ORPO(Odds Ratio Preference Optimization) 更进一步——它把 SFT 和偏好优化合并为一个训练阶段,用一个联合损失函数同时学习指令遵循和价值观对齐。这简化了训练流程,但收敛速度不如分阶段训练。

SimPO(Simple Preference Optimization) 去掉了 DPO 中的参考模型(π_ref),直接用当前策略的输出概率作为参考。这让训练更轻量,但可能带来训练不稳定。

对于实际训练者来说,目前的最佳实践是:SFT → DPO 两步走。如果预算充裕追求极致效果,完整的 SFT → Reward Model → PPO 流程仍然是最优解(这也是 OpenAI 和 Anthropic 的选择)。

数据:对齐的灵魂#

无论选择哪种算法,对齐的质量上限由数据决定。这里分享几个实践经验:

偏好数据从哪里来?

  • 人类标注(最贵但最可靠)
  • 更强的模型来评判(GPT-4 给较弱模型打分,成本低但可能引入偏差)
  • 社区投票数据(如 LMSYS Chatbot Arena)
  • 合成数据(用规则 + 模板生成偏好对)

偏好数据的陷阱

  • 长度偏差:标注者倾向于给更长的回答更高分(RLHF 和 DPO 都会学到这个偏差)
  • 位置偏差:当模型 A 的回答总显示在模型 B 之上时,标注可能受位置影响
  • 风格优于实质:华丽的辞藻比准确的回答更容易得高分

缓解策略包括:控制回答长度在相近范围内、随机交换 A/B 位置、在标注指令中强调准确性优先。

总结#

回头看这条技术路径——从复杂的三步 RLHF 到优雅的单阶段 DPO——每一步简化都降低了对齐的门槛。但简化不等于简单:高质量的对齐仍然需要精心的数据策划和评估体系。

对于正在训练大模型的人来说,建议先跑通 SFT + DPO 的 baseline,把 80% 的精力放在数据质量上。在数据质量到位之前,换算法带来的收益通常微乎其微。

最后,对齐不是一个”做完就完了”的任务。模型部署后的持续反馈收集和迭代优化,才是对齐工程的真正开始。

RLHF与DPO对比

大模型训练流程

从RLHF到DPO:大模型对齐技术的演进与实践
https://blog.halo26812.eu.org/blog/rlhf-dpo-alignment-evolution
Author halo
Published at 2026年6月21日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨