DPO相比SFT,有哪些优劣?它在agent任务上效果明显吗,你怎么构造偏好对?构造逻辑时自动的还是人工的?
SFT(监督微调)和DPO(直接偏好优化)是模型优化的两个关键阶段。SFT通过模仿标准答案注入知识,但存在答案固化、无法学习相对偏好的局限;DPO则通过对比学习人类偏好,能优化思考路径、工具选择等复杂决策。在Agent任务中,DPO效果显著,可优化思考链、提升鲁棒性和效率。偏好数据构造需人机结合:初期人工确定标准,后期用模型对比、规则修改等方式自动化扩展,辅以AI裁判和人工审核。DPO是构建高质量
第一部分:DPO 相比 SFT 的优劣
首先,要明确一个核心观点:DPO 不是 SFT 的替代品,而是 SFT 之后的一个关键优化步骤。一个模型通常会先经过 SFT,具备了基本的能力后,再通过 DPO 进行对齐,学习人类的偏好。
SFT (Supervised Fine-Tuning) - 监督微调
-
核心思想:模仿学习 (Imitation Learning)。给模型一个问题,然后展示一个“标准答案”,让模型去学习模仿这个答案。
-
优点:
-
简单直接:概念清晰,实施起来相对容易,就是训练一个“问答对”数据集。
-
知识注入高效:非常适合让模型学习特定领域的知识、格式或能力。比如,教模型写代码、做翻译或进行摘要。
-
-
劣势:
-
“标准答案”的诅咒:在很多场景下,并不存在唯一的“完美答案”。人类标注一个完美的答案成本极高,且带有主观性。
-
无法学习偏好:SFT 只能告诉模型“什么是对的”,但无法告诉它在两个“都还行”的答案中,“哪个是更好的”。它学习的是绝对标准,而不是相对好坏。
-
风格固化:模型可能会过度拟合 SFT 数据的写作风格,导致回答“一股味儿”,缺乏多样性。
-
DPO (Direct Preference Optimization) - 直接偏好优化
-
核心思想:偏好学习 (Preference Learning)。给模型一个问题和两个或多个答案,然后告诉它人类更喜欢哪一个 (chosen),不喜欢哪一个 (rejected)。模型的目标是调整自己的策略,使其生成的答案更符合人类的偏好。
-
优点:
-
更符合人类反馈的本质:人类通常更容易判断两个选项的优劣,而不是凭空创造一个完美的选项。这使得数据标注成本更低,也更贴近真实需求。
-
能学习细微的差别:DPO 擅长学习那些难以用规则描述的、更“软”的偏好,比如语气、礼貌程度、安全性、有用性、简洁性等。
-
效率更高(相比传统RLHF):相较于需要训练一个独立奖励模型(Reward Model)再用强化学习(PPO)去优化的传统 RLHF 流程,DPO 在数学上证明了可以直接优化策略模型,过程更稳定,计算成本更低。
-
-
劣势:
-
依赖于SFT基础模型:DPO 是在 SFT 模型的基础上进行微调。如果 SFT 模型本身能力很差,DPO 很难凭空创造知识,效果会很有限。
-
偏好数据的质量至关重要:DPO 的效果完全取决于偏好数据的质量。如果偏好数据本身有偏见、不一致或质量低下,模型也会学到这些坏的偏好。
-
可能导致能力损失:过度追求偏好可能会让模型变得“过度保守”或在某些能力上出现遗忘(Alignment Tax),需要仔细平衡。
-
第二部分:DPO 在 Agent 任务上效果明显吗?
回答:非常明显,甚至可以说 DPO (或更广义的偏好学习) 是构建一个优秀 Agent 的关键技术之一。
-
为什么效果明显?
Agent 任务的核心不仅仅是给出一个最终答案,更重要的是其思考过程、决策路径和工具使用方式。这个过程往往没有唯一的“正确”解法,但有好坏之分。-
路径优化:一个任务可以有多种完成路径。例如,一个 Agent 为了订机票,路径A是“先搜航班 -> 再查价格 -> 确认用户”,路径B是“先问预算 -> 再搜航班”。路径B可能效率更高。DPO可以学习到这种更优的思考链(Chain-of-Thought)或行动计划。
-
工具选择与使用:当有多个工具可用时,Agent 需要决定用哪个、怎么用。例如,面对一个复杂问题,是应该先调用搜索引擎,还是先用代码解释器?DPO 可以教会 Agent 在特定场景下优先选择更可靠、更高效的工具。
-
鲁棒性与纠错:当工具调用失败或返回错误信息时,一个好的 Agent 应该懂得如何重试或换一种方法。我们可以构造偏好对,其中 chosen 的回答是“识别到错误并进行纠正的思考过程”,而 rejected 的回答是“遇到错误就放弃或给出错误结论”。
-
效率与成本:在调用需要付费的 API 时,我们偏好 Agent 使用更少的调用次数来完成任务。DPO 可以学习到这种对“成本”的偏好。
-
第三部分:如何构造偏好对?自动还是人工?
这是一个关于实践落地的问题,最好的回答是 “以人工为基准,以自动化的方式进行扩展,形成一个人机结合(Human-in-the-loop)的流程”。
构造逻辑(偏好对的来源)
构造一个偏好对 (prompt, chosen_response, rejected_response) 的核心是在 chosen 和 rejected 之间制造出有意义的、模型能够学习的差异。这些差异可以来自:
-
不同模型版本的输出:
-
逻辑: 让一个更强的模型(如 GPT-4)的输出作为 chosen,一个较弱模型(如 Llama-2-7B)的输出作为 rejected。
-
优点: 简单高效,可以大规模自动化生成。
-
-
同一模型、不同参数的输出:
-
逻辑: 用同一个模型,跑两次。一次使用较低的 temperature(更稳定、确定),一次使用较高的 temperature(更多样、随机),然后由人或AI裁判来判断哪个更好。
-
优点: 能发掘出模型自身潜在的更好答案。
-
-
基于规则的程序化修改:
-
逻辑: 先有一个高质量的回答(作为 chosen 的基础),然后通过程序化的方式创造一个有瑕疵的版本作为 rejected。
-
Agent 场景下的例子:
-
删除关键步骤:在 chosen 的思考链中随机删除一步。
-
使用错误工具:将正确的工具调用换成一个不相关的工具。
-
增加冗余操作:在 chosen 的基础上增加不必要的工具调用。
-
模拟API失败:将 chosen 中成功的工具调用结果替换成一个错误信息。
-
-
-
纯人工撰写或修改:
-
逻辑: 标注专家针对一个 prompt,直接撰写一个高质量的 chosen 和一个有代表性错误的 rejected。或者,专家在模型生成的一个答案基础上进行修改,形成 chosen 和 rejected 对。
-
优点: 质量最高,最能捕捉人类细微的偏好,尤其是在安全性、价值观等难以量化的方面。
-
自动还是人工?
这是一个关于质量、成本和规模的权衡。
-
初期/核心数据集:以人工为主
在冷启动或构建核心“黄金”数据集时,人工是不可替代的。人类专家需要定义什么是“好”,什么是“坏”,为整个偏好学习定下基调。这些高质量的人工数据是模型的“北极星”。 -
规模化扩展:以自动为主,人工为辅
当需要大量数据时,纯人工成本太高。这时可以采用自动化策略:-
自动化生成: 使用上述的模型对比、规则修改等方法,大规模生成候选的偏好对。
-
AI 裁判: 使用一个非常强大的闭源模型(如 GPT-4-Turbo)作为“裁判”,自动对生成的候选对进行打分和筛选。
-
人工抽样审核: 人类专家不需要再从零标注,而是对机器自动生成的偏好对进行抽样审核和修正,确保自动化流程的质量可控。
-
更多推荐
所有评论(0)