Aller au contenu
coden

Réseaux bayésiens : pourquoi l’herbe est mouillée et ce que cela implique pour l’arroseur

Loi jointe et sa factorisation, réseau bayésien et tables de probabilités conditionnelles, inférence par énumération, effet d’explication, d-séparation et inférence approchée par échantillonnage — sur le réseau nuageux, arroseur, pluie, herbe mouillée.

13 minutes Matěj Žalmánek 2026-10-15

Série Bases de l’IA Partie 40 sur 52
  1. Carte de l’intelligence artificielle : qu’est-ce qui est quoi et comment tout s’emboîte
  2. Brève histoire de l’intelligence artificielle : de Turing aux modèles de langage
  3. Données, modèle, entraînement, inférence : les notions de base sur un seul exemple
  4. Lire la notation mathématique : symboles, indices, sommes et quantificateurs
  5. Ensembles et relations : les briques dont sont faites les définitions en IA
  6. Fonctions et applications : pourquoi tout modèle d’IA est une fonction
  7. Logique et démonstrations : les règles selon lesquelles on raisonne en IA
  8. Graphes et arbres : la structure sur laquelle reposent la recherche et les réseaux de neurones
  9. Algèbre linéaire pour l’apprentissage automatique : vecteurs, matrices et pourquoi l’IA multiplie surtout
  10. Dérivées, gradient et règle de dérivation en chaîne : comment un modèle sait dans quelle direction apprendre
  11. Descente de gradient : comment un modèle apprend
  12. Qu’est-ce que la probabilité : du lancer de dé aux axiomes de Kolmogorov
  13. Probabilité conditionnelle et théorème de Bayes : comment réviser une estimation quand on apprend du nouveau
  14. Variable aléatoire et fonction de répartition : une seule fonction qui dit tout de la loi
  15. Fonction de densité et fonction de masse : pourquoi une variable continue a une probabilité nulle en chaque point
  16. Espérance, variance et covariance : où se situe une loi, quelle est sa largeur et ce qui varie avec quoi
  17. Panorama des lois de probabilité : Bernoulli, binomiale, Poisson, uniforme, normale et exponentielle
  18. Loi des grands nombres et théorème central limite : pourquoi les moyennes sont si prévisibles
  19. Statistique et estimation de paramètres : maximum de vraisemblance, MAP et intervalles de confiance
  20. Théorie de l’information : entropie, entropie croisée et divergence KL — d’où viennent les fonctions de perte
  21. Recherche dans l’espace d’états : BFS, DFS, UCS et A* en animations
  22. Jeux et adversaires : minimax, élagage alpha-bêta et Monte Carlo tree search
  23. Satisfaction de contraintes : backtracking, propagation de contraintes et AC-3 sur un sudoku et une carte des régions tchèques
  24. Logique et systèmes à base de connaissances : chaînage avant et arrière, résolution et systèmes experts
  25. Planification : STRIPS, monde des blocs, heuristiques par relaxation et planification dans les agents IA
  26. Recherche locale et recuit simulé : un voyageur de commerce à travers les chefs-lieux de région tchèques
  27. Algorithmes génétiques : population, croisement, mutation et sélection sur un sac à dos de randonnée
  28. Stratégies d’évolution et programmation génétique : de la règle du cinquième à la loi de Kepler
  29. Optimisation par colonies de fourmis : comment une piste de phéromone trouve un chemin court
  30. Optimisation par essaim de particules : inertie, expérience propre et expérience de l’essaim
  31. Neuroévolution : faire évoluer les poids et la forme des réseaux de neurones, et l’algorithme NEAT
  32. Ensembles flous et fonctions d’appartenance : comment écrire « un peu chaud »
  33. Logique floue et probabilité : pourquoi « un peu chaud » ne veut pas dire « probablement chaud »
  34. Logique floue : t-normes, implications et règles SI–ALORS
  35. Commande floue : Mamdani et Sugeno, du ventilateur au pendule inversé sur un chariot
  36. Clustering flou : l’algorithme fuzzy c-means et les points entre les clusters
  37. Systèmes neuro-flous (ANFIS) : des règles floues qui apprennent à partir des données
  38. Chaînes de Markov : matrice de transition, distribution stationnaire et PageRank
  39. Modèles de Markov cachés : l’algorithme de Viterbi et le casino malhonnête
  40. Réseaux bayésiens : pourquoi l’herbe est mouillée et ce que cela implique pour l’arroseur
  41. Le filtre de Kalman : comment estimer, à partir de mesures imprécises, où se trouve une voiture et à quelle vitesse elle roule
  42. Types d’apprentissage automatique : supervisé, non supervisé, semi-supervisé et plus
  43. Prompts, contexte et RAG : comment donner au modèle les bonnes informations
  44. Autoencodeurs variationnels (VAE) : de nouvelles images à partir d’un espace latent continu
  45. Réseaux antagonistes génératifs (GAN) : le faussaire contre le détective
  46. Modèles de diffusion : comment une image naît du bruit pur
  47. Processus de décision markoviens : états, actions, récompenses et équations de Bellman
  48. Q-learning et DQN : apprendre la valeur des actions, du tableau au réseau de neurones
  49. Policy gradient et PPO : apprendre directement la politique
  50. Comment fonctionne un agent IA : un modèle de langage en boucle avec des outils
  51. Programmer avec des agents IA : consigne, tests et vérification
  52. Évaluation et sécurité des systèmes d’IA : comment mesurer et comment surveiller

Programme complet de la série 52 sur 83 sujets publiés

Ce que vous retiendrez
  • Comment un réseau bayésien réduit une immense table de probabilités à quelques petites tables.
  • Comment un réseau raisonne des effets vers les causes et ce qu’est l’effet d’explication.
  • Comment lire sur le graphe quelles variables sont indépendantes, et comment on estime les probabilités par échantillonnage.

Utile à connaître avant : Probabilité conditionnelle et théorème de Bayes : comment réviser une estimation quand on apprend du nouveau, Graphes et arbres : la structure sur laquelle reposent la recherche et les réseaux de neurones

Le matin, vous sortez et l’herbe est mouillée. A-t-il plu, ou l’arroseur a-t-il fonctionné ? Et si vous apprenez ensuite par votre voisin qu’il a plu pendant la nuit — cela change-t-il ce que vous pensez de l’arroseur ? Nous raisonnons ainsi sans y penser. Une machine le peut aussi, à condition de savoir ce qui est lié à quoi. Un réseau bayésien est une image de ces liens, à partir de laquelle on peut calculer la réponse à n’importe quelle question. Judea Pearl a reçu pour lui et pour la théorie de la causalité qui en découle le prix Turing en 2011.

Cette partie fait suite aux parties Probabilité conditionnelle et théorème de Bayes et Graphes et arbres.

1. Le problème de la grande table

L’information complète sur plusieurs variables aléatoires est leur loi jointe — la probabilité de chaque combinaison de valeurs. Pour quatre variables oui/non, il y a 16 combinaisons, donc 15 nombres indépendants. Pour 37 variables (c’est le nombre de variables du célèbre réseau médical ALARM de surveillance des patients sous anesthésie), il en faudrait plus de 137 milliards, même si toutes étaient seulement oui/non. Une telle table, personne ne peut la construire, la stocker ni l’estimer à partir de données. Ce qui nous sauve, c’est que la plupart des variables ne sont liées entre elles qu’indirectement.

Définition — loi jointe et nombre de ses paramètres

La loi jointe de variables discrètes X1, …, Xn est la fonction P(x1, …, xn) = P(X1 = x1, …, Xn = xn), positive ou nulle, dont la somme sur toutes les combinaisons de valeurs vaut 1. Pour n variables oui/non, elle a 2n valeurs ; la dernière se déduit des autres (la somme vaut 1), si bien qu’il y a 2n − 1 paramètres indépendants.

Calcul. 24 − 1 = 15 ; 237 − 1 = 137 438 953 471.

Théorème — règle de la chaîne

Pour des variables quelconques et toute combinaison de valeurs de probabilité strictement positive, on a

P(x1, …, xn) = P(x1) · P(x2 | x1) · P(x3 | x1, x2) ⋯ P(xn | x1, …, xn−1) = ∏i=1n P(xi | x1, …, xi−1).

Démonstration : par définition de la probabilité conditionnelle, P(x1, …, xn) = P(xn | x1, …, xn−1) · P(x1, …, xn−1). On applique la même chose au second facteur, et ainsi de suite, jusqu’à ce qu’il ne reste que P(x1). ∎

La règle de la chaîne n’économise rien : le dernier facteur dépend toujours de toutes les variables précédentes, ce n’est donc qu’une autre écriture de la même table gigantesque. L’économie n’arrive que lorsqu’on supprime certaines conditions.

2. Réseau bayésien

Définition — réseau bayésien

Un réseau bayésien sur les variables X1, …, Xn est un graphe orienté acyclique dont les sommets sont les variables, avec pour chaque sommet une table de probabilités conditionnelles P(Xi | parents(Xi)). Le réseau détermine la loi jointe

P(x1, …, xn) = ∏i P(xi | parents(Xi)).

En termes simples

Les flèches vont des causes vers les effets. Pour chaque variable, il suffit de savoir comment elle dépend de ses causes directes — rien de plus. La probabilité de toute la situation est le produit de ces nombres locaux. Au lieu d’une table gigantesque, nous en avons quelques petites.

Pourquoi le réseau peut-il écrire seulement P(xi | parents), et non tout le passé comme la règle de la chaîne ? Parce qu’il suppose, à propos du graphe, des indépendances conditionnelles.

Définition — indépendance conditionnelle

Les variables A et C sont conditionnellement indépendantes sachant E, ce qu’on note A ⊥ C | E, si pour toutes les valeurs a, c, e avec P(c, e) > 0 on a

P(a | c, e) = P(a | e)

P(a | c, e)
ce que nous savons de A quand nous connaissons E et en plus C
P(a | e)
ce que nous savons de A à partir de E seul ; l’égalité dit que C n’ajoute plus rien — tout le lien entre A et C passe par E
De façon équivalente, P(a, c | e) = P(a | e) · P(c | e). Pour E vide, c’est l’indépendance ordinaire.
Théorème — la factorisation, c’est la règle de la chaîne plus des indépendances locales

Ordonnons les variables topologiquement (chaque parent avant ses enfants). Si chaque variable Xi, ses parents étant connus, est conditionnellement indépendante de toutes les variables qui ne sont pas ses descendants (condition de Markov locale), alors P(x1, …, xn) = ∏i P(xi | parents(Xi)).

Démonstration : dans la règle de la chaîne en ordre topologique figure P(xi | x1, …, xi−1). Parmi X1, …, Xi−1 se trouvent tous les parents de Xi et aucun de ses descendants (un descendant vient après lui dans l’ordre). D’après la condition de Markov, on peut retirer tous les autres de la condition, et il reste P(xi | parents(Xi)). ∎

La réciproque est vraie aussi : toute loi donnée par un produit de tables satisfait la condition de Markov locale. C’est pourquoi on peut définir un réseau bayésien de l’une ou l’autre façon.

Notre réseau : quand le ciel est nuageux, la pluie est plus probable et il est moins probable que quelqu’un allume l’arroseur. La pluie comme l’arroseur rendent l’herbe mouillée. Les nombres viennent d’un exemple apprécié de Kevin Murphy :

nuageux Z P(Z) 0,5 arroseur P Z P(P) − 0,5 + 0,1 pluie D Z P(D) − 0,2 + 0,8 herbe mouillée T P D P(T) + − 0,9 + + 0,99 − + 0,9 − − 0
Le réseau « herbe mouillée » avec ses tables de probabilités conditionnelles + oui, − non

Le réseau a 1 + 2 + 2 + 4 = 9 nombres au lieu de 15. Pour quatre variables, l’économie est petite ; pour des centaines, elle est énorme : si chaque sommet a au plus k parents, le nombre de nombres croît avec n de façon linéaire (n · 2k), et non exponentielle (2n). La probabilité de la situation « nuageux, l’arroseur n’a pas fonctionné, il a plu, herbe mouillée » vaut 0,5 · 0,9 · 0,8 · 0,9 = 0,324.

P(z, p, d, t) = P(z) · P(p | z) · P(d | z) · P(t | p, d)

P(z)
nuageux n’a pas de parents, sa table est un seul nombre ; dans l’exemple 0,5
P(p | z)
l’arroseur ne dépend que des nuages — ici rien ne diffère de la règle de la chaîne ; dans l’exemple, il n’a pas fonctionné par ciel nuageux : 1 − 0,1 = 0,9
P(d | z)
la règle de la chaîne demanderait P(d | z, p) ; le réseau suppose que, le ciel étant connu, l’arroseur ne dit rien de la pluie, et p sort donc de la condition ; dans l’exemple 0,8
P(t | p, d)
la règle de la chaîne demanderait P(t | z, p, d) ; l’herbe ne « sait » rien des nuages autrement que par la pluie et l’arroseur, et z sort donc ; dans l’exemple (arroseur non, pluie oui) 0,9
Chaque terme retiré d’une condition est une indépendance conditionnelle que le réseau suppose — ce sont justement elles qui réduisent 15 nombres à 9.

3. Inférence : de l’effet à la cause

Définition — inférence par énumération

La probabilité de la requête Q sachant les observations E = e est

P(Q | e) = ∑y P(Q, e, y) / ∑q, y P(q, e, y),

où l’on somme sur toutes les valeurs y des autres variables (cachées), chaque terme étant un produit issu de la factorisation du réseau.

En termes simples

Nous passons en revue tous les mondes possibles qui concordent avec ce que nous savons (l’herbe est mouillée) et regardons quel poids ont parmi eux ceux où il a plu. C’est le théorème de Bayes de la partie sur la probabilité conditionnelle, sauf qu’on somme sur plusieurs variables à la fois.

P(Q | e) = ∑y P(Q, e, y) / ∑q, y P(q, e, y)

e
les observations — les valeurs que nous avons constatées (chez nous, l’herbe mouillée) ; dans tous les mondes sommés, elles sont fixées
∑y
les variables cachées (chez nous, nuageux et arroseur), nous ne les connaissons pas et elles ne nous intéressent pas, alors nous sommons sur toutes leurs possibilités — c’est la marginalisation ; les mondes sont incompatibles deux à deux, donc les probabilités s’additionnent
P(Q, e, y)
la probabilité d’un monde complet où la requête et les observations sont vraies — un produit de nombres tirés des tables selon la factorisation
∑q, y P(q, e, y)
= P(e), le poids de tous les mondes qui concordent avec les observations ; la division est la définition de la probabilité conditionnelle P(Q | e) = P(Q, e) / P(e) et garantit que P(Q | e) + P(¬Q | e) = 1
Exemple — P(pluie | herbe mouillée) par énumération

L’observation est T = oui, la requête D, les variables cachées sont Z et P. Il y a 23 = 8 mondes avec de l’herbe mouillée ; chacun est le produit P(z) · P(p | z) · P(d | z) · P(t | p, d) :

pluienuageuxarroseurproduitP(monde)
ouiouioui0,5 · 0,1 · 0,8 · 0,990,0396
ouinonoui0,5 · 0,5 · 0,2 · 0,990,0495
ouiouinon0,5 · 0,9 · 0,8 · 0,90,3240
ouinonnon0,5 · 0,5 · 0,2 · 0,90,0450
nonouioui0,5 · 0,1 · 0,2 · 0,90,0090
nonnonoui0,5 · 0,5 · 0,8 · 0,90,1800
nonouinon0,5 · 0,9 · 0,2 · 00,0000
nonnonnon0,5 · 0,5 · 0,8 · 00,0000

Les quatre premières lignes (il a plu) donnent P(D, T) = 0,4581, les huit ensemble P(T) = 0,6471. Les deux dernières lignes sont nulles : sans pluie ni arroseur, l’herbe n’est pas mouillée. Donc

P(D | T) = 0,4581 / 0,6471 = 0,708.

def dotaz(Q, dukazy, sit):
    citatel = jmenovatel = 0.0
    for svet in vsechna_prirazeni(sit):              # 2^n mondes complets
        if any(svet[k] != v for k, v in dukazy.items()):
            continue                                 # ne concorde pas avec les observations
        p = 1.0
        for uzel in sit:                             # factorisation du réseau
            p *= P(uzel, svet[uzel], svet[rodice(uzel)])
        jmenovatel += p                              # → P(e)
        if svet[Q]:
            citatel += p                             # → P(Q, e)
    return citatel / jmenovatel

A priori (sans aucune observation), la probabilité de la pluie est 0,5 et celle de l’arroseur 0,3. L’herbe mouillée augmente les deux : P(pluie | herbe mouillée) = 0,708 et P(arroseur | herbe mouillée) = 0,430. La pluie est l’explication la plus probable, parce qu’il pleut plus souvent que l’arroseur ne fonctionne. L’herbe mouillée augmente aussi la probabilité que le ciel ait été nuageux — de 0,5 à 0,576 —, bien que l’herbe et les nuages ne soient pas directement liés. L’information circule dans le réseau à contre-courant des flèches.

4. L’effet d’explication

Nous apprenons maintenant qu’il a vraiment plu pendant la nuit. Qu’advient-il de l’arroseur ?

00,51 0,30 0,43 0,19 arroseur 0,50 0,71 0,32 pluie cause de l’herbe mouillée (catégorie) probabilité P (0–1)
Arroseur et pluie : a priori, quand l’herbe est mouillée, et quand l’herbe est mouillée et que l’on connaît l’autre cause a priori l’herbe est mouillée et l’on connaît l’autre cause

La probabilité de l’arroseur tombe de 0,430 à 0,194. La pluie a déjà expliqué l’herbe mouillée, il ne reste donc plus de raison pour l’arroseur. Inversement, quand nous savons que l’arroseur a fonctionné, la probabilité de la pluie baisse de 0,708 à 0,320. Ce phénomène s’appelle l’effet d’explication (explaining away). Deux causes qui n’étaient a priori que faiblement liées se mettent à « s’évincer » l’une l’autre dès que nous observons leur effet commun. Et si nous savions qu’il n’a pas plu, l’arroseur aurait forcément fonctionné : P(arroseur | herbe mouillée, pas de pluie) = 1, car dans notre réseau l’herbe ne peut pas être mouillée toute seule.

Exemple — l’effet d’explication en chiffres

D’après la table de l’exemple précédent, les mondes où il a plu, où l’arroseur a fonctionné et où l’herbe est mouillée ont ensemble P(P, D, T) = 0,0396 + 0,0495 = 0,0891. Donc

P(P | T, D) = P(P, D, T) / P(D, T) = 0,0891 / 0,4581 = 0,194,

P(D | T, P) = P(P, D, T) / P(P, T) = 0,0891 / 0,2781 = 0,320.

Formellement, l’effet d’explication est l’inégalité P(P | T, D) < P(P | T) : la confirmation d’une cause abaisse la probabilité de l’autre (0,194 < 0,430).

5. Ce que révèle le réseau : la d-séparation

Le graphe ne dit pas seulement comment calculer — il dit aussi quelles variables sont indépendantes les unes des autres, et cela sans un seul nombre. Toutes les possibilités se composent de trois formes de base :

  • Chaîne A → B → C : A et C sont liées, mais plus dès que nous connaissons B. (Nuageux → pluie → herbe mouillée : à qui sait s’il a plu, les nuages n’apprennent rien sur l’herbe.)
  • Fourche A ← B → C : une cause commune rend A et C dépendantes ; quand nous la connaissons, la dépendance disparaît. (L’arroseur et la pluie sont a priori liés par les nuages : P(arroseur | pluie) = 0,18, mais P(arroseur | pas de pluie) = 0,42. Quand nous savons si le ciel est nuageux, ils sont indépendants.)
  • Collisionneur A → B ← C : les causes sont indépendantes tant que nous n’observons pas leur effet commun — elles deviennent alors dépendantes. C’est l’effet d’explication.
Définition — d-séparation

Un chemin dans le graphe (sans tenir compte du sens des flèches) est bloqué par un ensemble E s’il contient une chaîne ou une fourche dont le milieu est dans E, ou un collisionneur dont ni le milieu ni aucun de ses descendants n’est dans E. Les variables A et C sont d-séparées par l’ensemble E si E bloque tous les chemins entre elles. Elles sont alors, dans toute loi que détermine le réseau, conditionnellement indépendantes sachant E.

En termes simples

L’information circule dans le graphe le long des chemins. Une variable connue au milieu d’une chaîne ou d’une fourche arrête le flux — elle est déjà « expliquée ». Pour un collisionneur, c’est l’inverse : tant que nous ne connaissons pas l’effet, le flux y est bloqué ; dès que nous l’observons, il s’ouvre. On peut ainsi lire sur l’image ce qu’il faut mesurer et ce qui est inutile.

Dans notre réseau, nuageux et herbe mouillée sont d-séparés quand nous connaissons à la fois l’arroseur et la pluie — le calcul le confirme : la probabilité d’un ciel nuageux ne dépend alors pas du tout de l’herbe.

Exemple — les trois formes vérifiées par le calcul
  • Fourche arroseur ← nuageux → pluie. Sans connaître le ciel : P(P | D) = 0,18 ≠ P(P) = 0,3, dépendants. Le ciel étant connu : P(P | Z, D) = 0,1 = P(P | Z), donc P ⊥ D | Z.
  • Collisionneur arroseur → herbe mouillée ← pluie. Le ciel étant connu, P et D sont indépendants (P(P | Z, D) = P(P | Z, ¬D) = 0,1), mais dès que nous observons l’herbe, ils ne le sont plus : P(P | Z, D, T) = 0,109, alors que P(P | Z, ¬D, T) = 1.
  • D-séparation du ciel nuageux et de l’herbe mouillée par l’ensemble {P, D} : les deux chemins Z → P → T et Z → D → T sont des chaînes dont le milieu est connu, ils sont donc bloqués. Et en effet : P(Z | P, D) = 0,444 et P(Z | P, D, T) = 0,444 ; P(Z | P, ¬D) = 0,048 et P(Z | P, ¬D, T) = 0,048.

6. Inférence approchée par échantillonnage

L’inférence par énumération parcourt toutes les combinaisons des variables cachées — dans un réseau quelconque, il y en a un nombre exponentiel. L’inférence exacte dans les réseaux bayésiens est NP-difficile. Pour les grands réseaux, on estime donc les probabilités par simulation.

Algorithmes — échantillonnage par rejet et pondération par la vraisemblance

Échantillonnage par rejet : génère des mondes à partir du réseau (des causes vers les effets, selon les tables), jette ceux qui ne concordent pas avec les observations et, parmi ceux qui restent, calcule la proportion où la requête est vraie.

Pondération par la vraisemblance : ne tire pas les observations au hasard, fixe-les ; pondère chaque monde généré par le produit des probabilités des observations sachant les valeurs de leurs parents. L’estimation est la proportion pondérée.

En termes simples

Le rejet est honnête mais gaspilleur : quand l’observation est rare, il jette presque tous les échantillons. La pondération par la vraisemblance ne jette rien — elle attribue seulement à chaque échantillon un poids selon qu’il s’accorde bien ou mal avec ce que nous savons.

def zamitani(Q, dukazy, n, sit):
    prijato = ano = 0
    for _ in range(n):
        svet = {}
        for uzel in sit:                             # des causes vers les effets
            svet[uzel] = nahoda() < P(uzel, True, svet[rodice(uzel)])
        if any(svet[k] != v for k, v in dukazy.items()):
            continue                                 # à la corbeille
        prijato += 1
        ano += svet[Q]
    return ano / prijato

def vazena(Q, dukazy, n, sit):
    s = s_ano = 0.0
    for _ in range(n):
        svet, w = {}, 1.0
        for uzel in sit:
            p = P(uzel, True, svet[rodice(uzel)])
            if uzel in dukazy:                       # on ne tire pas l’observation…
                svet[uzel] = dukazy[uzel]
                w *= p if dukazy[uzel] else 1 - p    # …mais on pèse sa probabilité
            else:
                svet[uzel] = nahoda() < p
        s += w
        s_ano += w * svet[Q]
    return s_ano / s

P̂(Q | e) = ∑k wk [Q vraie dans l’échantillon k] / ∑k wk,   wk = ∏j P(ej | parentsk)

wk
le poids de l’échantillon (en vert, comme la courbe de la pondération par la vraisemblance dans le graphique) — le produit des probabilités de toutes les observations ej sachant les valeurs de leurs parents tirées dans l’échantillon k : nous n’avons pas tiré les observations, nous les avons imposées, et nous devons donc tenir compte de leur probabilité compte tenu des autres valeurs tirées — sinon l’estimation serait biaisée
[Q vraie dans l’échantillon k]
1 si la requête est vraie dans l’échantillon, 0 sinon — nous ne comptons que le poids des échantillons où il a plu
∑k wk
le poids total ; en divisant par lui, nous en faisons une proportion, exactement comme la division par P(e) dans l’énumération. Grâce à elle, peu importe que la somme des poids ne fasse pas 1
Le rejet est un cas particulier : le poids vaut 1 pour les échantillons qui concordent avec les observations et 0 pour les autres.
Exemple — les poids avec l’observation « l’herbe est mouillée »

La seule observation est T = oui ; ses parents sont l’arroseur et la pluie. Le poids d’un échantillon est donc simplement P(T = oui | p, d), tiré de la table de l’herbe mouillée :

  • arroseur et pluie : w = 0,99,
  • un seul des deux : w = 0,9,
  • aucun des deux : w = 0 — un tel échantillon ne contribue à rien, tout comme le rejet l’aurait jeté.

Le poids ne dépend pas du ciel : nuageux n’est pas un parent de l’herbe.

0,60,70,8 101001 00010 000 échantillons (nombre, échelle log.) estimation P(pluie | mouillée) (0–1)
Estimation de P(pluie | herbe mouillée) selon le nombre d’échantillons rejet pondération par la vraisemblance valeur exacte 0,708

Avec cent échantillons, le rejet a donné l’estimation 0,686 et n’en a utilisé que 70 — les 30 autres avaient de l’herbe sèche et sont partis à la corbeille. Avec 10 000 échantillons (dont il en est resté 6 524), l’estimation vaut 0,703, proche de la valeur exacte 0,708. L’erreur décroît comme 1/√N, comme le dit le théorème central limite : pour une estimation dix fois plus précise, il faut cent fois plus d’échantillons.

σP̂ = √(p(1 − p) / Nacc),   Nacc ≈ N · P(e)

p(1 − p)
la variance d’un seul échantillon de type oui/non (loi de Bernoulli de probabilité p) ; elle est maximale pour p = 0,5, quand un échantillon isolé est le moins prévisible
Nacc
le nombre d’échantillons qui comptent vraiment ; pour le rejet, seulement ceux qui sont passés, soit en moyenne la proportion P(e) — pour une observation rare, presque aucun. La variance de la moyenne de N échantillons indépendants est N fois plus petite
La racine carrée ramène la variance aux unités de probabilité — c’est pourquoi l’erreur ne décroît que comme 1/√N. (L’égalité est approchée : le nombre d’échantillons acceptés est lui-même aléatoire.)
Exemple — quelle erreur attendre

La valeur exacte est p = 0,708 et P(e) = P(T) = 0,6471, donc sur 10 000 échantillons nous attendons environ 6 471 acceptés (il y en a eu en réalité 6 524).

  • Nacc = 70 : σ = √(0,708 · 0,292 / 70) = 0,054 ; erreur réelle |0,686 − 0,708| = 0,022.
  • Nacc = 6 524 : σ = 0,0056 ; erreur réelle 0,0050.

Les deux erreurs réelles sont inférieures à un écart type — ce qui concorde avec le fait qu’environ deux tiers des estimations tombent dans ±σ (loi normale d’après le théorème central limite).

7. Les réseaux bayésiens en pratique

  • Diagnostic. Réseaux médicaux (ALARM, QMR-DT avec des centaines de maladies et des milliers de symptômes) et diagnostic de pannes de machines et de réseaux : déduire des symptômes observés la cause la plus probable — et proposer ce qu’il faut mesurer ensuite.
  • Apprentissage à partir des données. Les tables peuvent être estimées à partir des données en comptant (par la méthode du maximum de vraisemblance de la partie sur la statistique), même quand certaines valeurs manquent — avec l’algorithme EM, parent de l’algorithme de Baum–Welch de la partie précédente.
  • Causalité. Pearl a montré qu’un réseau lu comme un graphe de causes sait aussi répondre à des questions du type « que se passerait-il si nous intervenions » — si nous allumions nous-mêmes l’arroseur —, ce qu’on ne peut pas lire dans les seules corrélations. C’est le fondement de l’inférence causale actuelle en épidémiologie comme en économie.
  • Parents proches. Le classifieur bayésien naïf est un réseau bayésien avec une seule cause et de nombreux effets indépendants. Les modèles de Markov cachés de la partie précédente sont un réseau bayésien déroulé dans le temps.

8. Résumé

  • Un réseau bayésien est un graphe orienté acyclique avec des tables P(X | parents) ; la loi jointe est le produit de ces tables. Notre réseau a besoin de 9 nombres au lieu de 15.
  • L’inférence va aussi à contre-courant des flèches : l’herbe mouillée fait monter la probabilité de la pluie à 0,708 et celle de l’arroseur à 0,430.
  • L’effet d’explication : quand nous savons qu’il a plu, la probabilité de l’arroseur tombe à 0,194.
  • La d-séparation lit les indépendances directement sur le graphe — la chaîne et la fourche se ferment par l’observation, le collisionneur s’ouvre.
  • L’inférence exacte est en général NP-difficile ; l’échantillonnage donne des estimations dont l’erreur décroît comme 1/√N.

Envie de mettre la main à la pâte ? Demandez à un agent d’IA de construire un réseau bayésien pour une panne de votre propre voiture ou de votre ordinateur (« elle ne démarre pas — la batterie ou le démarreur ? ») et observez comment vos soupçons évoluent à mesure que vous ajoutez des observations.

Vous voyez les choses autrement ? Écrivez à support@coden-app.com.

Un Agent sur votre ordinateur, piloté depuis votre téléphone