训练与微调腾讯面经高频拼多多面经高频DPO模型训练数据清洗速答 · 约 6 分钟更新 2026-09-28

DPO 训练时 chosen 和 rejected 的概率同时下降,是什么原因、怎么处理?

一句话结论

DPO损失只关注相对概率差,不保证绝对概率上升。当数据存在标注颠倒或同质化严重时,模型会同时压低两者概率。处理时首要检查清洗数据,其次考虑在训练侧增加SFT损失项托底或采用变体。

先这样答

DPO 训练中 chosen 和 rejected 概率同时下降,本质是因为损失函数只优化相对参考模型的概率差,不约束绝对概率。只要概率差在拉大,损失依然会下降。这种情况主要由数据质量差引起——比如标注颠倒或样本过于同质。处理这套问题的标准流程是先洗数据,再调训练参数,最后考虑损失变体。

具体来看,成因集中在三个方面。最常见的是数据侧的噪声,当数据里 rejected 样本质量明显优于 chosen 样本时,模型为了拉开差距,只能选择把两边的概率都压低。其次是偏好对太同质,chosen 和 rejected 差异微小,导致梯度方向退化。训练侧的原因则是学习率过大,使得参考模型的约束项失效。这种双降会导致模型整体变得不会说这句话,外在表现往往是输出变短、生成多样性下降。

对应的处理动作按优先级分为三步。第一步也是最关键的一步是数据过滤,利用奖励模型或大语言模型复核偏好对,剔除矛盾样本和 chosen 其实更差的坏对。第二步是训练侧调整,比如降低学习率,或者在损失函数中对 chosen 侧加上 SFT 损失项进行托底,强制维持绝对概率。第三步是更换损失函数形态,采用 IPO 或 SimPO 等变体。在训练过程中,必须持续监控 chosen 与 rejected 各自的绝对对数概率曲线,一旦出现同降即触发预警。

总结来说,DPO 优化的是相对偏好,绝对概率处于无人看管的状态。遇到双降问题,首先认定是数据脏了导致两边一起塌陷——先把数据洗干净,再去谈算法变体的引入。

面试官会怎么追问

  • 「遇到筛选数据不稳定的情况,DPO 阶段要怎么处理?」 筛选数据不稳定通常是因为偏好对中存在大量矛盾样本或标注倒置。处理方法是引入大语言模型或奖励模型对全量偏好数据进行交叉打分复核。直接剔除那些分数倒挂以及两者得分差异微小的同质化样本,确保喂给模型的偏好对具备明确的方向性。
  • 「你提到加 SFT 损失项托底,具体是怎么起作用的?」 单纯的 DPO 损失只看相对比值,模型为了快速降低损失可能会牺牲 chosen 样本的绝对生成概率。加入 SFT 损失项相当于给 chosen 样本的对数概率设定了一个硬约束。这样模型在拉开偏好差距的同时,必须保证标准答案的生成概率不低于一定水平,从而防止模型输出变短。
  • 「训练过程中除了看总体损失,还要重点监控哪些指标来预防这个问题?」 必须将 chosen 和 rejected 的绝对对数概率曲线拆开来看。如果发现总体损失在下降,但 chosen 样本的绝对对数概率也在持续下降,就说明模型正在走向退化。此时需要立即暂停训练,回溯检查当前批次的数据质量。

回答的坑

  • 认为问题完全出在算法缺陷上,直接回答更换复杂的损失函数变体。正确的方向是优先排查数据质量,因为标注颠倒和同质化才是导致该现象的最主要原因。
  • 误以为 chosen 概率下降意味着模型在学习相反的偏好。正确的理解是模型依然在学习偏好差值,只是相对概率的优化导致了绝对概率的无约束坍塌。
—— 本题完 ——