Raciocínio sob Incerteza, Probabilidade e Teorema de Bayes
por Frank de Alcantara em 16/08/2026
No artigo anterior, fatores de certeza permitiram anexar números às regras de um sistema especialista. Aqueles números eram úteis, mas não obedeciam necessariamente aos axiomas da probabilidade. Agora trocaremos o remendo histórico por uma teoria capaz de responder, sem contradição, quanto uma evidência deve alterar uma crença.
Índice da Série: Inteligência Artificial Aplicada
- 1. Fundamentos da IA e Agentes Inteligentes
- 2. Resolução de Problemas por Busca: Espaço de Estados e Busca Não Informada
- 3. Busca Informada: Heurísticas e o Algoritmo A*
- 6. Computação Evolucionária e Algoritmos Genéticos
- 7. Representação do Conhecimento, Lógica e Inferência
- 8. Sistemas Especialistas, Regras e Ontologias
- 9. Raciocínio sob Incerteza, Probabilidade e Teorema de Bayes (Você está aqui)
- 10. Redes Bayesianas e Classificação Naive Bayes
Um agente raramente observa o estado verdadeiro do mundo. Sensores falham, mensagens chegam incompletas e causas diferentes produzem sintomas iguais. A lógica clássica exige escolher entre verdadeiro e falso; a probabilidade permite representar o que o agente sabe antes que a incerteza desapareça. Ela não afirma que o mundo esteja parcialmente verdadeiro. Afirma que nosso conhecimento sobre qual mundo ocorreu é incompleto.
1. Incerteza e grau de crença
Vamos chamar de $\Omega$ o espaço amostral, conjunto de todos os resultados mutuamente exclusivos do experimento. Um evento $A\subseteq\Omega$ reúne os resultados nos quais uma proposição é verdadeira. Uma função de probabilidade $P$ atribui números aos eventos e obedece a três axiomas:
\[P(A)\ge 0,\qquad P(\Omega)=1,\]e, para eventos disjuntos $A$ e $B$,
\[P(A\cup B)=P(A)+P(B).\]Desses axiomas deduzimos $P(\varnothing)=0$ e a regra do complemento,
\[P(\neg A)=1-P(A).\]O número pode representar frequência de longo prazo, grau de crença racional ou uma distribuição aprendida. Para a inferência deste artigo, importa que as mesmas regras algébricas sejam respeitadas. Se um agente atribui $P(A)=0{,}7$ e $P(\neg A)=0{,}6$, o problema não é filosófico; a soma $1{,}3$ viola a normalização.
2. Probabilidade conjunta, marginal e condicional
A probabilidade conjunta $P(A,B)$ mede a chance de $A$ e $B$ ocorrerem. Considere uma população hipotética de $10\,000$ pessoas:
| teste positivo | teste negativo | total | |
|---|---|---|---|
| doente | 99 | 1 | 100 |
| saudável | 495 | 9 405 | 9 900 |
| total | 594 | 9 406 | 10 000 |
A célula superior esquerda representa
\[P(D,+)=\frac{99}{10\,000}=0{,}0099.\]Uma marginal elimina uma variável somando seus valores. A probabilidade de resultado positivo é
\[P(+)=P(D,+)+P(\neg D,+) =\frac{99+495}{10\,000}=0{,}0594.\]A probabilidade condicional restringe o universo aos casos em que a condição ocorreu:
\[P(A\mid B)=\frac{P(A,B)}{P(B)},\qquad P(B)>0.\]Logo,
\[P(D\mid +)=\frac{99}{594}=\frac16\approx 0{,}1667.\]Da definição obtemos a regra do produto,
\[P(A,B)=P(A\mid B)P(B),\]e, repetindo-a, a regra da cadeia:
\[P(A,B,C)=P(A)P(B\mid A)P(C\mid A,B).\]Exercícios resolvidos
1. Calcule todas as condicionais da tabela.
Solução:
Temos $P(+\mid D)=99/100=0{,}99$, $P(-\mid D)=0{,}01$, $P(+\mid\neg D)=495/9\,900=0{,}05$ e $P(-\mid\neg D)=0{,}95$.
2. Marginalize o estado de saúde.
Solução:
$P(+)=0{,}0099+0{,}0495=0{,}0594$ e $P(-)=0{,}9406$.
3. Use a cadeia com $P(A)=0{,}4$, $P(B\mid A)=0{,}5$ e $P(C\mid A,B)=0{,}2$.
Solução:
O produto dá $P(A,B,C)=0{,}04$.
4. Verifique se doença e resultado positivo são independentes.
Solução:
Não são: $P(D,+)=0{,}0099$, enquanto $P(D)P(+)=0{,}01\cdot0{,}0594=0{,}000594$.
5. Calcule $P(D\cup +)$.
Solução:
Pela inclusão e exclusão, $0{,}01+0{,}0594-0{,}0099=0{,}0595$.
3. Independência e independência condicional
Dois eventos são independentes quando conhecer um não altera a probabilidade do outro:
\[P(A\mid B)=P(A).\]Multiplicando por $P(B)$, obtemos a forma equivalente
\[P(A,B)=P(A)P(B).\]Independência não significa impossibilidade de ocorrerem juntos, nem ausência de relação causal em qualquer modelo concebível. Significa uma igualdade precisa na distribuição considerada.
A independência condicional acrescenta uma informação $C$:
\[P(A,B\mid C)=P(A\mid C)P(B\mid C).\]Dois testes realizados com o mesmo método podem ser aproximadamente independentes dado o estado real da doença, mas não são independentes sem essa condição. Se o primeiro teste veio positivo, passamos a considerar mais provável que a pessoa esteja doente; isso eleva a chance do segundo positivo. A causa comum cria associação marginal.
Essa propriedade produz uma economia combinatória. Uma distribuição conjunta de $n$ variáveis binárias exige $2^n-1$ parâmetros livres. Se as dependências condicionais permitem fatorá-la em tabelas locais pequenas, o crescimento pode cair de exponencial para linear. No próximo artigo, redes bayesianas desenharão exatamente essa fatoração.
4. O teorema de Bayes
Podemos escrever a mesma conjunta em duas direções:
\[P(H,E)=P(E\mid H)P(H)=P(H\mid E)P(E).\]Isolando o termo que queremos:
\[P(H\mid E)=\frac{P(E\mid H)P(H)}{P(E)}.\]$P(H)$ é a probabilidade a priori, anterior à evidência. $P(E\mid H)$ é a verossimilhança, o quanto a hipótese prevê a evidência. $P(H\mid E)$ é a probabilidade a posteriori. O denominador normaliza:
\[P(E)=\sum_h P(E\mid h)P(h),\]quando as hipóteses $h$ são mutuamente exclusivas e cobrem todos os casos.
Para duas hipóteses, a forma de chances deixa o mecanismo visível:
\[\frac{P(H\mid E)}{P(\neg H\mid E)} = \frac{P(E\mid H)}{P(E\mid\neg H)} \frac{P(H)}{P(\neg H)}.\]O primeiro fator é a razão de verossimilhanças. Evidência nova multiplica as chances anteriores; não apaga a taxa-base.
Exercícios resolvidos
1. Derive Bayes.
Solução:
Igualamos $P(E\mid H)P(H)$ a $P(H\mid E)P(E)$ e dividimos ambos os lados por $P(E)$.
2. Identifique os termos em um diagnóstico.
Solução:
Prevalência é a prior; sensibilidade é $P(+\mid D)$; positividade total é a evidência; $P(D\mid+)$ é a posterior.
3. Considere três máquinas com produções $0{,}5$, $0{,}3$, $0{,}2$ e taxas de defeito $0{,}01$, $0{,}02$, $0{,}04$. Qual produziu uma peça defeituosa?
Solução:
As massas são $0{,}005$, $0{,}006$ e $0{,}008$; normalizando pela soma $0{,}019$, obtemos $26{,}32\%$, $31{,}58\%$ e $42{,}11\%$.
4. Converta o teste da tabela para chances.
Solução:
As chances anteriores são $0{,}01/0{,}99$ e a razão positiva é $0{,}99/0{,}05=19{,}8$. O produto vale $0{,}2$, correspondente a $0{,}2/(1+0{,}2)=1/6$.
5. Duas urnas são escolhidas com a mesma chance. A primeira tem três bolas vermelhas e uma azul; a segunda, uma vermelha e três azuis. Qual a chance da primeira após retirar uma vermelha?
Solução:
A evidência vale $0{,}75\cdot0{,}5+0{,}25\cdot0{,}5=0{,}5$; Bayes dá $0{,}75$.
5. O exemplo do teste médico
Vamos retomar o exemplo hipotético: prevalência de $1\%$, sensibilidade de $99\%$ e especificidade de $95\%$. Especificidade é $P(-\mid\neg D)$, portanto a taxa de falso positivo é $5\%$. Bayes produz
\[P(D\mid+) = \frac{0{,}99\cdot0{,}01} {0{,}99\cdot0{,}01+0{,}05\cdot0{,}99} =0{,}1667.\]Não há paradoxo. Em $10\,000$ pessoas esperamos $99$ verdadeiros positivos e $495$ falsos positivos. A sensibilidade responde qual é a chance de um resultado positivo se há doença?. A pergunta clínica depois de um resultado é a inversa: qual é a chance de doença se houve um resultado positivo?. Confundir as duas condicionais é trocar numerador e universo.
Exercícios resolvidos
1. Reproduza a posterior.
Solução:
$0{,}0099/(0{,}0099+0{,}0495)=0{,}1667$.
2. Use prevalências de $0{,}1\%$ e $10\%$.
Solução:
As probabilidades posteriores são, respectivamente, $1{,}943\%$ e $68{,}750\%$.
3. Eleve a especificidade de $95\%$ para $99\%$, mantendo prevalência e sensibilidade.
Solução:
A posterior sobe para $0{,}0099/(0{,}0099+0{,}0099)=50\%$.
4. Conte resultados em $10\,000$ pessoas.
Solução:
Esperamos $99$ verdadeiros positivos, $1$ falso negativo, $495$ falsos positivos e $9\,405$ verdadeiros negativos.
5. Explique a taxa-base.
Solução:
Mesmo uma pequena fração de falsos positivos aplicada aos $9\,900$ casos saudáveis supera os verdadeiros positivos produzidos entre apenas $100$ casos doentes.
6. Atualização sequencial
Depois de observar $E_1$, a posterior torna-se a nova prior. Sob independência condicional das evidências dada a hipótese:
\[P(H\mid E_1,E_2) \propto P(E_2\mid H)P(E_1\mid H)P(H).\]Dois resultados positivos no teste hipotético levam a
\[P(D\mid +,+)\approx 0{,}7984.\]Um positivo seguido de negativo leva a aproximadamente $0{,}0021$. A ordem não altera o valor quando usamos as mesmas verossimilhanças, pois a multiplicação comuta. Na prática, testes podem compartilhar erros de coleta, equipamento ou população. Tratar evidências correlacionadas como independentes conta a mesma informação duas vezes e produz confiança excessiva.
Exercícios resolvidos
1. Calcule dois positivos.
Solução:
A primeira atualização produz $1/6$; usando-a como nova prior, a segunda produz $79{,}84\%$.
2. Calcule positivo e negativo.
Solução:
A razão do negativo é $0{,}01/0{,}95$; combinada com a razão positiva e as chances iniciais, resulta em $0{,}2101\%$.
3. Troque a ordem.
Solução:
O produto das razões $19{,}8\cdot(0{,}01/0{,}95)$ não muda, logo a posterior é igual.
4. Combine três positivos.
Solução:
As chances finais são $(0{,}01/0{,}99)\cdot19{,}8^3\approx78{,}41$; a probabilidade é $98{,}74\%$.
5. Explique a convergência.
Solução:
Repetir uma evidência com razão maior que $1$ multiplica as chances por essa razão; sob o modelo de independência, elas tendem ao infinito e a probabilidade tende a $1$.
7. Atualização bayesiana em C++23
O programa abaixo mantém a matemática explícita. Teste guarda sensibilidade e especificidade; atualizar escolhe a verossimilhança de um resultado positivo ou negativo; std::span permite receber qualquer sequência contígua de evidências sem copiar nem possuir os dados.
#include <array>
#include <cassert>
#include <iomanip>
#include <iostream>
#include <span>
struct Teste {
double sensibilidade;
double especificidade;
};
[[nodiscard]] constexpr double atualizar(
const double priori,
const Teste teste,
const bool positivo) noexcept {
const double p_evidencia_se_doente =
positivo ? teste.sensibilidade : 1.0 - teste.sensibilidade;
const double p_evidencia_se_saudavel =
positivo ? 1.0 - teste.especificidade : teste.especificidade;
const double numerador = p_evidencia_se_doente * priori;
const double denominador =
numerador + p_evidencia_se_saudavel * (1.0 - priori);
return numerador / denominador;
}
[[nodiscard]] double atualizar_sequencia(
double priori,
const Teste teste,
const std::span<const bool> evidencias) {
for (const bool evidencia : evidencias) {
priori = atualizar(priori, teste, evidencia);
}
return priori;
}
static_assert(atualizar(0.01, Teste{0.99, 0.95}, true) > 0.1666);
static_assert(atualizar(0.01, Teste{0.99, 0.95}, true) < 0.1667);
int main() {
constexpr Teste teste{0.99, 0.95};
constexpr std::array dois_positivos{true, true};
constexpr std::array positivo_negativo{true, false};
const double um_positivo = atualizar(0.01, teste, true);
const double dois = atualizar_sequencia(0.01, teste, dois_positivos);
const double misto = atualizar_sequencia(0.01, teste, positivo_negativo);
assert(um_positivo > 0.16 && um_positivo < 0.17);
assert(dois > 0.79 && dois < 0.81);
assert(misto > 0.002 && misto < 0.003);
std::cout << std::fixed << std::setprecision(4)
<< "P(doente | +) = " << um_positivo << '\n'
<< "P(doente | +,+) = " << dois << '\n'
<< "P(doente | +,-) = " << misto << '\n';
}
O código foi compilado com MSVC 19.51, /std:c++latest /permissive- /W4 /EHsc /utf-8 /O2. As três saídas foram 0.1667, 0.7984 e 0.0021.
O laboratório permite alterar prevalência, sensibilidade e especificidade. Observe primeiro um resultado positivo; depois acrescente outro resultado e compare a contagem esperada de verdadeiros e falsos positivos.
Conclusão
Probabilidade condicional não é uma troca de etiquetas. $P(E\mid H)$ e $P(H\mid E)$ respondem perguntas diferentes, e Bayes é a ponte entre elas. A prior impede que uma evidência impressionante apague a frequência básica; a verossimilhança mede quanto a hipótese previa o observado; a normalização força hipóteses concorrentes a compartilhar uma unidade de crença.
Ainda há um problema: uma tabela conjunta cresce exponencialmente. No próximo artigo, transformaremos independências condicionais em um grafo e construiremos redes bayesianas e o classificador Naive Bayes.
Acrônimos e Abreviações neste artigo
A seguir está a lista de todos os acrônimos e abreviações identificados no texto, organizados em ordem alfabética com o termo original em inglês e a tradução para o português:
| Acrônimo / Abreviação | Definição em Inglês | Tradução em Português |
|---|---|---|
BLAS |
Basic Linear Algebra Subprograms | Subprogramas Básicos de Álgebra Linear |
CPU / CPUs |
Central Processing Unit | Unidade Central de Processamento |
FLOPs |
Floating Point Operations | Operações de Ponto Flutuante |
FP32 |
32-bit Floating Point | Ponto Flutuante de 32 bits |
GEMM |
General Matrix Multiply | Multiplicação Geral de Matrizes |
GPU |
Graphics Processing Unit | Unidade de Processamento Gráfico |
IA |
Artificial Intelligence | Inteligência Artificial |
I-JEPA |
Image Joint-Embedding Predictive Architecture | Arquitetura Preditiva de Incorporação Conjunta de Imagem |
JEPA |
Joint-Embedding Predictive Architecture | Arquitetura Preditiva de Incorporação Conjunta |
KiB |
Kibibyte | Kibibyte |
MAE |
Masked Autoencoder | Autocodificador Mascarado |
MSE |
Mean Squared Error | Erro Quadrático Médio |
MSVC |
Microsoft Visual C++ | Microsoft Visual C++ |
PCA |
Principal Component Analysis | Análise de Componentes Principais |
SIMD |
Single Instruction, Multiple Data | Instrução Única, Múltiplos Dados |
SimCLR |
Simple Framework for Contrastive Learning of Visual Representations | Estrutura Simples para Aprendizado Contrastivo de Representações Visuais |
Referências
GIGERENZER, G.; EDWARDS, A. Simple tools for understanding risks: from innumeracy to insight. BMJ, London, v. 327, p. 741–744, 2003. DOI: https://doi.org/10.1136/bmj.327.7417.741. Acesso em: 24 jul. 2026.
LUGER, G. F. Artificial Intelligence: structures and strategies for complex problem solving. 6. ed. Albuquerque: University of New Mexico, 2009. Disponível em: https://www.cs.unm.edu/~luger/ai-final/. Acesso em: 24 jul. 2026.
MICROSOFT. Microsoft C/C++ language conformance by Visual Studio version. Redmond, 2026. Disponível em: https://learn.microsoft.com/en-us/cpp/overview/visual-cpp-language-conformance?view=msvc-170. Acesso em: 24 jul. 2026.
RUSSELL, S.; NORVIG, P. Artificial Intelligence: a modern approach. 4. ed. Hoboken: Pearson, 2020. Disponível em: https://aima.cs.berkeley.edu/. Acesso em: 24 jul. 2026.
UNIVERSITY OF CALIFORNIA, BERKELEY. Introduction to Artificial Intelligence: probability rundown. Berkeley, 2024. Disponível em: https://inst.eecs.berkeley.edu/~cs188/textbook/bayes-nets/probability.html. Acesso em: 24 jul. 2026.
Índice da Série: Inteligência Artificial Aplicada
- 1. Fundamentos da IA e Agentes Inteligentes
- 2. Resolução de Problemas por Busca: Espaço de Estados e Busca Não Informada
- 3. Busca Informada: Heurísticas e o Algoritmo A*
- 6. Computação Evolucionária e Algoritmos Genéticos
- 7. Representação do Conhecimento, Lógica e Inferência
- 8. Sistemas Especialistas, Regras e Ontologias
- 9. Raciocínio sob Incerteza, Probabilidade e Teorema de Bayes (Você está aqui)
- 10. Redes Bayesianas e Classificação Naive Bayes
(Updated: )