Skip to content
Guides4 min read

Active Learning: Annota in Modo Più Intelligente, Non Più Faticoso

Come usare l'uncertainty sampling per prioritizzare le annotazioni e ridurre il lavoro totale di etichettatura fino al 50%.

Potato Team·
यह पृष्ठ अभी आपकी भाषा में उपलब्ध नहीं है। अंग्रेज़ी संस्करण दिखाया जा रहा है।

Active Learning: Annota in Modo Più Intelligente, Non Più Faticoso

L'active learning seleziona in modo intelligente quali elementi annotare successivamente, concentrando lo sforzo umano dove conta di più. Questa guida mostra come ridurre il lavoro di annotazione fino al 50% mantenendo la qualità del modello.

Cos'è l'Active Learning?

Invece di campionare casualmente i dati da annotare, l'active learning:

  1. Addestra un modello sulle annotazioni correnti
  2. Identifica gli elementi in cui il modello è incerto
  3. Prioritizza quegli elementi per l'annotazione umana
  4. Si ripete, migliorando continuamente l'efficienza

Perché Usare l'Active Learning?

  • Riduci il costo dell'annotazione: Etichetta meno elementi per la stessa qualità del modello
  • Iterazione più veloce: Ottieni modelli utilizzabili prima
  • Concentra le competenze: Attenzione umana sui casi difficili
  • Migliore copertura: Assicura che i casi limite siano rappresentati

Configurazione di Base dell'Active Learning

yaml
annotation_task_name: "Active Learning Classification"
 
data_files:
  - "data/unlabeled_pool.json"
 
# Configurazione active learning
active_learning:
  enabled: true
  classifier_name: "sklearn.linear_model.LogisticRegression"
 
  # Impostazioni di campionamento
  max_instances_to_reorder: 1000  # Numero di istanze da riordinare per incertezza
  random_sample_percent: 0.1  # 10% di campionamento casuale per mantenere la diversità
 
annotation_schemes:
  - annotation_type: radio
    name: category
    labels: [Positive, Negative, Neutral]

Come Funziona l'Uncertainty Sampling

L'active learning di Potato usa l'uncertainty sampling per prioritizzare gli elementi in cui il classificatore è meno sicuro. Il classificatore prevede le etichette per le istanze non etichettate, e quelle con i punteggi di confidenza più bassi vengono presentate prima per l'annotazione.

Il campo classifier_name specifica qualsiasi classificatore compatibile con scikit-learn usando il suo percorso completo del modulo:

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

Altre opzioni di classificatore includono:

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

Configurazione Completa

yaml
annotation_task_name: "Active Learning for Sentiment"
 
data_files:
  - "data/reviews.json"
 
active_learning:
  enabled: true
  classifier_name: "sklearn.linear_model.LogisticRegression"
 
  # Impostazioni di campionamento
  max_instances_to_reorder: 2000  # Riordina le prime N per incertezza
  random_sample_percent: 0.1  # 10% casuale per mantenere la diversità
 
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.

Monitoraggio del Progresso

Traccia il progresso dell'annotazione attraverso il logging integrato di Potato. Il sistema registra quali istanze sono state selezionate e i loro punteggi di incertezza, consentendoti di monitorare il processo di active learning.

Buone Pratiche

Cold Start

Inizia con un campionamento casuale diversificato impostando un random_sample_percent più alto:

yaml
active_learning:
  enabled: true
  classifier_name: "sklearn.linear_model.LogisticRegression"
  random_sample_percent: 0.2  # 20% casuale per la diversità iniziale

Controllo dell'Ambito di Riordinamento

Usa max_instances_to_reorder per controllare quante istanze vengono classificate per incertezza. Un valore più grande fornisce una selezione migliore ma richiede più calcolo:

yaml
active_learning:
  max_instances_to_reorder: 5000  # Classifica le prime 5000 per incertezza

Mantenere la Diversità

Il parametro random_sample_percent assicura che alcune istanze campionate casualmente siano incluse, evitando che il modello veda solo casi limite incerti:

yaml
active_learning:
  random_sample_percent: 0.1  # 10% di campionamento casuale

Consigli per il Successo

  1. Inizia con diversità: Il campione iniziale casuale copre i casi limite
  2. Monitora l'accuratezza: Traccia le prestazioni del modello nel tempo
  3. Non ottimizzare eccessivamente: Un po' di campionamento casuale mantiene la copertura
  4. Gestisci l'affaticamento degli annotatori: Gli elementi difficili sono stancanti
  5. Salva i checkpoint del modello: Abilita il rollback se necessario

Prossimi Passi


Documentazione completa sull'active learning su /docs/features/active-learning.