Limite Inferior da Evidência (Evidence Lower Bound, ELBO)
O que é o ELBO?
O Limite Inferior da Evidência (Evidence Lower Bound, ELBO) é uma função objetivo tratável usada em inferência variacional (variational inference) para aproximar a inferência bayesiana do posterior (Bayesian posterior inference) em modelos com variáveis latentes (latent variables). Ele é chamado de “limite inferior” porque fornece um valor que é garantidamente ≤ ao log da verossimilhança marginal (log marginal likelihood) (também chamado de log-evidência (log evidence)):
[ \log p_\theta(x) = \log \int p_\theta(x,z),dz ]
Calcular (\log p_\theta(x)) (ou seu gradiente) muitas vezes é intratável porque a integral sobre as variáveis latentes (z) é difícil. O ELBO substitui isso por um problema de otimização sobre uma família mais simples de distribuições (q_\phi(z \mid x)) que aproxima o posterior verdadeiro (p_\theta(z \mid x)).
O ELBO é central para:
- Inferência Variacional (como a principal função objetivo a ser otimizada)
- modelos com variáveis latentes na estatística bayesiana (modelagem de tópicos (topic modeling), modelos de mistura (mixture models), redes neurais bayesianas (Bayesian neural nets))
- Autoencoders Variacionais (Variational Autoencoders, VAEs), em que o ELBO se torna a perda familiar “reconstrução menos KL”
Configuração: modelos com variáveis latentes e a verossimilhança marginal
Considere um modelo generativo com variáveis latentes (latent-variable generative model):
- Variável latente: (z)
- Dados observados: (x)
- Distribuição conjunta: (p_\theta(x,z) = p_\theta(x \mid z),p(z))
Dado (x), a inferência bayesiana foca no posterior:
[ p_\theta(z \mid x) = \frac{p_\theta(x,z)}{p_\theta(x)} ]
onde a verossimilhança marginal (evidência) é:
[ p_\theta(x) = \int p_\theta(x,z),dz ]
Em muitos modelos úteis, a integral não é solucionável analiticamente, e a inferência exata é inviável.
A inferência variacional introduz uma aproximação tratável (q_\phi(z \mid x)) e a ajusta ao posterior verdadeiro por meio de otimização.
Derivando o ELBO (visão pela desigualdade de Jensen)
Comece a partir do log-evidência:
[ \log p_\theta(x) = \log \int p_\theta(x,z),dz ]
Multiplique e divida dentro da integral por (q_\phi(z \mid x)) (qualquer distribuição que seja não nula onde (p) é não nula):
[ \log p_\theta(x) = \log \int q_\phi(z \mid x),\frac{p_\theta(x,z)}{q_\phi(z \mid x)},dz = \log \mathbb{E}{q\phi(z \mid x)}\left[\frac{p_\theta(x,z)}{q_\phi(z \mid x)}\right] ]
Agora aplique a desigualdade de Jensen (Jensen’s inequality) ((\log \mathbb{E}[Y] \ge \mathbb{E}[\log Y])):
[ \log p_\theta(x) \ge \mathbb{E}{q\phi(z \mid x)}\left[\log p_\theta(x,z) - \log q_\phi(z \mid x)\right] ]
Esse limite inferior é o ELBO:
\[ \mathcal{L}(\theta,\phi; x)
\mathbb{E}_{q_\phi(z \mid x)}\left[\log p_\theta(x,z)\right]
\mathbb{E}{q\phi(z \mid x)}\left[\log q_\phi(z \mid x)\right] ]
Logo:
[ \mathcal{L}(\theta,\phi; x)\ \le\ \log p_\theta(x) ]
A decomposição-chave: termo de reconstrução menos regularizador de KL
Usando (p_\theta(x,z)=p_\theta(x\mid z)p(z)), podemos reescrever o ELBO:
\[ \mathcal{L}(\theta,\phi; x)
\mathbb{E}_{q_\phi(z \mid x)}[\log p_\theta(x \mid z)]
\mathrm{KL}\left(q_\phi(z \mid x)\ |\ p(z)\right) ]
Esta é a forma mais comumente citada. Ela tem duas partes:
Log-verossimilhança esperada (expected log-likelihood) (frequentemente chamada de termo de reconstrução (reconstruction term) em VAEs) [ \mathbb{E}{q\phi(z \mid x)}[\log p_\theta(x \mid z)] ] Isso incentiva amostras latentes (z \sim q_\phi(z \mid x)) a explicar bem os dados sob o modelo.
Regularizador de divergência de KL (KL divergence) [ \mathrm{KL}\left(q_\phi(z \mid x)\ |\ p(z)\right) ] Isso incentiva o posterior aproximado (q_\phi(z \mid x)) a não se afastar demais do prior (p(z)), controlando a complexidade e promovendo generalização.
Esse compromisso entre “ajustar os dados, mas permanecer próximo do prior” é por que o ELBO é uma função objetivo bem fundamentada para aprender modelos generativos com variáveis latentes.
Por que maximizar o ELBO aproxima o posterior verdadeiro
Uma segunda identidade fundamental mostra a relação do ELBO com o pareamento do posterior:
[ \log p_\theta(x) = \mathcal{L}(\theta,\phi; x) + \mathrm{KL}\left(q_\phi(z \mid x)\ |\ p_\theta(z \mid x)\right) ]
Como a divergência de KL é sempre não negativa, o ELBO é de fato um limite inferior. Mais importante:
- (\log p_\theta(x)) não depende de (\phi)
- portanto, maximizar (\mathcal{L}(\theta,\phi; x)) com respeito a (\phi) é equivalente a minimizar: [ \mathrm{KL}\left(q_\phi(z \mid x)\ |\ p_\theta(z \mid x)\right) ]
Assim, a otimização do ELBO é uma aproximação prática para “tornar (q_\phi(z \mid x)) o mais próximo possível do posterior verdadeiro”, dentro da família variacional escolhida.
Esta é a ideia central por trás da Inferência Bayesiana realizada aproximadamente via Inferência Variacional.
Intuição: o que o ELBO “quer”?
Pensando em termos de compressão e explicação:
- O termo de reconstrução recompensa códigos latentes (latent codes) (z) que retêm a informação necessária para prever (x).
- O termo de KL penaliza usar informação demais em (z) em relação ao prior — desencorajando codificações latentes excessivamente complexas e específicas dos dados.
Em VAEs isso se mapeia quase exatamente para:
- “O decodificador (decoder) consegue reconstruir a entrada?”
- “O codificador (encoder) está produzindo uma distribuição latente agradável e suave que combina com o prior?”
ELBO na prática: estimando e otimizando
O ELBO inclui uma esperança sobre (q_\phi(z \mid x)), que tipicamente é aproximada por amostragem de Monte Carlo (Monte Carlo sampling):
[ \mathbb{E}{q\phi(z \mid x)}[f(z)] \approx \frac{1}{L}\sum_{l=1}^L f(z^{(l)}), \quad z^{(l)}\sim q_\phi(z\mid x) ]
Gradientes: truque de reparametrização vs estimadores de função de escore
Para otimizar o ELBO com Descida do Gradiente (Gradient Descent), precisamos de gradientes com respeito a (\theta) e (\phi).
Se (z) é contínua e (q_\phi(z\mid x)) é reparametrizável (por exemplo, Gaussiana), usamos o truque de reparametrização (reparameterization trick): [ z = \mu_\phi(x) + \sigma_\phi(x)\odot \epsilon,\quad \epsilon\sim\mathcal{N}(0,I) ] Isso habilita gradientes de baixa variância via Retropropagação (Backpropagation) padrão.
Se (z) é discreta, reparametrização é mais difícil. Abordagens comuns incluem:
- estimadores de função de escore (score-function estimators) (REINFORCE) com redução de variância (variance reduction)
- relaxações contínuas (continuous relaxations) (por exemplo, Gumbel-Softmax)
- limites/funções objetivo especializadas dependendo do modelo
Treinamento com mini-lotes
Para o conjunto de dados ({x_i}_{i=1}^N), tipicamente maximizamos a soma dos ELBOs:
[ \sum_{i=1}^N \mathcal{L}(\theta,\phi;x_i) ]
Em aprendizado em larga escala, isso é otimizado com mini-lotes (mini-batches) estocásticos, levando à inferência variacional estocástica (stochastic variational inference).
Conexão com Expectação–Maximização (EM)
O ELBO também oferece uma lente unificadora sobre o algoritmo de Expectação–Maximização (EM).
- EM pode ser visto como ascensão por coordenadas (coordinate ascent) em um ELBO:
- E-step: escolher (q(z)) para combinar com o posterior (no EM clássico, o posterior exato dentro da classe do modelo)
- M-step: maximizar o ELBO com respeito a (\theta)
A inferência variacional generaliza EM ao permitir famílias restritas (q_\phi) (por exemplo, campo médio (mean-field)), trocando exatidão por tratabilidade.
ELBO e VAEs: a função objetivo padrão de VAE
Um Autoencoder Variacional define:
- Codificador (posterior aproximado): (q_\phi(z \mid x))
- Decodificador (modelo de verossimilhança): (p_\theta(x \mid z))
- Prior: (p(z)), frequentemente (\mathcal{N}(0,I))
O VAE treina maximizando:
\[ \mathcal{L}(\theta,\phi;x)
\mathbb{E}_{q_\phi(z \mid x)}[\log p_\theta(x \mid z)]
\mathrm{KL}(q_\phi(z \mid x)|p(z)) ]
Interpretação prática em VAEs
O termo de reconstrução se torna uma perda familiar dependendo da verossimilhança:
- Se (p_\theta(x\mid z)) é Gaussiana com variância fixa, maximizar (\log p_\theta(x\mid z)) corresponde (até constantes) a minimizar o erro quadrático médio (mean squared error).
- Se (x) é binária e (p_\theta(x\mid z)) é Bernoulli, isso corresponde à entropia cruzada binária (binary cross-entropy).
O termo de KL frequentemente tem forma fechada se tanto (q_\phi) quanto (p) forem Gaussianas.
Exemplo mínimo no estilo PyTorch (ELBO de VAE)
# x: batch of data
mu, logvar = encoder(x) # parameters of q(z|x)
std = (0.5 * logvar).exp()
eps = torch.randn_like(std)
z = mu + std * eps # reparameterization
x_logits = decoder(z) # parameters of p(x|z)
# Reconstruction term: -negative log likelihood
recon = torch.nn.functional.binary_cross_entropy_with_logits(
x_logits, x, reduction="sum"
)
# KL(q(z|x) || p(z)) for diagonal Gaussians and standard normal prior
kl = -0.5 * torch.sum(1 + logvar - mu.pow(2) - logvar.exp())
# We maximize ELBO, so we minimize negative ELBO
loss = recon + kl
loss.backward()
optimizer.step()
Variantes que você verá na prática
- β-VAE: usa (\beta \cdot \mathrm{KL}) para controlar a capacidade de informação de (z) (frequentemente usado em estudos de disentanglement).
- Free bits / KL annealing: heurísticas para evitar colapso do posterior (posterior collapse) (quando (q(z\mid x)\approx p(z)) e o modelo ignora (z)).
Um exemplo probabilístico concreto: ELBO para um modelo de mistura Gaussiana
Considere um modelo de mistura Gaussiana (Gaussian mixture model, GMM) com:
- atribuição latente discreta (z \in {1,\dots,K})
- verossimilhança (p(x \mid z=k) = \mathcal{N}(x \mid \mu_k, \Sigma_k))
- prior (p(z=k)=\pi_k)
A inferência exata calcula (p(z\mid x)) usando a regra de Bayes (Bayes’ rule), que é tratável para GMMs padrão, mas a perspectiva do ELBO generaliza para modelos em que esse posterior não é tratável.
Escolha uma distribuição variacional (q(z \mid x)) que seja categórica (categorical) com parâmetros (\gamma_k(x)). Então:
- Reconstrução / log-verossimilhança esperada: [ \mathbb{E}{q(z\mid x)}[\log p(x\mid z)] = \sum{k=1}^K \gamma_k(x),\log \mathcal{N}(x\mid \mu_k,\Sigma_k) ]
- Regularizador de KL: [ \mathrm{KL}(q(z\mid x)|p(z))=\sum_{k=1}^K \gamma_k(x)\log\frac{\gamma_k(x)}{\pi_k} ]
Maximizar o ELBO força (\gamma_k(x)) a atribuir probabilidade a componentes que explicam bem (x), sem se desviar desnecessariamente dos pesos de mistura a priori (\pi_k).
Essa mesma estrutura aparece em modelos de mistura e modelos de tópicos mais complexos, onde posteriors exatos não estão disponíveis.
Para que o ELBO é usado (aplicações práticas)
Treinando modelos generativos com variáveis latentes
O ELBO é a função objetivo principal para ajustar modelos com estrutura latente:
- VAEs para imagens, áudio, texto e dados multimodais
- modelos gaussianos latentes profundos (deep latent Gaussian models)
- redes neurais bayesianas (com distribuições variacionais de pesos)
Inferência bayesiana aproximada em escala
Em modelos grandes, inferência bayesiana exata é lenta demais ou impossível. O ELBO permite inferência aproximada escalável usando:
- mini-lotes
- inferência amortizada (amortized inference) (aprendendo (q_\phi(z\mid x)) com um codificador neural)
- estimativas de Monte Carlo aceleradas por GPU (GPU-accelerated)
Isso é amplamente usado em Programação Probabilística, onde mecanismos de inferência frequentemente otimizam um ELBO (ou uma variante próxima).
Comparação de modelos e diagnósticos de treinamento
O ELBO pode servir como:
- uma função objetivo de treinamento (quanto maior, melhor)
- uma aproximação grosseira do log-evidência (útil para comparar modelos), embora lembre-se de que é um limite inferior e pode ser frouxo
Para seleção formal de modelos, ideias relacionadas aparecem em critérios como AIC/BIC; veja Critérios de Informação.
Nuances importantes e armadilhas comuns
1) O ELBO pode ser um limite frouxo
Um ELBO maior geralmente indica um melhor ajuste, mas valores de ELBO de famílias variacionais diferentes podem não ser diretamente comparáveis: um (q_\phi) mais rico pode apertar o limite.
Uma extensão comum é o limite do Autoencoder Ponderado por Importância (Importance-Weighted Autoencoder, IWAE), que usa múltiplas amostras para apertar o limite inferior: [ \log p(x) \ge \mathbb{E}\left[\log \frac{1}{K}\sum_{k=1}^K \frac{p(x,z_k)}{q(z_k\mid x)}\right] ]
2) A direção da KL importa (comportamento de busca de modos)
O ELBO minimiza (\mathrm{KL}(q(z\mid x)|p(z\mid x))), às vezes chamada de “KL exclusivo (exclusive KL)”. Isso tende a ser busca de modos (mode-seeking): (q) pode focar em um modo de um posterior multimodal em vez de cobrir todos os modos.
3) Colapso do posterior em VAEs
Quando o decodificador é muito poderoso, maximizar o ELBO pode levar a:
- (q(z\mid x)\approx p(z)) (o termo de KL vai para ~0)
- a variável latente (z) carrega pouca informação sobre (x)
Isso é comum em VAEs de texto com decodificadores autorregressivos (autoregressive decoders) fortes e frequentemente é mitigado com KL annealing, mudanças de arquitetura ou funções objetivo alternativas.
4) “Reconstrução” depende da escolha de verossimilhança
Chamar o primeiro termo de “perda de reconstrução” é conveniente, mas pode esconder suposições de modelagem. Você não está reconstruindo em uma métrica arbitrária; você está maximizando uma verossimilhança probabilística (probabilistic likelihood). Escolher verossimilhança Bernoulli vs Gaussiana muda o que significa “boa reconstrução”.
Relação com máxima verossimilhança
Maximizar o log da verossimilhança marginal (\log p_\theta(x)) é um objetivo padrão em Estimativa de Máxima Verossimilhança (MLE) para modelos com variáveis latentes. O ELBO fornece um substituto tratável:
- Se a família variacional contiver o posterior verdadeiro, o limite pode se tornar justo: [ q_\phi(z\mid x) = p_\theta(z\mid x)\ \Rightarrow\ \mathcal{L}(\theta,\phi;x) = \log p_\theta(x) ]
- Caso contrário, maximizamos um limite inferior, equilibrando ajuste e qualidade da aproximação.
Resumo
- O ELBO é um limite inferior tratável do log da verossimilhança marginal (\log p_\theta(x)).
- Ele pode ser escrito como: [ \mathcal{L}(\theta,\phi;x)=\mathbb{E}{q\phi(z\mid x)}[\log p_\theta(x\mid z)]-\mathrm{KL}(q_\phi(z\mid x)|p(z)) ] que é “log-verossimilhança esperada (reconstrução) menos regularizador de KL”.
- Maximizar o ELBO é equivalente (até uma constante (\log p_\theta(x))) a minimizar: [ \mathrm{KL}(q_\phi(z\mid x)|p_\theta(z\mid x)) ] conectando a otimização variacional diretamente à aproximação do posterior.
- Em VAEs, o ELBO se torna a função objetivo padrão de treinamento e é otimizado de forma eficiente usando o truque de reparametrização e gradientes estocásticos.
Se você entende o ELBO, você tem a ponte matemática central entre inferência bayesiana do posterior e a modelagem generativa profunda moderna.