Aprendizaje Activo
Usa muestreo por incertidumbre para priorizar la anotación de ejemplos valiosos.
Aprendizaje Activo
El aprendizaje activo te ayuda a anotar de manera más inteligente priorizando los ejemplos más informativos. En lugar de anotar aleatoriamente, concéntrate en las instancias donde el modelo tiene mayor incertidumbre.
Cómo Funciona
El aprendizaje activo de Potato reordena automáticamente las instancias de anotación basándose en predicciones de aprendizaje automático:
- Recolección Inicial - Recopilar un número mínimo de anotaciones
- Entrenar - Entrenar un clasificador con las anotaciones existentes
- Predecir - Obtener puntuaciones de incertidumbre para instancias no anotadas
- Reordenar - Priorizar las instancias con mayor incertidumbre
- Anotar - Los anotadores etiquetan las instancias priorizadas
- Reentrenar - Actualizar el modelo periódicamente con nuevas anotaciones
Configuración
Configuración Básica
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: 1000Configuración Completa
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: 5Clasificadores Compatibles
| Clasificador | Ideal Para | Velocidad |
|---|---|---|
LogisticRegression | Clasificación binaria/multiclase | Rápida |
RandomForestClassifier | Patrones complejos | Media |
SVC | Conjuntos de datos pequeños | Lenta |
MultinomialNB | Clasificación de texto | Muy Rápida |
Ejemplos de Clasificadores
# 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.0Vectorizadores
| Vectorizador | Descripción |
|---|---|
TfidfVectorizer | Características ponderadas por TF-IDF (recomendado) |
CountVectorizer | Conteos simples de palabras |
HashingVectorizer | Eficiente en memoria para vocabularios grandes |
# 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: 10000Integración con LLM
El aprendizaje activo puede usar opcionalmente LLMs para una selección mejorada de instancias:
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: falseSoporte Multi-Esquema
El aprendizaje activo puede alternar entre múltiples esquemas de anotación:
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: 100Persistencia del Modelo
Guarda y recarga modelos entrenados entre reinicios del servidor:
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: falseMonitoreo del Progreso
El panel de administración rastrea las métricas de aprendizaje activo:
- Precisión actual del modelo
- Conteo de ciclos de entrenamiento
- Distribución de incertidumbre
- Instancias restantes
- Historial de reentrenamiento
Accede vía /admin con tu clave API de administrador.
Mejores Prácticas
1. Comienza con Muestreo Aleatorio
Obtén anotaciones iniciales antes de habilitar el aprendizaje activo:
active_learning:
enabled: true
min_instances_for_training: 50 # Wait for 50 annotations2. Elige Clasificadores Apropiados
- LogisticRegression: Rápido, buena opción predeterminada para la mayoría de tareas
- RandomForest: Mejor para patrones complejos, más lento
- MultinomialNB: Muy rápido, bueno para clasificación de texto simple
3. Monitorea la Distribución de Clases
El aprendizaje activo puede crear desbalance de clases. Monitorea en el panel de administración y considera muestreo estratificado.
4. Establece una Frecuencia de Reentrenamiento Razonable
Reentrenar con demasiada frecuencia desperdicia recursos:
update_frequency: 100 # Retrain every 100 annotations5. Habilita la Persistencia del Modelo
Guarda los modelos para evitar reentrenar desde cero al reiniciar:
model_persistence:
enabled: true
save_dir: "models/"Ejemplo: Configuración 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: trueCombinación con Soporte de IA
Usa tanto aprendizaje activo como asistencia de 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: trueEsta combinación prioriza instancias inciertas mientras proporciona sugerencias de IA para ayudar a los anotadores.
Solución de Problemas
Fallos de Entrenamiento
- Asegúrate de tener suficientes anotaciones (
min_instances_for_training) - Verifica la distribución de clases - necesitas ejemplos de todas las clases
- Verifica que el formato de datos coincida con el esquema
Rendimiento Lento
- Reduce
max_instances_to_reorder - Aumenta
update_frequency - Usa
HashingVectorizerpara vocabularios grandes
El Modelo No Se Actualiza
- Verifica la configuración de
update_frequency - Verifica que las anotaciones se estén guardando
- Revisa el panel de administración en busca de errores
Lectura Adicional
- Soporte de IA - Anotación asistida por LLM
- Asignación de Tareas - Estrategias de asignación
- Panel de Administración - Monitorea métricas de aprendizaje activo
Para detalles de implementación, consulta la documentación fuente.