Skip to content

MACE 能力估计

使用 MACE 算法估计标注者能力和真实标签。

MACE 能力估计

MACE(多标注者能力估计)是一种变分贝叶斯 EM 算法,可以联合估计每个项目的真实标签标注者能力分数。它将每个标注者建模为"知道"(产生正确标签)或"猜测"(产生随机标签),得出 0.0 到 1.0 之间的能力分数。

何时使用 MACE

当你有多个标注者标注相同项目并且想要以下功能时,MACE 非常有用:

  • 识别哪些标注者最可靠
  • 通过加权标注者贡献产生更高质量的预测标签
  • 自动检测低质量标注者(垃圾标注者)
  • 衡量每个项目的标签不确定性(熵)

MACE 适用于分类标注类型:radiolikertselectmultiselect。不适用于自由文本、片段、滑块或数字标注。

工作原理

  1. 数据提取:Potato 收集所有标注者在每个模式下的所有标注,构建项目-标注者矩阵
  2. EM 算法:MACE 运行多次随机重启的变分贝叶斯 EM 算法,保留对数似然最好的解
  3. 输出:对于每个模式,MACE 产生预测标签、标签熵(不确定性)和每个标注者的能力分数
  4. 触发:MACE 在每 N 个新标注后自动运行(可配置),也可通过管理员 API 手动触发

配置

yaml
mace:
  enabled: true
 
  # Run MACE after every N new annotations
  trigger_every_n: 10
 
  # Minimum annotators per item before including in computation
  min_annotations_per_item: 3
 
  # Minimum eligible items before MACE will run
  min_items: 5
 
  # EM algorithm parameters
  num_restarts: 10
  num_iters: 50
  alpha: 0.5    # Prior for annotator spamming (Beta distribution)
  beta: 0.5     # Prior for guessing strategy (Dirichlet distribution)

最小配置

yaml
mace:
  enabled: true

使用所有默认值:每 10 个标注触发一次,每个项目需要 3 个标注者,最少 5 个合格项目,10 次重启每次 50 次迭代。

配置参考

选项类型默认值描述
enabledbooleanfalse启用 MACE
trigger_every_ninteger10每 N 个新标注后运行
min_annotations_per_iteminteger3每个项目的最少标注者数(必须 ≥ 2)
min_itemsinteger5运行前的最少合格项目数
num_restartsinteger10EM 的随机重启次数
num_itersinteger50每次重启的 EM 迭代次数
alphafloat0.5标注者垃圾标注的先验
betafloat0.5猜测策略的先验

管理员 API 端点

所有 MACE 端点需要通过 X-API-Key 头进行管理员认证。

概览

bash
curl http://localhost:8000/admin/api/mace/overview \
  -H "X-API-Key: your-admin-key"

返回标注者能力分数和 MACE 状态:

json
{
  "enabled": true,
  "has_results": true,
  "schemas": ["sentiment"],
  "annotator_competence": {
    "user_1": {"average": 0.92, "per_schema": {"sentiment": 0.92}},
    "user_2": {"average": 0.85, "per_schema": {"sentiment": 0.85}},
    "user_3": {"average": 0.45, "per_schema": {"sentiment": 0.45}}
  },
  "total_annotations": 30,
  "annotations_until_next_run": 0
}

预测

bash
curl "http://localhost:8000/admin/api/mace/predictions?schema=sentiment" \
  -H "X-API-Key: your-admin-key"

返回每个项目的预测标签和熵。

手动触发

bash
curl -X POST http://localhost:8000/admin/api/mace/trigger \
  -H "X-API-Key: your-admin-key"

解读结果

标注者能力

  • 0.9 - 1.0:高度可靠的标注者
  • 0.7 - 0.9:优秀标注者,偶有分歧
  • 0.5 - 0.7:中等标注者,可能需要额外培训
  • 低于 0.5:潜在的垃圾标注者或困惑的标注者

标签熵

  • 接近 0.0:对预测标签有高度信心
  • 高于 0.5:中等不确定性,项目可能确实有歧义
  • 接近 log(标签数):最大不确定性,无共识

裁决集成

当 MACE 和裁决同时启用时,MACE 预测标签作为额外信号出现在裁决界面中:

yaml
adjudication:
  enabled: true
  adjudicator_users: ["admin"]
  min_annotations: 2
 
mace:
  enabled: true
  trigger_every_n: 10
  min_annotations_per_item: 2

最佳实践

  1. 从默认值开始 - 默认配置适用于大多数场景
  2. 监控能力分数 - 使用管理员仪表板跟踪标注者质量随时间的变化
  3. 与培训阶段结合 - 使用培训来筛选标注者,然后用 MACE 监控持续质量
  4. 设置适当的阈值 - 较小的标注项目可降低 min_annotations_per_item

延伸阅读

有关实现细节,请参阅源代码文档