帮你快速理解、总结文档立即下载

DRO(直接奖励优化)

最近更新时间:2026-10-19 21:18:02
本文档已由 AI 辅助审校
我的收藏
DRO(Direct Reward Optimization,直接奖励优化) 是一种在大语言模型 RL/Alignment(对齐)阶段 用于直接优化人类偏好或隐式奖励的损失函数(Loss Function)。与传统 PPO 需要额外训练独立的奖励模型(Reward Model)不同,DRO 继承了 DPO(Direct Preference Optimization)等算法的思想,通过数学变换将奖励函数直接融合到策略模型的损失计算中,从而无需复杂的两阶段强化学习过程,实现更高效、稳定的偏好对齐与优化。

DRO(Richemond et al., 2024;Kimi Team et al., 2025)是一种通用的离策略(甚至离线)RL 方法,它通过二次惩罚项来约束策略更新。请注意,该损失使用了一种不同的(软)优势估计形式,需要在客户端自行实现。
DRO 的目标函数为:

二次惩罚项 1/2β(log pθ/q)2 可防止学习器偏离采样分布过远。

实现

# Compute quadratic penalty term
quadratic_term = (target_logprobs - sampling_logprobs) ** 2
# Compute DRO objective
dro_objective = target_logprobs * advantages - 0.5 * beta * quadratic_term
# DRO loss is negative of objective
loss = -dro_objective.sum()

输入张量

Key
Shape
说明
target_tokens
(N,)
目标 token ID(来自采样器 q)
logprobs
(N,)
这些 token 的 sampling_logprobs
advantages
(N,)
RL 中的优势值

输出张量

Key
Shape
说明
logprobs
(N,)
这些 token 的 target_logprobs

诊断信息

loss:sum(标量):DRO 损失之和

自定义 beta

fwd_bwd_future = await training_client.forward_backward_async(
data=data,
loss_fn="dro",
loss_fn_config={"beta": 0.05}
)
fwd_bwd_result = await fwd_bwd_future.result_async()