Ch11 模型微调修订于 二〇二六年七月六日

11.5 DPO与偏好对齐

SFT(监督微调,详见第11.6节)教会了模型”怎么回答”。但会回答,不等于回答得好。

想象你在教一个学徒做菜。SFT阶段,你给了他100本菜谱,他学会了每道菜的标准做法——油温多少、调料多少、翻炒几分钟。现在你让他做一盘鱼香肉丝,他做出来了,步骤完全正确。但你又让他做第二遍,说”这次少放点盐、多放点醋”。他懵了。他只知道”按菜谱做”,不知道什么叫”更好吃”。

这就是SFT之后的困境:模型会做,但不知道做得好不好。 偏好对齐(Preference Alignment)要解决的正是这个问题——教模型分辨”正确答案”和”更好的答案”之间的区别。不是所有正确答案都一样好。有些回答更礼貌、更简洁、更安全、更符合用户的隐藏期望。


一、概念:从”会做”到”做得好”

1.1 SFT的天花板

SFT的本质是模仿学习(Imitation Learning)——模型看大量的”问题-标准答案”对,学着照葫芦画瓢。这类似于学徒把菜谱背得滚瓜烂熟,但从来没有尝过自己做的菜。他不知道咸了还是淡了,因为他没有”好”的标准,只有”对”的标准。

SFT训练出来的模型存在三个典型问题:

第一,啰嗦。 模型倾向于生成很长的回答,因为它看到的训练样本大多是详细的长文本,它学会了”多写总比少写好”,但不知道何时该简洁。

第二,不敢说不知道。 SFT样本里几乎每个问题都有答案,模型学会了”每个问题都要给出一个答案”,而不是学会判断”这个问题我没有足够信息回答”。

第三,语气不对。 同一个问题,对小学生和对CEO的回答方式应该不同。SFT模型可能给出技术上正确的回答,但语气、详略、用词会”跑偏”。

这三个问题的共同根源是:SFT只教模型模仿格式,不教模型判断质量。

1.2 RLHF:最早的对齐方案

RLHF(Reinforcement Learning from Human Feedback,基于人类反馈的强化学习)是OpenAI在2022年用于训练InstructGPT和ChatGPT的方法 1。它的核心思路并不复杂:既然模型不知道什么是”好”,那就找人来打分。

RLHF分三步走:

第一步:SFT。 用高质量的人工标注数据(问题-标准答案对)对模型做监督微调,让模型先有一个基本的行为规范。这一步相当于给学徒看精选菜谱。

第二步:训练奖励模型(Reward Model)。 让人工标注员看同一个问题的多个回答,排出优劣顺序。用这些排序数据训练一个独立的”评分AI”——奖励模型。这个奖励模型的工作就是:给定一个问题和一个回答,输出一个分数,分数越高代表回答越好。这相当于雇佣一个专职品菜师,每道菜都让他打分。

第三步:PPO强化学习。 PPO(Proximal Policy Optimization,近端策略优化)是一种强化学习算法 2。在这一步,主模型不断生成回答,奖励模型给每个回答打分,PPO根据分数调整主模型的参数——朝着高分方向优化。相当于厨师不断做菜,品菜师不断打分,厨师根据分数调整做法。

RLHF有效,但极其”重”。它有三个核心问题:

问题详述
需要4个模型同时在线策略模型(正在训练的)、参考模型(冻结的SFT模型,用于约束不要跑太远)、奖励模型(负责打分)、价值模型(PPO需要的,用于估计未来收益)。四个模型的显存和计算量让普通人根本无法尝试。
PPO训练极不稳定同样的参数、同样的数据,跑两次可能得到完全不同的结果。学习率差0.0001,模型可能从”越来越好”变成”胡言乱语”。调参需要大量经验和算力。
奖励黑客(Reward Hacking)奖励模型本身也是AI,有缺陷。主模型会”学会”钻奖励模型的空子——生成一些奖励模型给高分但实际上无意义的回答。这就像一个学生摸透了老师的出题规律,考试能拿高分但不代表真学会了 ^[Casper et al., “Open Problems and Fundamental Limitations of RLHF”, 2023]。

打个比方:RLHF相当于请一个专职品菜师(奖励模型),每道菜都让他打分,厨师按分数调整。但你得先培训这个品菜师(第二步),而且品菜师可能偏爱某些口味(奖励模型的偏差),厨师就会投机取巧只做品菜师喜欢的菜(奖励黑客)。

1.3 DPO的核心洞察:干掉奖励模型

DPO(Direct Preference Optimization,直接偏好优化)由Stanford大学Rafailov等人于2023年提出 3。这篇论文的核心洞察可以用一句话概括:

语言模型本身就是”隐式的奖励模型”——它给某个回答的概率越高,说明它越认可这个回答。因此,不需要额外训练一个评分模型。

这个洞察来自一个优雅的数学重构。RLHF的优化目标可以写成一个带有KL散度约束(KL Divergence,一种衡量两个概率分布差异的数学工具,你可以理解为”模型不能偏离参考模型太远”的约束)的奖励最大化问题。Rafailov等人发现,这个优化问题的最优解有一个封闭形式(Closed Form,即可以用公式直接写出来的精确解,不需要迭代求解)。将这个封闭形式代入偏好概率模型(Bradley-Terry模型,一种用成对比较估计相对优劣的统计模型),奖励函数就被消去了——最终剩下的损失函数只依赖于策略模型和参考模型的输出概率,以及偏好对中的chosen和rejected回答。

换句话说,DPO把RLHF的三阶段流程压缩成了单阶段监督训练——不需要训练奖励模型,不需要PPO强化学习,直接用偏好对数据优化策略模型。

继续用做菜比喻来理解三种方法的区别:

  • RLHF:请一个专职品菜师(奖励模型),每道菜让他打分,厨师按分数调整。
  • DPO:直接告诉厨师”A做法比B做法好吃”,厨师自己对比两种做法的差异,调整自己的理解。
  • SFT:只给厨师看标准菜谱,不告诉他哪种更好吃。

DPO自2024年起迅速成为偏好对齐的主流方法,原因很简单:比RLHF简单10倍,效果不差甚至更好。 多项研究表明,在AlpacaEval、MT-Bench等主流评测中,DPO训练的模型在同等条件下与RLHF训练的模型持平或略优,而训练成本仅为RLHF的30%到50% 4。


二、教学:DPO如何工作

2.1 偏好数据的格式

DPO的训练数据叫偏好对(Preference Pair)。每条数据包含三个部分:

{
    "prompt": "帮我写一段产品介绍,面向年轻女性用户。",
    "chosen": "这款精华液质地轻盈,一抹化水...(更符合目标受众的回答)",
    "rejected": "该产品采用先进生物科技配方...(虽然正确但过于学术)"
}
  • prompt:用户的问题或指令
  • chosen:更好的回答(人类标注员选择的)
  • rejected:较差的回答(人类标注员没选的)

一个完整的DPO数据集通常包含几千到几万条这样的偏好对。每条偏好对回答的核心问题都是:面对同一个prompt,人类觉得哪个回答更好?

2.2 损失函数的直觉

DPO的损失函数看起来吓人,但背后的逻辑非常简单。公式如下:

L_DPO = -E [ log(sigma( beta * log(p_chosen / p_ref_chosen)
                         - beta * log(p_rejected / p_ref_rejected) )) ]

不要求读者理解公式中的每个符号。我们只解释它在做什么:

直觉翻译:增大chosen的”相对概率”,减小rejected的”相对概率”。

拆解来看:

  • p_chosen 是当前模型对chosen回答赋予的概率。我们希望这个概率变大。
  • p_rejected 是当前模型对rejected回答赋予的概率。我们希望这个概率变小。
  • p_ref_chosen 和 p_ref_rejected 是参考模型(冻结的SFT模型)赋予的概率。它们的作用是防止模型改变太多——如果参考模型本来就认为chosen比rejected好很多,那当前模型也不用太努力;如果参考模型认为两者差不多,当前模型才需要认真调整。
  • sigma 是sigmoid函数,把任意数值映射到0和1之间,让损失函数的行为像一个”是chosen更好吗?是/否”的二分类问题。
  • beta 是最重要的超参数,控制调整的幅度。

用做菜来理解:假设参考模型(SFT后的厨师)对两种做法A和B的评分差不多。你告诉厨师”A比B好”。DPO损失函数的效果就是——厨师调整自己的认知,让A的概率上升、B的概率下降。如果参考模型本来就觉得A好,那厨师调整的幅度就小;如果参考模型觉得B好(跟你的偏好相反),厨师就需要更大幅度地调整。

2.3 beta参数:控制变化的幅度

beta(写作希腊字母beta)是DPO训练中最重要的超参数。它的作用是控制训练后的模型不能偏离参考模型太远。你可以把它理解为一种”保守度”旋钮。

beta的值通常介于0.01到0.5之间。根据2024-2025年的实践经验 5:

beta取值效果适用场景
0.01-0.05(较小)模型会积极地调整概率分布,让chosen明显高于rejected。收敛快,但风险高——可能过拟合,甚至产生likelihood displacement(概率反而从chosen上”逃逸”)偏好数据质量高、数量大时
0.1(中等,过去常用的默认值)温和调整。Zephyr等早期DPO模型使用的值。现在已经认为偏保守,不是默认最优。数据量中等时
0.5及以上(较大)非常保守。模型几乎不改变SFT阶段的行为,对齐效果微弱。数据质量不确定、希望最小化改变时

核心建议:不要盲目使用beta=0.1。 从0.01开始搜索,在0.005到0.1之间扫参(Sweep,即依次尝试不同值找到最优)是最佳实践。如果使用了比SFT模型更强的参考模型(如同家族的大模型),beta可能需要调整到1.0甚至更高。

一个理解beta的实用技巧:如果你发现训练后的模型开始胡言乱语或输出格式崩溃,说明beta太小了。如果你发现模型跟训练前几乎没变化,说明beta太大了。

2.4 DPO vs RLHF:全方位对比

维度DPORLHF(基于PPO)
是否需要奖励模型不需要。直接从偏好对中学习。需要。须先训练一个独立RM。
训练流程一步到位:偏好数据+参考模型,直接优化策略。三步:SFT -> 训练RM -> PPO优化策略。
同时维护的模型数2个(策略模型+冻结参考模型)4个(策略+参考+奖励+价值模型)
训练稳定性高。本质是分类损失(交叉熵的变体),不像强化学习那样容易发散。低。PPO训练对超参数极度敏感,相同的参数和数据可能产生完全不同结果。
计算成本低。一次前向传播+一次反向传播,和普通监督训练几乎一样。高。需要多模型协同,PPO每次迭代需要大量采样和多次前向传播。
超参数数量少。关键参数就是beta,外加常规的训练超参数(学习率、batch size)。多。PPO clip范围、KL惩罚系数、GAE lambda、reward normalization、value loss系数等,调参空间巨大。
数据需求依赖偏好对的质量和多样性。偏好对需覆盖足够多的场景,否则泛化差。奖励模型可以泛化到训练时未见的prompt,数据利用效率在某些场景下更高。
抗噪能力较弱。嘈杂的偏好对(标注员意见不一致、标注失误)会直接影响训练。较强。奖励模型可以对数据进行平滑,有一定抗噪能力。
效果在AlpacaEval 2、MT-Bench等主流评测中与RLHF持平或略优。经典方法,经过了ChatGPT、Claude等顶级模型的充分验证。
2026年推荐默认首选。简单、稳定、效果好。当偏好数据稀缺但可以构建好的奖励模型时仍有价值;或者在需要在线交互(online RL)的场景下无法被DPO替代。

2.5 GRPO:分组比较的智慧

DPO有一个隐含的局限:每个问题只比较两个回答。 但现实中,“哪个更好”往往不是非黑即白的——A更好,但B也不差,C完全不对。两两比较丢失了这种细粒度的差别。

GRPO(Group Relative Policy Optimization,分组相对策略优化)由DeepSeek在2024年提出,用于训练DeepSeek-R1推理模型 6。GRPO的思路截然不同:

对同一个问题,用当前模型生成N个回答(通常N=8到16个),在组内比较它们的优劣,好的奖励,差的惩罚。

想象一个班级考试:

  • RLHF是请一个外部考官(奖励模型)给每个学生的卷子打分。
  • DPO是每次拿出两份卷子,让老师指出哪份更好,然后让学生从对比中学习。
  • GRPO是让全班同学一起做同一道题,所有人的答案摆在一起,排在班级前几名的得到表扬,排在后几名的得到批评。

GRPO的具体流程:

步骤1:采样一个prompt(问题)
步骤2:用当前策略生成G个不同的回答(G通常为8-16)
步骤3:用规则或评分函数给每个回答打分
步骤4:组内归一化——计算组内均值和标准差,每个回答的"优势" = (自己的分数 - 组内平均) / 组内标准差
步骤5:用组内相对优势更新策略
步骤6:对下一个prompt重复

GRPO最大的优势在于:不需要人工标注。 对于数学题和编程题,答案的对错可以用规则自动判断——数学题的最终答案对不对?代码能不能运行?测试用例过没过?这些都不需要人工参与。因此GRPO在数学推理和代码生成领域表现出了远超DPO和RLHF的潜力。

GRPO的代价是计算量:每个问题要生成G个回答,计算量是DPO的G倍。但考虑到省去了人工标注的成本和奖励模型的训练成本,总体来看仍然划算——尤其是对于有明确自动评分标准的任务。

关于GRPO的详细原理、奖励设计和应用场景,请参见GRPO (Group Relative Policy Optimization)。

2.6 2026年:怎么选

场景推荐方法理由
通用对话、写作助手、客服DPO简单、稳定。偏好数据容易获取(人类标注员比较两个回答的优劣)。
数学推理、代码生成GRPO答案对错可自动验证,不需要人工标注偏好对。组内排名比两两比较更稳定。
安全性对齐(减少有害输出)DPO + Constitutional AI思路用安全规则自动生成偏好数据(见Constitutional AI(深挖)),再跑DPO。成本低、可解释。
偏好数据稀缺,但有合理答案打分机制GRPO不需要成对比较数据,有评分规则就够。
有大量高质量偏好数据DPO数据充足时DPO的效果最好,训练也最简单。
需要极致效果,有充足算力和工程团队RLHF(PPO)顶级闭源模型(GPT-4、Claude)仍在用RLHF,在线交互学习的能力DPO无法替代。

三、注意事项:DPO的局限与使用边界

3.1 偏好数据质量决定一切

DPO对偏好数据的质量极度敏感。如果标注员”瞎标”——把实际上更差的回答标注为chosen——模型会学到错误的偏好。更隐蔽的问题是标注偏差:如果所有标注员都是20多岁的大学生,他们标注的偏好可能无法代表老年人的偏好。如果所有标注员都来自同一个文化背景,偏好数据就会带上该文化的偏见 7。

实践建议:在开始DPO训练前,随机抽查至少100条偏好对,自己读一读chosen和rejected,确认”好”的标准跟你的目标一致。比你花三天调beta更有效。

3.2 Likelihood Displacement:概率不是只涨不跌

DPO的本意是增大chosen的概率、减小rejected的概率。但2025年的多项研究发现了一个反直觉的现象:训练过程中,chosen的概率不仅没有上升,反而也下降了。 这种现象被命名为Likelihood Displacement(概率位移) 8。

原因在于:DPO损失函数只要求chosen比rejected的”相对概率”更大。当beta太小时,模型可能通过同时降低两者的概率、但让chosen降得少一些来满足这个要求。更严重的是,概率质量可能”逃逸”到既不是chosen也不是rejected的区域——甚至是有害输出的方向。

实践建议:训练时监控chosen回答的对数概率(log probability)。如果发现它持续下降,调整beta(增大)或减少训练步数。2025年的研究建议使用alpha-DPO等变体,通过调整奖励函数形状来控制概率位移。

3.3 长度偏见:模型认为”长=好”

DPO训练有一个广为人知的问题:模型会倾向于偏好更长的回答。因为标注员在比较两个回答时,不自觉地认为”更详细的回答更好”,导致chosen回答的平均长度通常大于rejected回答。模型从数据中学到”写得长=好”,但这个关联在某些场景下是错的——有时简洁才是美德。

SamPO(Down-Sampled DPO)等方法通过从正负样本中等量采样token来缓解这个问题 9。在训练数据构建阶段,刻意让chosen和rejected的长度分布接近,也是有效的预防措施。

3.4 对齐税:变好了,但也变笨了

DPO训练后,模型的对话能力、安全性、指令遵循能力通常会提升。但多个研究观察到一种叫做对齐税(Alignment Tax)的现象:模型在某些基准测试(特别是选择题类benchmark和推理任务)上的表现反而下降 10。

原因可能是:DPO让模型变得更加”谨慎”——不确定的时候就选一个安全的、中性的回答,而不是进行深度推理。这在对话中是好事(不乱说),但在需要精确推理的任务中是坏事(不敢下结论)。

实践建议:DPO训练后,务必在目标任务上做评测,不要只看对话质量。如果在推理任务上下降明显,考虑:(1) 增大beta让模型更保守;(2) 在偏好数据中混入推理任务的偏好对;(3) DPO后补做少量SFT来恢复推理能力。

3.5 什么时候不适用DPO

以下场景,DPO可能不是最佳选择:

没有偏好数据。 DPO的前提是有chosen/rejected的成对比较数据。如果你只有”这个回答好不好”的二元标注(没有比较),DPO用不了。考虑KTO(Kahneman-Tversky Optimization),它只需要单点标注。

偏好标准不稳定。 如果你对”好”的定义经常变化(比如产品迭代初期),DPO每次都要重新收集偏好对,成本很高。Constitutional AI的思路(写明文规则)更适合频繁调整的场景,详见Constitutional AI(深挖)。

需要在线学习(Online Learning)。 DPO在静态数据集上训练,无法与环境交互——模型生成一个回答,不能立刻得到反馈。如果你的场景需要模型在交互中持续改进(比如强化学习驱动的对话系统),RLHF的在线PPO更合适。

算力极度受限。 虽然DPO比RLHF便宜很多,但它仍然需要同时加载策略模型和参考模型(两个完整的大模型)到显存中。如果显存连一个模型都勉强跑起来,DPO也跑不了。此时应先考虑QLoRA(见第11.4节)在SFT阶段减少显存占用,或者使用更轻量的对齐方法如ORPO(将SFT和偏好对齐合并到一个损失函数中,不需要参考模型)。

3.6 GRPO的局限

GRPO虽然强大,但并非万能:

  • 主观任务困难。 创意写作、情感对话等没有明确评分标准。如果用LLM当”评委”来评分,又会引入LLM自身的偏见。
  • 采样成本高。 每个prompt要生成G个回答(G通常为8-16),推理量是DPO的G倍。推理速度慢的场景不适用。
  • 组内回答可能过于相似。 如果采样温度太低,G个回答几乎一样,组内排名失去意义。需要较高的采样温度来保证多样性。

四、关联:在vault中导航

本节聚焦DPO的工程实践和直觉理解。vault内以下文件提供了更深入的补充:

深入理解偏好对齐的原理与变体:

相关方法与替代方案:

微调管线上下游:


上一节:11.4 SFT:让模型学会"回答"而不是"续写" | 下一节:11.7 灾难性遗忘详解

注释

  1. Ouyang et al., “Training language models to follow instructions with human feedback”, 2022, https://arxiv.org/abs/2203.02155 ↩

  2. Schulman et al., “Proximal Policy Optimization Algorithms”, 2017, https://arxiv.org/abs/1707.06347 ↩

  3. Rafailov et al., “Direct Preference Optimization: Your Language Model is Secretly a Reward Model”, NeurIPS 2023, https://arxiv.org/abs/2305.18290 ↩

  4. Xu et al., “A Survey of Direct Preference Optimization”, 2025, https://arxiv.org/abs/2503.11701 ↩

  5. Liu et al., “Understanding Reference Policies in Direct Preference Optimization”, NAACL 2025 ↩

  6. Shao et al., “DeepSeekMath: Pushing the Limits of Mathematical Reasoning”, 2024, https://arxiv.org/abs/2402.03300 ↩

  7. Casper et al., “Open Problems and Fundamental Limitations of RLHF”, 2023 ↩

  8. Razin et al., “Unintentional Unalignment: Likelihood Displacement in Direct Preference Optimization”, ICLR 2025 ↩

  9. Xu et al., “A Survey of Direct Preference Optimization”, 2025 ↩

  10. Saeidi et al., “DPO’s Impact on Reasoning”, TMLR 2025 ↩

关联15

知识图谱

局部图谱 · 点节点跳转