1.有两份都像答案,怎样告诉模型哪份更好
同一条通知写着“周五15点开会”,地点没有提供。回答甲是“时间:周五15点;地点:未提供”;回答乙是“周五15点在A会议室开会,请提前到场”。乙更流畅、更热情,也添加了原文没有的信息。
SFT可以把甲当示范,让模型模仿。但有些任务很难写出唯一标准答案:解释可以简洁也可以详细,摘要可以有多种措辞。相比从头写出完美回答,人有时更容易比较两个现成回答,并指出哪一个更符合规则。
偏好训练把这种比较转成参数更新。本章区分两条路径:经典RLHF先学习一个奖励模型,再用强化学习优化回答模型;DPO直接从偏好对构造损失。RLHF中的HF指人类反馈,RL指强化学习;人通常提供示范与比较,不必坐在旁边逐个token打分。它们都需要数据与评测,上一章的LoRA则可以作为参数更新方式,和学习目标属于不同层次。
2.偏好对到底提供了什么信息
一条偏好记录通常包含同一个请求prompt、较优回答chosen、较差回答rejected。可简写为x、y+、y−。加减号只表示这一次比较的胜负,不表示答案绝对正确或绝对错误。TRL偏好数据格式
前面的甲胜过乙,应当因为“忠实原文、缺失地点不补造”,而不是因为甲更短。可以再造一对:两份摘要都完整准确,只是一份极其冗长。在请求明确要求简洁时,较短者才有额外优势。若训练数据中短答案总赢,模型可能把长度当成捷径。
同样,chosen也可能只是两个差答案里稍好的一份。两者若都遗漏关键时间,排名不会自动补出一个完整答案。出现平局、评价者分歧或互相冲突的标准时,应记录并处理,不能随手强选一个赢家制造确定性。
可以做一个纸笔实验:写四对通知摘要,让准确且简短、准确且较长的回答分别获胜一次,再加入两对包含遗漏或编造的回答。每次先写评价理由,再写胜负。如果移除“是否忠实原文”这个标准,排名大幅改变,你就看到了标签如何受规则控制。仅保存胜负而丢失标注规范,后来很难判断模型究竟在向什么方向优化。
3.经典RLHF:先把比较训练成评分器
经典路线通常先做SFT,得到能按任务要求回答的起点。RLHF中的“策略”并不是另一种神秘网络:对语言模型来说,它就是在当前上下文下如何给下一个token分配概率,进而决定整段回答怎样产生。
然后收集比较数据,并训练奖励模型。它读取请求和完整回答,输出一个分数r。奖励模型可以沿用语言模型的表示能力,再接一个输出单个分数的部分;用途变为评估候选,而不是直接向用户作答。
训练时希望较优回答分数高于较差回答。一种常见办法先算分差d=r(x,y+)−r(x,y−),再经sigmoid把它转成0到1之间的偏好拟合概率。这个函数可写成σ(d)=1÷(1+e的−d次方),其中e是约等于2.718的固定数。用计算器可得:分差为0时得到0.5,分差为1时约得0.731。
已标注“y+胜出”,就用−ln σ(d)惩罚与标注不一致的预测。两边同分时损失约0.693,分差为1时约0.313。这里的训练目标是预测这类比较标签;r=2既不是“答对两题”,也不是“有200%的把握”。TRL奖励模型目标
把所有分数一起加10,差值不变,偏好概率也不变。这说明单看一个奖励分数的绝对大小常常没有意义。更重要的是:它在未见比较上能否排序,以及它学到的评分理由是否符合任务。
4.有了评分器,再让策略尝试和更新
接下来让当前策略面对请求,采样出新的回答;冻结的奖励模型给这些回答打分,训练程序据此更新策略。这个循环会不断产生新回答,而不只是重复模仿原来的chosen文本。
为什么不能把奖励模型的分数当普通标签,直接从文字一路反向传播?因为“抽出哪个token”是离散选择。常见策略优化方法会利用已采样回答的概率,估计哪些选择让结果比基准更好,从而调整它们的生成倾向。PPO是经典RLHF使用的方法之一,还限制每次更新过于激进。OpenAI的PPO说明
例如,在人工教学场景中,若某次回答得分0.9,而相应基准为0.6,那么超过基准的0.3提供正向学习信号;得分0.3则低于基准0.3。实际算法会估计这种相对表现,再通过生成概率建立更新目标。它不等于宣布高分回答中的每个词都正确,也不保证每次有限步更新都让所有高分回答概率上升。
但单纯追求高分,会鼓励策略寻找评分器的漏洞。因此常保留一个冻结的参考模型,通常取SFT起点。参考模型给出原来各种回答有多大概率,用来衡量策略偏离原分布的程度;它不是提供正确答案的知识库,也不是前面那个奖励模型。
一个常见目标是:提高平均奖励,同时减去β乘以KL偏离惩罚。KL比较两个概率分布;一致时为0,整体不同会产生代价。β控制这个代价有多重要。它约束输出分布,不是拿两份参数逐项相减,也不是硬性禁止任何新回答。InstructGPT论文的训练目标
用只有两个结果的教学分布看,参考各给0.5,当前策略给0.8和0.2,KL为0.8×ln(0.8÷0.5)+0.2×ln(0.2÷0.5),约0.1927。无需背公式,只要看出改变分布有成本。约束太强可能难以改善,太弱可能放大奖励模型误差;保持接近也不会让参考模型原有错误自动消失。
PPO中用于控制一轮更新步幅的旧策略,与长期提供锚点的参考模型,是不同职责。即使初期来自同一个模型,也不应混成一件东西。经典流程在策略优化时固定奖励模型与参考模型,但现实训练可以重新收集偏好、重训评分器,不能把一张流程图当成所有系统的唯一配方。

图1|SFT之后可走两条偏好学习路线。经典RLHF需要评分器和新采样;标准离线DPO用固定偏好对直接训练。图上的分叉表示替代路线,不表示先完成RLHF才能做DPO;两条路线的参考模型都提供固定概率锚点。
5.DPO怎样省去单独的奖励模型
现在回到SFT起点,选择另一条路线。DPO不要求先完成上述奖励模型和PPO训练。它要解决的问题是:比较标签能否直接作用在回答概率上,省掉单独评分器?
先明确两个假设。第一,仍以“期望奖励-β×KL”为目标,参考策略固定,β>0。第二,用第3节的sigmoid分差模型描述偏好。对同一请求x,若奖励函数r已给定,前一种目标对应的最优策略可以写成:
π*(y|x)=π_ref(y|x)×exp(r(x,y)/β)÷Z(x)。
π*表示这个奖励目标的最优策略;Z(x)是把所有回答的未归一权重加起来的总数,让概率和回到1。奖励越高,参考概率被放大的倍数越大;β越大,放大越温和。这里假定参考策略在考虑的回答上有正概率,Z(x)有限,且奖励期望与KL都可定义。
为什么最优点不是把全部概率都给高奖励回答?先做一个只有两份候选的教学实验:参考概率各为0.5,奖励分别为1和0,β=1。把第一份的概率记为p,第二份就是1−p;平均奖励因此等于p,目标值是p减去KL。p=0.5时,KL=0,目标为0.5000;代入上式得到p=e/(e+1)≈0.7311,此时KL≈0.1109,目标≈0.6201;把p推到1时,KL=ln2≈0.6931,目标反而降到0.3069。最后一项按0×ln0的极限为0计算。
这三个点让我们看见:增加奖励的收益与偏离参考的代价一起决定折中。但检查三个点还不是一般证明,不能排除未检查的点更好。下面的短推导才解释指数形式为什么达到最大值。
选读:把目标改写成一个常数减去KL
固定请求x,先考虑有限个候选回答。π(y)是待选策略给回答y的概率,π_ref(y)是固定参考概率,r(y)是固定奖励;暂时省略共同的条件x。Σ_y表示对所有候选求和,ln是自然对数。我们要最大化:
J(π)=Σ_y π(y)r(y)−βΣ_y π(y)lnπ(y)/π_ref(y)。
先按上面的指数公式构造一个合法分布π*,尚不假定它最优。取对数可得r(y)=βlnπ*(y)/π_ref(y)+βlnZ。把它代入J,利用Σ_y π(y)=1,两项中相同的参考概率消去:
J(π)=βlnZ−βΣ_y π(y)lnπ(y)/π*(y)=βlnZ−βKL(π‖π*)。
r、参考策略与β固定以后,Z也固定;KL非负,且两分布相同时为0。因此任何π的J都不超过βlnZ,而π=π*恰好达到这个上界,最优性便得到了证明。两候选例里的上界是ln(e+1)/2≈0.6201。DPO原论文附录A.1
这个结论先在所有合法候选分布中求最优。真实神经网络的表达能力、有限偏好数据和优化过程可能限制它能达到的策略,不能把闭式解当成实际训练必然到达的结果。
对两边取对数、把奖励移到左边,就得到:
r(x,y)=β×lnπ*(y|x)/π_ref(y|x)+β×ln Z(x)。
同一道请求里的chosen和rejected共享Z(x),两份奖励相减时,最后一项正好抵消。剩下的是“两份回答各自相对参考改变多少”的差。再把这个差送入sigmoid,就得到一个直接由策略概率表达的偏好模型。DPO原论文第4节,公式4—7
实际训练用可训练策略πθ代替这个表达式里的策略,拟合已有的比较标签。这是选择一种隐式奖励的参数化方式;不能把任意尚未训练好的πθ直接宣称为人类真实奖励的最优解。好处是整个偏好损失都能由策略对已知文本的概率计算,不必另建一个输出r的网络。
实际计算时,当前模型分别读取chosen与rejected的标准前缀,算出回答各token的条件概率。把概率连乘,得到给定请求时的回答概率;把对数概率相加,得到的则是这个概率的对数。请求负责提供条件;这里比较的不是请求本身被生成的概率。
参考模型也给同两份回答计算概率。标准离线DPO固定偏好数据与参考模型,直接前向计算损失、反向传播、更新策略;参考概率可以预先计算。它不需要另外训练一个显式奖励模型,也不需要在每次更新循环里重新采样文本。因此,“直接”仍是训练,不是把两个答案排序后存成检索表。
为看清依赖,先给一组完整的教学概率:当前策略的chosen、rejected、其他回答分别为0.30、0.05、0.65,参考分别为0.20、0.10、0.70。图2把计算依赖画开:同一份固定偏好对同时送入当前策略与参考模型,两边各产生chosen和rejected的对数概率。四个值相减后进入损失,梯度只更新当前策略。

图2|用候选甲的教学数值计算DPO:当前概率0.30/0.05,参考概率0.20/0.10,R=3,β=1时q=0.75、损失约0.2877。参考分支提供常量;没有“当前策略输出喂给参考模型”的依赖箭头。
离线数据的覆盖也构成限制:如果训练对里从未出现含两场会议的通知,模型不会仅凭优化这些比较,就获得关于该情形的直接反馈。训练后生成的新答案可能落在旧数据少见的区域,因此仍要用新请求核查,必要时补充有依据的比较。
这个方法和KL有推导上的联系,却不意味着每一步都单独测量全体回答的KL并执行一个硬上限。不同损失变体、数据分布与实现都会改变效果。DPO也没有证明“只要偏好训练,所有任务都优于PPO”。
6.亲手算相对胜算,而不只盯着chosen
把请求固定。假设参考模型给较优回答0.20、较差回答0.10,其余所有回答总共0.70。参考中的两者概率比是2。这里用很大的整句概率只是为了手算,真实长回答的概率通常小得多。
设当前策略的两者概率比,除以参考的概率比,结果叫R。即R=[p(y+)÷p(y−)]÷[p_ref(y+)÷p_ref(y−)]。它衡量偏好的相对胜算比原来放大了多少。
标准DPO把β×ln R送入sigmoid,再对结果取负对数作为损失。β是目标中的权衡系数,不是学习率。为方便本次教学,取β=1,这时偏好拟合概率q=R÷(1+R),损失L=−ln q;该取值不是训练建议。TRL的DPO损失公式
若当前策略等于参考,R=1,q=0.5,L约0.6931。候选分布甲给两份回答0.30和0.05,其余0.65,则概率比为6,R=3,q=0.75,L约0.2877。这个偏好对被拟合得更好了。
再看独立候选分布乙:较优回答0.10、较差回答0.01、其余0.89。较优回答的绝对概率从参考的0.20降到了0.10,但两者概率比升到10;R=5,q约0.8333,L约0.1823,损失依然更低。
乙中rejected从0.10降到0.01,只剩原来的十分之一;chosen剩原来的一半,所以两者的相对胜算仍然上升。这里rejected指这次比较落败的回答,不是“拒绝回答”的同义词。
这不是声称某次实际梯度更新一定这样走,而是一个数学反例:偏好损失降低,并不逻辑保证chosen绝对概率每步上升。模型共享参数、其他训练对及更新步长,也会影响真实变化。q同样不是答案事实正确的概率。
反例也不表示chosen没有获得正向训练信号。对单个偏好对,DPO梯度包含提高chosen对数概率、降低rejected对数概率的两项;当前相对排序越不符合偏好,这一对的权重通常越大。实际更新修改的是共享参数,还要汇总其他样本,所以不能把这两项的方向当作每个绝对概率的逐步保证。

图3|三行是三个独立的教学概率分布,参考始终相同。两个候选分布都降低了偏好损失,其中一个却降低了较优回答的绝对概率;它不是实际训练轨迹。
7.公开案例要读清实验范围
2022年的InstructGPT展示了示范SFT、比较数据训练奖励模型、PPO优化策略的实际路线。研究报告中,标注员在相应请求分布上更偏好13亿参数InstructGPT的输出,而不是1750亿参数GPT-3的输出。这说明训练目标与数据能显著影响可用性,不能外推成小模型在所有知识或推理任务上都更强。OpenAI的InstructGPT说明
DPO原论文则给出无需显式奖励模型的路径,并在情感控制、摘要及对话等任务上进行实验。理解它的价值,应看减少了哪段训练流程、在什么评测下有效,不能把论文里的比较结果变成永久的算法排行榜。
截至2026年10月6日核对的TRL官方DPO文档,使用Qwen3-0.6B与UltraFeedback二元偏好数据作入门示例,也支持适配器训练。它证明这些概念有具体的数据字段与训练接口;不证明Qwen原始模型就用这份数据训练,更不证明所有偏好标签都来自真人。阅读数据卡、模型版本、评分来源及损失类型仍然必要。TRL当前DPO示例
8.模型可能学会讨好评分器
奖励只是目标的代理。若评分器偏爱长答案,策略可能增加无用解释;若它偏爱肯定语气,模型可能把不确定的内容说得更坚定。继续优化代理分数,不保证真实质量一直提高,奖励过度优化是有公开研究的风险。OpenAI奖励过度优化研究
DPO绕开了单独奖励模型,却没有绕开标注偏差。人可能漏看事实错误,也可能在礼貌与准确之间做错权衡。偏好训练不会自动获得外部证据、最新资料或一个可靠的真值检查器。
评价时应保留未见请求,用明确标准比较完整生成结果,分开看忠实性、事实正确性、格式与用户偏好。评审应尽量不知道答案来自哪个模型,调换展示顺序,并检查长度是否在主导胜负。由模型担任评审时,也需要抽查其错误。
从接口职责看,奖励模型回答“这份输出多受偏好”,参考模型回答“原分布多看好这份输出”,独立验收回答“真实需求有没有满足”。一个接口的数值改善,不会自动完成另一个接口的检查。软件工程里可以据此分开记录训练损失和验收结果:数学优化目标指导参数怎样变,产品验收用独立样本检查需求是否实现,二者不是同一层。微调改变的是许多输入上的输出倾向,不能像修改一条明确的程序分支那样,直接承诺某类新回答必然符合规则。
尤其别把训练中“偏好准确率”提高理解成全部回答更真实。在标准DPO日志中,它可能只表示那批已给定答案对中,chosen相对参考模型的隐式奖励更常高于rejected。部署时生成的是新文本,还需要独立检查。KL约束、SFT起点与高质量偏好数据各有帮助,仍不是安全和真实性的完整保证。
本章练习
题目
问题1|同分平移
奖励模型给两份回答的分数为2与1。两者都加10后,偏好拟合概率改变吗?单个分数2能否解释成事实正确率?
问题2|相对胜算怎样提高
参考分布的chosen、rejected、其他为0.20、0.10、0.70;候选乙为0.10、0.01、0.89。取β=1,求R、q和损失L,并说明chosen绝对概率的变化。
问题3|两条路线与两个接口
一个SFT模型准备学习固定偏好对。使用标准离线DPO前必须先跑PPO吗?当前策略与参考模型如何读取数据、谁接受梯度更新?与经典RLHF中的奖励模型有何不同?
问题4|高奖励为什么不占全部概率
只考虑两份候选,固定参考各0.5、奖励1和0、β=1。第一份概率为p时,平均奖励是多少?已知p≈0.731059时KL≈0.110944,p=1时KL≈0.693147,比较两者“平均奖励−KL”的目标值,保留四位小数。仅比较这两个点能否证明全局最优?
思考提示
提示1|对应问题1
偏好模型使用分差;检查分差是否改变。
提示2|对应问题2
分别求两者概率比,再除以参考的比值;使用q=R/(1+R)。
提示3|对应问题3
回看图1的分叉与图2的并联输入,把概率接口与评分接口分开。
提示4|对应问题4
先按概率加权两个奖励,再扣除偏离成本;区分数值比较和覆盖所有合法分布的证明。
参考答案与解析
答案1|对应问题1
分差仍为1,sigmoid(1)约0.731,偏好拟合概率不变。分数2没有自动对应的正确率含义;该评分器拟合比较标签,还需独立事实检查。
答案2|对应问题2
参考比值为2,候选乙比值为10,所以R=5,q=5/6≈0.8333,L=-ln(5/6)≈0.1823。chosen绝对概率从0.20降到0.10,但rejected按比例降得更多;这说明损失降低不要求chosen每次绝对上升。三项仍和为1。
答案3|对应问题3
不必先跑PPO。固定偏好对同时送入当前策略与参考模型,两边各算两份回答的对数概率;标准设置只更新当前策略,参考冻结,也可预计算。经典RLHF另外训练奖励模型输出分数,再通过采样与策略优化更新回答模型;奖励模型不是参考概率接口。
答案4|对应问题4
平均奖励为p×1+(1−p)×0=p。两个目标约为0.731059−0.110944≈0.6201、1−0.693147≈0.3069。全压在高奖励回答上增加了奖励,也付出更大的KL成本,所以此例反而较差。两点比较只支持这两个候选的排序;一般最优性由选读中的J=βlnZ−βKL(π‖π*)及KL非负给出。
下一章
偏好适合表达“更清楚、更有帮助”,但数学题结果和程序测试有时可以直接检查。下一章沿着策略、采样、奖励与更新这条链路,看看把人类偏好换成可验证奖励后,分数怎样进入可优化的目标,又会在哪些地方教错模型。