Apprentissage actif : Annotez plus intelligemment, pas plus durement
Comment utiliser l'échantillonnage par incertitude pour prioriser les annotations et réduire l'effort total d'étiquetage jusqu'à 50 %.
Apprentissage actif : Annotez plus intelligemment, pas plus durement
L'apprentissage actif sélectionne intelligemment les éléments à annoter ensuite, en concentrant l'effort humain là où il compte le plus. Ce guide montre comment réduire l'effort d'annotation jusqu'à 50 % tout en maintenant la qualité du modèle.
Qu'est-ce que l'apprentissage actif ?
Au lieu d'échantillonner aléatoirement les données à annoter, l'apprentissage actif :
- Entraîne un modèle sur les annotations actuelles
- Identifie les éléments où le modèle est incertain
- Priorise ces éléments pour l'annotation humaine
- Répète le processus, améliorant continuellement l'efficacité
Pourquoi utiliser l'apprentissage actif ?
- Réduire le coût d'annotation : Étiquetez moins d'éléments pour la même qualité de modèle
- Itération plus rapide : Obtenez des modèles utilisables plus tôt
- Concentrer l'expertise : Attention humaine sur les cas difficiles
- Meilleure couverture : Assurez-vous que les cas limites sont représentés
Configuration de base de l'apprentissage actif
annotation_task_name: "Active Learning Classification"
data_files:
- "data/unlabeled_pool.json"
# Active learning configuration
active_learning:
enabled: true
classifier_name: "sklearn.linear_model.LogisticRegression"
# Sampling settings
max_instances_to_reorder: 1000 # Number of instances to reorder by uncertainty
random_sample_percent: 0.1 # 10% random sampling to maintain diversity
annotation_schemes:
- annotation_type: radio
name: category
labels: [Positive, Negative, Neutral]Comment fonctionne l'échantillonnage par incertitude
L'apprentissage actif de Potato utilise l'échantillonnage par incertitude pour prioriser les éléments où le classifieur est le moins confiant. Le classifieur prédit les étiquettes pour les instances non étiquetées, et celles ayant les scores de confiance les plus bas sont présentées en premier pour l'annotation.
Le champ classifier_name spécifie tout classifieur compatible avec scikit-learn en utilisant son chemin de module complet :
active_learning:
enabled: true
classifier_name: "sklearn.linear_model.LogisticRegression"D'autres options de classifieurs incluent :
sklearn.ensemble.RandomForestClassifiersklearn.svm.SVC(avecprobability=True)sklearn.naive_bayes.MultinomialNB
Configuration complète
annotation_task_name: "Active Learning for Sentiment"
data_files:
- "data/reviews.json"
active_learning:
enabled: true
classifier_name: "sklearn.linear_model.LogisticRegression"
# Sampling settings
max_instances_to_reorder: 2000 # Reorder top N by uncertainty
random_sample_percent: 0.1 # 10% random to maintain diversity
annotation_schemes:
- annotation_type: radio
name: sentiment
description: "Classify the sentiment"
labels:
- name: Positive
key_value: "1"
- name: Negative
key_value: "2"
- name: Neutral
key_value: "3"
required: true
annotation_guidelines:
text: |
## Sentiment Classification
Items are prioritized by model uncertainty.
You may see more difficult or ambiguous cases.
Focus on accuracy over speed.Suivi de la progression
Suivez la progression de l'annotation grâce à la journalisation intégrée de Potato. Le système enregistre quelles instances ont été sélectionnées et leurs scores d'incertitude, vous permettant de surveiller le processus d'apprentissage actif.
Bonnes pratiques
Démarrage à froid
Commencez par un échantillonnage aléatoire diversifié en définissant un random_sample_percent plus élevé :
active_learning:
enabled: true
classifier_name: "sklearn.linear_model.LogisticRegression"
random_sample_percent: 0.2 # 20% random for initial diversityContrôle de la portée du réordonnancement
Utilisez max_instances_to_reorder pour contrôler combien d'instances sont classées par incertitude. Une valeur plus grande offre une meilleure sélection mais nécessite plus de calcul :
active_learning:
max_instances_to_reorder: 5000 # Rank top 5000 by uncertaintyMaintien de la diversité
Le paramètre random_sample_percent garantit que certaines instances échantillonnées aléatoirement sont incluses, empêchant le modèle de ne voir que des cas limites incertains :
active_learning:
random_sample_percent: 0.1 # 10% random samplingConseils pour réussir
- Commencez diversifié : L'échantillon initial aléatoire couvre les cas limites
- Surveillez la précision : Suivez les performances du modèle au fil du temps
- N'optimisez pas trop : Un certain échantillonnage aléatoire maintient la couverture
- Gérez la fatigue des annotateurs : Les éléments difficiles sont fatigants
- Sauvegardez les points de contrôle du modèle : Permet le retour en arrière si nécessaire
Prochaines étapes
- Ajoutez des suggestions IA pour accélérer les éléments incertains
- Mettez en place un contrôle qualité pour les cas difficiles
- Découvrez le crowdsourcing avec l'apprentissage actif
Documentation complète sur l'apprentissage actif sur /docs/features/active-learning.