Aproximação de Laplace (Laplace Approximation)
Visão geral
A aproximação de Laplace (Laplace approximation) é uma técnica clássica para transformar uma posterior Bayesiana intratável em uma Gaussiana (Gaussian) tratável. No contexto de Redes Neurais Bayesianas, ela é um dos métodos de incerteza “pós-treinamento” mais usados: primeiro você treina uma rede neural padrão até uma solução MAP (maximum a posteriori) (máximo a posteriori), e então ajusta uma distribuição Gaussiana em torno dessa solução usando a curvatura (curvature) (a Hessiana) do log da posterior.
A ideia central:
- Calcular uma estimativa pontual (w_{\text{MAP}}) (os melhores pesos sob prior + dados).
- Aproximar a posterior (p(w \mid \mathcal{D})) por uma Gaussiana: [ p(w \mid \mathcal{D}) \approx \mathcal{N}!\left(w_{\text{MAP}}, ; \Sigma \right), \qquad \Sigma \approx H^{-1}, ] onde (H) é a Hessiana do log posterior negativo em (w_{\text{MAP}}).
Isso fornece uma forma fundamentada de estimar incerteza epistêmica (epistemic uncertainty) (incerteza sobre parâmetros devido a dados limitados), muitas vezes a uma fração do custo de métodos completos de inferência Bayesiana como Monte Carlo via Cadeias de Markov.
Fundamento Bayesiano: posterior e MAP
Seja (\mathcal{D} = {(x_i, y_i)}_{i=1}^N) o conjunto de dados e (w \in \mathbb{R}^P) os parâmetros (pesos) de uma rede neural.
A regra de Bayes fornece a posterior: [ p(w \mid \mathcal{D}) \propto p(\mathcal{D} \mid w), p(w), ] onde:
- (p(\mathcal{D} \mid w) = \prod_i p(y_i \mid x_i, w)) é a verossimilhança,
- (p(w)) é a prior (frequentemente Gaussiana).
A estimativa MAP é: [ w_{\text{MAP}} = \arg\max_w \log p(\mathcal{D} \mid w) + \log p(w). ]
No aprendizado profundo moderno, isso frequentemente corresponde ao treinamento padrão com decaimento de peso (weight decay):
- Se a prior é (p(w) = \mathcal{N}(0, \lambda^{-1} I)),
- então (-\log p(w)) contribui com (\tfrac{\lambda}{2}\lVert w\rVert^2),
- o que é exatamente regularização L2.
Assim, “treinar uma rede neural com decaimento de peso” é frequentemente “calcular uma estimativa MAP” (com ressalvas sobre detalhes como ruído de otimização, parada antecipada e não convexidade).
A aproximação de Laplace: expansão quadrática local
A aproximação de Laplace vem de uma expansão de Taylor de segunda ordem do log da posterior em torno do ponto MAP.
Defina o log posterior negativo (até uma constante aditiva): [ \mathcal{L}(w) ;=; -\log p(\mathcal{D} \mid w) - \log p(w). ] Em (w_{\text{MAP}}), o gradiente se anula: (\nabla \mathcal{L}(w_{\text{MAP}})=0).
Agora expanda (\mathcal{L}(w)) ao redor de (w_{\text{MAP}}): [ \mathcal{L}(w) \approx \mathcal{L}(w_{\text{MAP}}) + \frac{1}{2}(w - w_{\text{MAP}})^\top H (w - w_{\text{MAP}}), ] onde [ H = \nabla^2 \mathcal{L}(w)\big|{w{\text{MAP}}} ] é a Hessiana do log posterior negativo no MAP.
Ao exponenciar (já que (p(w \mid \mathcal{D}) \propto e^{-\mathcal{L}(w)})) obtemos uma Gaussiana: [ p(w \mid \mathcal{D}) \approx \mathcal{N}!\left(w_{\text{MAP}},, H^{-1}\right). ]
O que significa curvatura aqui
- Grande curvatura (autovalores grandes de (H)) ⇒ a posterior é estreita ⇒ os parâmetros estão bem determinados.
- Pequena curvatura ⇒ posterior ampla ⇒ maior incerteza epistêmica.
Esse é o principal motivo pelo qual Laplace é atraente para estimativa de incerteza: ela converte “planicidade” ao redor de uma solução em uma covariância quantitativa.
Um exemplo simples: regressão logística Bayesiana
Antes de redes neurais, considere a regressão logística com pesos (w), prior (w \sim \mathcal{N}(0, \lambda^{-1}I)) e verossimilhança Bernoulli: [ p(y_i=1 \mid x_i,w) = \sigma(w^\top x_i). ]
O log posterior negativo é: [ \mathcal{L}(w) = -\sum_i \log p(y_i \mid x_i, w) + \frac{\lambda}{2}\lVert w\rVert^2. ]
A Hessiana tem a forma: [ H = X^\top R X + \lambda I, ] onde (R) é uma matriz diagonal de variâncias por exemplo (\sigma_i(1-\sigma_i)). Essa Hessiana é semidefinida positiva, fácil de calcular para problemas pequenos, e gera uma posterior Gaussiana. A aproximação de Laplace costuma ser excelente aqui porque a posterior verdadeira é relativamente unimodal e “próxima de Gaussiana”.
As redes neurais generalizam essa ideia, mas introduzem contagens massivas de parâmetros e não convexidade, tornando (H) difícil de computar e a posterior menos Gaussiana.
Aplicando Laplace a redes neurais bayesianas (BNNs)
Em uma rede neural com parâmetros (w), Laplace segue em duas fases:
1) Treinar até uma solução MAP
Escolha uma prior (p(w)), tipicamente Gaussiana. Em seguida, treine: [ w_{\text{MAP}} = \arg\min_w \Big[-\log p(\mathcal{D} \mid w) - \log p(w)\Big]. ]
Na prática:
- Para regressão com ruído de observação Gaussiano: minimize MSE + decaimento de peso.
- Para classificação: minimize entropia cruzada + decaimento de peso.
Isso usa ferramental padrão: Retropropagação, SGD/Adam etc.
2) Ajustar uma posterior Gaussiana local
Calcule (ou aproxime) a Hessiana: [ H = \nabla^2 \mathcal{L}(w)\big|{w{\text{MAP}}}. ] Então defina a posterior aproximada como: [ q(w) = \mathcal{N}(w_{\text{MAP}}, H^{-1}). ]
Incerteza preditiva
A distribuição preditiva Bayesiana é: [ p(y \mid x, \mathcal{D}) = \int p(y \mid x, w), p(w \mid \mathcal{D}), dw. ] Sob Laplace: [ p(y \mid x, \mathcal{D}) \approx \int p(y \mid x, w), q(w), dw. ]
Essa integral ainda não é, em geral, analítica para redes neurais, mas Laplace a torna tratável de aproximar:
- Monte Carlo sobre pesos (Monte Carlo over weights): amostrar (w^{(s)} \sim \mathcal{N}(w_{\text{MAP}}, \Sigma)) e promediar as predições.
- Linearização / método delta (delta method): aproximar a saída da rede como linear nos pesos perto de (w_{\text{MAP}}), produzindo incerteza Gaussiana na saída para saídas do tipo regressão.
Computação prática: a Hessiana é o gargalo
Para redes modernas, (P) pode ser milhões ou bilhões. A Hessiana completa é (P \times P), impossível de armazenar ou inverter.
Assim, métodos práticos de Laplace dependem de aproximações que preservam o benefício-chave (curvatura local) sem incorrer em custo (O(P^2)).
Hessiana completa (apenas para modelos pequenos)
Viável apenas para (P) pequeno (por exemplo, milhares). Você pode computar (H) com diferenciação automática e então invertê-la (ou calcular uma Cholesky).
Prós:
- Mais fiel à aproximação quadrática local.
Contras:
- Não escala.
Hessiana diagonal (linha de base muito comum)
Aproxime: [ H \approx \mathrm{diag}(h_1,\dots,h_P), \qquad \Sigma \approx \mathrm{diag}(h_1^{-1},\dots,h_P^{-1}). ]
Prós:
- Memória (O(P)).
- Fácil de implementar.
Contras:
- Ignora correlações entre parâmetros (frequentemente importantes).
- Pode sub/superestimar incerteza dependendo das interações.
Bloco-diagonal (por camada ou por grupo de parâmetros)
Divida os pesos em blocos (frequentemente camadas), calcule/aproxime blocos Hessianos (H_\ell) e inverta cada bloco separadamente.
Prós:
- Captura correlações intra-camada.
- Ainda é administrável se os blocos forem pequenos.
Contras:
- Perde correlações entre camadas.
Gauss–Newton / Gauss–Newton generalizado (GGN)
Para muitas perdas (especialmente entropia cruzada e erro quadrático), praticantes frequentemente usam a aproximação de Gauss–Newton Generalizado (Generalized Gauss–Newton, GGN), intimamente relacionada ao Método de Gauss-Newton.
Ideia-chave: aproximar a curvatura usando Jacobianas das saídas da rede e a curvatura da perda em relação às saídas, o que tende a gerar uma matriz semidefinida positiva (positive semidefinite) (importante porque a Hessiana verdadeira em redes profundas pode ser indefinida).
Prós:
- Frequentemente mais estável numericamente do que a Hessiana bruta.
- Alinha-se bem a interpretações probabilísticas.
Contras:
- Ainda é caro sem estrutura adicional.
Informação de Fisher / Fisher empírico
Outra escolha comum é uma curvatura do tipo Fisher (relacionada à Informação de Fisher), frequentemente usada por ser PSD e poder ser estimada a partir de gradientes.
Prós:
- PSD e frequentemente mais fácil de aproximar.
Contras:
- Não é exatamente a Hessiana do log posterior; pode representar mal a curvatura, especialmente longe do ótimo.
Aproximações fatoradas de Kronecker (estilo KFAC)
Uma aproximação estruturada escalável amplamente usada é a curvatura fatorada de Kronecker (Kronecker-factored curvature), na qual matrizes de curvatura por camada são aproximadas como produtos de Kronecker. Isso é intimamente relacionado a métodos de segunda ordem em aprendizado profundo.
Prós:
- Muito mais rica do que diagonal/bloco-diagonal.
- Inversão eficiente usando estrutura de Kronecker.
Contras:
- A qualidade da aproximação depende de suposições (por exemplo, estruturas de independência).
Baixa-rank + diagonal (Laplace com um subespaço)
Aproxime: [ H \approx D + U U^\top ] onde (D) é diagonal e (U) tem posto pequeno (k). A inversão usa a identidade de Woodbury.
Prós:
- Captura algumas direções dominantes de curvatura (frequentemente as mais importantes).
- Memória escala como (O(Pk)).
Contras:
- Precisa de um método (por exemplo, Lanczos) para encontrar o subespaço dominante.
Laplace na última camada (muito prático para redes profundas)
Uma escolha pragmática forte: aplicar Laplace apenas aos pesos (w_L) da última camada (last layer), mantendo as camadas anteriores fixas em (w_{\text{MAP}}). Então (P) torna-se administrável (especialmente para grandes extratores de características).
Prós:
- Frequentemente funciona bem na prática, especialmente para classificação.
- Muito escalável.
Contras:
- Subestima a incerteza das camadas anteriores (incerteza de características).
Fluxo de trabalho prático para Laplace em redes neurais
Um pipeline típico de ponta a ponta se parece com isto:
Etapa 1: Treinar MAP (treinamento regular)
- Use treinamento padrão para minimizar log-verossimilhança negativa + decaimento de peso L2.
- Mantenha os parâmetros finais como (w_{\text{MAP}}).
Etapa 2: Escolher a aproximação de curvatura
Escolhas comuns:
- Hessiana/GGN diagonal por simplicidade.
- KFAC/GGN para melhores correlações.
- Laplace na última camada se a rede for grande.
Etapa 3: Calcular (aproximar) a covariância da posterior
- Armazene a curvatura na forma escolhida.
- Adicione amortecimento (damping) se necessário: [ H \leftarrow H + \epsilon I ] para garantir estabilidade numérica.
Etapa 4: Predizer com incerteza
Duas abordagens comuns:
(A) Amostragem Monte Carlo sobre pesos
Isso é direto e funciona para classificação e regressão.
Pseudo-code:
# Given: w_map, a function sample_from_posterior(), model_forward()
S = 50
preds = []
for s in range(S):
w = sample_from_posterior(w_map, Sigma) # e.g., Gaussian with structured covariance
preds.append(model_forward(x, w)) # logits or outputs
# Regression: mean and variance across preds
# Classification: average softmax probabilities for predictive distribution
Notas:
- Para covariâncias estruturadas, a amostragem pode usar fatorações ou métodos iterativos.
- A incerteza preditiva frequentemente melhora à medida que (S) aumenta, mas (S=20)–(100) é comum.
(B) Linearização (método delta) para saídas do tipo regressão
Seja (f(x,w)) a saída da rede (por exemplo, regressão escalar). Linearize em torno de (w_{\text{MAP}}): [ f(x,w) \approx f(x,w_{\text{MAP}}) + J(x) (w - w_{\text{MAP}}), ] onde (J(x) = \nabla_w f(x,w)\big|{w{\text{MAP}}}).
Se (w \sim \mathcal{N}(w_{\text{MAP}}, \Sigma)), então: [ f(x,w) \sim \mathcal{N}\left(f(x,w_{\text{MAP}}),; J(x)\Sigma J(x)^\top\right). ]
Isso fornece uma estimativa rápida de incerteza sem amostragem de pesos, desde que você consiga computar produtos Jacobiana-vetor eficientemente.
Como Laplace se compara a métodos irmãos de incerteza
Dentro de estimativa de incerteza para redes neurais:
- Conjuntos Profundos aproximam multi-modalidade treinando múltiplas soluções independentes. Eles frequentemente fornecem forte incerteza empírica e calibração, mas com custo de treinamento maior (múltiplos modelos).
- Dropout Monte Carlo aproxima uma posterior por meio de máscaras de dropout estocásticas em tempo de teste; é fácil de usar, mas depende do desenho do dropout e pode capturar pouca incerteza em alguns cenários.
- Laplace fornece uma aproximação Bayesiana local fundamentada em torno de uma única solução, muitas vezes mais barata do que conjuntos na inferência (dependendo da amostragem) e conceitualmente ligada à curvatura.
Um padrão pragmático comum é:
- Usar Laplace quando você quer “incerteza meio Bayesiana” com um modelo treinado e consegue arcar com a estimativa de curvatura.
- Usar conjuntos profundos quando você quer desempenho robusto e comportamento multimodal ao custo de treinar múltiplos modelos.
Limitações e modos de falha
A aproximação de Laplace é poderosa, mas vem com ressalvas importantes — especialmente em aprendizado profundo.
1) Gaussianidade local (uma aproximação local)
Laplace assume que a posterior é bem aproximada por uma Gaussiana próxima ao MAP.
- Se a posterior for assimétrica, com caudas pesadas, ou fortemente não quadrática, Laplace pode estimar mal a incerteza.
- Posteriors de redes neurais raramente são globalmente Gaussianas; Laplace é fundamentalmente um método local.
Implicação prática: ela geralmente funciona melhor quando a posterior é dominada por uma bacia e a região perto do MAP é razoavelmente quadrática.
2) Multi-modalidade e simetrias em redes neurais
Redes neurais frequentemente têm muitas soluções equivalentes devido a:
- simetrias de permutação (troca de unidades ocultas),
- simetrias de sinal (em algumas arquiteturas),
- múltiplas bacias com perda de treinamento semelhante.
Uma única Gaussiana não pode representar uma posterior multimodal. Laplace escolherá um modo (a bacia do MAP) e ignorará os demais, potencialmente subestimando a incerteza.
Este é um motivo pelo qual conjuntos profundos podem ter desempenho melhor: eles implicitamente fazem média sobre múltiplos modos.
3) Escalabilidade e custo computacional
Mesmo com aproximações, a estimativa de curvatura pode ser cara:
- Hessiana completa é impossível em escala.
- Mesmo aproximações diagonais ou bloco-diagonais adicionam sobrecarga.
- Métodos estilo KFAC requerem implementação e ajuste cuidadosos.
Além disso, armazenar e amostrar a partir de grandes covariâncias estruturadas pode não ser trivial.
4) Hessianas indefinidas e estabilidade numérica
A Hessiana verdadeira de redes profundas pode ser indefinida (indefinite) (tendo autovalores negativos), especialmente se o modelo não estiver em um mínimo local estrito ou se a paisagem de perda for complexa.
- Inverter uma matriz indefinida não produz uma covariância válida.
- Praticantes frequentemente usam alternativas PSD como GGN/Fisher e aplicam amortecimento.
5) Sensibilidade à prior e hiperparâmetros
A posterior depende de (p(w)). Na prática, a precisão da prior (decaimento de peso) influencia fortemente a incerteza.
- Prior forte demais ⇒ encolhimento excessivamente confiante.
- Prior fraca demais ⇒ posterior excessivamente ampla.
Alguns fluxos de trabalho ajustam a precisão da prior por maximização de evidência (evidence maximization) (ML tipo II / Bayes empírico), mas isso adiciona complexidade.
6) Descompasso no espaço de funções
Uma Gaussiana no espaço de pesos (weight space) não necessariamente se traduz em uma distribuição sensata no espaço de funções (function space), especialmente em redes superparametrizadas, nas quais muitas direções nos pesos mal alteram as predições. Laplace pode alocar incerteza em direções que não importam para as saídas (ou perder direções que importam), dependendo da aproximação de curvatura.
Dicas práticas e melhores práticas
- Comece com Laplace na última camada para redes profundas grandes; frequentemente é uma boa linha de base.
- Prefira curvatura PSD no estilo GGN/Fisher em vez de Hessianas brutas para classificação, para evitar indefinição.
- Use amortecimento ((H + \epsilon I)) para estabilizar inversões e amostragem.
- Avalie a qualidade da incerteza usando métricas como:
- log-verossimilhança negativa (NLL),
- erro de calibração (veja Calibração Probabilística),
- detecção fora da distribuição (dependente da tarefa).
- Se você suspeitar que multi-modalidade é importante, considere combinar abordagens:
- conjunto de soluções MAP + Laplace por membro (mistura de Gaussianas), embora mais caro.
Resumo
A aproximação de Laplace transforma a inferência Bayesiana em um fluxo de trabalho prático:
- Treinar uma rede neural até uma solução MAP (frequentemente treinamento padrão com decaimento de peso).
- Aproximar a posterior localmente como uma Gaussiana usando curvatura: [ p(w \mid \mathcal{D}) \approx \mathcal{N}(w_{\text{MAP}}, H^{-1}). ]
- Usar essa posterior aproximada para estimar incerteza preditiva via amostragem ou linearização.
Ela é especialmente atraente porque é:
- fundamentada em teoria Bayesiana,
- compatível com pipelines de treinamento existentes,
- frequentemente mais barata do que inferência Bayesiana completa.
Mas deve ser usada com cuidado devido a:
- suposições Gaussianas locais,
- restrições de escalabilidade da Hessiana,
- incapacidade de representar posteriors multimodais comuns em aprendizado profundo.
Na prática, Laplace é melhor vista como um método de incerteza fundamentado e baseado em curvatura, que fica entre heurísticas leves (como dropout Monte Carlo) e aproximações Bayesianas mais pesadas (como conjuntos ou MCMC), com desempenho que depende criticamente da aproximação da Hessiana e do regime de modelagem.