记录数据集与模型:数据规格表、数据声明与模型卡
关于标注数据及其上所构建模型的三种标准文档框架的参考指南:每种框架涵盖什么、何时选用哪一种,以及可复现性报告如何将它们串联起来。
三种文档标准已成为机器学习数据的惯例:数据声明和数据规格表用于数据集本身,模型卡用于你在其上训练出来的模型。它们大量重叠,若你希望数据受到信任并被复用,任何一种都不是可有可无的。本指南是一份参考,说明每种标准涵盖什么、何时该选用它。 若想以叙述方式一步步了解如何撰写其中一种,请参阅配套文章记录你的标注数据集;本页是各标准之间的对比。
为什么要用结构化文档,而不是 README
没有文档的标注数据集会随着时间变得很糟。半年之后,没人能说清它是怎么采样的、由谁标注、某个标签本应表示什么,于是数据变成一个黑箱,人们要么盲目信任它,要么弃之不用。有两种具体代价反复出现:不可复现性(没有采样方法、指南版本和标注者群体,你既无法重建数据集,也无法解释某处差异)和隐性偏差(来自一个未经记录的狭窄群体的标签,带着在投入生产前始终看不见的盲点)。下面这些框架的存在,正是为了在这两者中的任何一个引发问题之前,把谁和怎么做讲清楚。
三种标准
每种框架针对不同的产物和读者,但它们被设计为彼此衔接。
数据声明(Bender and Friedman, 2018) 是面向自然语言处理的专用模式。它刻画一个语言数据集、整理理据、语言变体及其使用者、标注者的人口统计、指南以及预期用途,以便读者判断结果将如何泛化,以及数据对哪些人群代表不足。当数据是文本且语言变体很重要时,就选用数据声明。
面向数据集的数据规格表(Gebru et al., 2021) 是通用版本,借鉴自电子行业——每个元件出厂时都附带一份规格表。它就动机、构成、采集过程、预处理、推荐用途和维护提出一套标准问题。任何机器学习数据集,无论是否为文本,都可以使用数据规格表;它与数据声明大量重叠,因此在语言数据集上,你实际上是在选择围绕哪一套问题来组织,而不是从头把两者都做一遍。
模型卡(Mitchell et al., 2019) 记录的是模型而非数据:它的预期用途,以及尤为关键的一点——按人口统计等群体分解的性能,而不是笼统的单一汇总数字。模型卡正是公平性问题变得可见的地方。
这三者构成一条链。数据规格表或数据声明记录数据;模型卡记录在其上构建出来的东西;而前者中标注者人口统计一节,恰恰是让后者的分组评估变得可解释的关键。把标注记录清楚,你就已经在通往一份经得起推敲的模型卡的路上走了大半。
| 框架 | 记录对象 | 最适用于 | 关键章节 |
|---|---|---|---|
| 数据声明 | 一个语言数据集 | 自然语言处理 / 文本数据 | 整理理据、语言变体、使用者与标注者的人口统计、指南 |
| 数据规格表 | 任意机器学习数据集 | 一般机器学习数据 | 动机、构成、采集、用途、维护 |
| 模型卡 | 一个训练好的模型 | 任意发布的模型 | 预期用途、分组评估、局限性 |
可复现性是第四条腿
文档与可复现性是同一目标的两个角度。Pineau et al. (2021) 报告了 NeurIPS 的可复现性计划,并将其提炼为一份可复现性检查清单:报告确切的数据、采集与预处理步骤、评估设置,以及足以让工作重新运行的细节。具体到一个标注项目,对可复现性至关重要的事实,正是数据规格表本就要问的那些:条目是如何采样的、使用了哪个版本的指南、由谁标注,以及分歧是如何处理的。如果你能回答这些,那么数据集既有文档又可复现;如果不能,那就是一个应在发布之前而非之后补上的缺口。
一份发布检查清单
在发布之前,确认你能回答:
- 条目是如何采样的,来自何处?
- 这是哪种语言变体,源文本由谁撰写?
- 由谁标注、有多少人,以及这个群体的人口统计构成如何?
- 他们遵循了哪些指南,哪个版本?
- 分歧是被汇总为一个金标签,还是被保留为一个分布?无论哪种,都要报告一致性。
- 这个数据集是做什么用的,又不应用于什么?
在 Potato 中的做法
一个数据集的大部分文档其实已经作为项目产物存在,所以你并非从一张白纸开始。配置文件本身就是文档:YAML 记录了标注方案、标签集和任务结构,与数据一起纳入版本控制,而你写下的说明就是逐字逐句的指南章节。如果你运行过预研阶段,标注者人口统计早已按标注者逐一存储;把它们汇总成分布,用于标注者人口统计一节。而导出会在每个标签上保留标注者和时间戳,于是来源信息随数据一同流转,而不会被剥离:
{
"id": "doc_001",
"annotations": { "sentiment": "positive" },
"annotator": "user_1",
"timestamp": "2024-01-15T10:30:00Z"
}当你发布到 Hub 时,把生成数据集卡作为导出的最后一步,并用你已有的配置、指南和预研人口统计来填写它的各个章节。
延伸阅读
- 记录你的标注数据集,带有一份完整数据声明范例的叙述式讲解。
- 负责任地收集标注者人口统计,把标注者人口统计一节做好。
- 撰写标注指南,它同时充当指南章节。
- 为机器学习导出标注,干净地取出标签与元数据。