Agent RL(番外):DPO 到底补充了什么
这是一篇可选背景。它只帮助理解后训练里“偏好优化”和“环境交互式 RL”的分工,不是继续阅读 PPO、GRPO 和 Agent RL 主线的前置条件。
主线导航: 为什么需要 Agent RL · 从工具调用到可训练轨迹 · 从 PPO 到 GRPO
1. DPO 解决的是什么问题
假设同一个输入 x 有两个回答:人或标注器更喜欢 y_w,不喜欢 y_l。DPO 直接用这类偏好对更新语言模型,让模型相对于参考模型更倾向于 y_w:
输入 x → 偏好回答 y_w / 非偏好回答 y_l → 一次偏好优化更新它不需要先训练一个单独的奖励模型,也不要求每次更新前都让当前策略进入环境采样。这里的“直接”是相对于经典 RLHF 流程而言,不是说它不需要数据、参考模型或任何训练稳定化手段。
2. 它和 SFT、PPO、GRPO 分别差在哪里
| 方法 | 主要数据 | 一次更新在做什么 | 是否必须执行环境 |
|---|---|---|---|
| SFT | 示范回答或成功轨迹 | 提高示范 token 的概率 | 否 |
| DPO | 同一输入下的偏好对 | 拉大偏好与非偏好的相对概率 | 否 |
| PPO / GRPO | 策略采样的轨迹与奖励 | 提高高优势动作的概率 | 通常需要 |
因此,DPO 更像是偏好数据上的后训练目标;PPO 和 GRPO 更像是利用结果反馈优化策略的 RL 目标。三者可以串联:先用 SFT 学会基本格式,再用 DPO 对齐偏好,最后在可验证环境中用 Agent RL 改善多步决策。也可以只采用其中一部分,取决于数据和环境是否可用。
3. 只看一个目标的形状
DPO 常见目标可以写成:
L_DPO = - log σ( β · [
log πθ(y_w | x) - log πref(y_w | x)
- log πθ(y_l | x) + log πref(y_l | x)
])πθ 是正在更新的策略,πref 是冻结的参考策略,β 控制相对参考策略的偏离尺度。直觉上,模型如果提高偏好回答相对于参考策略的概率,同时降低非偏好回答的相对概率,损失就会下降。
这里的概率通常要对回答 token 的对数概率求和或按实现规定聚合。输入提示词不应被当成偏好动作;同样,Agent 轨迹中的工具观察也不是模型生成的 token。
4. 为什么 DPO 对 Agent RL 有帮助,但不能替代它
DPO 可以帮助模型学会:
- 更符合人类偏好的最终回答;
- 更稳定的格式、拒答和风格;
- 在已有偏好数据中区分较好的完整轨迹与较差的完整轨迹。
但它本身不回答几个 Agent RL 的核心问题:
- 模型在新环境状态下下一步该调用哪个工具;
- 一次修改导致测试失败后,怎样恢复;
- 终局成功应如何分配到长轨迹的早期动作;
- 偏好数据没有覆盖的分支,怎样通过探索发现。
如果把“成功轨迹”和“失败轨迹”配成偏好对,DPO 可以利用失败样本进行离线更新;不过它仍然是在比较两条已经收集到的轨迹。环境的状态转移、执行成本和新分支探索并不会因为换成 DPO 目标而自动出现。
5. 什么时候值得单独使用 DPO
当有大量稳定的偏好对、环境执行昂贵,或者目标主要是最终回答质量与行为风格时,DPO 往往是低成本的补充。对于代码 Agent,可以把补丁质量、测试结果、审阅意见组织成偏好对,再离线训练。
需要谨慎的是偏好标注的一致性、参考模型选择、回答长度偏差和数据分布漂移。一个“看起来更好”的完整轨迹也可能包含不必要的工具调用;如果偏好规则没有表达成本和可靠性,模型会学到标注器实际奖励的表面特征。
6. 阅读主线时记住三句话
- DPO 是偏好优化方法,不是 Agent RL 的必经阶段。
- DPO 一次更新可以不执行环境,但数据仍可能来自环境轨迹。
- Agent RL 关心的是在交互中改变决策分布;DPO 关心的是在偏好对上改变相对概率。
理解这三点后,主线第三篇中“DPO 与成功轨迹 SFT 放在哪里”一节就足够作为衔接;不需要先掌握 DPO 的完整推导。
参考资料
- Direct Preference Optimization:DPO 原论文。
- InstructGPT:SFT、奖励模型和 PPO 组成的经典 RLHF 流程。
版权所有
版权归属:Pray0