Redes Bayesianas

Visão geral

Uma rede bayesiana (Bayesian network) (também rede de Bayes (Bayes net) ou rede de crença (belief network)) é um modelo probabilístico que representa uma distribuição de probabilidade conjunta (joint probability distribution) sobre um conjunto de variáveis aleatórias usando:

  • um grafo acíclico direcionado (directed acyclic graph, DAG), e
  • um conjunto de distribuições de probabilidade condicional (conditional probability distributions) (frequentemente tabelas) que quantificam relações.

Redes bayesianas são um tema central em Modelos Gráficos Probabilísticos (Probabilistic Graphical Models): elas permitem codificar independências condicionais (conditional independencies) explicitamente, o que pode tornar distribuições conjuntas complexas muito mais compactas e interpretáveis do que uma tabela não estruturada sobre todas as variáveis.

Elas são amplamente usadas para:

  • raciocínio probabilístico (probabilistic reasoning) (diagnóstico, previsão, explicação),
  • apoio à decisão (decision support) sob incerteza,
  • fusão de sensores (sensor fusion) e robótica,
  • modelagem causal (causal modeling) (quando as arestas são interpretadas causalmente).

Em contraste com modelos não direcionados, como campos aleatórios de Markov (Markov random fields) (e extensões como Redes Lógicas de Markov (Markov Logic Networks)), redes bayesianas usam arestas direcionadas, o que se alinha naturalmente a relações assimétricas (por exemplo, causa → efeito) e à fatoração de probabilidades condicionais.

O que uma Rede Bayesiana Representa

Estrutura do grafo

Uma rede bayesiana consiste em um grafo acíclico direcionado (G = (V, E)) onde:

  • cada nó (X_i \in V) é uma variável aleatória (discreta ou contínua),
  • cada aresta direcionada (X_j \to X_i) indica que (X_j) é um pai de (X_i).

A restrição-chave é a aciclicidade: você não pode seguir arestas direcionadas e retornar ao mesmo nó. Isso garante que a fatoração abaixo seja bem definida.

Parâmetros (tabelas/distribuições condicionais)

Para cada variável (X_i), o modelo inclui uma distribuição de probabilidade condicional (conditional probability distribution, CPD):

[ P(X_i \mid \mathrm{Pa}(X_i)) ]

onde (\mathrm{Pa}(X_i)) são os pais de (X_i) no grafo acíclico direcionado.

Para variáveis discretas, isso frequentemente é uma tabela de probabilidade condicional (conditional probability table, CPT). Para variáveis contínuas, escolhas comuns incluem:

  • CPDs linear-gaussianas (gaussiana com média como função linear dos pais),
  • gaussianas condicionais para casos mistos discreto/contínuo (com restrições).

A fatoração da distribuição conjunta

Uma rede bayesiana define a distribuição conjunta completa como:

[ P(X_1, \dots, X_n) = \prod_{i=1}^{n} P(X_i \mid \mathrm{Pa}(X_i)) ]

Essa fatoração é o principal ganho: você especifica distribuições condicionais locais em vez de uma única tabela conjunta enorme.

Independência Condicional e d-separação

O grafo acíclico direcionado não é apenas um desenho — ele codifica suposições de independência condicional. Intuitivamente, um nó é independente de seus não-efeitos dado suas causas diretas, mas o critério preciso é a d-separação (d-separation).

Propriedade de Markov local

Cada variável é condicionalmente independente de seus não-descendentes dados seus pais:

[ X_i \perp!!!\perp \text{NonDesc}(X_i) \mid \mathrm{Pa}(X_i) ]

d-separação (intuição)

Dois conjuntos de nós (A) e (B) são d-separados por um conjunto (S) se todos os caminhos entre (A) e (B) estão “bloqueados” dado (S). O que é bloqueado/desbloqueado depende de três padrões canônicos ao longo de um caminho:

  1. Cadeia: (X \to Z \to Y)
    Condicionar em (Z) bloqueia o caminho: (X \perp Y \mid Z)

  2. Garfo (causa comum): (X \leftarrow Z \to Y)
    Condicionar em (Z) bloqueia o caminho: (X \perp Y \mid Z)

  3. Colisor (efeito comum): (X \to Z \leftarrow Y)
    Condicionar em (Z) desbloqueia o caminho (e condicionar em descendentes de (Z) também pode desbloqueá-lo). Sem condicionamento, o caminho fica bloqueado.

Esse “comportamento de colisor” é uma grande fonte de erros sutis de raciocínio em modelagem probabilística e um conceito-chave que conecta redes de Bayes ao raciocínio causal.

Um exemplo prático: a Rede do Alarme

Uma rede bayesiana clássica de brinquedo (de Pearl) modela um alarme disparado por um arrombamento ou um terremoto:

Variáveis:

  • (B): Arrombamento (T/F)
  • (E): Terremoto (T/F)
  • (A): Alarme (T/F)
  • (J): JohnLiga (T/F)
  • (M): MaryLiga (T/F)

Grafo (arestas):

  • (B \to A)
  • (E \to A)
  • (A \to J)
  • (A \to M)

Fatoração:

[ P(B,E,A,J,M) = P(B),P(E),P(A \mid B,E),P(J \mid A),P(M \mid A) ]

Esboço de uma tabela de probabilidade condicional

  • (P(B)): arrombamento é raro (por exemplo, 0.001)
  • (P(E)): terremoto é raro (por exemplo, 0.002)
  • (P(A \mid B,E)): alarme é provável se houver arrombamento, relativamente provável se houver terremoto, muito provável se houver ambos, e improvável caso contrário
  • (P(J \mid A)), (P(M \mid A)): vizinhos têm maior probabilidade de ligar se o alarme tocar

O que você pode fazer com ela

Você pode responder a consultas como:

  • Inferência diagnóstica: (P(B \mid J{=}T, M{=}T))
    “Dado que ambos os vizinhos ligaram, quão provável foi um arrombamento?”

  • Explicação alternativa (explaining away): (P(B \mid A{=}T, E{=}T)) vs (P(B \mid A{=}T))
    Se você já sabe que houve um terremoto, isso pode reduzir a probabilidade de que um arrombamento tenha causado o alarme (o terremoto “explica” o alarme).

Esse fenômeno de “explicação alternativa” é uma marca registrada de redes bayesianas com colisor (aqui (B \to A \leftarrow E)).

Inferência em Redes Bayesianas

Inferência (inference) significa calcular probabilidades de interesse dadas evidências, como:

  • probabilidades marginais: (P(X))
  • probabilidades a posteriori: (P(X \mid e))
  • MAP/MPE: máximo a posteriori (maximum a posteriori, MAP) / explicação mais provável (most probable explanation, MPE) dadas as evidências

A inferência exata pode ser cara — muitos problemas de inferência em redes de Bayes são NP-difíceis (NP-hard) no pior caso — mas existem métodos exatos e aproximados poderosos.

Inferência exata: Eliminação de Variáveis

A Eliminação de Variáveis (Variable Elimination, VE) computa consultas manipulando fatores (tabelas/funções) e somando variáveis irrelevantes.

Suponha que queremos (P(B \mid J{=}T, M{=}T)). Em alto nível:

  1. Comece com os fatores da rede bayesiana:
    • (P(B)), (P(E)), (P(A \mid B,E)), (P(J \mid A)), (P(M \mid A))
  2. Incorpore a evidência (J{=}T, M{=}T) restringindo os fatores correspondentes:
    • (P(J{=}T \mid A)), (P(M{=}T \mid A))
  3. Escolha uma ordem de eliminação para variáveis ocultas (por exemplo, eliminar (E), depois (A))
  4. Multiplique os fatores relevantes e some a variável que está sendo eliminada
  5. Normalize ao final para obter uma probabilidade condicional

A ordem de eliminação importa: o tamanho dos fatores intermediários pode explodir. Escolher uma boa ordem se relaciona à largura de árvore (treewidth) do grafo, e sistemas práticos usam heurísticas (preenchimento mínimo (min-fill), grau mínimo (min-degree)).

Inferência exata: Propagação de Crenças (Soma-Produto)

Em redes bayesianas estruturadas em árvore (tree-structured) (ou, mais geralmente, grafos com conexão única (singly-connected graphs) / poliarvores (polytrees)), a propagação de crenças (belief propagation) computa marginais exatas de forma eficiente via passagem local de mensagens.

  • Soma-produto (sum-product) computa marginais (P(X_i \mid e))
  • Máximo-produto (max-product) computa atribuições MAP

Em grafos com ciclos, pode-se usar “propagação de crenças com loops (loopy belief propagation)” como aproximação; frequentemente funciona bem na prática, mas não há garantia de convergência nem de exatidão.

A propagação de crenças é estreitamente relacionada à inferência em Campos Aleatórios de Markov (Markov Random Fields) e grafos de fatores (factor graphs); muitas implementações convertem redes bayesianas para uma representação em grafo de fatores para passagem de mensagens.

Inferência aproximada

Quando a inferência exata é cara demais, métodos aproximados comuns incluem:

Métodos aproximados são essenciais em modelos grandes e densamente conectados ou quando é necessária inferência em tempo real.

Aprendendo Redes Bayesianas a partir de dados

O aprendizado geralmente é dividido em:

  1. Aprendizado de parâmetros (parameter learning) (ajustar valores de tabela/distribuição condicional dado um grafo)
  2. Aprendizado de estrutura (structure learning) (descobrir o próprio grafo acíclico direcionado)

Aprendizado de parâmetros (estrutura conhecida)

Estimação por máxima verossimilhança

Com dados completos e variáveis discretas, a estimação por máxima verossimilhança (maximum likelihood estimation, MLE) é direta: cada entrada da tabela condicional é uma contagem normalizada.

Para um nó (X) com pais (\mathrm{Pa}(X)), para cada configuração dos pais (u):

[ \hat{P}(X=x \mid \mathrm{Pa}(X)=u) = \frac{N(x,u)}{\sum_{x'} N(x',u)} ]

Estimação bayesiana de parâmetros (suavização)

A máxima verossimilhança pode sobreajustar quando os dados são esparsos (contagens zero levam a probabilidades zero). Uma correção comum é um prior de Dirichlet (Dirichlet prior), produzindo estimativas suavizadas (smoothed) (máximo a posteriori / média a posteriori (posterior mean)).

Para linhas binárias/discretas de tabelas condicionais, priors de Dirichlet são conjugados e fáceis de atualizar.

Dados ausentes e variáveis latentes: EM

Se algumas variáveis não são observadas, o aprendizado de parâmetros normalmente usa o algoritmo de Maximização da Expectativa (Expectation-Maximization, EM):

  • etapa E: computar estatísticas suficientes esperadas sob os parâmetros atuais (requer inferência)
  • etapa M: atualizar parâmetros a partir das contagens esperadas

Veja Maximização da Expectativa (Expectation Maximization) para o arcabouço geral.

Aprendizado de estrutura (grafo acíclico direcionado desconhecido)

Aprender o grafo é mais difícil porque o espaço de grafos acíclicos direcionados cresce de forma super-exponencial com o número de variáveis. Abordagens comuns:

Métodos baseados em pontuação

Defina uma pontuação (quanto maior, melhor) e então busque entre grafos:

  • BIC/MDL (penaliza complexidade)
  • pontuações bayesianas (por exemplo, BDeu)

Estratégias de busca:

  • subida gulosa de encosta (greedy hill climbing) com movimentos de adicionar/remover/inverter arestas
  • busca tabu (tabu search)
  • programação dinâmica (dynamic programming) para (n) pequeno
  • MCMC sobre estruturas (média bayesiana de modelos)

O aprendizado baseado em pontuação frequentemente produz bons modelos preditivos, mas pode gerar arestas difíceis de interpretar causalmente sem suposições adicionais.

Métodos baseados em restrições

Usam testes estatísticos de independência condicional para inferir o esqueleto do grafo e orientações:

  • algoritmo PC e variantes

Esses métodos dependem fortemente de:

  • correção e poder dos testes de independência,
  • tamanho de amostra suficiente,
  • suposições como fidelidade (as independências do grafo correspondem às da distribuição).

Métodos híbridos

Combinam poda baseada em restrições (reduzir arestas candidatas) com otimização baseada em pontuação.

Considerações práticas no aprendizado

  • Estruturas equivalentes: diferentes grafos acíclicos direcionados podem codificar o mesmo conjunto de independências condicionais (classe de equivalência de Markov (Markov equivalence class)). Dados puramente observacionais nem sempre conseguem distinguir direções.
  • Regularização (regularization) e priors importam, especialmente com dados esparsos.
  • Dados contínuos e mistos exigem famílias adequadas de distribuições condicionais (por exemplo, gaussiana linear) ou discretização (que pode perder informação).

Redes Bayesianas e Grafos Causais

Redes bayesianas se tornam grafos causais (causal graphs) quando as arestas são interpretadas como efeitos causais diretos (direct causal effects) e as distribuições condicionais são interpretadas como mecanismos intervencionais (interventional mechanisms).

Quantidades observacionais vs intervencionais

Uma rede de Bayes sempre define probabilidades observacionais como (P(Y \mid X=x)). Perguntas causais tratam de intervenções:

[ P(Y \mid do(X=x)) ]

O operador (do(\cdot)) (do-operator) representa definir ativamente (X) para um valor, quebrando sua dependência normal em relação a seus pais.

Ponto-chave:

  • (P(Y \mid X=x)) (condicionamento) não é, em geral, igual a (P(Y \mid do(X=x))) (intervenção), devido a confundimento (confounding) e efeitos de seleção (selection effects).

A inferência causal usa suposições adicionais (por exemplo, suficiência causal (causal sufficiency), ausência de confundidores não mensurados (unmeasured confounders)) e ferramentas como critérios de ajuste (adjustment criteria) e cálculo do (do-calculus). Veja Inferência Causal (Causal Inference) para um tratamento mais amplo.

Quando uma rede de Bayes é causal

Uma rede bayesiana pode ser tratada como um modelo causal se:

  • as arestas representam relações causais,
  • o sistema satisfaz a Condição de Markov Causal (Causal Markov) e, tipicamente, a suposição de Fidelidade (Faithfulness),
  • as distribuições condicionais representam mecanismos estáveis sob intervenção (uma noção formalizada em modelos causais estruturais (structural causal models)).

Esse é um dos motivos pelos quais redes bayesianas permanecem populares em domínios como epidemiologia, economia e raciocínio científico: elas podem unificar predição probabilística e explicação causal — quando as suposições são justificadas.

Exemplo de implementação (Python)

Abaixo há um pequeno exemplo ilustrativo usando pgmpy (uma biblioteca Python comum) para definir a Rede do Alarme e executar uma consulta de inferência. (Detalhes exatos da API podem mudar entre versões, mas o padrão é representativo.)

from pgmpy.models import BayesianNetwork
from pgmpy.factors.discrete import TabularCPD
from pgmpy.inference import VariableElimination

# Structure
model = BayesianNetwork([
    ("B", "A"), ("E", "A"),
    ("A", "J"), ("A", "M")
])

# Parameters (toy numbers)
cpd_B = TabularCPD("B", 2, [[0.999], [0.001]])  # P(B=0), P(B=1)
cpd_E = TabularCPD("E", 2, [[0.998], [0.002]])

cpd_A = TabularCPD(
    "A", 2,
    # A=0 row, A=1 row
    [[0.999, 0.71, 0.06, 0.05],
     [0.001, 0.29, 0.94, 0.95]],
    evidence=["B", "E"],
    evidence_card=[2, 2]
)

cpd_J = TabularCPD("J", 2, [[0.95, 0.10], [0.05, 0.90]], evidence=["A"], evidence_card=[2])
cpd_M = TabularCPD("M", 2, [[0.99, 0.30], [0.01, 0.70]], evidence=["A"], evidence_card=[2])

model.add_cpds(cpd_B, cpd_E, cpd_A, cpd_J, cpd_M)
model.check_model()

infer = VariableElimination(model)
posterior_B = infer.query(variables=["B"], evidence={"J": 1, "M": 1})
print(posterior_B)

Na prática, você também vai querer:

  • validar distribuições condicionais (normalização, priors sensatos),
  • lidar com dados ausentes (Maximização da Expectativa),
  • avaliar desempenho preditivo (log-verossimilhança (log-likelihood), calibração (calibration)).

Aplicações

Redes bayesianas são especialmente úteis quando você precisa de raciocínio de incerteza interpretável com dependências estruturadas.

Aplicações comuns incluem:

  • Diagnóstico médico e apoio à decisão: doenças → sintomas, incorporando resultados de testes como evidência.
  • Detecção de falhas e troubleshooting: componentes → falhas do sistema.
  • Análise de risco: modelagem de riscos em cascata em finanças, operações, engenharia de segurança.
  • Robótica e fusão de sensores: combinar leituras incertas de sensores com dinâmica; intimamente relacionado a modelos como Modelos Ocultos de Markov (Hidden Markov Models) e redes bayesianas dinâmicas (dynamic Bayesian networks).
  • PLN (processamento de linguagem natural, NLP) e extração de informação (information extraction) (historicamente): dependências probabilísticas entre características linguísticas; aprendizado profundo (deep learning) é dominante hoje, mas redes bayesianas permanecem úteis quando interpretabilidade e incerteza explícita importam.
  • Descoberta causal e modelagem científica: aprender estruturas causais candidatas a partir de dados (com ressalvas e suposições fortes).

Pontos fortes e limitações

Pontos fortes

  • Representação compacta de distribuições conjuntas de alta dimensão via independências condicionais.
  • Interpretabilidade: a estrutura do grafo comunica suposições.
  • Modularidade: distribuições condicionais podem ser elicitadas com especialistas ou aprendidas a partir de dados.
  • Compatibilidade causal: grafos acíclicos direcionados se alinham naturalmente ao raciocínio causal (sob suposições).

Limitações

  • Complexidade de inferência: inferência exata pode ser intratável em grafos densos.
  • Aprendizado de estrutura é difícil e frequentemente estatisticamente frágil sem muitos dados.
  • Afirmações causais exigem suposições extras; equivalência observacional limita a identificabilidade da direção.
  • Especificação incorreta do modelo (model misspecification): suposições erradas de independência podem levar a conclusões confiantes, porém incorretas.

Resumo

Redes bayesianas representam uma distribuição de probabilidade conjunta usando um grafo acíclico direcionado mais distribuições condicionais locais. Seu principal valor vem de codificar independências condicionais, permitindo raciocínio e aprendizado eficientes e — quando interpretadas adequadamente — conexões com grafos causais. Técnicas centrais incluem inferência exata via Eliminação de Variáveis e propagação de crenças, inferência aproximada via amostragem ou inferência variacional, e o aprendizado tanto de parâmetros (contagens/priors/Maximização da Expectativa) quanto de estrutura (baseado em pontuação, baseado em restrições, híbrido).

Elas continuam sendo uma ferramenta fundamental em IA (AI) para construir sistemas que precisam raciocinar sob incerteza com suposições transparentes e uma semântica probabilística rigorosa.