Aprendizado Semi/Self-Supervisionado

Visão geral

Aprendizado semi-supervisionado (semi-supervised learning) e aprendizado auto-supervisionado (self-supervised learning) são dois paradigmas intimamente relacionados para explorar o fato de que dados não rotulados costumam ser abundantes, enquanto dados rotulados são caros. Eles fazem isso adicionando sinais de treinamento que não exigem rótulos humanos — mais comumente:

  • Tarefas proxy (de pretexto) (proxy (pretext) tasks): criam um sinal de supervisão artificial a partir dos próprios dados (por exemplo, prever tokens mascarados, prever se duas visões aumentadas vêm da mesma imagem).
  • Objetivos de consistência (consistency objectives): impõem que as previsões do modelo permaneçam estáveis sob perturbações (por exemplo, aumento de dados, ruído, dropout (dropout), perturbações adversariais).

Esses métodos ficam entre o Aprendizado Supervisionado clássico (aprender puramente a partir de exemplos rotulados) e o Aprendizado Não Supervisionado (aprender estrutura sem rótulos). Eles também são complementares à Supervisão Fraca (usar rótulos ruidosos) e ao Aprendizado Ativo (escolher o que rotular).

Aprendizado semi-supervisionado vs. auto-supervisionado: qual é a diferença?

Aprendizado semi-supervisionado (SSL)

Você tem:

  • Um conjunto rotulado: (\mathcal{D}_L = {(x_i, y_i)})
  • Um conjunto não rotulado muito maior: (\mathcal{D}_U = {x_j})

Objetivo: melhorar o desempenho em uma tarefa supervisionada específica (classificação, segmentação etc.) usando (\mathcal{D}_U) como sinal adicional.

Abordagem típica: treinar com uma combinação de:

  • perda supervisionada em dados rotulados
  • regularização não supervisionada (unsupervised regularization) em dados não rotulados (frequentemente consistência + pseudo-rótulos (pseudo-labels))

Aprendizado auto-supervisionado

Você tem apenas:

  • Dados não rotulados: (\mathcal{D} = {x_i})

Objetivo: aprender representações úteis (representations) (incorporações (embeddings) ou pesos do modelo) resolvendo uma tarefa proxy. Depois:

  • fazer ajuste fino (fine-tuning) em tarefas rotuladas a jusante (downstream tasks), ou
  • usar as representações diretamente (por exemplo, recuperação, agrupamento).

Exemplos modernos incluem modelagem de linguagem mascarada (masked language modeling) (no estilo BERT) e aprendizado contrastivo (contrastive learning) (no estilo SimCLR/MoCo).

Por que eles frequentemente são agrupados

Na prática do aprendizado profundo (deep learning), os dois frequentemente se misturam:

  • O pré-treinamento auto-supervisionado produz características fortes.
  • O ajuste fino semi-supervisionado usa um pequeno conjunto rotulado mais um grande conjunto não rotulado para extrair ainda mais desempenho específico da tarefa.

Intuição e fundamentos teóricos

Métodos semi/auto-supervisionados se apoiam em suposições sobre como dados do mundo real são estruturados.

As suposições de suavidade e de variedade (manifold)

Uma crença comum é que dados de alta dimensionalidade se concentram perto de variedades (manifolds) de menor dimensionalidade. Se dois pontos (x) e (x') estão próximos nessa variedade, seus rótulos deveriam ser semelhantes.

A regularização por consistência (consistency regularization) operacionaliza isso: impor [ f_\theta(x) \approx f_\theta(\text{augment}(x)) ] onde (f_\theta) é o modelo.

A suposição de clusters (separação em baixa densidade)

Em muitos problemas, as classes formam clusters separados por regiões de baixa densidade. Um bom limite de decisão deveria passar por regiões de baixa densidade, não atravessar um cluster denso.

A pseudo-rotulagem e a minimização de entropia (entropy minimization) incentivam isso ao empurrar as previsões em dados não rotulados para atribuições confiantes.

Uma visão unificada por objetivo

Muitos métodos semi-supervisionados podem ser escritos como: [ \mathcal{L}(\theta) = \mathcal{L}_{sup}(\mathcal{D}L) + \lambda , \mathcal{L}{unsup}(\mathcal{D}_U) ] onde:

  • (\mathcal{L}_{sup}) é entropia cruzada (cross-entropy) (ou perda da tarefa)
  • (\mathcal{L}_{unsup}) é um objetivo de consistência, pseudo-rótulo ou contrastivo
  • (\lambda) equilibra os dois.

Esse enquadramento é útil na prática: a maior parte da engenharia está em escolher (\mathcal{L}_{unsup}), agendar (\lambda) e garantir estabilidade.

Técnicas centrais

1) Tarefas proxy (de pretexto) (aprendizado auto-supervisionado)

Tarefas proxy criam rótulos a partir da estrutura dos dados. Boas tarefas proxy forçam o modelo a aprender informação semântica em vez de atalhos triviais.

Tarefas proxy comuns:

  • Predição mascarada (masked prediction)
    • PLN (NLP): mascarar tokens e prevê-los (modelagem de linguagem mascarada)
    • Visão: mascarar patches e reconstruí-los/prever (autoencoders mascarados (masked autoencoders))
  • Aprendizado contrastivo
    • Criar duas “visões” aumentadas do mesmo exemplo; aproximá-las no espaço de incorporação enquanto afasta outros exemplos.
  • Prever transformações
    • Prever ângulo de rotação, resolver quebra-cabeças tipo jigsaw (historicamente importante; menos dominante agora).

Exemplo prático (conceitual): em visão, dois recortes da mesma foto deveriam produzir incorporações semelhantes mesmo se cor/escala mudarem.

2) Regularização por consistência (aprendizado semi-supervisionado)

Métodos de consistência tratam dados não rotulados como uma forma de restringir a função aprendida pelo modelo.

Receita típica:

  1. Produzir duas versões perturbadas de uma entrada não rotulada (x): (x^{(1)}, x^{(2)})
  2. Exigir que as previsões coincidam:
    • corresponder distribuições de probabilidade (divergência KL (KL divergence) / erro quadrático médio (MSE) sobre logits (logits))
    • ou usar uma previsão como “alvo” (professor–aluno (teacher-student))

Perturbações incluem:

  • aumento de dados padrão (recorte, espelhamento, jitter de cor)
  • ruído em camadas ocultas (dropout)
  • perturbações adversariais (VAT)

3) Pseudo-rotulagem (auto-treinamento)

Pseudo-rotulagem converte exemplos não rotulados em rotulados usando as próprias previsões do modelo.

Procedimento:

  • treinar com dados rotulados
  • prever rótulos para exemplos não rotulados
  • adicionar as previsões mais confiantes ao conjunto rotulado (ou incluí-las na perda com um peso)

Desafio principal: viés de confirmação (confirmation bias). Se as primeiras previsões estiverem erradas, o modelo pode reforçar os próprios erros. Métodos modernos mitigam isso com:

  • limiares de confiança
  • aumentos fortes
  • modelos professores (média móvel exponencial (EMA))
  • estratégias de balanceamento / remoção de viés

Algoritmos representativos (visão de alto nível)

Famílias clássicas de semi-supervisionado (pré-aprendizado profundo e início do aprendizado profundo)

  • Auto-treinamento / pseudo-rotulagem: baseline simples e surpreendentemente eficaz.
  • Co-treinamento (co-training): treinar dois modelos/visões que rotulam dados um para o outro (funciona quando as “visões” são condicionalmente independentes).
  • Propagação de rótulos baseada em grafos (graph-based label propagation): construir um grafo de similaridade e propagar rótulos ao longo das arestas; relacionado ao aprendizado em variedades (manifold learning).

SSL profundo focado em consistência

  • Π-model / Agregação temporal (Temporal Ensembling): consistência entre épocas/aumentos.
  • Mean Teacher: um modelo professor é uma EMA dos pesos do aluno; o aluno faz as previsões em dados não rotulados coincidirem com as do professor.
  • VAT (Treinamento Adversarial Virtual (Virtual Adversarial Training)): impor consistência sob a pior pequena perturbação.

Baselines modernas fortes (no estilo FixMatch (FixMatch-style))

Um padrão amplamente usado é:

  • Aumento fraco → gerar um pseudo-rótulo
  • Aumento forte → impor que a predição coincida com o pseudo-rótulo (apenas se estiver confiante)

Isso combina pseudo-rotulagem + consistência e tende a funcionar bem em visão e em alguns cenários de texto.

Exemplo prático: perda no estilo FixMatch (pseudocódigo tipo PyTorch (PyTorch-like pseudocode))

Abaixo está um esboço simplificado para classificação. Ele omite treinamento distribuído, precisão mista (mixed precision) e outros detalhes de produção, mas captura a ideia central.

import torch
import torch.nn.functional as F

def fixmatch_step(model, x_l, y_l, x_u, weak_aug, strong_aug,
                  tau=0.95, lambda_u=1.0):
    model.train()

    # Supervised loss on labeled data
    logits_l = model(x_l)
    loss_sup = F.cross_entropy(logits_l, y_l)

    # Unlabeled: create weak/strong augmented views
    x_u_w = weak_aug(x_u)
    x_u_s = strong_aug(x_u)

    with torch.no_grad():
        p_w = F.softmax(model(x_u_w), dim=-1)
        conf, y_hat = torch.max(p_w, dim=-1)      # pseudo-label and confidence
        mask = (conf >= tau).float()              # only keep confident samples

    logits_s = model(x_u_s)
    loss_unsup = (F.cross_entropy(logits_s, y_hat, reduction="none") * mask).mean()

    loss = loss_sup + lambda_u * loss_unsup
    return loss, {"loss_sup": loss_sup.item(), "loss_unsup": loss_unsup.item()}

Dicas práticas:

  • Aumentos importam: fraco vs forte é central.
  • Limiar (\tau) controla precisão/recall dos pseudo-rótulos.
  • Se nenhuma amostra não rotulada passar o limiar no início, aumente (\lambda_u) ao longo do tempo ou reduza (\tau) gradualmente.

Aprendizado auto-supervisionado na prática: contrastivo vs modelagem mascarada

Duas famílias dominantes:

Aprendizado contrastivo

Aprenda um codificador (h(x)) tal que duas visões da mesma entrada fiquem próximas.

  • Prós:
    • Frequentemente gera excelentes representações para recuperação e classificação
    • Forte em visão e em cenários multimodais
  • Contras:
    • Exige cuidado com tamanho de lote / negativos / temperatura (temperature)
    • Pode ser sensível às escolhas de aumento
    • Risco de aprender atalhos se os aumentos forem mal escolhidos

Variantes comuns incluem codificadores com momento (momentum encoders) e métodos “sem negativos” (no negative) (que evitam pares negativos explícitos, mas exigem truques de prevenção de colapso).

Modelagem mascarada

Mascarar parte da entrada e prevê-la.

  • Em PLN, prever tokens mascarados força o aprendizado de sintaxe + semântica.

  • Em visão, autoencoders mascarados preveem patches faltantes ou representações latentes.

  • Prós:

    • Treinamento estável; não precisa de grandes lotes de negativos
    • Funciona naturalmente para sequências e modelos grandes (por exemplo, transformers)
  • Contras:

    • Pode focar demais em reconstrução de baixo nível se não for cuidadosamente projetada
    • Para algumas tarefas, pode ter desempenho inferior a objetivos contrastivos em qualidade de representação (depende do domínio e da configuração)

Muitos modelos fundacionais (foundation models) modernos dependem de pré-treinamento auto-supervisionado e depois ajuste fino a jusante.

Aplicações

Visão computacional

  • Classificação de imagens com poucos rótulos: métodos semi-supervisionados podem igualar o desempenho totalmente supervisionado com uma fração dos rótulos.
  • Detecção/segmentação de objetos: imagens não rotuladas podem ser aproveitadas via pseudo-rótulos para caixas delimitadoras/máscaras e consistência entre aumentos.
  • Imagens médicas: rótulos são caros (tempo de radiologista); SSL pode aprender a partir de grandes acervos de exames com anotação limitada.

Processamento de linguagem natural

  • Pré-treinamento de modelos de linguagem é uma abordagem auto-supervisionada canônica (predição do próximo token ou predição de token mascarado).
  • Aprendizado semi-supervisionado pode ajudar em:
    • adaptação de domínio (texto não rotulado no domínio + poucos exemplos rotulados)
    • tarefas de classificação com poucos recursos.

Muitos pipelines: pré-treinamento auto-supervisionado → ajuste fino supervisionado → às vezes Destilação de Conhecimento para implantação.

Fala e áudio

  • Aprendizado auto-supervisionado de representações em áudio bruto possibilita forte desempenho com poucas transcrições.
  • ASR semi-supervisionado: pseudo-transcrever áudio não rotulado e treinar mais (frequentemente com filtragem por confiança).

Cenários industriais

  • Busca/recomendação: objetivos auto-supervisionados (predição do próximo item (next-item prediction), modelagem contrastiva de sessões (contrastive session modeling)) aprendem incorporações a partir de logs comportamentais.
  • Condução autônoma: aproveitar vídeo massivo não rotulado com consistência ao longo do tempo e entre aumentos.

Como escolher entre aprendizado semi-supervisionado, auto-supervisionado e configurações relacionadas

  • Use aprendizado auto-supervisionado quando:

    • você tem muitos dados não rotulados e espera múltiplas tarefas a jusante
    • você quer incorporações reutilizáveis ou uma espinha dorsal (backbone) pré-treinada
  • Use aprendizado semi-supervisionado quando:

    • você tem uma tarefa-alvo específica com alguns rótulos
    • você também tem muitos dados não rotulados da mesma distribuição
  • Considere supervisão fraca (Supervisão Fraca) quando:

    • você consegue escrever heurísticas de rotulagem ou aproveitar fontes ruidosas (regras, supervisão distante)
    • seus dados não rotulados precisam de rótulos ruidosos específicos da tarefa, em vez de representações genéricas
  • Considere aprendizado ativo (Aprendizado Ativo) quando:

    • rotular é caro e você pode iterativamente escolher as amostras mais informativas para anotar

Essas abordagens frequentemente são combinadas: pré-treinamento auto-supervisionado + aprendizado ativo para rotulagem eficiente + treinamento semi-supervisionado no restante.

Fluxo de trabalho prático e considerações de engenharia

Requisitos de dados e correspondência de distribuição

Dados não rotulados devem ser extraídos de aproximadamente a mesma distribuição da tarefa-alvo. Se não forem, perdas não rotuladas podem prejudicar (uma forma de transferência negativa (negative transfer)).

Mitigações:

  • filtrar ou reponderar dados não rotulados
  • usar técnicas de adaptação de domínio
  • começar com pré-treinamento auto-supervisionado e depois fazer ajuste fino com cuidado

Projeto de aumentos não é opcional

Objetivos de consistência assumem que os aumentos preservam o rótulo/semântica.

Exemplos:

  • Para reconhecimento de dígitos, rotação pode mudar o significado (6 vs 9).
  • Para exames médicos, transformações geométricas agressivas podem criar padrões não físicos.

Uma boa estratégia é começar com aumentos conservadores e expandir conforme você verifica a correção.

Evitando colapso e viés de confirmação

Modos de falha comuns:

  • Colapso (collapse) (auto-supervisionado): incorporações se tornam constantes ou pouco informativas.
  • Viés de confirmação (pseudo-rotulagem): o modelo reforça rótulos errados.

Estabilizadores comuns:

  • modelos professores com EMA (padrão Mean Teacher)
  • limiarização de confiança + aumento gradual agendado
  • aumento forte para o aluno + aumento fraco para o professor
  • balanceamento de classes ou alinhamento de distribuição (distribution alignment) se os pseudo-rótulos ficarem enviesados

Ajuste e monitoramento

Hiperparâmetros-chave:

  • (\lambda): peso da perda não rotulada
  • limiar de confiança (\tau)
  • intensidade de aumento
  • composição do lote (razão entre rotulados e não rotulados)
  • cronograma de treinamento (aquecimento, aumento gradual)

Sugestões de monitoramento:

  • acompanhar a fração de amostras não rotuladas selecionadas pela limiarização
  • acompanhar a distribuição de classes dos pseudo-rótulos
  • avaliar frequentemente em um conjunto de validação rotulado limpo (evite selecionar checkpoints com base em métricas não rotuladas)

Avaliação e armadilhas comuns

“Mais dados” ainda pode levar a overfitting

Mesmo com dados não rotulados, você pode sofrer overfitting em conjuntos de validação rotulados via ajustes repetidos. Mantenha um conjunto de teste final separado ou use validação cruzada cuidadosa.

Vazamento por tarefas proxy

Garanta que tarefas proxy não incluam acidentalmente informação de rótulo (por exemplo, padrões em nomes de arquivo, artefatos de pré-processamento). Isso é especialmente importante em conjuntos de dados médicos ou industriais.

Incompatibilidade de métricas

Objetivos auto-supervisionados otimizam a qualidade da representação de forma indireta. Sempre valide no objetivo a jusante que realmente importa.

Relação com arquiteturas de modelos

A maioria dos métodos semi/auto-supervisionados é implementada com Redes Neurais padrão treinadas via Retropropagação e Descida do Gradiente. Arquiteturas frequentemente importam:

  • redes neurais convolucionais (CNNs) e transformers de visão (vision transformers) para imagens
  • Arquitetura Transformer para linguagem e, cada vez mais, visão/áudio
  • escolhas de apenas codificador (encoder-only) vs codificador-decodificador (encoder-decoder) dependem de a tarefa proxy ser discriminativa (contrastiva) ou generativa (reconstrução mascarada)

O regime de aprendizado (semi/auto-supervisionado) geralmente é ortogonal à espinha dorsal; ele muda mais os sinais de treinamento do que a classe do modelo.

Resumo

Métodos de aprendizado semi/auto-supervisionado tornam dados não rotulados úteis ao adicionar tarefas proxy e objetivos de consistência ao treinamento supervisionado padrão:

  • Aprendizado auto-supervisionado: aprender representações a partir apenas de dados não rotulados (modelagem mascarada, aprendizado contrastivo) e então transferir.
  • Aprendizado semi-supervisionado: usar dados não rotulados para melhorar uma tarefa específica com poucos rótulos (regularização por consistência, pseudo-rotulagem, métodos professor–aluno).

Quando bem projetadas — especialmente com aumentos apropriados, mecanismos de estabilidade e correspondência cuidadosa de distribuição — essas abordagens podem reduzir drasticamente os requisitos de rotulagem, mantendo desempenho forte.