# 读 Selective DPO：偏好数据为什么不是越难越好


偏好对齐里有一个很自然的直觉：只要 chosen 和 rejected 没有标错，数据越多越好；难样本甚至应该更有训练价值。

Selective DPO 挑战了这个直觉。它提出，偏好数据是否有用，不只取决于标签质量，也取决于样本难度是否落在当前模型的能力范围内。

论文的核心主张是：

> 偏好样本具有稳定的难度差异；过难样本会因为超过模型容量而伤害对齐，而且“过难”的阈值随模型能力变化。

<!--more-->

## 难样本为什么不等于坏数据

偏好样本通常包含 prompt、preferred response 和 rejected response。DPO 希望模型提高 chosen 相对 rejected 的隐式奖励差。

一条样本可能很难，原因却有很多：

- chosen 与 rejected 的质量差异非常细微；
- 任务需要数学、多语言或专业知识；
- 响应风格和训练分布不同；
- 标签本身存在噪声。

其中只有最后一类明确属于数据错误。前几类样本即使标签正确，也可能要求模型完成它当前还不会的区分。

Selective DPO 的重点不是“把错标数据清掉”，而是区分两个问题：

1. 这条偏好标签是否正确？
2. 当前模型是否有能力从这条偏好中学到稳定信号？

论文通过翻转困难样本标签等实验说明，过难样本不能简单等同于错标。真正的问题是数据难度和模型能力不匹配。

## 怎样证明样本真的有稳定难度

作者首先定义 learned step：一个 held-out 样本在训练到第几步之后，模型才开始稳定地区分 chosen 和 rejected。

如果难度只是随机噪声，那么不同随机种子、训练子集和模型上的学习顺序应该很不稳定。论文观察到，许多样本在不同运行中仍以相近顺序被学会。这说明偏好数据存在相对稳定的难度结构。

learned step 的问题是计算贵：要在训练过程中反复评估 held-out 样本。作者因此寻找更便宜的代理，最后使用 validation loss。

具体做法是：

1. 把训练集随机拆成互补的两部分；
2. 在一部分上用 DPO 训练参考对齐模型；
3. 用参考模型计算另一部分 held-out 样本的 validation loss；
4. 多次拆分和训练，取每条样本的平均 validation loss；
5. loss 越高，样本被认为越难。

论文报告，四组模型上 validation loss 与 learned step 排名的 Spearman 相关系数约为 0.92–0.93，并且两种指标识别出的困难样本集合高度重合。

这里的 validation loss 不是用最终要训练的模型在同一批训练样本上自评。它依赖互补分割和 held-out 评估，目的是减少直接记忆和数据呈现顺序的影响。

## Selective DPO 实际做了什么

算法本身并不复杂，可以分成三步：

### 1. 训练难度评估模型

论文重复进行数据拆分，在各子集上训练多个 DPO reference models。这里的 reference models 用于估计样本难度，不是 DPO 目标中控制 KL 的原始 SFT reference model。

### 2. 按 validation loss 排序

每条样本由没有见过它的参考模型评估多次，取平均 validation loss，形成从易到难的排序。

### 3. 只在能力范围内的数据上对齐

选择 loss 较低的一定比例样本，再执行普通 DPO。论文的主要实验常选择较容易的 50% 数据，并从易到难呈现。

因此它没有修改 DPO loss，也没有设计新的偏好优化器。它把主要改动放在进入 DPO 之前的数据选择阶段。

## 真正有效的是课程排序，还是删除困难样本

论文比较了三种设置：随机使用全部数据、按难度从易到难使用全部数据、只选择较容易数据再训练。

结果显示，主要收益来自排除最困难的样本，而不是单纯改变呈现顺序。容易样本即使随机打乱，也能获得与课程排序接近的改善。

这一区别很重要。论文支持的不是泛化版本的“curriculum learning 一定有效”，而是更具体的结论：在这些 DPO 设置中，模型能力之外的偏好样本会产生负贡献，过滤比排序更关键。

## 模型越大，能吃下的数据越难

如果困难样本只是普遍低质，那么不同模型应该在相似位置达到最佳点。论文用 Qwen-2.5 3B、7B 和 14B 做对比，发现模型越大，最佳训练数据比例越高。

在 Argilla-dpo-mix-7k 的实验中，论文报告的 sweet spot 从 3B 模型约 64% 上升到 14B 模型约 81%。这支持“难度相对于模型容量定义”的解释：同一条样本对小模型可能过难，对大模型却可能有益。

所以 Selective DPO 不能产生一份永久有效的“坏数据黑名单”。更换底座模型、训练阶段或数据分布后，难度需要重新估计。

## 实验结果应该怎样读

论文在多个模型和偏好数据集上验证，并在 AlpacaEval 2 上报告相对标准 DPO 提高 9–16 个百分点的 win rate，同时比较了 Arena-Hard 和 MT-Bench。

这些结果说明数据选择可以超过一些直接修改 DPO 算法的方案，但有三条口径必须保留：

第一，筛选并不免费。论文为了稳定估计 validation loss，训练了多个参考模型；在其主要配置中，六个参考模型被认为是效果和成本的折中。

第二，筛选比例是超参数。论文指出它取决于模型容量和数据难度分布，实践中仍需验证集或外部评估器调节。

第三，普通 win rate 容易受到回答长度影响。论文自己也观察到 Selective DPO 可能偏向更长响应，length-controlled 指标上的优势没有始终同样大。

## 它可能牺牲什么

过滤困难数据会提高当前对齐指标，却可能丢掉某些专门能力。论文附录报告，Mistral-7B 的 GSM8K 表现出现下降；一个解释是数学样本更容易落入高 validation loss 区域，筛选时被排除。

这暴露了 Selective DPO 的核心权衡：

> “当前模型学不动”不等于“这项能力不重要”。

如果目标产品需要数学、多语言或专业任务，就不能只按总体 difficulty 一刀切。更合理的做法可能是分领域估计难度、保留关键能力配额，或先提升模型能力再逐步纳入更难数据。

## 对实际训练的启发

Selective DPO 最值得借走的不是完整流水线，而是三条判断原则：

1. 偏好数据的价值取决于模型状态，不能只做一次静态质量判断；
2. clean data 仍可能因为难度不匹配而产生负训练信号；
3. 数据过滤必须同时检查总体对齐指标和被过滤领域的能力回退。

在算力有限时，可以先用较少 reference runs 验证 validation loss 排名是否稳定，再决定是否采用完整筛选流程。若只是机械保留最容易的一半，而不检查模型规模、领域覆盖和 length bias，就只复制了论文的表面操作，没有复制它的因果逻辑。

## 结语

Selective DPO 的算法改动很轻，但它提出的问题很重要：对齐训练的瓶颈不一定是 loss 不够复杂，也可能是模型被要求从超出当前能力的偏好对中学习。

“更多高质量数据”只有在模型能理解这些数据时才成立。真正需要匹配的是三件事：标签质量、样本难度和模型容量。

## 参考链接

- [Principled Data Selection for Alignment: The Hidden Risks of Difficult Examples](https://arxiv.org/abs/2502.09650)
- [SelectiveDPO 官方代码](https://github.com/glorgao/SelectiveDPO)
- [Direct Preference Optimization](https://arxiv.org/abs/2305.18290)

