Ensembles Profundos (Deep Ensembles)

Visão geral

Ensembles profundos (deep ensembles) são uma abordagem simples e de alto desempenho para estimação de incerteza (uncertainty estimation) em aprendizado profundo (deep learning): treine múltiplas redes neurais (neural networks) com a mesma arquitetura, mas com inicializações aleatórias diferentes (different random initializations) (e, frequentemente, outras fontes de aleatoriedade, como embaralhamento de dados, aumento de dados ou bootstrap), e então agregue suas previsões.

Na prática, ensembles profundos tendem a melhorar:

  • Acurácia (accuracy) (melhor generalização via média de modelos)
  • Calibração (calibration) (as probabilidades previstas correspondem melhor à correção empírica)
  • Incerteza epistêmica (epistemic uncertainty) (incerteza devido a dados limitados / parâmetros desconhecidos), especialmente em regiões onde os modelos discordam

Ensembles profundos são amplamente usados porque funcionam com pipelines de treinamento padrão, exigem mudanças mínimas nas arquiteturas e frequentemente superam aproximações bayesianas leves, como Dropout Monte Carlo (Monte Carlo dropout), na qualidade da incerteza — ao custo de treinar e armazenar múltiplos modelos.

Este artigo explica por que ensembles profundos funcionam, como treinar e combinar membros, quais sinais de incerteza você pode extrair e como eles se comparam a outros métodos quase bayesianos (Bayesian-ish) na caixa de ferramentas (toolbox) de Redes Neurais Bayesianas (Bayesian Neural Networks).

Por que fazer ensemble ajuda (intuição e teoria)

Média de modelos e redução de variância

Uma única rede neural treinada é uma estimativa pontual de parâmetros (por exemplo, máxima verossimilhança (maximum likelihood) / MAP (maximum a posteriori)). Suas previsões podem ser frágeis porque muitas configurações de parâmetros diferentes podem ajustar os dados de forma igualmente boa.

Fazer ensemble aproxima a média de modelos (model averaging): em vez de confiar em uma solução, você tira a média das previsões de múltiplas soluções. Tirar a média tende a reduzir a variância e melhorar a generalização, especialmente quando modelos individuais cometem erros parcialmente não correlacionados.

Uma aproximação pragmática da média bayesiana de modelos

No aprendizado bayesiano, o “padrão-ouro” da distribuição preditiva marginaliza sobre os parâmetros:

[ p(y \mid x, \mathcal{D}) = \int p(y \mid x, \theta), p(\theta \mid \mathcal{D}), d\theta ]

Ensembles profundos aproximam isso ao treinar múltiplas redes que chegam a modos diferentes (different modes) da paisagem de perda (loss landscape):

  • Sementes aleatórias diferentes → mínimos locais / bacias diferentes
  • Estocasticidade da descida de gradiente estocástica (stochastic gradient descent, SGD) → exploração implícita
  • Ordens de dados / aumentos de dados diferentes → soluções diferentes

Então você aproxima a integral com uma mistura finita:

[ p(y \mid x, \mathcal{D}) \approx \frac{1}{M}\sum_{m=1}^{M} p(y \mid x, \theta_m) ]

Isso não é uma amostra de posteriori (posterior sample) com fundamento rigoroso no sentido bayesiano estrito, mas empiricamente muitas vezes se comporta como uma aproximação de posteriori forte — particularmente para incerteza epistêmica.

Diversidade é essencial

Fazer ensemble só ajuda se os membros forem significativamente diferentes. Fontes de diversidade incluem:

  • Inicialização aleatória
  • Ordens diferentes de minilotes (minibatch)
  • Aleatoriedade do aumento de dados
  • Conjuntos de dados com bootstrap (bagging)
  • Hiperparâmetros diferentes (cronogramas de taxa de aprendizado, decaimento de pesos, etc.)

Se todos os modelos colapsarem para preditores quase idênticos, as estimativas de incerteza pioram porque há pouca discordância para medir.

Como treinar ensembles profundos

Receita básica (mais comum)

  1. Escolha uma arquitetura e uma configuração de treinamento.
  2. Treine M instâncias independentes com:
    • Sementes aleatórias diferentes
    • Os mesmos dados de treinamento
    • A mesma função de perda, otimizador e cronograma (com frequência)
  3. Salve cada checkpoint (checkpoint).
  4. Na inferência, execute todos os membros e agregue.

Tamanhos típicos de ensemble na prática:

  • M = 5 é um ponto de equilíbrio comum
  • M = 10 frequentemente melhora ainda mais a incerteza, mas aumenta o custo
  • Acima disso, os ganhos podem diminuir, a menos que os membros sejam muito diversos

Bagging (ensembles com bootstrap)

Uma forma clássica de aumentar a diversidade é a reamostragem bootstrap (bootstrap resampling): cada modelo treina em um conjunto de dados amostrado com reposição a partir do conjunto de treinamento original.

  • Prós: aumenta a diversidade sem mudar a arquitetura
  • Contras: pode reduzir a cobertura efetiva de dados por membro; pode prejudicar a acurácia se os dados forem escassos

Bagging é especialmente útil quando:

  • O conjunto de dados é grande
  • Overfitting é uma preocupação
  • Você quer uma incerteza mais forte baseada em discordância

Diversidade de hiperparâmetros (“ensembles heterogêneos”)

Você também pode variar:

  • Cronogramas de taxa de aprendizado
  • Decaimento de pesos
  • Intensidades de aumento de dados
  • Até arquiteturas (embora isso vire um “ensemble de modelos” mais amplo)

Isso pode melhorar a robustez, mas complica a implantação e a análise.

Esboço prático no estilo PyTorch

Abaixo está um esboço simplificado de treinamento. Em código real, você fatoraria logging, checkpointing, AMP, distributed training, etc.

import torch
from torch import nn
from torch.utils.data import DataLoader

def train_one_member(seed, model_fn, train_ds, epochs=10, lr=1e-3, device="cuda"):
    torch.manual_seed(seed)
    model = model_fn().to(device)
    opt = torch.optim.AdamW(model.parameters(), lr=lr, weight_decay=1e-4)
    loss_fn = nn.CrossEntropyLoss()

    loader = DataLoader(train_ds, batch_size=128, shuffle=True, num_workers=4)

    model.train()
    for epoch in range(epochs):
        for x, y in loader:
            x, y = x.to(device), y.to(device)
            logits = model(x)
            loss = loss_fn(logits, y)

            opt.zero_grad()
            loss.backward()
            opt.step()

    return model

def predict_ensemble(models, x):
    # returns mean probability across ensemble
    probs = []
    for m in models:
        m.eval()
        with torch.no_grad():
            logits = m(x)
            probs.append(torch.softmax(logits, dim=-1))
    return torch.stack(probs, dim=0).mean(dim=0)

Como combinar membros do ensemble

Classificação (classification): média das probabilidades (mistura)

Para classificação, a abordagem mais comum é:

  1. Cada membro produz probabilidades de classe (p_m(y \mid x)) via softmax (softmax).
  2. Tire a média:

[ \bar{p}(y \mid x)=\frac{1}{M}\sum_{m=1}^M p_m(y \mid x) ]

Isso corresponde a um modelo de mistura (mixture model) sobre preditores e está fortemente alinhado com a média bayesiana de modelos.

Média de logits vs média de probabilidades

  • Média de probabilidades: (\bar{p} = \frac{1}{M}\sum \text{softmax}(z_m))
  • Média de logits (logit averaging): (\text{softmax}(\frac{1}{M}\sum z_m))

Elas não são equivalentes. A média de probabilidades é tipicamente preferida para incerteza e interpretação probabilística adequada. A média de logits pode às vezes melhorar a acurácia top-1 (top-1 accuracy), mas pode se comportar de forma diferente para calibração.

Regressão (regression): média das médias, combinação das variâncias

Para regressão, uma configuração comum é uma cabeça de verossimilhança gaussiana (Gaussian likelihood head): cada modelo prevê uma média (\mu_m(x)) e (opcionalmente) uma variância de ruído de observação (\sigma_m^2(x)) (regressão heteroscedástica).

A média preditiva do ensemble é:

[ \bar{\mu}(x) = \frac{1}{M}\sum_{m=1}^M \mu_m(x) ]

A variância preditiva total (total predictive variance) pode ser decomposta via a lei da variância total:

[ \mathrm{Var}(y \mid x) \approx \underbrace{\frac{1}{M}\sum_{m=1}^M \sigma_m^2(x)}{\text{aleatoric}} + \underbrace{\frac{1}{M}\sum{m=1}^M \left(\mu_m(x)-\bar{\mu}(x)\right)^2}_{\text{epistemic}} ]

  • Incerteza aleatória (aleatoric uncertainty): ruído irredutível nos dados (ruído de medição, aleatoriedade inerente)
  • Incerteza epistêmica: incerteza devido a conhecimento limitado; deve diminuir com mais dados

Quais sinais de incerteza você pode extrair?

Ensembles profundos fornecem múltiplas quantidades relacionadas à incerteza. Qual usar depende da tarefa (classificação vs regressão), da tomada de decisão a jusante e de você se importa com calibração, ranqueamento ou decomposição.

1) Entropia preditiva (predictive entropy) (classificação)

A partir da distribuição (\bar{p}) média do ensemble, compute:

[ H(\bar{p}) = -\sum_{c}\bar{p}_c \log \bar{p}_c ]

  • Entropia alta frequentemente indica previsões incertas.
  • Útil para heurísticas de abstenção (abstention), triagem (triage) e aprendizado ativo (active learning).

2) Discordância do ensemble / informação mútua (mutual information) (focada em epistêmica)

Um proxy epistêmico popular para classificação é a informação mútua entre previsões e a identidade do modelo:

[ \mathrm{MI} = H(\bar{p}) - \frac{1}{M}\sum_{m=1}^M H(p_m) ]

  • Se cada modelo está confiante, mas eles discordam, a MI fica grande.
  • Se todos os modelos estão igualmente incertos (entropia alta em cada um), a MI pode ser menor.

Isso é frequentemente interpretado como “quanto da incerteza vem de não saber qual modelo está certo”, isto é, incerteza epistêmica.

3) Razão de variação (variation ratio) (discordância simples)

Seja (\hat{y}_m = \arg\max_c p_m(c\mid x)). A razão de variação:

[ 1 - \frac{1}{M}\max_c \sum_m \mathbb{1}[\hat{y}_m=c] ]

  • 0 significa que todos concordam com a classe prevista
  • Valores maiores significam mais discordância

É grosseira, mas rápida e às vezes eficaz.

4) Variância preditiva (regressão)

Como mostrado antes, você pode separar:

  • variância das médias → epistêmica
  • média do ruído previsto → aleatória

Esse é um dos recursos mais úteis na prática dos ensembles profundos em regressão sensível à segurança ou à decisão.

5) Métricas de calibração e diagnósticos de confiabilidade

Ensembles profundos frequentemente melhoram a calibração probabilística, mensurável por:

  • Log-verossimilhança negativa (negative log-likelihood, NLL) (regra de pontuação adequada)
  • Escore de Brier (Brier score) (classificação)
  • Erro de calibração esperado (expected calibration error, ECE) (diagnóstico; sensível à discretização em bins)

Calibração importa quando probabilidades direcionam decisões (pontuação de risco, triagem médica, definição de limiares, etc.). Para mais contexto, veja Calibração de Modelos.

Aplicações práticas

Detecção fora da distribuição (out-of-distribution, OOD) (com ressalvas)

A incerteza do ensemble pode aumentar sob mudança de distribuição porque os membros discordam mais em entradas não familiares. Sinais comuns:

  • Entropia preditiva (H(\bar{p}))
  • Informação mútua
  • Probabilidade máxima (1-\max_c \bar{p}_c)

Ressalva: ensembles profundos não são detectores OOD garantidos. Certas mudanças podem produzir um consenso confiantemente errado. O desempenho em OOD depende fortemente dos dados, da arquitetura e do procedimento de treinamento.

Predição seletiva / abstenção

Uma política simples:

  • Prever apenas se a incerteza estiver abaixo de um limiar
  • Caso contrário, abster-se e escalar (revisão humana, modelo caro, sensoriamento adicional)

Exemplo de regra para classificação:

  • Aceitar a previsão se (H(\bar{p}) < \tau)
  • Ou se (\max_c \bar{p}_c > \tau)

Aprendizado ativo

Um loop típico:

  1. Treinar o ensemble no conjunto rotulado
  2. Pontuar o pool não rotulado por um proxy epistêmico (por exemplo, MI)
  3. Rotular os pontos de maior incerteza
  4. Retreinar / ajustar (fine-tune)

Ensembles profundos são populares aqui porque fornecem rankings de incerteza estáveis.

Tomada de decisão sensível a risco

Em cenários como crédito, saúde ou previsão, você pode:

  • Usar intervalos preditivos (regressão)
  • Penalizar decisões quando a incerteza epistêmica é alta
  • Combinar incerteza com limiares sensíveis a custo

Trade-offs vs MC dropout e outras aproximações bayesianas

Ensembles profundos frequentemente são comparados a métodos bayesianos aproximados que usam uma única rede.

Ensembles profundos vs [Dropout Monte Carlo](/deep-learning/fundamentos/redes-neurais-bayesianas/dropout-monte-carlo)

Dropout Monte Carlo (MC dropout) mantém o dropout ativo na inferência e executa múltiplas passagens estocásticas para frente. Ele frequentemente é apresentado como inferência bayesiana aproximada.

Prós do MC dropout

  • Treina um modelo (mais barato do que M treinamentos independentes)
  • Fácil de implementar se o dropout já existe
  • Pode executar muitas amostras no tempo de inferência

Contras vs ensembles profundos

  • As amostras frequentemente são altamente correlacionadas (mesmos pesos, diversidade limitada)
  • A qualidade da incerteza pode ser pior, especialmente sob mudança no conjunto de dados
  • A posição e a taxa de dropout são escolhas de projeto sensíveis

Quando o MC dropout é atraente

  • Orçamento de treinamento apertado
  • Precisa de uma linha de base rápida de incerteza
  • O modelo já usa dropout intensamente

Quando ensembles profundos são melhores

  • Você pode arcar com o treinamento de múltiplos modelos
  • Você precisa de incerteza e calibração mais fortes e confiáveis
  • Você quer um método robusto “plug-in” que funcione em diferentes arquiteturas (inclusive as sem dropout)

Ensembles profundos vs [Aproximação de Laplace](/deep-learning/fundamentos/redes-neurais-bayesianas/aproximacao-de-laplace-laplace-approximation)

Laplace aproxima a posteriori em torno de uma única solução treinada como uma gaussiana no espaço de parâmetros.

Prós de Laplace

  • Pode ser relativamente eficiente (uma execução de treinamento + aproximação de curvatura)
  • Tem uma interpretação bayesiana mais clara localmente

Contras vs ensembles profundos

  • Captura apenas incerteza local ao redor de um modo
  • Pode perder multimodalidade (soluções plausíveis diferentes)
  • O desempenho prático depende de aproximações de curvatura (diagonal, KFAC, etc.)

Ensembles profundos frequentemente vencem empiricamente porque podem representar múltiplos modos via múltiplas soluções independentes.

Ensembles profundos vs redes neurais bayesianas variacionais

Métodos de inferência variacional aprendem uma posteriori paramétrica (frequentemente uma gaussiana fatorada) e amostram pesos.

Prós

  • Aproximação explícita da posteriori
  • Um objeto de modelo (embora com pesos estocásticos)

Contras

  • A otimização pode ser difícil; aproximações podem ser restritivas demais
  • A posteriori pode ter dispersão insuficiente (overconfident)
  • A complexidade de engenharia é maior do que a de ensembles

Em muitos cenários aplicados, ensembles profundos continuam sendo a “linha de base forte” porque são diretos e confiáveis.

Considerações de engenharia e implantação

Custos de computação e memória

O custo escala aproximadamente de forma linear com o tamanho do ensemble M:

  • Tempo de treinamento: ~M× (a menos que você paralelize entre GPUs/nós)
  • Tempo de inferência: ~M× passagens para frente (pode ser em lote entre modelos se a memória permitir)
  • Armazenamento: M checkpoints

Se a latência de inferência for importante, considere:

  • M menor (por exemplo, 3–5)
  • Executar membros em paralelo
  • Destilação (abaixo)

Destilar um ensemble em um único modelo

Um truque comum é a destilação do ensemble (ensemble distillation):

  • Use os alvos suaves ou a distribuição preditiva do ensemble para treinar uma única rede “aluna” (student).
  • A rede aluna pode recuperar parte dos ganhos de acurácia e calibração a um custo de inferência próximo ao de um único modelo.

A destilação geralmente preserva melhor a qualidade média de predição do que a decomposição de incerteza epistêmica, mas pode ser um bom compromisso para implantação.

Ensembles por instantâneos (snapshot ensembles) (ideia relacionada)

Em vez de treinar M modelos separados, ensembles por instantâneos salvam checkpoints de uma única execução de treinamento (frequentemente com taxas de aprendizado cíclicas). Isso pode aproximar um ensemble com menor custo de treinamento, mas a diversidade pode ser mais fraca do que em execuções verdadeiramente independentes.

Boas práticas e armadilhas comuns

Padrões recomendados

  • Comece com M = 5 sementes independentes.
  • Use aumento de dados forte (quando apropriado); ele aumenta diversidade e robustez.
  • Avalie com NLL e diagnósticos de calibração, não apenas acurácia.
  • Para incerteza em regressão, use uma verossimilhança que consiga modelar ruído aleatório (por exemplo, gaussiana com variância prevista), se for apropriado.

Armadilhas

  • Diversidade insuficiente: pipelines de treinamento idênticos ainda podem convergir para soluções similares, especialmente com regularização pesada ou conjuntos de dados muito grandes. Considere bootstrap ou variação leve de hiperparâmetros se a discordância estiver baixa demais.
  • Fazer média de logits sem querer: garanta que você está fazendo média de probabilidades se quer uma interpretação como mistura.
  • Confundir epistêmica com aleatória: para classificação, entropia sozinha mistura ambas. Informação mútua (baseada em discordância) frequentemente é mais sensível à epistêmica.
  • Excesso de confiança em OOD: ensembles ainda podem errar com alta confiança; não os trate como garantia de segurança sob mudança.

Quando usar ensembles profundos

Ensembles profundos são uma escolha forte quando você precisa:

  • Linhas de base confiáveis de incerteza para pesquisa e ML aplicado
  • Probabilidades melhor calibradas para tomada de decisão
  • Sinais de incerteza epistêmica para aprendizado ativo, triagem ou percepção de mudança
  • Um método que funcione com arquiteturas modernas sem maquinário bayesiano especial

Eles são menos ideais quando:

  • O orçamento de treinamento/inferência é apertado
  • Você precisa implantar um único modelo pequeno com latência mínima
  • Você precisa de uma aproximação de posteriori formalmente fundamentada (onde métodos como Aproximação de Laplace ou inferência bayesiana mais explícita podem ser preferíveis)

Resumo

Ensembles profundos estimam incerteza treinando múltiplas redes neurais inicializadas de forma independente e tirando a média de suas previsões. Apesar da simplicidade, eles entregam melhorias fortes em acurácia e calibração e fornecem sinais úteis de incerteza epistêmica por meio da discordância entre modelos. Sua principal desvantagem é o custo: computação, memória e latência escalam com o tamanho do ensemble.

Como um método prático dentro do panorama mais amplo de Redes Neurais Bayesianas, ensembles profundos frequentemente são o ponto de referência contra o qual aproximações mais leves como Dropout Monte Carlo e métodos locais de posteriori como Aproximação de Laplace são comparados.