Skip to content
Guides3 min read

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.

Potato Team·
此页面尚未提供您所选语言的版本,当前显示英文版本。

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:

  1. Trainiert ein Modell auf aktuellen Annotationen
  2. Identifiziert Elemente, bei denen das Modell unsicher ist
  3. Priorisiert diese Elemente für menschliche Annotation
  4. 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

yaml
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:

yaml
active_learning:
  enabled: true
  classifier_name: "sklearn.linear_model.LogisticRegression"

Weitere Klassifikatoroptionen umfassen:

  • sklearn.ensemble.RandomForestClassifier
  • sklearn.svm.SVC (mit probability=True)
  • sklearn.naive_bayes.MultinomialNB

Vollständige Konfiguration

yaml
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:

yaml
active_learning:
  enabled: true
  classifier_name: "sklearn.linear_model.LogisticRegression"
  random_sample_percent: 0.2  # 20% random for initial diversity

Neuordnungsbereich 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:

yaml
active_learning:
  max_instances_to_reorder: 5000  # Rank top 5000 by uncertainty

Diversitä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:

yaml
active_learning:
  random_sample_percent: 0.1  # 10% random sampling

Tipps für den Erfolg

  1. Divers starten: Zufällige Anfangsstichprobe deckt Edge Cases ab
  2. Genauigkeit überwachen: Modellleistung im Laufe der Zeit verfolgen
  3. Nicht überoptimieren: Etwas zufälliges Sampling erhält die Abdeckung
  4. Annotator-Ermüdung berücksichtigen: Schwierige Elemente sind ermüdend
  5. Modell-Checkpoints speichern: Rollback bei Bedarf ermöglichen

Nächste Schritte


Vollständige Active-Learning-Dokumentation unter /docs/features/active-learning.