Adaptação de Domínio (Domain Adaptation)

Visão geral

Adaptação de domínio (DA; domain adaptation) é uma família de métodos para fazer com que um modelo treinado em uma distribuição de dados (o domínio de origem) tenha bom desempenho em uma distribuição diferente (o domínio-alvo). O principal desafio é a mudança de distribuição (distribution shift): os dados vistos durante o treinamento não correspondem aos dados vistos na implantação. A adaptação de domínio se insere na avaliação robusta porque é, ao mesmo tempo, uma estratégia de mitigação para a mudança e um potencial fator de confusão em comparações de desempenho se for avaliada de forma incorreta.

A adaptação de domínio é um caso especial de Mudança de Distribuição: em vez de apenas medir a degradação sob mudança, a DA tenta usar o acesso a dados do domínio-alvo (frequentemente sem rótulos) para reduzir essa degradação.

Exemplos típicos:

  • Um modelo de visão treinado em fotos de produtos (origem) implantado em imagens de webcam (alvo).
  • Um modelo médico treinado com o scanner e a população de pacientes do Hospital A implantado no Hospital B.
  • Um classificador de sentimento treinado em críticas de filmes aplicado a texto de redes sociais.

DA é diferente de:

  • Generalização de domínio (domain generalization): aprender a partir de múltiplos domínios de origem para generalizar para domínios não vistos sem ver dados do alvo durante o treinamento.
  • Detecção fora da distribuição (out-of-distribution detection): detectar quando uma entrada está fora do domínio e potencialmente abster-se, em vez de adaptar (Detecção Fora da Distribuição).

Formulação do problema e notação

Seja o domínio de origem uma distribuição ( \mathcal{D}_S ) sobre entradas e rótulos ((x, y)), e o domínio-alvo seja ( \mathcal{D}_T ). Normalmente, você tem:

  • Conjunto de dados rotulado de origem: ( {(x_i^S, y_i^S)}_{i=1}^{n_S} )
  • Conjunto de dados de alvo: ( {x_j^T}_{j=1}^{n_T} ) (frequentemente sem rótulos)

Objetivo: aprender um preditor ( f(x) ) que minimize o risco no alvo: [ \epsilon_T(f) = \mathbb{E}_{(x,y)\sim \mathcal{D}_T}[\ell(f(x), y)] ] usando (principalmente) rótulos de origem, além de qualquer acesso ao alvo que seja permitido.

Uma suposição comum na DA clássica é a mudança de covariáveis (covariate shift): (p_S(x)\neq p_T(x)), mas a função de rotulagem é “compatível”, por exemplo (p_S(y\mid x)\approx p_T(y\mid x)). Quando essa suposição não vale (por exemplo, mudança de rótulos ou deriva de conceito), muitos métodos de DA podem falhar.

Configurações comuns

Adaptação de domínio supervisionada

Você tem dados do alvo rotulados (frequentemente limitados), por exemplo 10–100 exemplos rotulados por classe.

  • Geralmente oferece o melhor desempenho porque a perda otimiza diretamente os rótulos do alvo.
  • Na prática, muitas vezes é implementada como ajuste fino com regularização cuidadosa, além de perdas de alinhamento opcionais.

Receita típica:

  • Comece com um modelo treinado na origem.
  • Faça ajuste fino no alvo rotulado (às vezes com minibatches mistos de origem+alvo).
  • Use parada antecipada e aumentação forte para evitar sobreajuste ao pequeno conjunto de alvo.

Adaptação de domínio não supervisionada (UDA; unsupervised domain adaptation)

Você tem dados do alvo sem rótulos, mas não tem rótulos do alvo.

  • A configuração de DA mais estudada.
  • Depende de suposições como “existe uma representação em que origem e alvo parecem similares”.

Abordagens comuns:

  • Alinhar distribuições de características entre domínios.
  • Incentivar predições confiantes no alvo (minimização de entropia).
  • Usar pseudo-rótulos (auto-treinamento).

Adaptação de domínio semi-supervisionada (SSDA; semi-supervised domain adaptation)

Você tem um pequeno conjunto rotulado do alvo, além de mais dados sem rótulos do alvo.

  • Muitas vezes a mais realista: uma equipe rotula uma pequena amostra do alvo, mas há muitos logs de alvo sem rótulos.
  • Combina ajuste fino supervisionado com regularizadores no estilo de UDA ou pseudo-rotulagem.

Variantes que você deve reconhecer

Essas variantes importam porque as suposições de “DA padrão” muitas vezes não se sustentam:

  • DA multi-origem (multi-source DA): vários domínios de origem, um alvo.
  • DA de conjunto aberto (open-set DA): o alvo contém classes ausentes na origem (o tratamento de classes desconhecidas torna-se essencial).
  • DA parcial (partial DA): o conjunto de rótulos do alvo é um subconjunto do conjunto de rótulos da origem (alinhamento ingênuo pode prejudicar).
  • DA com desbalanceamento de classes (class-imbalanced DA): proporções de rótulos diferem entre domínios (pode causar transferência negativa).
  • Adaptação em tempo de teste (TTA; test-time adaptation): adaptar no momento da inferência usando lotes de teste (alto risco de vazamento na avaliação se for mal conduzida).

Fundamentos teóricos (por que a DA pode funcionar)

Muitos métodos de DA são motivados por limites de generalização que relacionam o erro no alvo ao erro na origem, mais um termo que mede o descasamento entre domínios.

Um resultado amplamente citado (Ben-David et al.) afirma, aproximadamente:

[ \epsilon_T(h) \le \epsilon_S(h) + \frac{1}{2} d_{\mathcal{H}\Delta\mathcal{H}}(S,T) + \lambda ]

Onde:

  • ( \epsilon_S(h) ) é o erro na origem (mensurável).
  • ( d_{\mathcal{H}\Delta\mathcal{H}}(S,T) ) mede a divergência entre as distribuições de origem e alvo como vista por uma classe de hipóteses (frequentemente aproximada via um classificador de domínio).
  • ( \lambda ) é o erro da melhor hipótese conjunta em ambos os domínios (captura se a tarefa é de fato compatível entre os domínios).

Interpretação:

  • Minimize o erro na origem: treine bem na origem rotulada.
  • Reduza a divergência: aprenda representações nas quais origem e alvo parecem similares.
  • Torça para que (\lambda) seja pequeno: se as funções de rotulagem diferirem muito, a adaptação pode ser impossível ou prejudicial.

Isso destaca um ponto prático importante: alinhamento sozinho não é suficiente. Se você alinhar domínios de uma forma que misture classes ou ignore mudança de rótulos, pode obter transferência negativa (desempenho pior do que sem adaptação).

Técnicas centrais

1) Alinhamento de características (aprendizado de representações)

Ideia: Aprender um codificador (z = g(x)) tal que as distribuições de características (p_S(z)) e (p_T(z)) coincidam, mantendo as características preditivas para os rótulos.

Perdas de alinhamento comuns:

  • MMD (Discrepância Máxima de Médias; Maximum Mean Discrepancy): faz corresponder distribuições comparando embeddings de médias em kernels.
  • CORAL (Alinhamento por Correlação; Correlation Alignment): faz corresponder estatísticas de covariância de características.
  • Correspondência de momentos (moment matching): faz corresponder médias/variâncias (às vezes por classe com pseudo-rótulos).

Notas práticas:

  • O alinhamento de características é frequentemente aplicado em uma ou mais camadas da rede.
  • Pode ser combinado com a perda supervisionada nos rótulos da origem: [ \mathcal{L} = \mathcal{L}{\text{src-cls}} + \alpha \mathcal{L}{\text{align}} ]
  • Funciona melhor quando os domínios diferem em estilo (iluminação, fundo, sensor) e não em regras de rotulagem.

Exemplo (visão): Treinar em imagens sintéticas e adaptar para imagens reais alinhando características intermediárias de uma CNN pode reduzir substancialmente o “gap sintético-para-real”.

2) Minimização de discrepância (discordância entre classificadores)

Ideia: Se dois classificadores discordam em exemplos do alvo, esses exemplos estão perto de uma fronteira de decisão. Você pode adaptar movendo características do alvo para longe das fronteiras.

Um padrão conhecido:

  1. Treine extrator de características + classificador(es) nos rótulos da origem.
  2. Nos dados do alvo, maximize a discordância entre dois classificadores (para detectar regiões incertas).
  3. Atualize o extrator de características para minimizar a discordância (empurre as características do alvo para regiões confiantes).

Essa classe de métodos tenta fazer com que a distribuição do alvo caia nas mesmas regiões separadas por classe aprendidas na origem.

Notas práticas:

  • Sensível a hiperparâmetros e inicialização.
  • Frequentemente combinada com minimização de entropia e aumentação forte.

3) Adaptação de domínio adversarial (confusão de domínio)

Ideia: Aprender características que tornem um classificador de domínio incapaz de distinguir origem de alvo, enquanto permanecem preditivas para a tarefa de rótulos.

A abordagem canônica é DANN (Redes Neurais Adversariais para Domínio; Domain-Adversarial Neural Networks):

  • Extrator de características (g(x))
  • Preditor de rótulos (c(z))
  • Discriminador de domínio (d(z)) prevendo origem vs alvo
  • Uma camada de reversão de gradiente (GRL; gradient reversal layer) faz com que (g) maximize a perda de domínio enquanto (d) a minimiza

Objetivo (conceitualmente):

  • Minimizar a perda de rótulos na origem
  • Minimizar o erro de classificação de domínio em relação aos parâmetros do discriminador
  • Maximizar o erro de classificação de domínio em relação aos parâmetros de características (confusão de domínio)

Esboço mínimo no estilo PyTorch:

# Pseudocode (not a complete training script)
# g: feature extractor, c: label head, d: domain discriminator
# grl: gradient reversal layer with strength lambda_grl

# Source batch
z_s = g(x_s)
y_hat_s = c(z_s)
loss_cls = cross_entropy(y_hat_s, y_s)

# Target batch
z_t = g(x_t)

# Domain loss on both
z = torch.cat([z_s, z_t], dim=0)
domain_labels = torch.cat([
    torch.zeros(len(z_s)),  # source=0
    torch.ones(len(z_t))    # target=1
]).long()

domain_logits = d(grl(z, lambda_grl))
loss_domain = cross_entropy(domain_logits, domain_labels)

loss = loss_cls + alpha * loss_domain
loss.backward()
optimizer.step()

Prós:

  • Escala bem e frequentemente é eficaz para grandes redes neurais.
  • Conecta-se de forma direta à teoria: se um classificador de domínio não consegue distinguir domínios, a divergência é reduzida.

Contras / armadilhas:

  • Pode alinhar as coisas erradas (por exemplo, alinhar classes diferentes entre si), especialmente sob mudança de rótulos ou condições de conjunto aberto.
  • O treinamento pode ser instável (dinâmica adversarial).

4) Reponderação de instâncias (ponderação por importância)

Ideia: Se a principal mudança está em (p(x)) (mudança de covariáveis), você pode corrigir o risco na origem para estimar o risco no alvo:

[ \epsilon_T(f) = \mathbb{E}_{(x,y)\sim \mathcal{D}_S}\left[\frac{p_T(x)}{p_S(x)} \ell(f(x), y)\right] ]

Assim, você treina em amostras da origem ponderadas por (w(x)=p_T(x)/p_S(x)).

Como estimar os pesos:

  • Treine um classificador de domínio para prever se (x) vem da origem ou do alvo; converta as saídas em razões de densidade.
  • Use correspondência de média em kernel (kernel mean matching) ou técnicas relacionadas.

Notas práticas:

  • Alta variância se os domínios quase não se sobrepõem (os pesos explodem).
  • Frequentemente usada em problemas tabulares/estruturados, onde a estimação de razão de densidade é mais tratável do que no espaço de pixels brutos.

5) Auto-treinamento, pseudo-rotulagem e minimização de entropia

Ideia: Usar as predições do modelo no alvo sem rótulos como sinal de treinamento.

Componentes comuns:

  • Pseudo-rotulagem (pseudo-labeling): atribuir rótulos (\hat{y} = \arg\max p(y\mid x)) para exemplos confiantes do alvo e treinar neles.
  • Minimização de entropia (entropy minimization): incentivar predições confiantes no alvo: [ \mathcal{L}{\text{ent}} = \mathbb{E}{x\sim T} \left[ -\sum_k p_k(x)\log p_k(x) \right] ]
  • Regularização por consistência (consistency regularization): as predições devem ser estáveis sob perturbações/aumentações (intimamente relacionada a Aprendizado Semi-Supervisionado).

Notas práticas:

  • Funciona bem com aumentação forte e limiares de confiança.
  • O principal risco é o viés de confirmação: pseudo-rótulos errados no início podem se amplificar.

6) Truques baseados em normalização e adaptação em tempo de teste

Às vezes, a mudança se deve principalmente a estatísticas de baixo nível (contraste, cor, sensor). Nesse caso:

  • Adaptação de BatchNorm: recomputar estatísticas de BatchNorm em dados do alvo.
  • BN específica por domínio (domain-specific BN): estatísticas de BN separadas por domínio.
  • Minimização de entropia em tempo de teste: adaptar parâmetros do modelo na inferência usando lotes de teste sem rótulos.

Essas técnicas podem ser surpreendentemente eficazes, mas levantam preocupações de avaliação (veja as armadilhas abaixo) e podem ser frágeis sob deriva de distribuição ao longo do tempo.

Aplicações práticas e exemplos

Visão computacional: sintético → real

Um caso de uso comum é treinar em imagens sintéticas (rótulos baratos) e implantar no mundo real.

  • Origem: objetos CAD renderizados com rótulos perfeitos
  • Alvo: imagens reais de câmera com texturas/iluminação diferentes

Abordagens eficazes:

  • Alinhamento adversarial de características (estilo DANN/CDAN)
  • Pseudo-rotulagem com aumentação forte
  • Transferência de estilo / aumentação de dados para reduzir o gap (frequentemente complementa a DA)

O que pode dar errado:

  • Se o alvo tiver classes que não existem nos dados sintéticos (conjunto aberto), alinhamento ingênuo pode mapear classes desconhecidas para classes conhecidas.

NLP: mudança de domínio entre gêneros textuais

Exemplo: análise de sentimento treinada em avaliações longas e implantada em tweets.

  • A mudança inclui vocabulário, comprimento, gírias e distribuição de tópicos.
  • Muitos métodos de DA focam em alinhamento de representações (frequentemente no nível do codificador).
  • Em NLP moderna, uma linha de base forte é continuar o pré-treinamento em texto do alvo sem rótulos (pré-treinamento adaptativo ao domínio), e depois fazer ajuste fino.

Nota prática: se você adaptar usando texto do alvo sem rótulos, deixe explícito se ele se sobrepõe temporalmente com a avaliação (risco de vazamento de dados).

Saúde: generalização entre hospitais

A mudança de domínio pode decorrer de diferenças de scanner, protocolos, demografia e práticas de rotulagem.

Considerações práticas:

  • A função de rotulagem pode diferir (convenções diferentes entre anotadores), tornando (\lambda) na teoria grande.
  • Requisitos fortes de governança: métodos de adaptação devem ser validados cuidadosamente e monitorados após a implantação.
  • Ponderação de instâncias ou pequeno ajuste fino supervisionado no alvo pode ser mais seguro do que alinhamento agressivo de características.

Armadilhas de avaliação e benchmarking (especialmente importantes)

Adaptação de domínio é fácil de avaliar incorretamente. Armadilhas comuns:

1) Vazamento do teste do alvo por seleção de modelo

Em UDA, você não tem dados do alvo rotulados. Mas ainda precisa escolher:

  • hiperparâmetros,
  • parada antecipada,
  • qual checkpoint reportar.

Se você usar rótulos do teste do alvo para qualquer uma dessas decisões, os resultados são inválidos.

Opções melhores:

  • Use um conjunto de validação da origem para parada antecipada (imperfeito sob mudança, mas sem vazamento).
  • Crie um pequeno conjunto de validação do alvo rotulado somente se a configuração for SSDA/DA supervisionada (e mantenha um teste do alvo separado e retido).
  • Use critérios de parada não supervisionados (por exemplo, proxies de discrepância entre domínios), mas observe que eles se correlacionam de forma imperfeita com a acurácia no alvo.

2) Reportar apenas o melhor entre muitas execuções

UDA/SSDA pode ser instável. Escolher a melhor execução (pela acurácia no teste do alvo) infla resultados.

Boa prática:

  • Reportar média ± desvio padrão em múltiplas sementes.
  • Definir critérios de seleção que não usem rótulos do teste do alvo.

3) Especificação incorreta do que inclui “dados do alvo sem rótulos”

Seja explícito:

  • Você está usando todos os dados do alvo sem rótulos, incluindo o que mais tarde vira teste?
  • Isso é transdutivo (a adaptação pode ver entradas de teste) ou indutivo (a adaptação vê apenas uma partição de treino do alvo)?

Configurações transdutivas podem ser válidas, mas precisam ser declaradas porque podem melhorar significativamente o desempenho.

4) Mudança de rótulos oculta e desbalanceamento de classes

Muitos benchmarks de DA mudam silenciosamente as proporções de classes entre domínios. Métodos que alinham marginais (p(z)) sem considerar mudança de rótulos podem degradar.

Mitigações:

  • Estimar proporções de rótulos no alvo (difícil sem rótulos) ou usar métodos robustos à mudança de rótulos.
  • Inspecionar desempenho por classe, não apenas a acurácia geral.

5) Transferência negativa e a suposição de que “adaptação sempre ajuda”

A adaptação pode prejudicar — especialmente com:

  • alvos de conjunto aberto,
  • deriva de conceito (regras de rotulagem mudaram),
  • amostras do alvo pequenas ou não representativas.

Sempre compare com:

  • Linha de base sem adaptação (somente origem).
  • Linhas de base simples como adaptação de BatchNorm ou ajuste fino (se houver rótulos).

6) Sobreajuste ao benchmark

Conjuntos de dados populares de DA (por exemplo, Office-31, VisDA, DomainNet) foram muito otimizados ao longo do tempo. Números altos reportados podem refletir truques específicos do conjunto.

Mitigações:

  • Avaliar em múltiplos conjuntos de dados e tipos de mudança.
  • Usar suítes e protocolos padronizados quando possível (por exemplo, múltiplos domínios, partições consistentes).
  • Preferir ablações transparentes e comparações com linhas de base.

Como a adaptação de domínio se relaciona com avaliação robusta

Em um fluxo de trabalho de avaliação robusta, adaptação de domínio geralmente é uma de três respostas à mudança:

  1. Detectar mudança / abster-se: via Detecção Fora da Distribuição
  2. Ser robusto sem dados do alvo: treinamento robusto, aumentação, generalização de domínio
  3. Adaptar usando dados do alvo: adaptação de domínio (este artigo)

Uma questão-chave de avaliação é: que informação você realmente terá no momento da implantação?

  • Se você terá logs do alvo sem rótulos, UDA/TTA pode ser realista.
  • Se você conseguir rotular um pequeno conjunto, SSDA é realista.
  • Se você não puder acessar dados do alvo antes da implantação, métodos de DA não se aplicam; você deve enfatizar robustez e monitoramento.

Orientação prática (o que fazer em projetos reais)

  • Comece com linhas de base fortes:
    • modelo somente origem,
    • correções de aumentação de dados e normalização,
    • ajuste fino no alvo rotulado (se disponível),
    • adaptação de BatchNorm/estatísticas (se apropriado).
  • Diagnostique a mudança:
    • É principalmente mudança de covariáveis (aparência/estilo), mudança de rótulos ou deriva de conceito?
    • Se a regra de rotulagem muda, alinhamento de características pode ser enganoso.
  • Prefira métodos alinhados às suas restrições:
    • UDA: alinhamento adversarial + pseudo-rotulagem (seleção cuidadosa)
    • SSDA: ajuste fino supervisionado + consistência/pseudo-rotulagem
    • Mudança de covariáveis tabular: reponderação de instâncias frequentemente faz mais sentido
  • Avalie corretamente:
    • imponha partições estritas,
    • evite vazamento do teste do alvo,
    • reporte variância entre execuções,
    • acompanhe métricas por classe e calibração (Calibração).

Desafios em aberto e direções atuais

  • Adaptação em mundo aberto (open-world adaptation): lidar com classes desconhecidas e conjuntos de rótulos em evolução.
  • Adaptação contínua (continual adaptation): adaptar conforme a distribuição do alvo deriva ao longo do tempo sem esquecimento catastrófico.
  • Trade-offs entre robustez e adaptação: adaptação agressiva pode sobreajustar a lotes recentes do alvo.
  • Perspectivas causais: separar características causais estáveis de correlatos espúrios (ver Inferência Causal) para reduzir transferência negativa.
  • Modelos fundacionais (foundation models): grandes modelos pré-treinados reduzem (mas não eliminam) a mudança de domínio; a adaptação frequentemente migra para ajuste fino leve ou continuação do pré-treinamento em dados do alvo.

Resumo

A adaptação de domínio aborda a mudança de distribuição usando acesso a dados do domínio-alvo para melhorar o desempenho. As principais configurações — supervisionada, não supervisionada e semi-supervisionada — diferem quanto à disponibilidade de rótulos no alvo. As técnicas centrais incluem alinhamento de características, minimização de discrepância, confusão de domínio adversarial, reponderação de instâncias, e pseudo-rotulagem/auto-treinamento.

Na avaliação robusta, os maiores riscos são vazamento (usar rótulos do teste do alvo para ajuste), suposições transdutivas não declaradas, e transferência negativa sob mudanças que violam as suposições da DA. Quando feita com cuidado, a adaptação de domínio pode ser uma ferramenta poderosa para implantar modelos em ambientes reais em mudança, sob restrições claramente especificadas.