Skip to content
Cette page n'est pas encore disponible dans votre langue. La version anglaise est affichée.

Active Learning

Unsicherheits-Sampling nutzen, um die Annotation auf wertvolle Beispiele zu priorisieren.

Active Learning

Active Learning hilft Ihnen, intelligenter zu annotieren, indem die informativsten Beispiele priorisiert werden. Anstatt zufällig zu annotieren, konzentrieren Sie sich auf Instanzen, bei denen das Modell am unsichersten ist.

Funktionsweise

Potatos Active Learning ordnet Annotationsinstanzen automatisch auf Basis von Vorhersagen maschinellen Lernens neu:

  1. Ersterfassung – Mindestanzahl an Annotationen sammeln
  2. Training – Classifier auf vorhandenen Annotationen trainieren
  3. Vorhersage – Unsicherheitswerte für noch nicht annotierte Instanzen ermitteln
  4. Neuordnung – Instanzen mit höchster Unsicherheit priorisieren
  5. Annotieren – Annotatoren beschriften die priorisierten Instanzen
  6. Neu trainieren – Modell periodisch mit neuen Annotationen aktualisieren

Konfiguration

Grundeinrichtung

yaml
active_learning:
  enabled: true
  schema_names:
    - sentiment  # Which annotation schemes to use
 
  min_annotations_per_instance: 1
  min_instances_for_training: 20
  update_frequency: 50  # Retrain after every 50 annotations
  max_instances_to_reorder: 1000

Vollständige Konfiguration

yaml
active_learning:
  enabled: true
 
  # Which schemas to use for training
  schema_names:
    - sentiment
 
  # Minimum requirements
  min_annotations_per_instance: 1
  min_instances_for_training: 20
 
  # Retraining frequency
  update_frequency: 50
 
  # How many instances to reorder
  max_instances_to_reorder: 1000
 
  # Classifier configuration
  classifier:
    type: LogisticRegression
    params:
      C: 1.0
      max_iter: 1000
 
  # Feature extraction
  vectorizer:
    type: TfidfVectorizer
    params:
      max_features: 5000
      ngram_range: [1, 2]
 
  # Model persistence
  model_persistence:
    enabled: true
    save_dir: "models/"
    max_saved_models: 5

Unterstützte Classifier

ClassifierGeeignet fürGeschwindigkeit
LogisticRegressionBinäre/mehrklassige KlassifikationSchnell
RandomForestClassifierKomplexe MusterMittel
SVCKleine DatensätzeLangsam
MultinomialNBTextklassifikationSehr schnell

Classifier-Beispiele

yaml
# Logistic Regression (recommended starting point)
classifier:
  type: LogisticRegression
  params:
    C: 1.0
    max_iter: 1000
 
# Random Forest
classifier:
  type: RandomForestClassifier
  params:
    n_estimators: 100
    max_depth: 10
 
# Support Vector Classifier
classifier:
  type: SVC
  params:
    kernel: rbf
    probability: true
 
# Naive Bayes
classifier:
  type: MultinomialNB
  params:
    alpha: 1.0

Vectorizer

VectorizerBeschreibung
TfidfVectorizerTF-IDF-gewichtete Merkmale (empfohlen)
CountVectorizerEinfache Wortzählungen
HashingVectorizerSpeichereffizient bei großem Vokabular
yaml
# TF-IDF (recommended)
vectorizer:
  type: TfidfVectorizer
  params:
    max_features: 5000
    ngram_range: [1, 2]
    stop_words: english
 
# Count Vectorizer
vectorizer:
  type: CountVectorizer
  params:
    max_features: 3000
    ngram_range: [1, 1]
 
# Hashing Vectorizer (for large datasets)
vectorizer:
  type: HashingVectorizer
  params:
    n_features: 10000

LLM-Integration

Active Learning kann optional LLMs für eine verbesserte Instanzauswahl nutzen:

yaml
active_learning:
  enabled: true
  schema_names:
    - sentiment
 
  # LLM-based selection
  llm_integration:
    enabled: true
    endpoint_type: vllm
    base_url: http://localhost:8000/v1
    model: meta-llama/Llama-2-7b-chat-hf
 
    # Mock mode for testing
    mock_mode: false

Multi-Schema-Unterstützung

Active Learning kann mehrere Annotationsschemata durchlaufen:

yaml
annotation_schemes:
  - annotation_type: radio
    name: sentiment
    labels: [Positive, Negative, Neutral]
 
  - annotation_type: radio
    name: topic
    labels: [Politics, Sports, Tech, Entertainment]
 
active_learning:
  enabled: true
  schema_names:
    - sentiment
    - topic
 
  # Schema-specific settings
  schema_config:
    sentiment:
      min_instances_for_training: 30
      update_frequency: 50
    topic:
      min_instances_for_training: 50
      update_frequency: 100

Modellpersistenz

Trainierte Modelle über Serverneustarts hinweg speichern und neu laden:

yaml
active_learning:
  enabled: true
  schema_names:
    - sentiment
 
  model_persistence:
    enabled: true
    save_dir: "models/"
    max_saved_models: 5  # Keep last 5 models
 
    # Save to database instead of files
    use_database: false

Fortschritt überwachen

Das Admin-Dashboard verfolgt Active-Learning-Metriken:

  • Aktuelle Modellgenauigkeit
  • Anzahl der Trainingszyklen
  • Unsicherheitsverteilung
  • Verbleibende Instanzen
  • Verlauf der Neutraining-Durchläufe

Zugriff über /admin mit Ihrem Admin-API-Key.

Bewährte Vorgehensweisen

1. Mit zufälligem Sampling beginnen

Erste Annotationen sammeln, bevor Active Learning aktiviert wird:

yaml
active_learning:
  enabled: true
  min_instances_for_training: 50  # Wait for 50 annotations

2. Passende Classifier wählen

  • LogisticRegression: Schnell, guter Standard für die meisten Aufgaben
  • RandomForest: Besser für komplexe Muster, langsamer
  • MultinomialNB: Sehr schnell, gut für einfache Textklassifikation

3. Klassenverteilung überwachen

Active Learning kann Klassenungleichgewichte erzeugen. Überwachen Sie dies im Admin-Dashboard und erwägen Sie stratifiziertes Sampling.

4. Vernünftige Neutrainings-Häufigkeit festlegen

Zu häufiges Neutraining verschwendet Ressourcen:

yaml
update_frequency: 100  # Retrain every 100 annotations

5. Modellpersistenz aktivieren

Modelle speichern, um beim Neustart nicht von vorne beginnen zu müssen:

yaml
model_persistence:
  enabled: true
  save_dir: "models/"

Beispiel: Vollständige Konfiguration

yaml
task_name: "Sentiment Analysis with Active Learning"
task_dir: "."
port: 8000
 
data_files:
  - "data/reviews.json"
 
item_properties:
  id_key: id
  text_key: text
 
annotation_schemes:
  - annotation_type: radio
    name: sentiment
    description: "What is the sentiment?"
    labels:
      - Positive
      - Negative
      - Neutral
 
active_learning:
  enabled: true
  schema_names:
    - sentiment
 
  min_annotations_per_instance: 1
  min_instances_for_training: 30
  update_frequency: 50
  max_instances_to_reorder: 500
 
  classifier:
    type: LogisticRegression
    params:
      C: 1.0
      max_iter: 1000
 
  vectorizer:
    type: TfidfVectorizer
    params:
      max_features: 3000
      ngram_range: [1, 2]
 
  model_persistence:
    enabled: true
    save_dir: "models/"
    max_saved_models: 3
 
output_annotation_dir: "output/"
output_annotation_format: "json"
allow_all_users: true

Kombination mit AI-Unterstützung

Active Learning und LLM-Unterstützung gemeinsam nutzen:

yaml
active_learning:
  enabled: true
  schema_names:
    - sentiment
  min_instances_for_training: 30
 
ai_support:
  enabled: true
  endpoint_type: openai
 
  ai_config:
    model: gpt-4
    api_key: ${OPENAI_API_KEY}
 
  features:
    label_suggestions:
      enabled: true

Diese Kombination priorisiert unsichere Instanzen und gibt gleichzeitig KI-Hinweise für Annotatoren.

Fehlerbehebung

Trainingsfehler

  • Ausreichende Annotationen sicherstellen (min_instances_for_training)
  • Klassenverteilung prüfen – Beispiele aller Klassen werden benötigt
  • Datenformat auf Übereinstimmung mit dem Schema überprüfen

Langsame Leistung

  • max_instances_to_reorder reduzieren
  • update_frequency erhöhen
  • HashingVectorizer für große Vokabulare verwenden

Modell wird nicht aktualisiert

  • update_frequency-Einstellung prüfen
  • Sicherstellen, dass Annotationen gespeichert werden
  • Admin-Dashboard auf Fehler überprüfen

Weiterführende Informationen

Implementierungsdetails finden Sie in der Quelldokumentation.