大模型偏好优化技术:DPO及其变种
大模型对齐(Alignment)是将大模型从“续写”模式转变为“对话”模式的重要技术。充分与人类心智对齐的大模型才能更好服务于各种下游任务。ChatGPT是大模型充分对齐的里程碑,其对齐方案涉及了复杂的RLHF技术,存在效果不稳定、训练难度大等缺陷。为此,斯坦福大学提出DPO(Direct Preference Optimization)偏好优化算法,实现了稳定的对齐方案。本文旨在对DPO及其主要变种工作进行介绍,同时总结了我们在相关研究方面的经验。
什么是偏好优化(Preference Optimization)
在ChatGPT的姊妹模型InstructGPT ([1]) 的训练报告中,OpenAI披露了“三步走”的RLHF(Reinforcement Learning from Human Feedback)策略:SFT、RM、PPO ([2]) 。其中,RM和PPO是指先训练一个拟合人类偏好的二元分类奖励模型RM(Reward Model),再通过近段策略优化PPO(Proximal Policy Optimization)这一强化学习算法对LLMs进行参数更新。这一策略存在三个致命缺点:
- (1)奖励模型RM的准确率较低,在现有的偏好数据上只能训到70%~80%。这一方面是因为人类偏好较难拟合,另一方面是因为奖励模型一般较小,过大的奖励模型会引起PPO阶段训练的崩溃;
- (2)PPO训练不稳定,相同的参数和数据也有可能出现不一样的结果;
- (3)PPO阶段训练成本大。这是因为策略模型的更新依赖于奖励模型的显式反馈,所以每个训练step耗时长、GPU消耗大。
为此斯坦福大学提出了DPO(Direct Preference Optimization)算法 ([3])。正如其名,DPO从理论上消除了奖励模型RM和与之相关的RL环节,直接采用二元偏好数据对LLMs进行参数更新。
DPO的理论分析
首先,我们有PPO的目标函数: πθmaxEx∼D,y∼πθ(y∣x)[rϕ(x,y)]−βDKL[πθ(y∣x)∣∣πref(y∣x)]
,这旨在最大化奖励 rϕ(x,y)
,且最小化策略模型和原始模型生成结果的KL散度 DKL[πθ(y∣x)∣∣πref(y∣x)]
。最大化奖励的含义是鼓励模型朝人类偏好的方向更新参数,最小化KL散度是抑制模型产生过度偏离原始SFT模型的结果。其中 β
是控制偏差程度的经验性超参数,个人理解类似LLMs解码中的温度 τ
。 beta
越大,表示对模型的优化越保守,反之则越自由。
从PPO的目标函数可推导出DPO的优化目标:
- πθmaxEx∼D,y∼πθ(y∣x)[rϕ(x,y)]−βDKL[πθ(y∣x)∣∣πref(y∣x)]
- = πθmaxEx∼DEy∼πθ(y∣x)[rϕ(x,y)−βlogπref(y∣x)πθ(y∣x)]
- = πθminEx∼DEy∼πθ(y∣x)[logπref(y∣x)πθ(y∣x)−β1rϕ(x,y)]
- = πθminEx∼DEy∼πθ(y∣x)[logZ(x)1πref(y∣x)exp(β1rϕ(x,y))πθ(y∣x)−logZ(x)]
,其中配分函数 Z(x)=y∑πref(y∣x)exp(β1rϕ(x,y))
- 可以将上式中 Z(x)1πref(y∣x)exp(β1rϕ(x,y))
定义为 π∗(y∣x)
,其含义为从 x
生成 y
的一组有效概率分布,且保持 ∑yπ∗(y∣x)=1
,将之带回上式
- 得到 πθminEx∼DEy∼πθ(y∣x)[logπ∗(y∣x)πθ(y∣x)−logZ(x)]
,由于 Z(x)
是只关于 x
的函数,因此
- 上式 πθminEx∼D[Ey∼πθ(y∣x)[logπ∗(y∣x)πθ(y∣x)]−logZ(x)]
- = πθminEx∼D[DKL(πθ(y∣x)∣∣π∗(y∣x))+Z(x)]
,再由吉布斯不等式(Gibbs Inequality)得
- πθ(y∣x)=π∗(y∣x)=Z(x)1πref(y∣x)exp(β1rϕ(x,y))
,由此变换得
- rϕ(x,y)=βlogπref(y∣x)πθ(y∣x)+βlogZ(x)
,即奖励模型 rϕ(x,y)
可以表示为策略模型 πθ(y∣x)
、参考模型 πref(y∣x)
和配分函数 Z(x)
的组合。请注意配分函数 Z(x)
本身还含有奖励模型 rϕ(x,y)
- 根据Bradley-Terry偏好模型,偏好概率 Pθ(y1≻y2∣x)=exp(rϕ(x,y1))+exp(rϕ(x,y2))exp(rϕ(x,y1))
,代入上式可得
- Pθ(y1≻y2∣x)=exp(βlogπref(y1∣x)πθ(y1∣x)+βlogZ(x))+exp(βlogπref(y2∣x)πθ(y2∣x)+βlogZ(x))exp(βlogπref(y1∣x)πθ(y1∣x)+βlogZ(x))
- = 1+exp(βlogπref(y2∣x)πθ(y2∣x)−βlogπref(y1∣x)πθ(y1∣x))1
,注意这里消去了配分函数 Z(x)
,也就消去了奖励模型 rϕ(x,y)
- = σ(exp(βlogπref(y1∣x)πθ(y1∣x)−βlogπref(y2∣x)πθ(y2∣x)))
,因此得到DPO的优化目标为:
- πθ,πrefmaxE(x,y1,y2)∼D[logσ(βlogπref(y1∣x)πθ(y1∣x)−βlogπref(y2∣x)πθ(y2∣x))]
,其中正偏好 y1
、负偏好 y2
表示遵循Bradley-Terry偏好模型定义的不同人类偏好, y1≻y2
从上述推导可知,DPO将奖励函数隐式建模在策略模型 πθ(y∣x)
和 πref(y∣x)
的偏差中,在最大化正偏好隐式奖励的同时最小化负偏好隐式奖励,并同样使用 β
控制偏差程度。一些研究表明 ([3]、[4]) ,不论是PPO还是DPO,KL散度的控制系数 β
是必须的,过大或者过小的系数值均会引起策略模型基本语言建模能力的严重退化(退化为A B C C C C C C这样的序列,详见DPO论文附录表3)。
DPO的优势、缺陷与改进
- 优势:从优化目标出发,我们可以发现DPO明确消除了奖励模型的显式存在,将RLHF简化为二元偏好优化,明显削减了训练成本。同时,由于参考模型一般采用冻结的原始策略模型(PPO也是),这保证了参考模型与策略模型内在参数分布的一致性,也决定了DPO比PPO训练更加稳健。
- 缺陷与改进:DPO的发布引起诸多讨论,也有不少后续工作对其展开分析和改进。下面简单介绍3种主流改进,都被集成在TRL库中:
- IPO: Identity Preference Optimization ([5])。IPO认为PPO与DPO建立在Bradley-Terry偏好模型的基础上,这就决定了它们预先假设通过训练数据内的成对偏好,可以让模型推断出一个稳定的偏好概率值。但事实上,假设真实的 Pθ(y1≻y2∣x)=0.8
,当训练数据存在噪声或者不充分时,模型可能会估计出 Pθ(y1≻y2∣x)=1.0
,使优化方向为 βlogπref(y1∣x)πθ(y1∣x)−βlogπref(y2∣x)πθ(y2∣x)→+∞
,即 πθ(y∣x)→0
。为此,IPO提出,将DPO的优化目标改为 πθ,πrefmaxE(x,y1,y2)∼D(logπref(y1∣x)πθ(y1∣x)−logπref(y2∣x)πθ(y2∣x)−2β1)2
,即将sigmoid优化目标改为square,从而实现对过拟合的正则。此外,特别需要提出的是,IPO作者们后续提出在计算 βlogπref(y∣x)πθ(y∣x)
隐性奖励分数时使用“均值”似然而不是DPO使用的“加和”似然。
- KTO:Kahneman-Tversky Optimization ([6])。DPO要求高质量的成对正负偏好数据用于训练,但这一点往往在现实世界中不可得。为此,KTO引入经济学中的“前景理论”,将“人的偏好”转变为“人的效用”纳入对齐函数,得到新的优化目标为 πθ,πrefmaxE(x,y)∼D[w(y)(1−v(x,y;β))]
,其中 w(y)
和 v(x,y;β)
分别是超参选择函数与效用计算函数(具体定义见KTO论文第6页),随 y
的正负性而改变。也就是说,只需要告知当前偏好的正负性,而不需要成对偏好,即可得到优化目标。
- RSO:Rejection Sampling Optimization ([7])。RSO建议改用hinge loss替换sigmoid loss,同时将拒绝采样的思想纳入到负偏好的选择中。RSO的优化目标为 πθ,πrefmaxE(x,y1,y2)∼DRELU[1−(βlogπref(y1∣x)πθ(y1∣x)−βlogπref(y2∣x)πθ(y2∣x))]
,其中$\mathbb{RELU}$代指RELU函数,即一个比DPO使用的sigmoid更不平滑的损失函数(直观对比)。需要指出,RSO是对更早期算法(RRHF ([8])、SLiC ([9]))的继承与改进。
此外,介绍一种我们对DPO的改进思路:SamPO:Down-Sampled DPO ([11])。在调优DPO算法的过程中,我们认知到它存在明显的长度偏见。我们从理论角度对此进行了分析,并提出简单的下采样校正方案SamPO。SamPO的优化目标为: πθ,πrefmaxE(x,y1,y2)∼D[logσ(βt=1∑Tmlogπref(ywt∣x)πθ(ywt∣x)−βt=1∑Tmlogπref(ylt∣x)πθ(ylt∣x))]
,其中 Tm
= min (Tw,Tl)
, yt∼
Uniform (Tm,{y}T)
。SamPO的核心点在于从正负偏好中下采样等量的特征以消除长度偏见,并实现对DPO中欠估计样本的有效学习。我们也在SamPO中对十余种DPO变体算法做了统一框架下的消融对比实验。
偏好优化实验结果
- 外部实验:超参数扫描
- 可以看到,DPO及其后续改进算法,均离不开 β
这一超参,为此Huggingface团队尝试做了超参扫描。他们的结论是:不同的底座模型 + 算法的组合,依赖不同的 β
超参,很难找到一个固有的最佳超参;甚至不同模型最适配的最佳算法也不是一致的。比如Zephyr-7b-beta-SFT的最佳提升出现在IPO + β
=0.4,OpenHermes-7b-2.5的最佳提升出现在DPO + β
=0.6。
- 根据DeepSeek ([10])等报告显示,DPO可以特别提升模型在自由开放问答场景下的能力(open-ended generation),但可能会相应削弱受限生成(如多选题benchmark)下的能力,表现出“对齐税”现象 ([1])。
- 内部实验:模型对齐
- 我们基本复现了AllenAI Tulu2系列的工作。使用开源模型和6.1万开源数据进行调优,确认了一系列训练超参和调优的细节,使用(lm-evaluation-harness)[https://github.com/EleutherAI/lm-evaluation-harness]的评测结果如下:
|
|
|
|
|
|
|
|
|
GSM8K 8-shot |
BigBenchHard 3-cot-shot |
IFEval 3-shot |
PiQA 3-shot |
MMLU 0-shot |
TruthfulQA 3-shot |
Average |
Tulu2-13B |
40.56 |
52.25 |
37.17 |
81.39 |
55.53 |
33.78 |
50.11 |
Tulu2-13B+DPO |
42.99 |
51.8 |
42.45 |
81.28 |
56.07 |
41.86 |
52.74 |
Tulu2-13B+DPO复现 |
43.44 |
52.27 |
43.17 |
81.66 |
56.08 |
39.66 |
52.71 |
- 我们研究了一项难度较大的特定任务:自动prompt优化(Automatic Prompt Optimization)。我们发现在微妙语义的任务上偏好优化明显优于SFT优化 ([12])。
- 我们研究了DPO在角色扮演和指令遵循复合微调方面的效果,发现DPO模型相比与SFT模型损失了一定的多轮指令遵循能力 ([13])。
偏好优化要点总结
除了上述最终的测试效果,我们也在不同 β
超参数、不同学习率、lora/全参数微调方式、不同尺寸模型、不同算法等各个方面对偏好优化对齐进行了探索。得到的一些结论总结如下:
- 超参数的影响:当使用的数据总量较大时(30万~50万,甚至更多), β
超参数的影响并没有huggingface的测试来的那么明显。
- 学习率的影响:DPO的训练对学习率比较敏感,过大的学习率会引起模型的退化,而过小的学习率会抑制DPO对齐的效果。
- 微调方式的影响:全参数最终优于lora,但对数据的拟合趋势保持一致。
- 不同尺寸模型:DPO在7B、13B、70B等全部常见大模型尺寸上均有稳定收益。
- 不同算法:IPO使用正则的loss,因此可以产生比DPO更保守但稳定的结果。DPO可以得到比IPO更好的效果,但是要注意控制训练step,避免过度拟合。RSO和KTO的结果整体不如DPO与IPO。
我们使用TRL库进行Tuku2复现实验。在此附上我们使用的超参,大部份参数同Tulu2工作对齐:
- 算法中的beta: 0.1
- learning_rate: 1e-6
- total_train_batch_size: 128
- optimizer: AdamW beta1 0.9, beta2 0.999, epsilon 1e-8
- lr_scheduler_type: linear
- lr_scheduler_warmup_ratio: 0.1
- Weight Decay: 0.0
- num_epochs: 3
参考文献
【1】InstructGPT:Ouyang, Long, et al. "Training language models to follow instructions with human feedback." Advances in Neural Information Processing Systems 35 (2022): 27730-27744.
【2】PPO:Schulman, John, et al. "Proximal policy optimization algorithms." arXiv preprint arXiv:1707.06347 (2017).
【3】DPO:Rafailov, Rafael, et al. "Direct preference optimization: Your language model is secretly a reward model." Advances in Neural Information Processing Systems 36 (2024).
【4】Zheng, Rui, et al. "Secrets of rlhf in large language models part i: Ppo." arXiv preprint arXiv:2307.04964 (2023).
【5】IPO:Azar, Mohammad Gheshlaghi, et al. "A general theoretical paradigm to understand learning from human preferences." arXiv preprint arXiv:2310.12036 (2023).
【6】KTO:Ethayarajh, Kawin, et al. "KTO: Model Alignment as Prospect Theoretic Optimization." arXiv preprint arXiv:2402.01306 (2024).
【7】RSO:Liu, Tianqi, et al. "Statistical rejection sampling improves preference optimization." arXiv preprint arXiv:2309.06657 (2023).
【8】RRHF:Yuan, Zheng, et al. "Rrhf: Rank responses to align language models with human feedback without tears." arXiv preprint arXiv:2304.05302 (2023).
【9】SLiC:Zhao, Yao, et al. "Slic-hf: Sequence likelihood calibration with human feedback." arXiv preprint arXiv:2305.10425 (2023).
【10】Bi, Xiao, et al. "Deepseek llm: Scaling open-source language models with longtermism." arXiv preprint arXiv:2401.02954 (2024).
【11】Lu, Junru, et al. "Eliminating Biased Length Reliance of Direct Preference Optimization via Down-Sampled KL Divergence." arXiv preprint arXiv:2406.10957 (2024).
【12】Lu, Junru, et al. "FIPO: Free-form Instruction-oriented Prompt Optimization with Preference Dataset and Modular Fine-tuning Schema." arXiv preprint arXiv:2402.11811 (2024).
【13】Lu, Junru, et al. "A Fine-Grained Composite Benchmark for Role-Playing and Instruction-Following." arXiv preprint arXiv:2502.11387 (2025).