第三章:数据准备——人类偏好数据的收集、标注规范与质量控制

数据,是RLHF的燃料。没有高质量的人类偏好数据,再好的算法也是空中楼阁。这一章,我们聊聊数据准备的那些事。

3.1 人类偏好数据从哪来?

说白了,就是让人来当裁判。给模型两个回答,让标注员选哪个更好。或者给一堆回答,让标注员排个序。

我刚开始做RLHF时,天真地以为随便找几个人标注就行。结果模型学了一堆奇怪的东西——比如总是用「尊敬的」开头,或者回答特别啰嗦。后来才明白,标注员的背景、偏好、甚至当天的心情,都会影响数据质量。

3.2 收集策略:对比对 vs 排名

两种主流方式,各有千秋。

方式 做法 优点 缺点
对比对 给两个回答,选更好的 标注简单,一致性高 信息量有限
排名 给多个回答,排序 信息更丰富 标注难度大,容易疲劳

我个人习惯用对比对作为主力。为什么?标注员只需要做二选一,疲劳度低,质量容易控制。排名虽然信息量大,但标注员排到第5个时,基本就开始乱点了。

我的经验: 先用对比对收集大量数据,再用排名做小规模精标。这样既保证了数量,又保证了质量。

3.3 标注规范:别让标注员猜

标注规范,就是给标注员的「游戏规则」。写不好,数据就废了。

我曾经见过一个项目,标注规范写了20页,结果标注员根本看不懂。最后模型学到的偏好全是噪音。

好的标注规范,应该包含以下几点:

  • 明确评价维度: 有用性、安全性、诚实性、无害性。每个维度都要有具体例子。
  • 给出边界案例: 比如「两个回答都不好怎么办?」「两个回答一样好怎么办?」
  • 设置陷阱题: 插入已知答案的题目,检测标注员是否认真。
注意: 标注规范不是写论文,要通俗易懂。我建议用「好回答长这样」「坏回答长那样」的方式,配图配例子。

3.4 质量控制:数据清洗三板斧

数据收集完了,别急着用。先做质量控制。

我一般用这三招:

  1. 一致性检查: 同一道题给不同标注员,看他们选的是否一致。一致性低于70%的题目,直接扔掉。
  2. 异常值检测: 标注员如果总是选左边,或者总是选右边,说明有问题。标注时间太短(比如3秒选完)的也要剔除。
  3. 交叉验证: 让资深标注员抽检10%的数据,重新标注。不一致的,打回重做。

嗯,这里要注意:质量控制不是一次性的。我建议每收集1000条数据,就做一次质量审计。发现问题,及时调整标注规范。

3.5 数据格式:对比对与排名

数据格式,决定了模型怎么吃数据。我推荐用JSON格式,清晰易读。

对比对格式

{
  "prompt": "请解释什么是量子纠缠",
  "chosen": "量子纠缠是...(好的回答)",
  "rejected": "量子纠缠就是...(差的回答)",
  "source": "标注员A",
  "timestamp": "2024-01-15 10:30:00"
}

排名格式

{
  "prompt": "如何提高编程效率?",
  "rankings": [
    {"rank": 1, "response": "最好的回答..."},
    {"rank": 2, "response": "次好的回答..."},
    {"rank": 3, "response": "最差的回答..."}
  ],
  "source": "标注员B",
  "timestamp": "2024-01-15 11:00:00"
}

你想想看,这种格式的好处是什么?模型可以直接读取,不需要额外解析。而且方便做数据增强——比如把对比对里的chosen和rejected互换,就能生成新的训练样本。

3.6 知识体系:数据准备全流程

下面这张图,是我自己总结的数据准备流程。每次做新项目,我都会拿出来对照一遍。

RLHF数据准备全流程 1. 数据收集 对比对 / 排名 2. 标注规范 维度定义 + 边界案例 3. 质量控制 一致性 + 异常检测 4. 数据格式化 JSON格式标准化 5. 数据验证 交叉验证 + 抽检 6. 数据存储 版本管理 + 备份 7. 模型训练 RLHF训练 反馈循环:根据模型表现,优化数据收集策略

这张图里,我特别想强调反馈循环。很多团队做完数据就扔给模型,不管了。其实应该根据模型的表现,反过来优化数据收集策略。比如模型总在安全性上犯错,那就多收集安全相关的偏好数据。

3.7 避坑指南

最后,分享几个我踩过的坑:

  • 数据量不是越多越好: 我曾经收集了100万条对比对,结果模型学到的全是噪音。后来发现,标注员之间的一致性只有50%。后来只用了10万条高质量数据,效果反而更好。
  • 标注员要培训: 别以为给个规范就行。我建议先让标注员做50道测试题,通过率低于80%的,重新培训。
  • 数据要版本管理: 每次修改标注规范,都要生成新版本。不然模型训到一半,发现数据变了,那才叫崩溃。
核心总结: 数据准备不是一次性工作,而是持续优化的过程。好的数据,能让RLHF事半功倍。坏的数据,再好的算法也救不了。

蓝海数据掘金营,专注资料整理