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.
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:
- Treina um modelo com as anotações atuais
- Identifica os itens em que o modelo está incerto
- Prioriza esses itens para anotação humana
- 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
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:
active_learning:
enabled: true
classifier_name: "sklearn.linear_model.LogisticRegression"Outras opções de classificador incluem:
sklearn.ensemble.RandomForestClassifiersklearn.svm.SVC(comprobability=True)sklearn.naive_bayes.MultinomialNB
Configuração Completa
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:
active_learning:
enabled: true
classifier_name: "sklearn.linear_model.LogisticRegression"
random_sample_percent: 0.2 # 20% random for initial diversityControlando 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:
active_learning:
max_instances_to_reorder: 5000 # Rank top 5000 by uncertaintyMantendo 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:
active_learning:
random_sample_percent: 0.1 # 10% random samplingDicas 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
- Adicione sugestões de IA para acelerar os itens incertos
- Configure o controle de qualidade para casos difíceis
- Aprenda sobre crowdsourcing com aprendizado ativo
Documentação completa do aprendizado ativo em /docs/features/active-learning.