2. 人类反馈数据收集:反馈数据的类型、平台设计与质量控制
好,咱们接着聊RLHF里最接地气、也最磨人的一环——人类反馈数据收集。
说实话,我见过不少团队,模型架构搞得花里胡哨,一跑到数据收集这步就翻车。为什么?因为大家总觉得「不就是让人打个分嘛」。嗯,真没那么简单。今天我就把我在实战中踩过的坑、总结的经验,掰开了跟你讲讲。
2.1 反馈数据的三种类型:比较、排序、评分
先说说反馈数据到底长什么样。我个人习惯把它们分成三类,每一类都有各自的适用场景和坑。
2.1.1 比较(Pairwise Comparison)
这是最经典的方式。给标注者看两个模型输出,问「哪个更好?」。我在项目中遇到过,这种方式标注者最容易上手,一致性也最高。
核心逻辑:二选一,简单粗暴。但要注意,有时候两个输出都烂,标注者会硬着头皮选一个。这时候数据质量就堪忧了。
举个例子:
用户问题:如何向5岁小孩解释「重力」?
模型A输出:重力是地球吸引物体的力...
模型B输出:想象你跳起来,为什么没飞到天上去?因为有个看不见的手把你拉回来。
→ 标注者选择:B(更易懂)
我的小技巧:如果两个输出质量都很差,加一个「两者都不好」的选项。别让标注者硬选,否则你的reward model会学到奇怪的东西。
2.1.2 排序(Ranking)
给标注者看多个输出(通常是4-8个),让他们按质量排序。这比两两比较信息量更大,但标注者负担也重。
我记得有一次做对话模型,让标注者给6个回复排序。结果发现,排到第4个以后,标注者基本就是在瞎点了——认知负荷太大了。
避坑指南:我曾经让标注者排8个选项,结果数据一致性掉到了0.3以下。后来改成最多排5个,一致性回到了0.6以上。所以,排序数量别超过5个,这是血泪教训。
2.1.3 评分(Rating)
让标注者给每个输出打一个分数,比如1-5分。这种方式看似简单,但问题在于——每个人的「4分」标准不一样。
你想想看,有的人觉得「还行」就给4分,有的人觉得「必须惊艳」才给4分。这种主观差异,会让你的数据噪声很大。
| 反馈类型 | 信息量 | 标注者负担 | 数据一致性 | 我推荐的使用场景 |
|---|---|---|---|---|
| 比较 | 低 | 低 | 高 | 初期数据收集、快速迭代 |
| 排序 | 中 | 中 | 中 | 有5个以内候选输出时 |
| 评分 | 高 | 低 | 低 | 需要细粒度反馈时(需配合校准) |
我的建议:实际项目中,我通常混合使用。比如先用比较收集大量粗粒度数据,再用排序或评分做精调。别指望一种方式打天下。
2.2 数据收集平台设计
平台设计这事,说白了就是「怎么让标注者舒服地干活」。我见过太多平台,功能强大但用户体验一塌糊涂。标注者也是人,他们累了、烦了,数据质量就下来了。
2.2.1 界面设计原则
- 任务清晰:一屏只展示一个任务。别让标注者上下翻找。
- 操作简单:点击选择,不要拖拽。拖拽在移动端就是灾难。
- 进度可见:显示「已完成 23/50」,给标注者掌控感。
- 即时反馈:选完后给个视觉反馈(比如高亮),让标注者知道操作成功了。
一个小细节:我在设计平台时,会在每个任务旁边加一个「为什么这么选?」的文本框(非必填)。虽然大部分标注者不会填,但偶尔收到的解释,能帮你发现标注者理解偏差。
2.2.2 任务分配与轮转
别让标注者一直做同一类任务。我习惯把任务分成多个批次,每个批次混入不同类型的反馈任务。比如:
批次1:10个比较任务 + 5个排序任务
批次2:8个评分任务 + 7个比较任务
批次3:5个排序任务 + 10个评分任务
...
为什么这么做?因为单调重复会让标注者产生「决策疲劳」。你想想看,连续做50个比较任务,到第40个的时候,标注者可能看都不看就点了。混搭能保持新鲜感。
2.3 标注者管理与质量控制
这部分是重头戏。我见过太多项目,模型训练得好好的,一上人类反馈就崩了。问题往往出在标注者身上——不是他们不努力,而是你没管好。
2.3.1 标注者筛选
不是所有人都适合做标注。我筛选标注者时,会先发一个测试集,包含一些「明显错误」的选项。如果标注者连这些都能选错,直接pass。
我的筛选标准:
- 测试集准确率 > 80%
- 完成时间在合理范围内(太快可能是乱点,太慢可能是犹豫不决)
- 有相关领域背景(比如做医疗对话,最好有医学背景)
2.3.2 质量控制手段
标注者上线后,质量控制不能停。我常用的方法:
- 黄金标准题:混入一些已知正确答案的题目。如果标注者答错,标记为可疑。
- 交叉验证:同一任务分配给2-3个标注者,计算一致性。一致性低于0.5的标注者,需要重新培训。
- 实时监控:看标注者的平均完成时间。如果突然变快或变慢,可能是状态出了问题。
我曾经踩过的坑:有一次,一个标注者前100个任务准确率95%,后100个突然掉到60%。查了半天,发现他感冒了,状态不好。从那以后,我加了一个「状态自评」功能——标注者每天开始工作前,先给自己打个分(1-5分)。低于3分的,当天只分配简单任务。
2.3.3 标注者培训与反馈
别把标注者当工具人。我每周会开一次线上短会(15分钟),跟标注者聊聊:
- 最近哪些任务比较难?
- 有没有遇到模棱两可的情况?
- 平台有没有什么不方便的地方?
你猜怎么着?很多平台优化的点子,都是标注者提出来的。他们才是天天用平台的人。
2.4 知识体系总览
下面这张图,是我自己总结的「人类反馈数据收集」核心逻辑。你可以把它当成一个检查清单,做项目时对照着看。
这张图其实就说了三件事:收什么数据、用什么平台收、谁来收。三者缺一不可。我见过太多团队只关注第一点,结果平台难用、标注者乱选,数据质量一塌糊涂。
最后说一句:人类反馈数据收集,不是一锤子买卖。它是一个持续迭代的过程。你收集一批数据,训练模型,发现问题,再优化数据收集流程,再收集下一批。别指望一次搞定。