Skip to content

MACE能力推定

MACEアルゴリズムを使用してアノテーターの能力と真のラベルを推定する。

MACE能力推定

MACE(Multi-Annotator Competence Estimation)は、各アイテムの真のラベルとアノテーターの能力スコアを同時に推定する変分ベイズ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つの適格アイテム、50回のイテレーションで10回の再起動。

設定リファレンス

オプションデフォルト説明
enabledbooleanfalseMACEの有効化
trigger_every_ninteger10N回の新しいアノテーションごとに実行
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を下げる

関連情報

実装の詳細については、ソースドキュメントを参照してください。