Apprendimento Attivo
Usa il campionamento per incertezza per dare priorità all'annotazione degli esempi più utili.
Apprendimento Attivo
L'apprendimento attivo ti aiuta ad annotare in modo più intelligente, dando priorità agli esempi più informativi. Invece di annotare casualmente, concentrati sulle istanze in cui il modello è più incerto.
Come Funziona
L'apprendimento attivo di Potato riordina automaticamente le istanze di annotazione in base alle previsioni del machine learning:
- Raccolta Iniziale - Raccogli un numero minimo di annotazioni
- Addestramento - Addestra un classificatore sulle annotazioni esistenti
- Previsione - Ottieni punteggi di incertezza per le istanze non annotate
- Riordinamento - Dai priorità alle istanze con la massima incertezza
- Annotazione - Gli annotatori etichettano le istanze prioritarie
- Riaddestr. - Aggiorna periodicamente il modello con nuove annotazioni
Configurazione
Impostazione di Base
active_learning:
enabled: true
schema_names:
- sentiment # Quali schemi di annotazione usare
min_annotations_per_instance: 1
min_instances_for_training: 20
update_frequency: 50 # Riaddestra ogni 50 annotazioni
max_instances_to_reorder: 1000Configurazione Completa
active_learning:
enabled: true
# Quali schemi usare per l'addestramento
schema_names:
- sentiment
# Requisiti minimi
min_annotations_per_instance: 1
min_instances_for_training: 20
# Frequenza di riaddestr.
update_frequency: 50
# Quante istanze riordinare
max_instances_to_reorder: 1000
# Configurazione del classificatore
classifier:
type: LogisticRegression
params:
C: 1.0
max_iter: 1000
# Estrazione delle feature
vectorizer:
type: TfidfVectorizer
params:
max_features: 5000
ngram_range: [1, 2]
# Persistenza del modello
model_persistence:
enabled: true
save_dir: "models/"
max_saved_models: 5Classificatori Supportati
| Classificatore | Ideale Per | Velocità |
|---|---|---|
LogisticRegression | Classificazione binaria/multiclasse | Veloce |
RandomForestClassifier | Pattern complessi | Media |
SVC | Dataset piccoli | Lenta |
MultinomialNB | Classificazione testuale | Molto Veloce |
Esempi di Classificatori
# Logistic Regression (punto di partenza consigliato)
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.0Vettorizzatori
| Vettorizzatore | Descrizione |
|---|---|
TfidfVectorizer | Feature pesate TF-IDF (consigliato) |
CountVectorizer | Conteggi semplici delle parole |
HashingVectorizer | Efficiente in memoria per vocabolari grandi |
# TF-IDF (consigliato)
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 (per dataset grandi)
vectorizer:
type: HashingVectorizer
params:
n_features: 10000Integrazione con LLM
L'apprendimento attivo può opzionalmente usare LLM per una selezione delle istanze migliorata:
active_learning:
enabled: true
schema_names:
- sentiment
# Selezione basata su LLM
llm_integration:
enabled: true
endpoint_type: vllm
base_url: http://localhost:8000/v1
model: meta-llama/Llama-2-7b-chat-hf
# Modalità mock per i test
mock_mode: falseSupporto Multi-Schema
L'apprendimento attivo può alternare tra più schemi di annotazione:
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
# Impostazioni per schema specifico
schema_config:
sentiment:
min_instances_for_training: 30
update_frequency: 50
topic:
min_instances_for_training: 50
update_frequency: 100Persistenza del Modello
Salva e ricarica i modelli addestrati dopo i riavvii del server:
active_learning:
enabled: true
schema_names:
- sentiment
model_persistence:
enabled: true
save_dir: "models/"
max_saved_models: 5 # Mantieni gli ultimi 5 modelli
# Salva nel database invece che nei file
use_database: falseMonitoraggio del Progresso
La dashboard di amministrazione tiene traccia delle metriche di apprendimento attivo:
- Accuratezza attuale del modello
- Conteggio dei cicli di addestramento
- Distribuzione dell'incertezza
- Istanze rimanenti
- Cronologia del riaddestr.
Accedi tramite /admin con la tua chiave API di amministrazione.
Best Practice
1. Inizia con il Campionamento Casuale
Raccogli annotazioni iniziali prima di abilitare l'apprendimento attivo:
active_learning:
enabled: true
min_instances_for_training: 50 # Attendi 50 annotazioni2. Scegli Classificatori Appropriati
- LogisticRegression: Veloce, buona impostazione predefinita per la maggior parte dei compiti
- RandomForest: Migliore per pattern complessi, più lento
- MultinomialNB: Molto veloce, buono per la classificazione testuale semplice
3. Monitora la Distribuzione delle Classi
L'apprendimento attivo può creare squilibrio tra le classi. Monitora nella dashboard di amministrazione e considera il campionamento stratificato.
4. Imposta una Frequenza di Riaddestr. Ragionevole
Un riaddestr. troppo frequente spreca risorse:
update_frequency: 100 # Riaddestra ogni 100 annotazioni5. Abilita la Persistenza del Modello
Salva i modelli per evitare di riaddestrarli da zero al riavvio:
model_persistence:
enabled: true
save_dir: "models/"Esempio: Configurazione Completa
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: trueCombinazione con il Supporto AI
Usa sia l'apprendimento attivo che l'assistenza LLM:
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: trueQuesta combinazione dà priorità alle istanze incerte fornendo al contempo suggerimenti AI per aiutare gli annotatori.
Risoluzione dei Problemi
Errori di Addestramento
- Assicurati di avere annotazioni sufficienti (
min_instances_for_training) - Controlla la distribuzione delle classi - sono necessari esempi di tutte le classi
- Verifica che il formato dei dati corrisponda allo schema
Prestazioni Lente
- Riduci
max_instances_to_reorder - Aumenta
update_frequency - Usa
HashingVectorizerper vocabolari grandi
Modello Non Aggiornato
- Controlla l'impostazione
update_frequency - Verifica che le annotazioni vengano salvate
- Consulta la dashboard di amministrazione per gli errori
Ulteriori Letture
- Supporto AI - Annotazione assistita da LLM
- Assegnazione Compiti - Strategie di assegnazione
- Dashboard di Amministrazione - Monitora le metriche di apprendimento attivo
Per i dettagli di implementazione, consulta la documentazione sorgente.