Skip to content

聚合众包标签:超越多数投票

如何使用 Dawid-Skene 和 MACE 等标注者模型将大量含噪标注合并为单个标签,何时该信任它们,以及 Potato 如何估计能力并推断标签。

当多人为同一项目打标签时,多数投票是合并他们答案的显而易见的方法,而且通常是错误的方法。估计每位标注者可靠性的模型能够还原出更好的标签、标记出灌水者,并告诉你该有多大把握。但它们无一例外都假设存在唯一的正确答案,因此在主观任务上,你必须先判断分歧是应当剔除的误差,还是应当保留的信号。 本指南涵盖主要的聚合模型、它们共享的假设,以及如何在 Potato 中运行其中之一。

多数投票假装不存在的问题

为一个项目收集三个标签并取多数。当标注者水平大致相当且大多正确时,它是有效的。可一旦不再如此,它就会失效。多数投票把一位细致的专家和一个随机点击的机器人都算作一票,抛弃了投票分布(2 比 1 的胜出和 3 比 0 的完胜结果相同),也没有给你任何办法去区分一个真正困难的项目和一个偷懒的标注者。这就是真值推断问题:仅凭标签矩阵,同时还原潜在的真实标签和每位标注者的可靠性。

混淆矩阵模型:Dawid and Skene

这个奠基性的方法已有近 50 年历史。Dawid and Skene (1979) 用混淆矩阵为每位标注者建模,即他们把一个真阳性项目标为阳性、阴性等等的概率,并使用期望最大化来联合估计这些矩阵和真实标签。一个混淆两个类别的标注者会得到一个如实反映这一点的混淆矩阵,其在该区分上的投票也会据此被降权。几乎所有现代聚合模型都是这一思想的后裔。

MACE:能力与灌水检测

Hovy et al. (2013) 提出了 MACE(Multi-Annotator Competence Estimation),它增加了一个显式的灌水模型:每位标注者被视为要么知道答案,要么在猜测,MACE 会估计他们在每个项目上进行猜测的概率。这就给出每位标注者一个介于 0 和 1 之间的单一能力分数,外加一个逐项目的熵值,用以标记真正模棱两可的项目。它速度快,擅长揪出随机点击者,也是 Potato 内置的模型。

贝叶斯模型与综述证据

这一领域的发展已远远超出这两者。Paun et al. (2018) 在真实数据集上比较了一族贝叶斯标注模型,发现它们持续优于多数投票,尤其在标注者质量差异很大时,同时还给出可向下游传播的、经过校准的不确定性。在工程层面,Zheng et al. (2017) 对 17 种真值推断方法做了基准测试,并追问这个问题是否已经解决。简短的答案是:没有哪种方法能在所有场景中胜出,但几乎全部都优于多数投票,而且随着标签质量下降,差距会拉大。

所有这些模型共享的假设

上述所有模型都假设存在唯一的真实标签,而分歧即误差。对客观任务而言这没问题。对主观任务而言则恰恰相反:在冒犯性、情感或道德判断上,两位标注者可能因为确实以不同方式解读文本而产生分歧,Plank (2022) 认为,这种人类标签变异往往是信号,而非噪声。把它聚合掉,你就丢弃了让数据变得有趣的那样东西。(我们在分歧是信号,而非噪声中对此有更深入的探讨。)

正是在这里,知道是谁做的标注开始变得重要。NUTMEG (Ivey, Gauch, and Jurgens, 2025) 正是为这种张力而构建的贝叶斯模型:它利用标注者的背景信息,将正当而系统性的分歧从噪声中分离出来,在剔除训练数据中粗心标签的同时,保留那些反映标注者身份的分歧。而这只有在你一开始就采集了背景信息时才行得通。如果你运行了一项研究前的人口统计问卷(参见负责任地采集标注者的人口统计数据以及 Potato 的问卷工具),你就拥有了 NUTMEG 式模型所需的标注者元数据;没有它,你只能把每一处分歧都当作全然是误差或全然是信号来对待。

在 Potato 中操作

Potato 会对你的多标注者数据运行 MACE,并在管理后台报告能力和推断出的标签。它适用于类别型方案(radiolikertselectmultiselect),并且需要真实的重叠,即每个项目有多位标注者,才有可估计的对象。

yaml
mace:
  enabled: true
  trigger_every_n: 10            # re-estimate after every 10 new annotations
  min_annotations_per_item: 3    # ignore items with fewer than 3 labels
  min_items: 5                   # wait for at least 5 eligible items

运行之后,每位标注者会得到一个能力分数(接近 1.0 表示可靠,低于 0.5 很可能是灌水者),每个项目会得到一个预测标签外加一个熵值。低熵意味着模型有把握;接近最大值的熵意味着没有共识,这通常标记的是一个真正困难或界定不清的项目,而非一个糟糕的标注者。完整选项见 MACE 功能参考

两点实务提示。第一,在你实际采集到的重叠上做聚合;MACE 需要每个项目有多个标签,所以要在研究之前而非之后就规划好重叠。第二,MACE 给你的是单个标签;如果你的任务是主观的,可考虑改用 soft_label 方案保留分布,仅在你确实需要单一答案的地方才诉诸裁决。

何时聚合,何时保留分布

一条粗略的决策规则:

  • 客观任务,存在真实答案标准 → 聚合为单个标签。用 MACE 或多数投票,然后继续前进。
  • 偏客观,但部分标注者不可靠 → 用能力模型(MACE)而非简单多数投票来聚合,以免糟糕的评分者左右结果。
  • 主观任务,分歧有意义 → 保留完整分布(soft_label),如果你有标注者元数据,就对分歧建模,而不是删除它。

延伸阅读