Aprendizado Ativo
Use 5 estratégias de aprendizado ativo no Potato — amostragem por incerteza, BADGE, BALD, baseada em diversidade e ensemble híbrido — para reduzir o custo de anotação em até 50%.
O aprendizado ativo ajuda você a anotar de forma mais inteligente, priorizando os exemplos mais informativos. Em vez de anotar aleatoriamente, concentre-se nas instâncias em que o modelo está mais incerto.
Como Funciona
O aprendizado ativo do Potato reordena automaticamente as instâncias de anotação com base nas previsões de aprendizado de máquina:
- Coleta Inicial - Reúna um número mínimo de anotações
- Treinar - Treine um classificador com as anotações existentes
- Prever - Obtenha pontuações de incerteza para as instâncias não anotadas
- Reordenar - Priorize as instâncias com maior incerteza
- Anotar - Os anotadores rotulam as instâncias priorizadas
- Retreinar - Atualize o modelo periodicamente com as novas anotações
Configuração
Configuração 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: 1000Configuração 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_name: sklearn.linear_model.LogisticRegression
classifier_params:
C: 1.0
max_iter: 1000
# Query strategy
query_strategy: uncertainty # uncertainty, diversity, badge, bald, hybrid
# 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: 5Estratégias de Consulta
O Potato oferece suporte a cinco estratégias de consulta para selecionar as instâncias mais informativas:
| Estratégia | Descrição |
|---|---|
uncertainty | Seleciona as instâncias em que o modelo tem menos confiança (padrão) |
diversity | Seleciona as instâncias mais diferentes dos dados já anotados |
badge | Batch Active learning by Diverse Gradient Embeddings |
bald | Bayesian Active Learning by Disagreement |
hybrid | Ensemble que combina várias estratégias |
active_learning:
query_strategy: uncertainty # or diversity, badge, bald, hybridClassificadores Suportados
Os classificadores são especificados usando seu caminho completo de importação do sklearn por meio de classifier_name:
| Classificador | Caminho do sklearn | Melhor Para | Velocidade |
|---|---|---|---|
| Regressão Logística | sklearn.linear_model.LogisticRegression | Classificação binária/multiclasse | Rápido |
| Random Forest | sklearn.ensemble.RandomForestClassifier | Padrões complexos | Médio |
| SVC | sklearn.svm.SVC | Conjuntos de dados pequenos | Lento |
| Multinomial NB | sklearn.naive_bayes.MultinomialNB | Classificação de texto | Muito Rápido |
Exemplos de Classificadores
# Logistic Regression (recommended starting point)
classifier_name: sklearn.linear_model.LogisticRegression
classifier_params:
C: 1.0
max_iter: 1000
# Random Forest
classifier_name: sklearn.ensemble.RandomForestClassifier
classifier_params:
n_estimators: 100
max_depth: 10
# Support Vector Classifier
classifier_name: sklearn.svm.SVC
classifier_params:
kernel: rbf
probability: true
# Naive Bayes
classifier_name: sklearn.naive_bayes.MultinomialNB
classifier_params:
alpha: 1.0Vetorizadores
| Vetorizador | Descrição |
|---|---|
TfidfVectorizer | Características ponderadas por TF-IDF (recomendado) |
CountVectorizer | Contagens simples de palavras |
HashingVectorizer | Eficiente em memória para vocabulários 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: 10000Integração com LLM
O aprendizado ativo pode usar opcionalmente LLMs para uma seleção aprimorada de instâncias:
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: falseSuporte a Múltiplos Esquemas
O aprendizado ativo pode alternar entre vários esquemas de anotação:
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: 100Persistência de Modelo
Salve e recarregue modelos treinados entre reinicializações do 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: falseMonitoramento do Progresso
O painel do administrador acompanha as métricas de aprendizado ativo:
- Acurácia atual do modelo
- Contagem de ciclos de treinamento
- Distribuição de incerteza
- Instâncias restantes
- Histórico de retreinamento
Acesse em /admin com sua chave de API de administrador.
Boas Práticas
1. Comece com Amostragem Aleatória
Obtenha anotações iniciais antes de habilitar o aprendizado ativo:
active_learning:
enabled: true
min_instances_for_training: 50 # Wait for 50 annotations2. Escolha Classificadores Apropriados
- LogisticRegression: Rápido, bom padrão para a maioria das tarefas
- RandomForest: Melhor para padrões complexos, mais lento
- MultinomialNB: Muito rápido, bom para classificação simples de texto
3. Monitore a Distribuição de Classes
O aprendizado ativo pode criar desequilíbrio de classes. Monitore no painel do administrador e considere a amostragem estratificada.
4. Defina uma Frequência Razoável de Retreinamento
Retreinar com muita frequência desperdiça recursos:
update_frequency: 100 # Retrain every 100 annotations5. Habilite a Persistência de Modelo
Salve os modelos para evitar retreinar do zero na reinicialização:
model_persistence:
enabled: true
save_dir: "models/"Exemplo: Configuração Completa
annotation_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_name: sklearn.linear_model.LogisticRegression
classifier_params:
C: 1.0
max_iter: 1000
query_strategy: uncertainty
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/"
export_annotation_format: "json"
user_config:
allow_all_users: trueCombinando com Suporte de IA
Use aprendizado ativo e assistência de LLM ao mesmo tempo:
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: trueEssa combinação prioriza as instâncias incertas e, ao mesmo tempo, fornece dicas de IA para ajudar os anotadores.
Solução de Problemas
Falhas de Treinamento
- Garanta um número suficiente de anotações (
min_instances_for_training) - Verifique a distribuição de classes - são necessários exemplos de todas as classes
- Confirme que o formato dos dados corresponde ao esquema
Desempenho Lento
- Reduza
max_instances_to_reorder - Aumente
update_frequency - Use
HashingVectorizerpara vocabulários grandes
O Modelo Não Atualiza
- Verifique a configuração de
update_frequency - Confirme que as anotações estão sendo salvas
- Revise o painel do administrador em busca de erros
Leitura Adicional
- Suporte de IA - Anotação assistida por LLM
- Atribuição de Tarefas - Estratégias de atribuição
- Painel do Administrador - Monitore as métricas de aprendizado ativo
Para detalhes de implementação, consulte a documentação de origem.