什么是 ORPO(Odds Ratio Preference Optimization)?
更新于
ORPO(Odds Ratio Preference Optimization)是一种直接偏好优化方法,使用 prompt、chosen 回答和 rejected 回答三元组,把 chosen 回答的负对数似然与加权赔率比偏好损失组合起来训练模型。
快速了解
| 规范文档 | 官方规范 |
|---|
工作原理
把似然学习与赔率比间隔组合起来
对每个 prompt,ORPO 计算 chosen 与 rejected 补全的长度归一化对数概率,再把每个补全概率 p 转换为对数赔率 log(p) - log(1-p),计算 chosen 减 rejected 的对数赔率比,并施加 -log(sigmoid(ratio))。总目标用偏好权重把该项加到 chosen 回答的负对数似然上;原论文记作 lambda,部分实现暴露为 beta。前者拉开相对差距,后者学习目标回答。
区分 ORPO、DPO 与经典 RLHF
经典 RLHF 通常先用偏好训练奖励模型,再通过 PPO 等强化学习算法优化策略。DPO 使用策略模型与冻结参考模型的似然比目标,通常接在监督微调之后。ORPO 则把无需参考模型的赔率比惩罚直接放在 chosen 回答语言建模损失旁。三者即使使用相同偏好对,正则约束和优化行为也不同,结果不能互换。
评估完整训练配方,而不是只看方法名
结果取决于偏好对质量、prompt 覆盖、Token Mask、序列长度归一化、偏好权重、优化器和起始检查点。应分别观测 chosen 负对数似然与偏好损失,检查分数和回答长度分布,并在数据量与算力一致的条件下同 SFT 及另一种直接偏好方法比较。最终使用留出集人工判断、能力、安全、校准和回归测试,不能把原论文中的基准优势推广为普遍结论。
主要特点
- 输入由 prompt、chosen 回答和 rejected 回答组成的偏好三元组
- 把 chosen 回答负对数似然与加权偏好项组合为总损失
- 优化 chosen 与 rejected 序列概率之间的对数赔率差
- 原始公式不需要冻结的参考模型
- 省去经典 RLHF 中独立奖励模型和 PPO 阶段
- 仍对偏好噪声、长度效应、beta、Token Mask 和评测设计敏感
常见用途
- 验证监督学习与偏好对齐合并为单阶段的训练配方
- 使用 chosen 与 rejected 回答对齐指令模型
- 在相同数据与算力条件下比较无需参考模型的 ORPO 和 DPO
- 研究偏好权重对有用性、拒答和基础能力的影响
- 在评测证明满足上线目标时减少偏好训练管线组件
示例
Loading code...常见问题
ORPO 的损失函数是什么?
它由 chosen 回答的负对数似然,加上 `beta` 倍的 chosen 与 rejected 对数赔率比逻辑损失构成。实现必须一致定义 Token Mask 和序列归一化。只观测合并后的单一标量,会掩盖变化究竟来自语言建模还是偏好分离。
ORPO 和 DPO 有什么区别?
DPO 通常比较策略模型与冻结参考模型的似然比,并常在 SFT 后执行。ORPO 把无需参考模型的赔率比惩罚直接加入 chosen 回答语言建模。两者可以复用同一种偏好对格式,但正则方式、梯度、显存需求和超参数行为都不同。
ORPO 需要奖励模型或参考模型吗?
原始 ORPO 目标既不需要单独训练奖励模型,也不需要冻结参考模型,但仍需要起始模型、偏好样本、训练基础设施和严格评测。框架或实验变体可能加入其他组件,因此应核对实际实现,不能只根据方法名称判断。
ORPO 的偏好权重应该如何选择?
把原论文记作 `lambda`、部分实现命名为 `beta` 的偏好权重,视为拟合 chosen 回答与拉开 rejected 回答之间的模型和数据相关权衡。应在代表性验证集上扫描并分别观察两项损失;如果偏好准确率提高却损害有用能力、校准或安全行为,就不能采用该设置。
ORPO 一定比 RLHF 或 DPO 更好、更便宜吗?
不一定。它减少了训练配方中的特定组件,但端到端效率和质量仍取决于模型、序列长度、实现、数据、超参数与评测。应在同条件下比较基线与总资源开销,不能把单个基准或某一检查点系列的结果推广为普遍结论。