Ciclos de Active Learning
O que são loops de aprendizado ativo?
Um loop de aprendizado ativo (active learning loop) é um fluxo de trabalho de treinamento humano no ciclo (human-in-the-loop) em que um modelo escolhe iterativamente quais exemplos não rotulados devem ser rotulados em seguida — tipicamente aqueles que se espera fornecerem o maior valor de aprendizado — sob um orçamento de rotulagem (labeling budget) limitado. A ideia central é:
Em vez de rotular dados de forma uniformemente aleatória, selecione dados para rotular com base na incerteza e na utilidade (utility) do modelo, retreine e repita.
O aprendizado ativo é mais útil quando rótulos são caros (anotação médica, documentos jurídicos, moderação humana, expertise especializada de domínio), mas há abundância de dados não rotulados.
Por que o aprendizado ativo funciona (intuição e objetivos)
No aprendizado supervisionado (supervised learning) padrão, você rotula um conjunto de dados antecipadamente e treina uma vez (ou atualiza ocasionalmente). No aprendizado ativo, você busca atingir o mesmo desempenho com menos exemplos rotulados ao concentrar o esforço de rotulagem onde o modelo está, no momento, mais confuso ou onde novos rótulos mais melhorariam a tomada de decisão.
O aprendizado ativo normalmente otimiza um ou mais destes objetivos:
- Eficiência amostral (sample efficiency): atingir uma acurácia-alvo com menos amostras rotuladas.
- Eficiência orçamentária (budget efficiency): maximizar o desempenho sob um orçamento fixo de rotulagem.
- Iteração mais rápida (faster iteration): identificar rapidamente modos de falha (failure modes) e casos-limite (edge cases).
- Redução de risco (risk reduction): priorizar a rotulagem de exemplos com alto impacto no negócio.
O loop é guiado por uma função de aquisição (acquisition function) (também chamada de estratégia de consulta (query strategy)) que pontua itens não rotulados por valor esperado (incerteza, melhoria esperada, diversidade, custo etc.).
Os componentes centrais de um sistema de aprendizado ativo
Um pipeline prático de aprendizado ativo normalmente inclui:
- Pool não rotulado (unlabeled pool) (U): um grande conjunto de exemplos candidatos.
- Conjunto rotulado (labeled set) (L): o conjunto de treinamento atual com rótulos humanos.
- Modelo (f_\theta): treinado em (L), usado para pontuar/selecionar a partir de (U).
- Oráculo (oracle) / anotadores (annotators): humanos ou outras fontes de rótulos que fornecem rótulos.
- Função de aquisição (a(x; f_\theta)): calcula um escore de utilidade para cada (x \in U).
- Orçamento de rotulagem: um limite (exemplos, horas, dólares).
- Arcabouço de avaliação (evaluation harness): um conjunto dev/test fixo e monitoramento para detectar regressões.
- QA de dados + rótulos (data + label QA): processos para qualidade, consistência e controle de ruído.
O aprendizado ativo depende fortemente da qualidade da anotação; veja Diretrizes de Anotação, Concordância Entre Anotadores e Ruído de Rótulos.
O loop de aprendizado ativo (ponta a ponta)
Um loop de aprendizado ativo baseado em pool (pool-based) (a configuração mais comum) se parece com isto:
1) Inicialize o conjunto rotulado (início a frio (cold start))
Você precisa de um (L_0) inicial para treinar um primeiro modelo. Abordagens comuns:
- Rotular uma pequena amostra aleatória (garante ampla cobertura).
- Usar amostragem estratificada (stratified sampling) se você tiver rótulos fracos ou metadados.
- Começar a partir de um modelo pré-treinado (pretrained model) (reduz necessidades iniciais de rótulos, especialmente em NLP/CV).
2) Treine (ou faça ajuste fino) do modelo
Treine (f_\theta) no conjunto de dados rotulado atual (L_t). Para aprendizado profundo (deep learning), você frequentemente faz ajuste fino (fine-tune) de um backbone pré-treinado e, opcionalmente, mantém um conjunto de validação (validation set) estável para parada antecipada (early stopping).
3) Pontue candidatos não rotulados com a função de aquisição
Calcule um escore (a(x)) para cada (x \in U_t). Escores maiores indicam “mais valioso para rotular”.
4) Selecione um lote para rotular
Selecione os top-(k) itens (ou otimize um objetivo de lote que inclua restrições de diversidade/custo).
5) Envie para anotação + QA
Anotadores rotulam o lote. Aplique:
- Instruções claras e políticas para casos-limite (Diretrizes de Anotação)
- Checagens de consistência (Concordância Entre Anotadores)
- Detecção/limpeza de ruído (Ruído de Rótulos)
6) Atualize conjuntos de dados e retreine
Mova itens recém-rotulados de (U_t) para (L_{t+1}), retreine e repita.
7) Pare quando apropriado
Critérios de parada frequentemente incluem:
- Orçamento esgotado
- Platô de desempenho (curva de aprendizado achata)
- Métrica-alvo atingida
- Restrição operacional (tempo, latência, computação)
Estratégias de consulta: incerteza e além
Amostragem por incerteza (uncertainty sampling) (a abordagem clássica)
A amostragem por incerteza seleciona exemplos sobre os quais o modelo tem menos confiança.
Para um classificador probabilístico (probabilistic classifier) que produz (p(y \mid x)):
- Menor confiança (least confident):
[ a(x) = 1 - \max_y p(y \mid x) ] - Amostragem por margem (margin sampling) (diferença entre as duas classes mais prováveis):
[ a(x) = p(y_1 \mid x) - p(y_2 \mid x) \quad \text{(menor => mais incerto)} ] - Amostragem por entropia (entropy sampling):
[ a(x) = H(p(\cdot \mid x)) = -\sum_y p(y \mid x)\log p(y \mid x) ]
Prós: simples, frequentemente uma linha de base forte (strong baseline).
Contras: pode focar demais em pontos ambíguos/ruidosos; depende de probabilidades bem calibradas.
Consulta por comitê (query-by-committee) (baseada em discordância)
Treine um “comitê” de modelos (inicializações, subconjuntos, arquiteturas diferentes) e selecione pontos com máxima discordância. Métricas de exemplo:
- Entropia de voto (vote entropy)
- Divergência KL (KL divergence) entre distribuições preditivas
Isso é intimamente relacionado a conjuntos de modelos (ensembles) e pode ser visto como uma aproximação da incerteza epistêmica (epistemic uncertainty) (incerteza devido à falta de conhecimento).
Aprendizado ativo bayesiano (Bayesian active learning) (ganho de informação (information gain))
Abordagens bayesianas buscam escolher (x) que maximize a informação esperada ganha sobre parâmetros ou previsões. Um critério popular é o BALD (Bayesian Active Learning by Disagreement), que seleciona pontos com alta informação mútua entre previsões e parâmetros do modelo.
Na prática, a inferência bayesiana (Bayesian inference) aproximada frequentemente usa:
- dropout MC (MC dropout)
- ensembles profundos (deep ensembles)
- aproximações de Laplace (Laplace approximations)
Redução esperada do erro (expected error reduction) / valor da informação (value of information) (baseada em utilidade)
Em vez de “mais incerto”, você pode selecionar o ponto cujo rótulo mais melhoraria o desempenho em uma distribuição-alvo.
Conceitualmente:
- Considere rótulos possíveis para (x)
- Retreine hipoteticamente sob cada rótulo
- Estime a redução esperada na perda
Isso pode ser poderoso, mas caro; aproximações práticas frequentemente são necessárias.
Diversidade e cobertura (evitar lotes redundantes)
A amostragem por incerteza pura frequentemente seleciona muitos itens similares (por exemplo, muitos casos-limítrofes quase idênticos). Métodos de diversidade buscam cobrir o espaço:
- Agrupamento (clustering) + amostrar representantes
- Seleção de core-set (core-set selection) (escolher pontos cujos vetores de embedding (embeddings) cubram o pool)
- Processos pontuais determinantal (determinantal point processes, DPPs) para diversidade
- Maximização submodular (submodular maximization) (uma ferramenta teórica comum para seleção de lotes diversos)
Uma estratégia prática comum é incerteza × diversidade:
- ranquear por incerteza
- depois selecionar um subconjunto diverso usando vetores de embedding e uma métrica de distância
Aquisição sensível a custo (cost-sensitive) e ciente de restrições (constraint-aware)
O custo de rotulagem não é uniforme:
- Alguns itens levam mais tempo (documentos longos, imagens complexas)
- Alguns exigem especialistas
- Alguns são sensíveis e exigem revisão extra
Você pode modelar isso explicitamente:
- Maximizar ( \text{utilidade}(x) / \text{custo}(x) )
- Ou resolver um problema de seleção do tipo mochila (knapsack) sob uma restrição de tempo/orçamento
Consulta em lote vs sequencial
- O aprendizado ativo sequencial (sequential) (consultar um por vez) é teoricamente elegante, mas operacionalmente lento.
- O aprendizado ativo em lote (batch) (consultar (k) por vez) se alinha a fluxos de anotação, mas precisa gerenciar redundância; métodos de diversidade se tornam mais importantes.
Exemplo prático: amostragem por incerteza baseada em pool (pseudocódigo ao estilo Python)
Abaixo está um loop simplificado para um classificador com predict_proba:
import numpy as np
def entropy(probs, eps=1e-12):
probs = np.clip(probs, eps, 1.0)
return -(probs * np.log(probs)).sum(axis=1)
# U: unlabeled examples
# Lx, Ly: labeled features and labels
# model: any classifier with fit() and predict_proba()
BATCH_SIZE = 100
ROUNDS = 10
for t in range(ROUNDS):
model.fit(Lx, Ly)
probs = model.predict_proba(U) # shape: [len(U), num_classes]
scores = entropy(probs) # higher entropy => more uncertain
query_idx = np.argsort(-scores)[:BATCH_SIZE]
X_query = U[query_idx]
# Send X_query to annotation system:
y_query = human_label(X_query)
# Update labeled set
Lx = np.concatenate([Lx, X_query], axis=0)
Ly = np.concatenate([Ly, y_query], axis=0)
# Remove from unlabeled pool
mask = np.ones(len(U), dtype=bool)
mask[query_idx] = False
U = U[mask]
Em produção, você adicionaria: desduplicação (deduplication), estratificação, restrições de diversidade, portas de QA de rótulos, e versionamento de conjuntos de dados (dataset versioning).
Exemplos práticos por domínio
Exemplo 1: Triagem de imagens médicas
Tarefa: classificar lesões como benignas vs malignas.
Desafio: rótulos exigem especialistas; positivos raros.
Loop de aprendizado ativo:
- Comece com uma pequena semente rotulada e um codificador de visão pré-treinado (pretrained vision encoder).
- Use amostragem por incerteza para encontrar casos limítrofes.
- Adicione seleção por diversidade (diversity selection) para não superamostrar um tipo de scanner.
- Adicione lógica ciente de custos: priorize imagens que exigem revisão de um único especialista em vez daquelas que exigem múltiplas adjudicações (adjudications).
Armadilha comum: a incerteza pode se concentrar em imagens de baixa qualidade (desfoque de movimento (motion blur)), que podem ser menos úteis. Mitigação: incorporar um filtro de qualidade de imagem ou tratar “não avaliável (ungradable)” como um rótulo separado.
Exemplo 2: Reconhecimento de entidades nomeadas (named entity recognition, NER) para documentos jurídicos
Tarefa: rotular entidades como PARTY, STATUTE, DATE em documentos longos.
Desafio: rotulagem de sequência (sequence labeling); anotação é demorada.
Loop de aprendizado ativo:
- Selecione sentenças/trechos (spans) em vez de documentos completos.
- Calcule a incerteza em nível de token (token-level) e agregue (por exemplo, entropia média dos tokens).
- Use diversidade entre fontes de documentos (tribunais, jurisdições) para evitar viés de fonte (source bias).
Nota operacional: boas Diretrizes de Anotação são cruciais porque decisões de fronteira (boundary decisions) (“New York State Supreme Court”) podem dominar a discordância, reduzindo a Concordância Entre Anotadores.
Exemplo 3: Detecção de fraude em um cenário de streaming
Tarefa: detectar transações fraudulentas; rótulos chegam a partir de investigações.
Desafio: mudanças de distribuição (distribution shifts) (novos padrões de fraude), rótulos atrasados.
Loop de aprendizado ativo (baseado em fluxo (stream-based)):
- A cada dia, pontue novas transações.
- Selecione um conjunto para investigação humana equilibrando:
- alta incerteza (modelo não tem certeza)
- alto risco esperado (alto valor da transação)
- cobertura de novos padrões (diversidade no espaço de características)
- Use os resultados para atualizar o modelo regularmente e monitorar deriva (drift).
Isso frequentemente é orientado por utilidade (utility-driven): os “melhores” exemplos para rotular não são os que maximizam a acurácia, mas os que reduzem a perda financeira.
Fundamentos teóricos (o que está sendo otimizado?)
O aprendizado ativo pode ser motivado a partir de várias perspectivas:
1) Aprendizado estatístico (statistical learning): reduzir o erro de generalização (generalization error) mais rápido
O objetivo é selecionar exemplos que mais reduzam a perda esperada em teste. Muitas funções de aquisição são heurísticas para esse objetivo.
2) Teoria da decisão bayesiana (Bayesian decision theory): maximizar utilidade esperada (expected utility)
Escolha (x) para maximizar o valor esperado: [ x^* = \arg\max_{x \in U} \mathbb{E}_{y \sim p(y \mid x)}[\Delta \text{Utility}(x, y)] ] “Utilidade” pode ser acurácia, redução no erro de calibração, resultados de negócio ou redução de incerteza.
3) Teoria da informação (information theory): reduzir incerteza sobre o modelo
Selecione pontos que maximizem a informação mútua (mutual information) entre parâmetros do modelo e saídas (critérios ao estilo BALD).
4) Otimização sob restrições (optimization under constraints): seleção de lote com diversidade
Aprendizado ativo em lote frequentemente é formulado como selecionar um subconjunto que maximize uma função de pontuação assegurando diversidade, restrições de custo ou restrições de balanceamento de classes.
Qualidade, ruído e fatores humanos (frequentemente o verdadeiro gargalo)
O aprendizado ativo pode amplificar problemas de dados porque ele intencionalmente mira exemplos “difíceis”, que também são onde humanos mais discordam.
Práticas-chave:
- Investir cedo em Diretrizes de Anotação com regras explícitas para casos-limite.
- Medir discordância e ambiguidade via Concordância Entre Anotadores.
- Esperar taxas mais altas de re-rotulagens e adjudicação (adjudication) para lotes amostrados ativamente.
- Monitorar e mitigar Ruído de Rótulos, especialmente ruído sistemático (por exemplo, classes confusas, definições mudando).
Um padrão útil é adicionar um rótulo “não é possível determinar / ambíguo” quando apropriado, em vez de forçar anotadores incertos a chutar.
Aprendizado ativo com aprendizado profundo moderno e modelos fundacionais (foundation models)
O aprendizado ativo continua relevante, mas o aprendizado profundo muda as trocas:
- A calibração de incerteza (uncertainty calibration) importa: probabilidades de softmax (softmax) podem ser excessivamente confiantes. Considere métodos de calibração (por exemplo, escalonamento de temperatura (temperature scaling)) e proxies de incerteza (uncertainty proxies) (conjuntos, dropout MC).
- O aprendizado de representações (representation learning) ajuda: selecionar pontos diversos no espaço de embeddings frequentemente funciona bem quando embeddings vêm de um modelo pré-treinado forte.
- Modelos de linguagem grandes (large language models, LLMs) podem mudar onde humanos são usados:
- Modelos de linguagem grandes podem fornecer rótulos fracos (weak labels) ou rascunhos, enquanto humanos verificam.
- O aprendizado ativo pode priorizar exemplos em que o modelo de linguagem grande e o modelo discordam, ou em que a confiança é baixa.
- Para ajuste por instruções (instruction tuning), “exemplos” podem ser prompts (prompts)/tarefas; a aquisição pode mirar capacidades com baixo desempenho (por exemplo, padrões específicos de raciocínio).
Seja cauteloso: se um modelo de linguagem grande fizer parte do pipeline de rotulagem, você está efetivamente fazendo uma forma de curadoria ativa de dados (active data curation) com um oráculo não humano — isso pode introduzir erros correlacionados e deve ser auditado como qualquer outra fonte de rótulos.
Modos de falha comuns e como mitigá-los
- Viés de amostragem (sampling bias) / loops de retroalimentação (feedback loops): o conjunto rotulado se torna não representativo dos dados do mundo real.
- Mitigação: misturar uma porcentagem de amostras aleatórias; manter um fluxo “de monitoramento” fixo.
- Foco excessivo em ruído/ambiguidade: pontos incertos podem ser inerentemente ambíguos.
- Mitigação: adicionar rótulos de abstenção (abstain labels), adjudicação, definições mais claras; incorporar diversidade e filtros de qualidade.
- Lotes redundantes: os top-k pontos incertos são quase duplicatas.
- Mitigação: agrupar, core-set, DPPs, ou “incerteza e depois diversificar”.
- Desbalanceamento de classes (class imbalance) piora: a incerteza pode não mirar classes raras de forma eficaz.
- Mitigação: amostragem ciente de classe, consultas de descoberta direcionadas, ou detectores de anomalia/novidade (anomaly/novelty detectors).
- Desalinhamento de avaliação (evaluation mismatch): ganhos aparentes refletem mudança de distribuição entre os dados de treinamento amostrados ativamente e o conjunto de teste.
- Mitigação: manter um conjunto de teste estático; acompanhar desempenho em um fluxo de validação “semelhante ao de produção”.
Checklist de melhores práticas
- Comece com uma linha de base robusta (strong baseline): amostragem aleatória + bom pré-processamento + modelo sólido.
- Use aprendizado ativo onde rótulos são realmente caros e a incerteza é significativa.
- Mantenha um conjunto de teste congelado (frozen test set); acompanhe curvas de aprendizado ao longo das rodadas.
- Combine incerteza + diversidade para seleção em lote.
- Incorpore custo e utilidade de negócio quando custos e riscos de rótulos variam.
- Trate a anotação como um sistema de primeira classe:
- diretrizes, treinamento, QA, adjudicação
- medir concordância e ruído (Concordância Entre Anotadores, Ruído de Rótulos)
- Evite loops de retroalimentação: reserve parte do orçamento para amostragem aleatória/de cobertura.
- Versione conjuntos de dados e modelos para que você consiga reproduzir melhorias e regressões.
Quando usar (e quando não usar) aprendizado ativo
O aprendizado ativo é uma boa opção quando:
- Há abundância de dados não rotulados, mas rotular é caro
- Você pode iterar rapidamente (treinar → selecionar → rotular → retreinar)
- A incerteza do modelo se correlaciona de forma razoável com erros
- Você tem definições estáveis e consegue gerenciar a qualidade da anotação
Ele pode ser menos eficaz quando:
- Rótulos são baratos e abundantes (basta rotular mais dados)
- A tarefa é extremamente ruidosa/subjetiva sem definições claras
- O treinamento é caro demais para iterar
- Estimativas de incerteza não são confiáveis e são difíceis de calibrar
Resumo
Loops de aprendizado ativo são uma abordagem iterativa para rotulagem de dados em que o modelo seleciona ativamente quais exemplos devem ser rotulados em seguida com base em incerteza e utilidade, com o objetivo de maximizar o desempenho por real/dólar gasto em rotulagem. Implementações bem-sucedidas combinam estratégias sólidas de aquisição (incerteza, discordância, diversidade, utilidade ciente de custos) com operações fortes de anotação — especialmente Diretrizes de Anotação claras, medição de Concordância Entre Anotadores e controles para Ruído de Rótulos.