Bayesian Network
Un réseau bayésien modélise des variables et leurs dépendances conditionnelles sous forme de graphe orienté acyclique, afin que les observations puissent mettre à jour les probabilités des causes.
Un réseau bayésien, également appelé réseau de croyances, est un modèle graphique probabiliste qui représente un ensemble de variables aléatoires et leurs dépendances conditionnelles au moyen d’un graphe orienté acyclique (DAG). Chaque nœud correspond à une variable, comme une maladie, un symptôme ou une mesure de capteur, et chaque flèche va d’une influence directe vers la variable qu’elle affecte. Chaque nœud contient une table de probabilités conditionnelles qui donne sa distribution pour chaque combinaison des valeurs de ses parents. Ensemble, ces tables définissent la distribution conjointe complète de toutes les variables. À partir des observations de certaines variables, le réseau calcule les probabilités mises à jour des autres, ce qui en fait un outil de diagnostic, d’évaluation des risques et d’aide à la décision en situation d’incertitude. Judea Pearl a développé une grande partie de la théorie dans les années 1980, et ses travaux sur le raisonnement probabiliste et causal lui ont valu le prix Turing en 2011.
Structure et tables de probabilités conditionnelles#
Le graphe encode l’indépendance conditionnelle : une fois ses parents connus, chaque variable est indépendante des variables qui ne sont pas ses descendants. La distribution conjointe peut ainsi être factorisée en petits éléments locaux : P(X1, ..., Xn) = P(X1 | parents(X1)) × ... × P(Xn | parents(Xn)). Le réseau classique cambriolage-alarme des travaux de Pearl, utilisé dans tout le manuel Intelligence artificielle : une approche moderne de Russell et Norvig, comporte cinq variables binaires. Un cambriolage ou un tremblement de terre peut déclencher une alarme domestique, qui incite deux voisins, John et Mary, à appeler le propriétaire.
Une table de distribution conjointe complète sur cinq variables binaires nécessite 31 probabilités indépendantes. Le réseau n’en nécessite que 10 : une pour le cambriolage et une pour le tremblement de terre, quatre pour l’alarme selon chaque combinaison de ses deux parents, et deux pour chaque voisin en fonction de l’alarme. Les économies augmentent rapidement avec le nombre de variables, car la taille de chaque table dépend uniquement du nombre de parents de son nœud.
Inférence : mise à jour des croyances à partir des observations#
L’inférence fixe les variables observées et calcule la distribution a posteriori d’une variable cible en appliquant le théorème de Bayes à l’ensemble du graphe. Elle fonctionne dans toutes les directions : des causes vers les effets (prédiction), des effets vers les causes (diagnostic) et entre les causes d’un effet partagé. Ce dernier cas, appelé explication par neutralisation, signifie qu’une fois l’alarme entendue, apprendre qu’un tremblement de terre s’est produit réduit la probabilité d’un cambriolage. L’inférence exacte par énumération ou élimination de variables est réalisable sur de petits réseaux ou des réseaux arborescents, mais elle est NP-difficile en général. Les grands réseaux recourent donc à des méthodes approximatives, comme la pondération par vraisemblance, l’échantillonnage de Gibbs ou la propagation de croyances en boucle.
Cet exemple répond par énumération à la question du manuel P(Burglary | John calls, Mary calls), en faisant la somme de la distribution conjointe factorisée sur les variables non observées du tremblement de terre et de l’alarme :
from itertools import product
# Conditional probability tables of the burglary-alarm network
p_burglary, p_earthquake = 0.001, 0.002
p_alarm = {(True, True): 0.95, (True, False): 0.94, (False, True): 0.29, (False, False): 0.001}
p_john = {True: 0.90, False: 0.05} # P(John calls | alarm)
p_mary = {True: 0.70, False: 0.01} # P(Mary calls | alarm)
def bern(p, value):
"""Return the probability of a binary outcome with success probability p."""
return p if value else 1 - p
# Evidence: both neighbors called. Sum the factored joint over the hidden variables.
joint = {True: 0.0, False: 0.0}
for b, e, a in product([True, False], repeat=3):
joint[b] += bern(p_burglary, b) * bern(p_earthquake, e) * bern(p_alarm[b, e], a) * p_john[a] * p_mary[a]
print(f"P(burglary | John and Mary call) = {joint[True] / sum(joint.values()):.3f}")Le script affiche 0.284, la même réponse que celle donnée dans le manuel. Deux appels font passer la probabilité d’un cambriolage de 1 sur 1 000 à environ 28 %. Les 72 % restants correspondent à des explications sans cambriolage, comme une alarme déclenchée par un tremblement de terre ou par un défaut, car les cambriolages sont très rares.
Apprentissage des réseaux bayésiens à partir de données#
Un réseau peut être construit manuellement à partir des connaissances d’experts, appris à partir de données, ou élaboré en combinant les deux approches. L’apprentissage des paramètres remplit les tables de probabilités conditionnelles à partir des fréquences observées, en utilisant des a priori pour lisser les combinaisons rares et l’algorithme de maximisation de l’espérance lorsque certaines valeurs manquent. L’apprentissage de la structure recherche le graphe lui-même, soit en attribuant un score aux graphes candidats selon un critère comme le critère d’information bayésien, soit en effectuant des tests d’indépendance conditionnelle, comme le fait l’algorithme PC. Les flèches apprises montrent une dépendance statistique, mais les interpréter comme des liens de causalité nécessite les hypothèses supplémentaires étudiées en découverte causale. Des bibliothèques Python comme pgmpy implémentent les deux types d’apprentissage, ainsi que l’inférence exacte et approximative.
Applications concrètes#
- Diagnostic médical : les réseaux relient les maladies aux symptômes et aux résultats de tests qu’elles provoquent. Les observations d’un clinicien mettent ainsi à jour la probabilité de chaque pathologie, et chaque conclusion peut être retracée dans le graphe, une forme d’IA explicable.
- Diagnostic de pannes : les systèmes industriels et informatiques modélisent la propagation des défaillances de composants vers les alarmes et les mesures. En inspection visuelle, les catégories de défauts détectées par un modèle YOLO26 peuvent être intégrées au réseau comme des observations qui mettent à jour la probabilité de chaque cause racine en amont, telle qu’un outil usé ou une machine mal calibrée.
- Évaluation des risques : les écologistes, les assureurs et les ingénieurs en sécurité combinent des données limitées et le jugement d’experts dans des réseaux qui estiment la probabilité d’événements rares.
Réseaux bayésiens et modèles apparentés#
- Bayes naïf : réseau bayésien dont un nœud de classe est l’unique parent de chaque caractéristique. Il suppose que les caractéristiques sont indépendantes étant donné la classe.
- Champs aléatoires de Markov : modèles graphiques à arêtes non orientées, adaptés aux relations symétriques, comme celles entre des pixels voisins dans une image.
- Processus de décision de Markov : modèles de décisions séquentielles dans lesquels les actions modifient l’état et les récompenses sont à maximiser. Ils constituent le cadre standard de l’apprentissage par renforcement. Un réseau bayésien ne prend en compte les décisions et les gains qu’après l’ajout de nœuds de décision et d’utilité, qui le transforment en diagramme d’influence.
- Modèles de Markov cachés : réseaux bayésiens dynamiques qui répètent la même structure à chaque pas de temps, avec un état caché qui produit une observation par pas. Les filtres de Kalman ont une structure similaire, avec des états continus et des transitions et observations linéaires gaussiennes.










