Mudança de Distribuição
O que é mudança de distribuição?
Mudança de distribuição (distribution shift) (também chamada de mudança de conjunto de dados (dataset shift) ou mudança de domínio (domain shift)) é a situação em que a distribuição dos dados que um modelo vê em produção difere da distribuição dos dados nos quais ele foi treinado e validado. Em outras palavras, a suposição comum de que exemplos de treino e teste são i.i.d. (independentes e identicamente distribuídos; independent and identically distributed) é violada.
Formalmente, considere que os dados de treinamento são amostrados de uma distribuição conjunta (P_{\text{train}}(X, Y)), enquanto os dados em produção são amostrados de (P_{\text{deploy}}(X, Y)). Ocorre uma mudança de distribuição quando:
[ P_{\text{train}}(X, Y) \neq P_{\text{deploy}}(X, Y) ]
Isso importa porque a maioria dos procedimentos de treinamento — especialmente a minimização de risco empírico (empirical risk minimization, ERM) — otimiza o desempenho em (P_{\text{train}}), mas o desempenho no mundo real depende do risco sob (P_{\text{deploy}}):
[ R_{\text{deploy}}(f) = \mathbb{E}{(X,Y)\sim P{\text{deploy}}}[\ell(f(X), Y)] ]
Mesmo um pequeno desalinhamento pode causar quedas desproporcionais em acurácia, calibração ou confiabilidade — particularmente em cenários raros ou críticos para a segurança.
Exemplo concreto: “Funcionou no laboratório”
Um modelo de visão computacional (computer vision) é treinado para detectar produtos defeituosos usando imagens de fábrica bem iluminadas. Em produção, a iluminação muda (turno da noite), uma nova câmera é instalada, ou os produtos ganham novas embalagens. A distribuição de pixels muda, e o desempenho cai apesar de a tarefa “ainda ser detecção de defeitos”.
Por que a mudança de distribuição importa para generalização e segurança
Generalizar sob mudança é mais difícil do que a generalização padrão
A generalização clássica trata de quão bem um modelo treinado em amostras finitas de (P_{\text{train}}) se sai em novas amostras da mesma distribuição. Mudança de distribuição é diferente: ela pergunta quão bem o modelo funciona quando a distribuição subjacente muda.
Por isso, modelos podem mostrar desempenho excelente em conjuntos de referência (benchmarks), mas falhar de forma inesperada em novos ambientes — uma das principais motivações por trás da avaliação robusta (robust evaluation) dentro do tema mais amplo de Benchmarks e Avaliação.
Desempenho crítico para a segurança: risco de cauda e falhas silenciosas
Em aplicações de alto impacto (triagem em saúde, prevenção a fraudes, moderação de conteúdo, direção autônoma), a mudança de distribuição pode causar:
- Aumento nas taxas de erro em subpopulações específicas (por exemplo, nova mistura demográfica, novos tipos de dispositivo).
- Má calibração (mis-calibration): probabilidades previstas ficam excessivamente confiantes ou pouco confiantes.
- Degradação silenciosa (silent degradation): se rótulos de verdade-terreno chegam tarde ou raramente, o desempenho pode piorar sem visibilidade imediata.
- Falhas em cascata (cascading failures): sistemas a jusante confiam nas saídas do modelo, então pequenos erros em probabilidades podem se tornar grandes falhas operacionais.
Um insight prático importante: a acurácia média pode parecer boa enquanto o comportamento de pior caso ou em eventos raros se torna inaceitável. A avaliação robusta frequentemente foca em testes de estresse (stress tests), recortes (slices) e métricas de cauda (tail metrics), não apenas em acurácia geral.
Tipos comuns de mudança de distribuição
Mudanças diferentes correspondem a alterações em partes distintas da distribuição conjunta (P(X, Y)). Os três tipos mais discutidos são mudança de covariáveis (covariate shift), mudança de rótulos (label shift) e mudança de conceito (concept shift).
Mudança de covariáveis (alteração em \(P(X)\))
Definição: A distribuição de entrada muda, mas a relação condicional permanece a mesma:
[ P_{\text{train}}(X) \neq P_{\text{deploy}}(X), \quad P_{\text{train}}(Y\mid X) = P_{\text{deploy}}(Y\mid X) ]
Exemplo: Um classificador de spam (spam classifier) é treinado em e-mails de 2022. Em 2026, atacantes mudam o estilo de escrita e a formatação (as entradas mudam), mas “o que conta como spam” é essencialmente o mesmo conceito.
Nota prática: Mudança de covariáveis é uma suposição comum por trás de técnicas como ponderação por importância (importance weighting) e muitas formas de Adaptação de Domínio (Domain Adaptation).
Mudança de rótulos / mudança de probabilidade a priori (alteração em \(P(Y)\))
Definição: A priori das classes muda, mas as distribuições de atributos condicionadas à classe permanecem iguais:
[ P_{\text{train}}(Y) \neq P_{\text{deploy}}(Y), \quad P_{\text{train}}(X\mid Y) = P_{\text{deploy}}(X\mid Y) ]
Exemplo: Um modelo de triagem de doença é treinado onde a prevalência é de 5%. Ele é implantado em uma clínica de alto risco onde a prevalência é de 20%. Se não for corrigido, os limiares e as probabilidades previstas do modelo podem ficar sistematicamente errados.
Nota prática: Mudança de rótulos pode muitas vezes ser corrigida estimando-se as novas prioris de classe e ajustando as previsões (especialmente quando você tem estimativas confiáveis da matriz de confusão).
Mudança de conceito / deriva de conceito (concept shift / concept drift) (alteração em \(P(Y\mid X)\))
Definição: A relação entre entradas e rótulos muda:
[ P_{\text{train}}(Y\mid X) \neq P_{\text{deploy}}(Y\mid X) ]
Exemplo: Modelos de risco de crédito podem sofrer deriva de conceito quando condições econômicas mudam: os mesmos atributos do candidato podem implicar probabilidades diferentes de inadimplência durante uma recessão.
Por que é difícil: Deriva de conceito muitas vezes não pode ser corrigida com simples reponderação; pode exigir retreinamento, novos atributos, novos rótulos ou uma definição revisada do problema.
Outras categorias (práticas) importantes de mudança
Embora as categorias acima sejam “de livro-texto”, sistemas reais frequentemente veem misturas:
- Mudança temporal (temporal shift): dados mudam ao longo do tempo (sazonalidade, tendências).
- Mudança geográfica/de domínio (geographic/domain shift): novas regiões, idiomas, dispositivos, sensores.
- Mudança de medição (measurement shift): instrumentação muda (nova câmera, novo ensaio laboratorial).
- Viés de seleção / mudanças na política de registro (selection bias / logging policy changes): o processo de coleta de dados muda (por exemplo, você só vê feedback do usuário sobre itens que escolheu mostrar).
- Loops de feedback (feedback loops): decisões do modelo mudam o ambiente e, portanto, os dados futuros (recomendadores, policiamento, contratação).
Mudança de distribuição vs fora da distribuição (out-of-distribution, OOD)
Mudança de distribuição é um “guarda-chuva” amplo: inclui casos em que entradas em produção ainda são “semelhantes”, mas estatisticamente diferentes, e também casos em que as entradas estão muito fora de qualquer coisa vista durante o treinamento.
Detecção fora da distribuição (out-of-distribution detection) foca em identificar quando uma entrada (X) está fora da distribuição de treinamento (ou fora da competência do modelo). Ela é frequentemente usada como um mecanismo de defesa sob mudança. Veja: Detecção Fora da Distribuição (Out-of-Distribution Detection).
Diferença-chave na prática:
- Sob mudança leve, o modelo ainda pode funcionar, mas precisa de calibração/monitoramento.
- Sob OOD severo, a resposta mais segura pode ser abstenção, regras de contingência (fallback rules) ou revisão humana (human review).
Detectando mudança de distribuição na prática
Não existe um único “detector de mudança” universal. O monitoramento prático geralmente combina (1) deriva de entrada (input drift), (2) deriva de predição (prediction drift) e (3) deriva de desempenho (performance drift) (quando rótulos estão disponíveis).
1) Detecção de deriva de entrada (deriva de dados; data drift)
Objetivo: detectar mudanças em (P(X)).
Abordagens comuns:
- Testes univariados por atributo:
- Teste de Kolmogorov–Smirnov (contínuo)
- Teste qui-quadrado (categórico)
- Índice de Estabilidade Populacional (Population Stability Index, PSI) (comum em risco de crédito)
- Testes multivariados:
- Discrepância Máxima de Médias (Maximum Mean Discrepancy, MMD)
- Distância de energia (energy distance)
- Teste de duas amostras com classificador (classifier two-sample test): treine um modelo para discriminar exemplos “treino vs produção”; alta acurácia implica deriva.
- Deriva baseada em incorporações (embeddings) (especialmente para imagens/texto):
- Calcule incorporações a partir de um modelo de representação (representation model) (possivelmente o próprio modelo), então execute testes de distância/estatísticos no espaço das incorporações.
Exemplo: teste de duas amostras com classificador (rascunho)
# Pseudocode for a two-sample drift test using a classifier
X0 = sample_from_training_inputs()
X1 = sample_from_deployment_inputs()
X = concat([X0, X1])
y = concat([zeros(len(X0)), ones(len(X1))]) # label: source vs deploy
clf = train_classifier(X, y)
auc = evaluate_auc(clf, X_test, y_test)
if auc > 0.8:
alert("Likely input distribution shift")
Interpretação: se for fácil distinguir treino e produção, as distribuições diferem de maneiras que podem importar.
2) Detecção de deriva de predição
Mesmo que mudanças na entrada sejam sutis, as saídas do modelo podem se deslocar:
- Mudança nas frequências previstas de classes
- Mudança nas distribuições de confiança (por exemplo, probabilidades mais extremas)
- Mudança em estimativas de incerteza (se disponíveis)
Deriva de predição é útil porque é específica do modelo: ela pode evidenciar que a mudança está afetando este modelo, e não apenas os dados brutos.
3) Detecção de deriva de desempenho (requer rótulos)
Quando existem rótulos (mesmo que atrasados), acompanhe:
- Métricas gerais (acurácia, F1, área sob a curva ROC (AUROC))
- Métricas de calibração (calibration metrics) (Erro Esperado de Calibração (Expected Calibration Error, ECE), pontuação de Brier (Brier score))
- Métricas por recorte (slice metrics) (desempenho por subgrupo, região, dispositivo etc.)
- Métricas ponderadas por custo (cost-weighted metrics) em domínios críticos para a segurança
Como rótulos podem chegar tarde, sistemas frequentemente combinam sinais proxy rápidos (deriva de entrada) com auditorias mais lentas de desempenho em verdade-terreno.
Dicas práticas de design de monitoramento
- Use janelas deslizantes (rolling windows) e detecção de pontos de mudança (change-point detection) (detecte mudanças repentinas de regime).
- Monitore tanto deriva global quanto deriva por recorte (a deriva pode ser localizada).
- Defina limiares de alerta com base na variância histórica para reduzir falsos alarmes.
- Registre contexto suficiente para diagnosticar causas (tipo de dispositivo, localidade, versão de UI, metadados de sensores).
Avaliando modelos sob mudança de distribuição
Avaliação robusta pergunta: Como o desempenho muda quando as condições mudam? Isso é mais do que um único conjunto de teste retido (held-out test set).
Design de conjuntos de teste robustos
Estratégias comuns:
- Divisões baseadas em tempo (time-based splits): treinar no passado, testar no futuro (bom para mudança temporal).
- Divisões por domínio (domain splits): treinar em alguns hospitais, testar em novos hospitais; treinar em alguns países, testar em novas localidades.
- Recortes por subpopulação (subpopulation slices): avaliar por grupo, dispositivo, geografia ou outros estratos relevantes.
- Corrupções sintéticas (synthetic corruptions): desfoque/ruído/clima para visão; erros de digitação/paráfrases para PLN; dados ausentes (missingness) para tabelas.
- Testes de estresse e avaliação por cenário (scenario evaluation): casos raros, mas consequentes (casos-limite (edge cases)).
- Avaliação contrafactual (counterfactual evaluation) (quando fizer sentido): testar invariâncias como “mudanças no fundo não deveriam mudar o rótulo”.
Métricas que importam sob mudança
Além de métricas padrão, avaliação robusta comumente inclui:
- Desempenho do pior grupo (worst-group performance): (\min_g \text{metric}(g)) para evitar esconder falhas em médias.
- Métricas de predição seletiva (selective prediction metrics): curvas risco-cobertura (risk-coverage curves) quando o modelo pode se abster.
- Calibração sob mudança: diagramas de confiabilidade (reliability diagrams), ECE, pontuação de Brier.
- Intervalos de confiança (confidence intervals): use reamostragem bootstrap (bootstrapping); mudanças frequentemente produzem tamanhos efetivos de amostra menores para recortes-chave.
Exemplo: a acurácia parece boa, a calibração está quebrada
Um modelo de risco médico pode manter o AUROC sob mudança (a ordenação ainda é razoável), mas ficar mal calibrado, causando decisões inseguras de limiarização. A recalibração pode ser essencial mesmo quando métricas de discriminação parecem estáveis.
Abordagens de mitigação
Nenhuma mitigação é universalmente melhor. Estratégias eficazes dependem do tipo de mudança, disponibilidade de rótulos, restrições regulatórias e necessidades operacionais.
1) Testes robustos e bloqueio de liberação
Antes de implantar, trate mudança como esperada:
- Mantenha múltiplos conjuntos de avaliação representando domínios plausíveis de produção.
- Execute testes de estresse e avaliações por recorte.
- Defina critérios de liberação (release criteria) que incluam limiares de pior recorte e de calibração.
- Use implantações canário (canary deployments) / liberações graduais (phased rollouts).
Essa costuma ser a mitigação com maior retorno sobre investimento (return on investment, ROI): encontrar falhas antes que cheguem aos usuários.
2) Recalibração (corrigindo probabilidades sob mudança)
Quando os escores do modelo continuam informativos, mas as probabilidades estão erradas, a recalibração (recalibration) pode melhorar a qualidade das decisões.
Métodos comuns:
- Escalonamento de temperatura (temperature scaling) (para classificadores neurais)
- Escalonamento de Platt (Platt scaling) / calibração logística (logistic calibration)
- Regressão isotônica (isotonic regression)
A recalibração normalmente requer um pequeno conjunto rotulado do ambiente-alvo. Ela é especialmente útil sob mudança de rótulos e mudança leve de covariáveis.
Operacionalmente, a recalibração é atraente porque muitas vezes pode ser feita sem alterar o modelo subjacente — importante em ambientes regulados.
3) Ponderação por importância e correção de mudança
Se você puder assumir uma forma específica de mudança, pode reponderar exemplos de treinamento para corresponder melhor à produção.
Sob mudança de covariáveis, o risco em produção pode ser escrito como:
[ \mathbb{E}{P{\text{deploy}}}[\ell] = \mathbb{E}{P{\text{train}}}\left[\frac{p_{\text{deploy}}(X)}{p_{\text{train}}(X)} \ell(f(X),Y)\right] ]
O peso (w(X)=\frac{p_{\text{deploy}}(X)}{p_{\text{train}}(X)}) pode ser estimado (de forma imperfeita) usando estimação da razão de densidades (density ratio estimation) ou métodos baseados em classificadores.
Sob mudança de rótulos, métodos estimam as novas prioris de classe (P_{\text{deploy}}(Y)) e ajustam as probabilidades previstas de acordo (frequentemente usando a matriz de confusão do modelo em dados de validação).
Ressalva: esses métodos podem ser frágeis se as suposições sobre a mudança estiverem erradas (por exemplo, deriva de conceito se passando por mudança de rótulos).
4) Adaptação de domínio (aprender a ter bom desempenho em um novo domínio)
Quando você tem acesso a dados do domínio-alvo (rotulados ou não), Adaptação de Domínio fornece métodos para reduzir a lacuna de domínio (domain gap), incluindo:
- Adaptação de domínio não supervisionada (unsupervised domain adaptation): alinhar representações de origem e alvo sem rótulos no alvo.
- Adaptação de domínio supervisionada (supervised domain adaptation): fazer ajuste fino (fine-tuning) com dados rotulados do alvo.
- Alinhamento adversarial (adversarial alignment) (por exemplo, abordagens com discriminador de domínio (domain-discriminator))
- Auto-treinamento (self-training) / pseudo-rotulagem (pseudo-labeling) para dados do alvo
Adaptação de domínio é comum em visão, fala e PLN ao implantar em novos sensores, sotaques ou estilos de escrita.
5) Aumento de dados e invariância
Às vezes, a correção mais robusta é expandir a distribuição de treinamento:
- Aumentar com corrupções plausíveis (ruído, desfoque, paráfrases).
- Coletar dados de mais ambientes.
- Usar dados sintéticos (synthetic data) com cuidado para cobrir casos raros.
Essa abordagem busca tornar (P_{\text{train}}) mais “ampla”, reduzindo a chance de (P_{\text{deploy}}) cair fora dela.
Ideias relacionadas incluem aprender invariâncias (invariances) e objetivos de robustez como otimização robusta a distribuições (distributionally robust optimization, DRO), que otimiza o desempenho de pior caso sobre um conjunto de distribuições plausíveis.
6) Adaptação em tempo de teste e atualizações de normalização
Em alguns sistemas, adaptação limitada durante a produção pode ajudar:
- Atualizar estatísticas de normalização em lote (batch normalization) (visão)
- Treinamento em tempo de teste (test-time training) com objetivos auto-supervisionados (self-supervised objectives)
- Aprendizado online (online learning) com salvaguardas
Isso pode melhorar a robustez, mas introduz preocupações de segurança (o modelo muda em produção), exigindo monitoramento rigoroso e planos de reversão (rollback).
7) Monitoramento, alertas e playbooks de resposta
Como a mudança muitas vezes é inevitável, sistemas em produção devem tratá-la como uma realidade operacional:
- Monitorar métricas de deriva e recortes-chave.
- Definir limiares de alerta e caminhos de escalonamento.
- Manter fallback com humano no circuito (human-in-the-loop) para previsões de alto risco.
- Reavaliar periodicamente em dados rotulados recentes.
- Retreinar em distribuições atualizadas quando necessário.
Em ambientes críticos para a segurança, é comum implementar abstenção (abstention) (não prever quando estiver incerto) e encaminhar casos incertos para revisão manual ou tratamento conservador.
Um fluxo de trabalho prático para gerenciar mudança de distribuição
Defina o contexto de produção
- Quais ambientes, dispositivos, populações ou horizontes de tempo importam?
- Quais mudanças são plausíveis e quais são inaceitáveis?
Incorpore avaliação robusta no desenvolvimento
- Use divisões por tempo/domínio, testes de estresse e métricas por recorte.
- Meça calibração e desempenho do pior recorte.
Instrumente o sistema
- Registre atributos/incorporações de entrada (com atenção à privacidade).
- Monitore deriva + comportamento de predição continuamente.
Planeje para rótulos (mesmo que atrasados)
- Estabeleça canais de feedback, pipelines de auditoria ou amostragem para rotulagem manual.
Mitigue e itere
- Recalibre quando probabilidades derivarem.
- Adapte ou retreine quando conceitos derivarem.
- Atualize testes quando novos modos de falha forem descobertos.
Armadilhas comuns e modos de falha
- Assumir um único tipo de mudança: mudanças reais costumam ser mistas; métodos de mudança de rótulos falham sob deriva de conceito.
- Confiar em uma única métrica de deriva: a deriva pode se esconder em correlações ou em recortes específicos.
- Ignorar calibração: confiança é frequentemente o que sistemas a jusante consomem.
- Loops de feedback: o modelo muda o comportamento do usuário e os dados futuros (especialmente em recomendações).
- Sobreajuste a benchmarks (benchmark overfitting): construir para passar em testes conhecidos de mudança sem melhorar a robustez real.
- Cobertura insuficiente de recortes: populações raras, mas importantes, ficam sub-representadas na avaliação.
Principais conclusões
- Mudança de distribuição é qualquer desalinhamento entre (P_{\text{train}}(X,Y)) e (P_{\text{deploy}}(X,Y)), minando a suposição i.i.d. por trás da avaliação padrão.
- As categorias mais comuns são mudança de covariáveis (muda (P(X))), mudança de rótulos (muda (P(Y))) e mudança de conceito (muda (P(Y\mid X))).
- A mudança impacta não apenas a acurácia, mas também calibração, risco de cauda e confiabilidade crítica para a segurança.
- Um tratamento robusto requer uma combinação de avaliação robusta, detecção de mudança, recalibração, adaptação de domínio e monitoramento contínuo — com planos claros de resposta operacional.
- Para mudança severa ou inesperada, combinar modelagem robusta com mecanismos como abstenção e Detecção Fora da Distribuição pode melhorar significativamente a segurança.