Un chiffre unique comme réponse, c'est fini. Les réseaux de neurones bayésiens transforment les prédictions en fourchettes d'incertitude, pour des décisions enfin transparentes.
QUAND L'IA VOUS DIT 'JE NE SAIS PAS', ELLE DEVIENT PLUS FIABLE
Imaginez un modèle d'intelligence artificielle qui estime la valeur d'une maison à 385 000 $. Ce chiffre semble précis, mais derrière cette estimation se cache une grande inconnue : cette prédiction est-elle sûre ou simplement une moyenne approximative ?
Les réseaux de neurones classiques ne peuvent pas répondre à cette question. Ils affichent des métriques comme l'erreur absolue moyenne, mais ces chiffres ne concernent qu'un ensemble de données test. Ils ne disent rien sur la maison que vous regardez actuellement.
C'est là que les réseaux de neurones bayésiens (BNN) changent la donne. Au lieu de répondre par un seul nombre, ils fournissent une fourchette de valeurs plausibles et un niveau de confiance. Par exemple : « Nous sommes sûrs à 95 % que la valeur est comprise entre 250 000 $ et 350 000 $ ».
DEUX TYPES D'INCERTITUDE : QUAND VOTRE MODÈLE SE TROMPE (OU PAS)
Tous les doutes ne se valent pas. Les statisticiens distinguent depuis des siècles deux grands types d'incertitude :
L'incertitude aléatoire : votre modèle a déjà vu des maisons similaires, mais leurs valeurs varient tellement que la prédiction reste floue.
En pratique, ces deux types d'incertitude se mélangent souvent dans les modèles d'apprentissage automatique. Les recherches récentes montrent même qu'ils sont mathématiquement liés dans de nombreux cas. Pour simplifier, les BNN estiment une incertitude globale sans forcément la séparer en deux catégories.
LE JEU DE DONNÉES CALIFORNIEN : 20 000 MAISONS, 8 INDICES
Pour illustrer le fonctionnement des BNN, les chercheurs utilisent le jeu de données California Housing de scikit-learn. Attention : ces données datent du recensement américain de 1990. Les prix affichés ne reflètent absolument pas le marché immobilier actuel .
Chaque ligne représente un bloc de recensement (un groupe de quelques centaines à quelques milliers de personnes). Le jeu de données contient 20 640 maisons californiennes avec huit caractéristiques :
1. Le revenu médian des habitants
2. L'âge médian des maisons
3. Le nombre moyen de chambres
4. Le nombre moyen de chambres par personne
5. La population du bloc
6. L'occupation des logements (en pourcentage)
7. La latitude et la longitude du bloc
La variable cible est la valeur médiane des maisons dans chaque bloc. Les prix supérieurs à 500 000 $ ont été plafonnés à ce montant dans le jeu de données original, donc les chercheurs ont retiré toutes les maisons à 500 000 $ pour aider le réseau à apprendre.
DU NEURONE CLASSIQUE AU NEURONE BAYÉSIEN : DES BOUTONS À DES COURBES
Un réseau de neurones classique fonctionne comme une machine géante avec des millions de petits boutons appelés poids. Chaque poids contrôle l'influence d'une information sur la réponse finale. Pendant l'entraînement, le réseau ajuste ces boutons pour réduire l'erreur entre ses prédictions et les valeurs réelles.
Le problème ? Ce réseau donne une réponse unique et catégorique. Il ne sait pas dire « je ne suis pas sûr » ou « je manque d'informations ».
Un réseau bayésien change radicalement cette approche. Au lieu d'avoir des poids fixes, chaque poids devient une distribution de probabilité. Par exemple, au lieu d'avoir un poids exactement à 5,2, le poids peut être une courbe en cloche centrée sur 5, mais avec une marge d'erreur entre 3 et 7.
Certains poids seront très précis (courbe étroite et haute), d'autres très incertains (courbe large et plate).
Comment ça marche en pratique ? Si vous passez la même maison plusieurs fois dans le réseau, chaque passage donnera une prédiction légèrement différente, car les poids utilisés changent à chaque fois. En collectant toutes ces prédictions, vous pouvez créer une fourchette de valeurs plausibles.
BAYES, LA LOI QUI A TOUT CHANGÉ (MAIS PAS SIMPLE À CALCULER)
La théorie derrière les BNN repose sur le théorème de Bayes, qui permet de calculer la probabilité d'un événement en fonction d'informations nouvelles. Dans notre cas :
p(poids|données) = [p(données|poids) × p(poids)] / p(données)
Cette formule signifie : « Quelle est la probabilité des poids du réseau, sachant les données que nous avons observées ? »
Le problème ? Calculer le dénominateur p(données) nécessite d'intégrer sur toutes les combinaisons possibles de poids dans le réseau. Pour un réseau avec des milliers ou millions de paramètres, ce calcul est mathématiquement impossible à réaliser exactement.
Les chercheurs ont donc développé des méthodes pour contourner ce problème, notamment l'inférence variationnelle.
L'INFÉRENCE VARIATIONNELLE : TROUVER UNE APPROXIMATION UTILE
Au lieu de chercher la distribution de probabilité exacte (ce qui est impossible), l'inférence variationnelle propose une solution plus pragmatique : trouver une distribution plus simple qui ressemble le plus possible à la vraie distribution.
Cette approche transforme le problème en un problème d'optimisation : « Trouvons la distribution qui minimise l'écart avec la réalité ». C'est comme si vous cherchiez à dessiner une carte simplifiée d'un territoire complexe : vous ne cherchez pas la carte parfaite, mais une carte utile.
Les algorithmes d'optimisation modernes permettent de résoudre ce problème même avec des millions de variables. L'objectif est de maximiser une quantité appelée ELBO (Evidence Lower Bound), qui mesure à quel point notre approximation est proche de la réalité.
LA DIVERGENCE KL : MESURER L'ÉCART ENTRE RÊVE ET RÉALITÉ
Pour évaluer la qualité de notre approximation, les statisticiens utilisent la divergence KL. Si deux distributions sont identiques, leur divergence KL est nulle. Plus elles diffèrent, plus ce chiffre est élevé.
Le problème ? Pour calculer la divergence KL, il faudrait connaître la distribution réelle que nous cherchons à approximer. Heureusement, maximiser l'ELBO donne le même résultat que minimiser la divergence KL, mais avec des calculs réalisables.
PREMIÈRE DÉCISION : QUELLE BIBLIOTHÈQUE UTILISER ?
Pour implémenter un BNN, le choix des Outils est crucial. Les chercheurs recommandent deux bibliothèques Python principales :
TensorFlow Probability : une extension de TensorFlow spécialisée dans les calculs probabilistes. Elle offre des outils prêts à l'emploi pour créer des distributions et des couches de réseaux bayésiens.
PyTorch : une autre bibliothèque populaire pour l'apprentissage profond, avec des modules probabilistes comme PyTorch Probability.
Pour cet article, les exemples utilisent TensorFlow Probability et Keras, mais PyTorch offre une alternative tout aussi valable.
DEUXIÈME DÉCISION : CHOISIR UNE DISTRIBUTION POUR LES POIDS
En statistiques bayésiennes classiques, la distribution a priori (ou prior) encode les connaissances du domaine. Par exemple, si vous savez que les poids d'un réseau doivent être petits, vous pouvez choisir une distribution centrée sur zéro.
Dans un réseau de neurones, les poids n'ont pas de signification physique directe et sont profondément liés aux autres poids. La distribution gaussienne (courbe en cloche) est souvent choisie car elle est bien comprise mathématiquement et facile à calculer. Mais rien n'oblige à utiliser une gaussienne : on peut expérimenter avec d'autres distributions.
TensorFlow Probability propose plusieurs distributions dans son module tfd.distributions. Voici comment implémenter un prior et un posterior gaussiens :
import tensorflow_probability as tfp
tfd = tfp.distributions
def posterior(kernelsize, biassize=0, dtype=None):
n = kernelsize + biassize
return tf.keras.Sequential([
tfp.layers.VariableLayer(2 * n, dtype=dtype),
tfp.layers.DistributionLambda(
lambda t: tfd.Independent(
tfd.Normal(loc=t[., :n], scale=tf.nn.softplus(t[., n:])),
reinterpretedbatchndims=1
)
)
])
def prior(kernelsize, biassize=0, dtype=None):
n = kernelsize + biassize
return tf.keras.Sequential([
tfp.layers.DistributionLambda(
lambda _: tfd.Independent(
tfd.Normal(
loc=tf.zeros(n, dtype=dtype),
scale=0.25
),
reinterpretedbatchndims=1
)
)
])
Dans cet exemple :
- Le posterior est une distribution gaussienne dont la moyenne et l'écart-type sont appris pendant l'entraînement.
- Le prior est une gaussienne centrée sur zéro avec un écart-type de 0,25.
TROISIÈME OPTION : LA DISTRIBUTION DE LAPLACE
Que se passe-t-il si vous préférez utiliser une distribution de Laplace au lieu d'une gaussienne ? La distribution de Laplace a des « queues » plus épaisses, ce qui signifie qu'elle accorde plus de probabilité aux valeurs extrêmes.
Voici comment modifier le code pour utiliser une distribution de Laplace :
def posterior(kernelsize, biassize=0, dtype=None):
n = kernelsize + biassize
return tf.keras.Sequential([
tfp.layers.VariableLayer(2 * n, dtype=dtype),
tfp.layers.DistributionLambda(
lambda t: tfd.Independent(
tfd.Laplace(
loc=t[., :n],
scale=tf.nn.softplus(t[., n:])
),
reinterpretedbatchndims=1
)
)
])
# Relation entre écart-type gaussien et paramètre de Laplace
b = 0.25 / tf.sqrt(2.0) # Pour correspondre à N(0, 0.25)
def prior(kernelsize, biassize=0, dtype=None):
n = kernelsize + biassize
return tf.keras.Sequential([
tfp.layers.DistributionLambda(
lambda _: tfd.Independent(
tfd.Laplace(
loc=tf.zeros(n, dtype=dtype),
scale=tf.constant(b, dtype=dtype)
),
reinterpretedbatchndims=1
)
)
])
QUATRIÈME CHOIX : MATRICE DE COVARIANCE COMPLÈTE OU HYPOTHÈSE D'INDÉPENDANCE ?
L'hypothèse de champ moyen (mean field) est une simplification qui suppose que les poids du réseau sont indépendants les uns des autres. Chaque poids est mis à jour sans tenir compte des autres. C'est comme si chaque bouton de la machine était contrôlé séparément, sans interaction.
Cette approche est efficace en calcul, mais elle sous-estime souvent l'incertitude totale, car elle ignore comment les variations d'un poids affectent les autres. Résultat : le réseau peut donner des prédictions très confiantes, mais incorrectes.
TensorFlow Probability propose une alternative : la matrice de covariance complète avec tfd.MultivariateNormalTriL(). Cette méthode prend en compte les interactions entre les poids, mais elle augmente considérablement le nombre de paramètres à apprendre. Par exemple :
Le même réseau avec matrice de covariance complète : 159 434 paramètres entraînables
Voici comment implémenter cette approche :
def posterior(kernelsize, biassize=0, dtype=None):
n = kernelsize + biassize
# Nombre de paramètres : moyenne (n) + partie triangulaire inférieure de la matrice de covariance (n*(n+1)/2)
num_components = n + n * (n + 1) // 2
return tf.keras.Sequential([
tfp.layers.VariableLayer(num_components, dtype=dtype),
tfp.layers.DistributionLambda(
lambda t: tfd.MultivariateNormalTriL(
loc=t[., :n],
scale_tril=tfp.bijectors.FillScaleTriL()(t[., n:])
)
)
])
def prior(kernelsize, biassize=0, dtype=None):
n = kernelsize + biassize
return tf.keras.Sequential([
tfp.layers.DistributionLambda(
lambda _: tfd.MultivariateNormalTriL(
loc=tf.zeros(n, dtype=dtype),
# Pour une matrice de covariance diagonale avec variance 0.25²,
# le facteur de Cholesky est 0.25 × matrice identité
scale_tril=tf.eye(n, dtype=dtype) * 0.25
)
)
])
CINQUIÈME STRATÉGIE : L'ANNEALEMENT KL POUR UNE OPTIMISATION PLUS STABLE
Entraîner un BNN revient à équilibrer deux objectifs contradictoires :
- Faire correspondre les données observées (réduire l'erreur de prédiction)
- Garder les distributions des poids proches de leur prior
Cet équilibre est contrôlé par le terme de divergence KL. Théoriquement, les deux objectifs devraient avoir la même importance. En pratique, cela peut rendre l'optimisation difficile, surtout au début de l'entraînement quand le modèle n'a pas encore appris de motifs utiles.
L'annéaling KL est une technique simple pour résoudre ce problème. Au lieu de donner immédiatement la même importance aux deux objectifs, on commence par accorder plus d'importance à l'ajustement des données. On augmente progressivement l'importance du prior au fil des époques d'entraînement.
L'approche la plus courante est l'annéaling linéaire : le poids de la divergence KL commence à zéro et augmente linéairement jusqu'à atteindre sa valeur finale après un certain nombre d'époques.
D'autres méthodes existent :
- Annèaling cosinus : l'augmentation suit une courbe cosinus
- Annèaling sigmoïde : l'augmentation suit une courbe en S
- Annèaling cyclique : le poids augmente et diminue plusieurs fois, permettant au réseau de se concentrer alternativement sur l'ajustement des données et sur le respect du prior
POURQUOI TOUT ÇA COMPTE : DES PRÉDICTIONS PLUS HUMAINES
Les réseaux de neurones bayésiens ne se contentent pas de donner des chiffres. Ils révèlent l'incertitude derrière chaque prédiction, transformant une réponse binaire (« oui/non », « 385 000 $ ») en une information nuancée (« entre 250 000 $ et 350 000 $, avec 95 % de confiance »).
Cette transparence est cruciale pour des décisions critiques :
- En médecine : un diagnostic ne se résume plus à « malade » ou « sain », mais à « probabilité de 85 % d'être malade »
- En finance : une prédiction de risque ne donne plus un score unique, mais une fourchette de scénarios possibles
- Dans les véhicules autonomes : la voiture ne se contente plus de dire « obstacle détecté », mais « obstacle détecté avec une probabilité de 99 %, mais incertitude à 5 % »
Les BNN ouvrent la porte à une IA plus humble, qui reconnaît ses limites et guide les humains vers des décisions mieux informées.
LIMITES ET DÉFIS : CE QUE LES BNN NE FONT PAS (ENCORE)
Malgré leurs avantages, les réseaux de neurones bayésiens ne sont pas une solution magique. Leur implémentation pose plusieurs défis :
Leur calibration (ajustement des paramètres) demande une expertise statistique
Ils nécessitent plus de ressources computationnelles
De plus, les choix de conception (prior, type d'incertitude, méthode d'inférence) influencent fortement les résultats. Une mauvaise configuration peut donner des prédictions trop confiantes ou, au contraire, trop prudentes.
Les recherches actuelles explorent des méthodes pour améliorer l'efficacité des BNN, notamment :
- Des architectures plus légères
- Des méthodes d'inférence plus rapides
- Des techniques pour mieux séparer l'incertitude épistémique de l'incertitude aléatoire
COMMENT EXPÉRIMENTER VOUS-MÊME ?
Si vous voulez tester les réseaux bayésiens par vous-même, voici quelques pistes :
1. Utilisez les notebooks partagés par les chercheurs : Ils illustrent chaque choix de conception avec du code commenté et des exemples concrets.
2. Modifiez les hyperparamètres : Testez différentes tailles de réseau, différents priors ou différentes méthodes d'inférence pour voir leur impact sur les prédictions.
3. Appliquez à vos propres données : Les BNN ne se limitent pas à l'immobilier. Ils peuvent être utilisés pour toute tâche où l'incertitude est importante : prédiction de ventes, diagnostic médical, détection de fraudes.
N'oubliez pas : l'objectif n'est pas de créer le réseau parfait, mais d'expérimenter pour comprendre comment les choix de conception influencent les résultats.
EN RÉSUMÉ : L'IA QUI SAIT DIRE « JE NE SAIS PAS »
Les réseaux de neurones bayésiens représentent une avancée majeure dans l'apprentissage automatique. Ils transforment les prédictions en informations nuancées, révélant l'incertitude derrière chaque chiffre. Cette transparence est cruciale pour des applications où la confiance dans les prédictions est aussi importante que les prédictions elles-mêmes.
Que ce soit pour éviter des erreurs coûteuses, prendre des décisions mieux informées ou simplement comprendre les limites de l'IA, les BNN offrent une approche plus humaine et responsable de l'intelligence artificielle.
ET DEMAIN ? VERS DES IA PLUS HUMBLES ET PLUS FIABLES
Les recherches sur les réseaux bayésiens et l'incertitude en IA sont en plein essor. Les défis actuels portent sur :
- L'amélioration de l'efficacité computationnelle
- Le développement de méthodes pour mieux quantifier et communiquer l'incertitude
- L'intégration des BNN dans des systèmes critiques (voitures autonomes, diagnostics médicaux)
Une chose est sûre : l'avenir de l'IA ne réside pas dans des prédictions toujours plus précises, mais dans des prédictions toujours plus transparentes et responsables.
CODE COMPLET ET RESSOURCES POUR ALLER PLUS LOIN
Pour ceux qui veulent approfondir, voici où trouver les ressources mentionnées dans l'article :
Jeu de données California Housing : Disponible dans scikit-learn sous licence BSD, basé sur le travail de Pace et Barry (1997).
Notebooks d'exemple : Les implémentations complètes des différents choix de conception sont disponibles dans des notebooks partagés par les chercheurs. Ils incluent le prétraitement des données, la création des jeux d'entraînement et de test, et les visualisations des résultats.
Bibliothèques recommandées : TensorFlow Probability, PyTorch, Keras. Ces outils fournissent des couches et des fonctions utilitaires pour implémenter facilement des BNN.
N'hésitez pas à explorer, modifier et adapter ces ressources pour vos propres projets. L'apprentissage des réseaux bayésiens passe souvent par l'expérimentation et la pratique.
- Towards Data Science
L'indépendance de CLODCO est votre garantie.
Pour que l'actualité de l'IA reste sans filtre et sans concession, votre soutien est indispensable. Votre contribution est le seul moteur de notre liberté éditoriale.
Soutenir CLODCO


