Active Learning: Intelligenter annotieren, nicht mehr
Wie man Unsicherheits-Sampling nutzt, um Annotationen zu priorisieren und den gesamten Beschriftungsaufwand um bis zu 50 % zu reduzieren.
Active Learning: Intelligenter annotieren, nicht mehr
Active Learning wählt intelligent aus, welche Elemente als nächstes annotiert werden sollen, und konzentriert den menschlichen Aufwand dort, wo er am wichtigsten ist. Dieser Leitfaden zeigt, wie Sie den Annotationsaufwand um bis zu 50 % reduzieren und dabei die Modellqualität aufrechterhalten können.
Was ist Active Learning?
Anstatt Daten zur Annotation zufällig zu sampeln, geht Active Learning wie folgt vor:
- Trainiert ein Modell auf aktuellen Annotationen
- Identifiziert Elemente, bei denen das Modell unsicher ist
- Priorisiert diese Elemente für menschliche Annotation
- Wiederholt den Prozess und verbessert kontinuierlich die Effizienz
Warum Active Learning nutzen?
- Annotationskosten reduzieren: Weniger Elemente beschriften für gleiche Modellqualität
- Schnellere Iteration: Nutzbare Modelle früher erhalten
- Expertise fokussieren: Menschliche Aufmerksamkeit auf schwierige Fälle lenken
- Bessere Abdeckung: Sicherstellen, dass Edge Cases repräsentiert sind
Grundlegende Active-Learning-Einrichtung
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]Wie Unsicherheits-Sampling funktioniert
Potatos Active Learning verwendet Unsicherheits-Sampling, um Elemente zu priorisieren, bei denen der Klassifikator am wenigsten sicher ist. Der Klassifikator sagt Labels für unbeschriftete Instanzen voraus, und diejenigen mit den niedrigsten Konfidenzwerten werden zuerst zur Annotation präsentiert.
Das Feld classifier_name gibt jeden scikit-learn-kompatiblen Klassifikator über seinen vollständigen Modulteil an:
active_learning:
enabled: true
classifier_name: "sklearn.linear_model.LogisticRegression"Weitere Klassifikatoroptionen umfassen:
sklearn.ensemble.RandomForestClassifiersklearn.svm.SVC(mitprobability=True)sklearn.naive_bayes.MultinomialNB
Vollständige Konfiguration
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.Fortschritt überwachen
Verfolgen Sie den Annotationsfortschritt durch Potatos integrierte Protokollierung. Das System protokolliert, welche Instanzen ausgewählt wurden und ihre Unsicherheitswerte, sodass Sie den Active-Learning-Prozess überwachen können.
Best Practices
Kaltstart
Beginnen Sie mit diversem zufälligem Sampling, indem Sie einen höheren random_sample_percent setzen:
active_learning:
enabled: true
classifier_name: "sklearn.linear_model.LogisticRegression"
random_sample_percent: 0.2 # 20% random for initial diversityNeuordnungsbereich steuern
Verwenden Sie max_instances_to_reorder, um zu steuern, wie viele Instanzen nach Unsicherheit geordnet werden. Ein größerer Wert bietet bessere Auswahl, erfordert aber mehr Rechenaufwand:
active_learning:
max_instances_to_reorder: 5000 # Rank top 5000 by uncertaintyDiversität aufrechterhalten
Der Parameter random_sample_percent stellt sicher, dass einige zufällig gesampelte Instanzen einbezogen werden, und verhindert, dass das Modell nur unsichere Edge Cases sieht:
active_learning:
random_sample_percent: 0.1 # 10% random samplingTipps für den Erfolg
- Divers starten: Zufällige Anfangsstichprobe deckt Edge Cases ab
- Genauigkeit überwachen: Modellleistung im Laufe der Zeit verfolgen
- Nicht überoptimieren: Etwas zufälliges Sampling erhält die Abdeckung
- Annotator-Ermüdung berücksichtigen: Schwierige Elemente sind ermüdend
- Modell-Checkpoints speichern: Rollback bei Bedarf ermöglichen
Nächste Schritte
- KI-Vorschläge hinzufügen, um unsichere Elemente zu beschleunigen
- Qualitätskontrolle für schwierige Fälle einrichten
- Über Crowdsourcing mit Active Learning informieren
Vollständige Active-Learning-Dokumentation unter /docs/features/active-learning.