Skip to content
Guides4 min read

Aprendizaje Activo: Anota de Forma Inteligente, No Más Difícil

Cómo usar el muestreo por incertidumbre para priorizar anotaciones y reducir el esfuerzo total de etiquetado hasta en un 50%.

Potato Team·

Aprendizaje Activo: Anota de Forma Inteligente, No Más Difícil

El aprendizaje activo selecciona de forma inteligente qué elementos anotar a continuación, enfocando el esfuerzo humano donde más importa. Esta guía muestra cómo reducir el esfuerzo de anotación hasta en un 50% mientras se mantiene la calidad del modelo.

¿Qué es el Aprendizaje Activo?

En lugar de muestrear datos aleatoriamente para anotar, el aprendizaje activo:

  1. Entrena un modelo con las anotaciones actuales
  2. Identifica elementos donde el modelo tiene incertidumbre
  3. Prioriza esos elementos para la anotación humana
  4. Repite el proceso, mejorando continuamente la eficiencia

¿Por Qué Usar Aprendizaje Activo?

  • Reducir costos de anotación: Etiquetar menos elementos con la misma calidad del modelo
  • Iteración más rápida: Obtener modelos utilizables más pronto
  • Enfocar la experiencia: Atención humana en los casos difíciles
  • Mejor cobertura: Asegurar que los casos extremos estén representados

Configuración Básica de Aprendizaje Activo

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]

Cómo Funciona el Muestreo por Incertidumbre

El aprendizaje activo de Potato utiliza muestreo por incertidumbre para priorizar elementos donde el clasificador tiene menos confianza. El clasificador predice etiquetas para instancias no etiquetadas, y aquellas con las puntuaciones de confianza más bajas se presentan primero para la anotación.

El campo classifier_name especifica cualquier clasificador compatible con scikit-learn usando su ruta completa de módulo:

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

Otras opciones de clasificador incluyen:

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

Configuración Completa

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.

Monitoreo del Progreso

Rastrea el progreso de la anotación a través del registro integrado de Potato. El sistema registra qué instancias fueron seleccionadas y sus puntuaciones de incertidumbre, permitiéndote monitorear el proceso de aprendizaje activo.

Mejores Prácticas

Inicio en Frío

Comienza con un muestreo aleatorio diverso estableciendo un random_sample_percent más alto:

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

Control del Alcance de Reordenamiento

Usa max_instances_to_reorder para controlar cuántas instancias se clasifican por incertidumbre. Un valor más grande proporciona mejor selección pero requiere más computación:

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

Mantenimiento de la Diversidad

El parámetro random_sample_percent asegura que se incluyan algunas instancias muestreadas aleatoriamente, evitando que el modelo solo vea casos extremos inciertos:

yaml
active_learning:
  random_sample_percent: 0.1  # 10% random sampling

Consejos para el Éxito

  1. Comenzar diverso: Una muestra inicial aleatoria cubre casos extremos
  2. Monitorear la precisión: Rastrear el rendimiento del modelo a lo largo del tiempo
  3. No sobre-optimizar: Algo de muestreo aleatorio mantiene la cobertura
  4. Manejar la fatiga del anotador: Los elementos difíciles son agotadores
  5. Guardar puntos de control del modelo: Permitir reversión si es necesario

Próximos Pasos


Documentación completa de aprendizaje activo en /docs/features/active-learning.