Skip to content
Guides4 min read

Aprendizado Ativo: Anote de Forma Mais Inteligente, Não Mais Trabalhosa

Reduza o esforço de anotação em até 50% usando o aprendizado ativo do Potato e as estratégias de amostragem por incerteza, BADGE e BALD para priorizar os exemplos não rotulados mais informativos.

Potato Team

O aprendizado ativo decide quais itens anotar em seguida, em vez de deixar isso ao acaso. Bem feito, ele pode reduzir pela metade a rotulagem necessária sem prejudicar a qualidade do modelo. Veja como configurá-lo no Potato.

O que é Aprendizado Ativo?

Em vez de amostrar dados aleatoriamente para anotar, o aprendizado ativo:

  1. Treina um modelo com as anotações atuais
  2. Identifica os itens em que o modelo está incerto
  3. Prioriza esses itens para anotação humana
  4. Repete o processo, melhorando continuamente a eficiência

Por que usar Aprendizado Ativo?

O retorno está principalmente em onde seus anotadores gastam o tempo. Você rotula menos itens para alcançar a mesma qualidade de modelo, então obtém um modelo utilizável mais cedo. Os casos difíceis e ambíguos recebem atenção humana, e os casos extremos que a amostragem aleatória deixaria de lado tendem a aparecer mais cedo.

Configuração Básica de Aprendizado Ativo

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]

Como Funciona a Amostragem por Incerteza

O aprendizado ativo do Potato usa a amostragem por incerteza para priorizar os itens em que o classificador tem menos confiança. O classificador prevê rótulos para instâncias não rotuladas, e aquelas com as menores pontuações de confiança são apresentadas primeiro para anotação. Para as estratégias disponíveis e os detalhes de implementação, consulte o guia de aprendizado ativo e a referência de estratégias.

O campo classifier_name especifica qualquer classificador compatível com scikit-learn usando seu caminho de módulo completo:

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

Outras opções de classificador incluem:

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

Configuração 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.

Acompanhando o Progresso

O registro de logs embutido do Potato anota quais instâncias foram selecionadas e suas pontuações de incerteza, então você pode observar como a amostragem se comporta à medida que os rótulos se acumulam.

Boas Práticas

Partida a Frio

Comece com uma amostragem aleatória diversa, definindo um random_sample_percent mais alto:

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

Controlando o Escopo de Reordenação

Use max_instances_to_reorder para controlar quantas instâncias são classificadas por incerteza. Um valor maior dá ao amostrador mais opções de escolha, mas custa mais processamento a cada passagem:

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

Mantendo a Diversidade

O parâmetro random_sample_percent garante que algumas instâncias amostradas aleatoriamente sejam incluídas, impedindo que o modelo veja apenas casos extremos incertos:

yaml
active_learning:
  random_sample_percent: 0.1  # 10% random sampling

Dicas para o Sucesso

Algumas coisas ajudam na prática. Comece com uma amostra aleatória para que o primeiro modelo veja uma variedade de exemplos, e depois mantenha uma fatia de amostragem aleatória na mistura para não sobreajustar aos casos extremos incertos. Acompanhe a acurácia ao longo do caminho. E lembre-se de que uma dieta constante dos itens mais difíceis desgasta os anotadores, então fique atento à fadiga e salve checkpoints do modelo caso precise reverter.

Próximos Passos


Documentação completa do aprendizado ativo em /docs/features/active-learning.