偏好数据收集:成对比较设计、排序标注设计、评分标注设计
好,咱们今天聊聊偏好数据收集。这是奖励模型训练里最接地气、也最容易被忽视的一环。
说白了,你模型学得好不好,很大程度上取决于你喂的数据长什么样。我见过不少团队,模型结构抄得一模一样,训练代码也差不多,但最终效果天差地别。为什么?数据收集的细节没抠到位。
偏好数据收集,主流就三种方式:成对比较、排序标注、评分标注。咱们一个一个拆开讲。
成对比较设计
这是目前业界最常用的方法。给标注员看两个模型输出,让他选哪个更好。简单粗暴,但有效。
为什么大家都爱用成对比较?
因为人的大脑天生就不擅长打绝对分,但很擅长做相对判断。你让标注员给一个回答打8分,他可能犹豫半天。但你让他从A和B里选一个更好的,他几乎不用思考。
我在项目中遇到过一件事:一开始我们让标注员给每个回答打1-5分,结果数据质量惨不忍睹。同一个回答,不同人给的分数能差3分。后来改成成对比较,一致性直接提升了40%。
- 对比项来源:最好来自不同模型,或者同一模型的不同温度采样。不要用两个完全一样的输出。
- 展示顺序:A和B的左右位置要随机打乱。避免位置偏差。
- 平局选项:一定要加「差不多」或「无法判断」的选项。强行二选一会引入噪声。
排序标注设计
成对比较的升级版。一次给标注员看多个输出(通常是3-5个),让他按质量从高到低排序。
什么时候用排序?
当你需要更细粒度的偏好信息时。成对比较只能告诉你「A比B好」,但排序能告诉你「A最好,B次之,C最差」。这对训练奖励模型的区分度很有帮助。
我记得有一次做客服对话的奖励模型,用了成对比较,模型学出来总觉得「差不多」。后来改成4选排序,模型对细微差别的感知明显变强了。
排序标注的坑,我踩过不少:
- 数量控制:一次别超过5个。标注员看多了会眼花,排序质量直线下降。我一般用3-4个。
- 质量跨度:这几个输出不能都太好,也不能都太差。最好混搭——一个明显好的,一个明显差的,两个中等水平的。这样排序才有区分度。
- 标注界面:支持拖拽排序,比点选数字更符合直觉。标注员效率能提升30%。
评分标注设计
这个最直接,但也最难做好。让标注员给每个输出打一个绝对分数,比如1-5分,或者0-10分。
评分标注的适用场景:
当你需要收集绝对质量信息,而不是相对偏好时。比如你想知道某个回答是否「安全合规」,或者是否「信息准确」。这些维度用成对比较反而不好做。
但评分标注有个致命问题:不同标注员的尺度不一样。有人觉得4分才算及格,有人觉得3分就挺好。这就是所谓的「标注偏差」。
怎么解决?
| 方法 | 说明 | 我个人的经验 |
|---|---|---|
| 锚定样本 | 给每个标注员提供几个「标准答案」作为参考 | 效果最好,但前期需要专家花时间制作锚定样本 |
| 分数校准 | 收集数据后,用统计方法把不同人的分数拉到同一尺度 | 适合大规模标注,但需要小心异常值 |
| 维度拆分 | 不要只打一个总分,拆成「准确性」「流畅性」「有用性」等子维度 | 标注员负担重一些,但数据质量高很多 |
三种方式的对比与选择
嗯,这里我画了一张图,帮你快速理解三者的关系。
实际项目中,我很少只用一种方式。通常的做法是:
- 初期探索:用成对比较快速收集大量数据,训练一个基线模型。
- 中期优化:用排序标注收集更精细的偏好,提升模型区分能力。
- 后期质检:用评分标注做安全审核和质量兜底。
好了,这三种方式的核心要点就这些。你想想看,你现在的项目更适合哪一种?或者可以组合使用?