YOLO Vision 2026:
返回 Ultralytics 词汇表

Direct Preference Optimization

了解直接偏好优化 (DPO) 如何简化 AI 对齐。发现如何比传统的 RLHF 更高效地提高模型安全性和性能。

直接偏好优化(DPO)是一种稳定且高效的算法技术,用于微调人工智能模型,特别是确保它们符合人类的意愿和安全标准。与需要复杂奖励建模的传统强化学习方法不同,DPO将偏好学习问题视为分类任务,从而简化了对齐过程。通过根据人类偏好数据集直接优化模型——其中注释者在“获胜”响应和“失败”响应之间进行选择——开发者可以显著提高基础模型生成式AI系统的有用性、诚实性和安全性。这种方法在2024年和2025年获得了巨大的关注,因为它能够以少得多的计算开销实现先进的成果。

DPO 如何简化模型对齐#

直接偏好优化的主要创新在于它消除了旧对齐管道中发现的“中间人”。历史上,对齐大型语言模型(LLM)视觉语言模型涉及一个多步骤的过程,称为人类反馈强化学习(RLHF)。RLHF需要训练单独的奖励模型来近似人类评分,随后使用像PPO(近端策略优化)这样容易产生不稳定的算法来更新主模型。

DPO在数学上消除了对这个单独奖励模型的需要。相反,它使用派生的损失函数,该函数增加生成“首选”输出的可能性,同时降低生成“拒绝”输出的可能性。这依赖于参考模型来确保更新后的模型不会偏离其原始训练数据分布太远。这种数学简化使得该过程的表现更接近标准的监督学习,从而在GPU硬件上实现更快的收敛和更低的内存使用。

与 RLHF 的区别#

虽然DPO和RLHF都有着AI安全和对齐的共同目标,但它们的实现有显著不同:

  • 复杂性: RLHF 在训练过程中涉及同时维护多个模型(行动者、评论者、奖励模型、参考模型)。DPO 仅需要正在训练的模型和一个冻结的参考模型。
  • 稳定性: 强化学习对超参数调优极其敏感。DPO通常以标准分类任务的稳定性运行,降低了模型崩塌的风险。
  • 效率: 通过移除奖励模型推理步骤,DPO 减少了计算负担,使组织能够在更小的集群上对更大的模型进行对齐。

实际应用#

直接偏好优化目前正在重塑各行各业构建交互式 AI 系统的方式。

增强对话智能体#

聊天机器人和虚拟助手领域,DPO用于减少毒性并提高事实准确性。开发者策划数据集,其中人类注释者审查对提示的两个回答——一个是产生幻觉的或粗鲁的,另一个是准确且礼貌的。人类将礼貌的回答标记为“已选择”。然后DPO更新模型权重以偏好所选的风格。这对于部署遵守严格AI伦理准则的客户服务代理至关重要。

优化视觉-语言模型#

随着计算机视觉的发展,模型越来越多地被要求解释它们看到的内容。对于图像标注或视觉问答等应用,DPO允许研究人员将模型的文本输出与详细的人类偏好对齐。例如,如果用户要求安全系统“描述入侵者”,DPO可以训练模型优先考虑事实描述(例如,“红衬衫,蓝帽子”)而不是诗意的或模糊的描述,从而增强计算机视觉系统的实用性。

DPO 在现代 AI 工作流中的应用#

实现DPO需要高质量的成对数据。现代工作流通常利用Ultralytics Platform之类的工具来管理数据集,确保数据标注过程产生清晰的“赢家”和“输家”示例。虽然DPO是为文本开创的,但其原理越来越多地应用于通过将质量指标构架为偏好对来优化目标检测架构和其他模态。

使用 torch 的以下Python代码片段演示了DPO风格损失计算所需的基础数据结构。它展示了如何在批次中准备“已选择”和“已拒绝”的响应,这是现代模型优化至关重要的一个概念。

import torch
import torch.nn.functional as F

# Simulate log probabilities for 'chosen' and 'rejected' responses
# In a real scenario, these come from your model (e.g., a VLM or LLM)
chosen_log_probs = torch.tensor([-0.5, -0.8, -0.2], requires_grad=True)
rejected_log_probs = torch.tensor([-2.5, -3.0, -1.5], requires_grad=True)

# DPO aims to maximize the margin between chosen and rejected
# This is a simplified conceptual look at the margin calculation
beta = 0.1  # A hyperparameter controlling deviation from the reference model
logits = beta * (chosen_log_probs - rejected_log_probs)

# The loss minimizes the negative log sigmoid of this margin
loss = -F.logsigmoid(logits).mean()

print(f"DPO Loss: {loss.item()}")
# Output demonstrates the penalty applied if the model doesn't prefer the chosen data

通过利用像DPO这样的技术,开发者可以突破诸如Ultralytics YOLO26等模型的性能边界,确保自动化决策不仅准确,而且与人类意图一致。这对于诸如自动驾驶汽车医学图像分析等高风险环境至关重要,在这些环境中,可靠性是首要任务。

外部资源#

Explore solutions

让我们一起构建 AI 的未来!

开启你的机器学习未来之旅