Skip to content

Estimation de la compétence avec MACE

Utilisez l'algorithme MACE dans Potato pour estimer la compétence des annotateurs, pondérer les désaccords et inférer des étiquettes de référence à partir de données d'annotation bruitées.

MACE (Multi-Annotator Competence Estimation) est un algorithme EM bayésien variationnel qui estime conjointement les étiquettes vraies de chaque élément et les scores de compétence des annotateurs. Il modélise chaque annotateur comme « compétent » (produit des étiquettes correctes) ou « devineur » (produit des étiquettes aléatoires), ce qui donne un score de compétence compris entre 0.0 et 1.0.

Quand utiliser MACE

MACE est utile lorsque plusieurs annotateurs étiquettent les mêmes éléments et que vous souhaitez :

  • Identifier quels annotateurs sont les plus fiables
  • Produire des étiquettes prédites de meilleure qualité en pondérant les contributions des annotateurs
  • Détecter automatiquement les annotateurs de faible qualité (spammeurs)
  • Mesurer l'incertitude des étiquettes (entropie) par élément

MACE fonctionne avec les types d'annotation catégoriels : radio, likert, select et multiselect. Il ne s'applique pas aux annotations en texte libre, span, slider ou numériques.

Fonctionnement

  1. Extraction des données : Potato rassemble toutes les annotations de chaque schéma pour l'ensemble des annotateurs, en construisant une matrice éléments par annotateurs
  2. Algorithme EM : MACE effectue plusieurs redémarrages aléatoires de l'algorithme EM bayésien variationnel et conserve la solution dont la log-vraisemblance est la meilleure
  3. Sortie : pour chaque schéma, MACE produit des étiquettes prédites, l'entropie des étiquettes (incertitude) et des scores de compétence par annotateur
  4. Déclenchement : MACE s'exécute automatiquement après chaque N nouvelles annotations (configurable), ou peut être déclenché manuellement via l'API d'administration

Configuration

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)

Configuration minimale

yaml
mace:
  enabled: true

Utilise toutes les valeurs par défaut : déclenchement toutes les 10 annotations, 3 annotateurs requis par élément, minimum 5 éléments éligibles, 10 redémarrages avec 50 itérations chacun.

Référence de configuration

OptionTypePar défautDescription
enabledbooleanfalseActiver MACE
trigger_every_ninteger10Exécuter après chaque N nouvelles annotations
min_annotations_per_iteminteger3Nombre minimal d'annotateurs par élément (doit être >= 2)
min_itemsinteger5Nombre minimal d'éléments éligibles avant exécution
num_restartsinteger10Redémarrages aléatoires pour l'EM
num_itersinteger50Itérations EM par redémarrage
alphafloat0.5Prior pour le spamming de l'annotateur
betafloat0.5Prior pour la stratégie de devinette

Points d'accès de l'API d'administration

Tous les points d'accès MACE requièrent une authentification administrateur via l'en-tête X-API-Key.

Vue d'ensemble

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

Renvoie les scores de compétence des annotateurs et l'état de 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
}

Prédictions

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

Renvoie les étiquettes prédites et l'entropie pour chaque élément.

Déclenchement manuel

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

Interpréter les résultats

Compétence de l'annotateur

  • 0.9 - 1.0 : annotateur très fiable
  • 0.7 - 0.9 : bon annotateur, désaccords occasionnels
  • 0.5 - 0.7 : annotateur moyen, pourrait bénéficier d'une formation supplémentaire
  • Inférieur à 0.5 : spammeur potentiel ou annotateur désorienté

Entropie des étiquettes

  • Proche de 0.0 : forte confiance dans l'étiquette prédite
  • Au-dessus de 0.5 : incertitude modérée, l'élément peut être réellement ambigu
  • Proche de log(num_labels) : incertitude maximale, aucun consensus

Intégration avec l'adjudication

Lorsque MACE et l'adjudication sont tous deux activés, les étiquettes prédites par MACE apparaissent comme un signal supplémentaire dans l'interface d'adjudication :

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

Bonnes pratiques

  1. Commencez par les valeurs par défaut - la configuration par défaut convient à la plupart des scénarios
  2. Surveillez les scores de compétence - utilisez le tableau de bord d'administration pour suivre la qualité des annotateurs dans le temps
  3. Combinez avec des phases de formation - utilisez la formation pour qualifier les annotateurs, puis MACE pour suivre la qualité en continu
  4. Définissez des seuils adaptés - réduisez min_annotations_per_item pour les projets d'annotation plus petits

Pour aller plus loin

Pour les détails d'implémentation, consultez la documentation source.