Polydesk-logotype
Polydesk.ai — Header

Bayesian Neural Network (Réseau de Neurones Bayésien)

Un Bayesian Neural Network (BNN) est un réseau de neurones dont les poids sont des distributions de probabilité plutôt que des valeurs fixes. Au lieu de produire une prédiction unique, un BNN fournit une distribution sur les prédictions possibles, quantifiant naturellement l’incertitude du modèle.

Dans un réseau de neurones classique, l’entraînement produit un jeu de poids optimal (une estimation ponctuelle). Le modèle est ensuite sûr de lui sur chaque prédiction, même quand il se trompe. Un BNN, en revanche, maintient une distribution postérieure sur les poids : il sait ce qu’il ne sait pas. Quand les données d’entrée ressemblent aux données d’entraînement, l’incertitude est faible et les prédictions sont confiantes. Quand les données sont inhabituelles ou hors distribution, l’incertitude augmente, signalant que le modèle n’est pas fiable dans cette région.

Cette capacité à dire « je ne suis pas sûr » est cruciale pour les applications à haut risque : diagnostic médical, conduite autonome, prédiction de durée de vie de matériaux, finance quantitative. C’est la différence entre un modèle qui prédit « ce patient a un cancer avec 87 % de confiance » et un modèle qui dit « ma prédiction est cancer, mais mon incertitude est élevée parce que ce type de cas est rare dans mes données d’entraînement ».

Bayesian Neural Network en bref
Catégorie
Architecture de deep learning avec quantification d’incertitude
Principe
Distributions de probabilité sur les poids au lieu de valeurs ponctuelles
Inférence
Variational Inference, MCMC, MC Dropout, Deep Ensembles
Types d’incertitude
Épistémique (modèle) et aléatoire (données)
Applications
Médecine, conduite autonome, science des matériaux, géosciences, RL

Le principe fondamental

Réseau classique vs réseau bayésien

Un réseau de neurones classique apprend une fonction f(x; w*) paramétrée par des poids optimaux w*. L’entraînement cherche le w* qui minimise une loss (erreur sur les données). Une fois entraîné, le modèle produit une prédiction déterministe pour chaque entrée.

Un BNN traite les poids w comme des variables aléatoires. Au lieu de chercher un w* unique, il apprend la distribution postérieure P(w|D) des poids étant donné les données D. Pour prédire sur une nouvelle entrée x*, le BNN marginalise sur tous les poids possibles :

P(y*|x*, D) = ∫ P(y*|x*, w) · P(w|D) dw

La prédiction est une moyenne pondérée sur tous les modèles possibles (tous les jeux de poids), chacun contribuant proportionnellement à sa probabilité postérieure. C’est le « Bayesian Model Averaging ». La variance de cette distribution prédictive donne directement l’incertitude sur la prédiction.

Deux types d’incertitude

Incertitude épistémique (model uncertainty) : provient du manque de données. Si le modèle n’a vu que peu d’exemples dans une région de l’espace d’entrée, il ne sait pas quel poids est correct. Cette incertitude se réduit avec plus de données. Elle est capturée par la variance de la postérieure sur les poids.

Incertitude aléatoire (data uncertainty, aleatoric) : provient du bruit intrinsèque dans les données. Même avec des données infinies, certaines prédictions restent incertaines parce que la relation entrée-sortie est intrinsèquement bruitée. Cette incertitude ne se réduit pas avec plus de données.

Le travail fondateur de Kendall et Gal (2017) a montré comment capturer les deux types simultanément dans un BNN : l’incertitude épistémique via la distribution sur les poids, et l’incertitude aléatoire via un paramètre de variance appris en sortie du réseau.

Pourquoi c’est important en pratique Distinguer les deux types d’incertitude est essentiel pour la prise de décision. Face à une incertitude épistémique élevée, la bonne réponse est de collecter plus de données dans cette région (active learning). Face à une incertitude aléatoire élevée, plus de données ne changeront rien : il faut améliorer les capteurs ou accepter l’irréductibilité du bruit.

Méthodes d’inférence

Variational Inference (Bayes by Backprop)

La méthode la plus utilisée pour entraîner un BNN est la variational inference. Au lieu de calculer la postérieure exacte P(w|D) (intractable pour des millions de poids), on apprend une distribution variationnelle q(w|θ) qui l’approxime. Typiquement, q est une gaussienne mean-field : chaque poids a sa propre moyenne μ et variance σ², et les poids sont supposés indépendants.

L’objectif d’entraînement est l’ELBO (Evidence Lower Bound) :

ELBO = E_q[log P(D|w)] - KL(q(w|θ) || P(w))

Le premier terme pousse le modèle à bien expliquer les données. Le second régularise les poids vers le prior (typiquement une gaussienne centrée), agissant comme une forme de weight decay bayésien. L’astuce de reparamétrisation permet de propager les gradients à travers l’échantillonnage des poids.

Blundell et al. (2015, « Weight Uncertainty in Neural Networks ») ont popularisé cette approche sous le nom de « Bayes by Backprop ». L’implémentation est relativement simple : chaque couche linéaire est remplacée par une couche bayésienne qui échantillonne ses poids depuis q à chaque forward pass.

MC Dropout

Gal et Ghahramani (2016) ont montré qu’un réseau de neurones classique avec dropout, utilisé au moment de l’inférence (pas seulement pendant l’entraînement), peut être interprété comme une approximation variationnelle d’un BNN. C’est le Monte Carlo Dropout.

Le principe : au lieu de désactiver le dropout à l’inférence (comme c’est la pratique standard), on le garde actif et on fait T passes forward pour la même entrée. Chaque passe produit une prédiction différente (car les neurones désactivés sont différents). La moyenne des T prédictions est la prédiction finale, et leur variance est une estimation de l’incertitude épistémique.

L’avantage du MC Dropout est sa simplicité : n’importe quel réseau existant avec dropout peut être converti en « BNN approximatif » sans rien changer à l’entraînement. Il suffit de garder le dropout actif à l’inférence et de faire plusieurs passes. C’est la méthode la plus populaire en pratique grâce à son coût d’implémentation quasi nul.

Deep Ensembles

Lakshminarayanan et al. (2017) ont proposé une alternative pragmatique : entraîner M réseaux indépendants (typiquement 5 à 10) avec des initialisations aléatoires différentes. La prédiction finale est la moyenne des M modèles, et la variance entre les prédictions des M modèles estime l’incertitude.

Les deep ensembles ne sont pas strictement bayésiens (ils n’utilisent pas de prior ni de postérieure), mais ils fonctionnent remarquablement bien en pratique. Des comparaisons systématiques montrent que les deep ensembles surpassent souvent les BNN variationnels en termes de qualité de calibration et de prédiction, y compris dans des travaux récents comparant les deux approches sur des potentiels interatomiques pour la science des matériaux.

L’inconvénient principal est le coût : M modèles signifient M fois plus de mémoire et de temps d’entraînement et d’inférence. Des variantes comme BatchEnsemble réduisent ce coût en partageant la plupart des poids entre les modèles.

MCMC pour les BNN

L’approche théoriquement la plus rigoureuse est d’utiliser MCMC (Hamiltonian Monte Carlo, NUTS) pour échantillonner directement la postérieure des poids. Contrairement à la VI, MCMC est asymptotiquement exacte : elle converge vers la vraie postérieure. Neal (1995) a été le pionnier de cette approche avec HMC pour les BNN.

En pratique, MCMC est trop lent pour les réseaux profonds modernes (des millions de poids créent un espace de dimension immense), mais il reste la référence pour les petits modèles et pour valider que les approximations VI ou MC Dropout sont raisonnables.


Applications

Médecine et diagnostic

En imagerie médicale, un BNN qui classifie des radiographies peut signaler « cette image est ambiguë, demandez un second avis » au lieu de produire un diagnostic faussement confiant. La distinction entre incertitude épistémique (cas rare dans les données d’entraînement) et aléatoire (image de mauvaise qualité) aide le médecin à décider de la marche à suivre. Des travaux récents utilisent des BNN physiquement informés pour prédire la rupture par fluage d’alliages d’acier avec des intervalles de confiance fiables.

Science des matériaux et géosciences

Les BNN sont de plus en plus utilisés comme modèles surrogate en science des matériaux. Ils remplacent des simulations par éléments finis coûteuses tout en quantifiant l’incertitude de leurs prédictions. Des travaux publiés dans Computational Methods in Applied Mechanics démontrent que les BNN avec VI capturent à la fois l’incertitude liée au nombre limité de simulations (épistémique) et celle liée à la variabilité des microstructures (aléatoire).

En hydrogéologie, un BNN a atteint un facteur d’accélération de 65x par rapport aux simulations Monte Carlo classiques pour la prédiction du transport de solutés, tout en maintenant des intervalles de confiance calibrés (couverture de 96,8 %).

Conduite autonome

Un véhicule autonome doit savoir quand il peut faire confiance à sa perception et à ses décisions. Un BNN dans le pipeline de perception peut signaler « je ne suis pas sûr que cet objet soit un piéton ou un poteau » et déclencher un ralentissement de précaution. Sans quantification d’incertitude, le véhicule pourrait foncer confiant vers un obstacle mal classifié.

Reinforcement learning bayésien

En reinforcement learning, les BNN alimentent l’exploration dirigée par l’incertitude. Au lieu d’explorer aléatoirement (ε-greedy), l’agent explore les régions où son incertitude est élevée (Thompson sampling, UCB bayésien). Des travaux récents combinent BNN avec du deep RL pour l’optimisation adaptative de systèmes de soutien en génie civil, avec une précision de R² = 0.91 et une couverture probabiliste de 96,8 %.

Active Learning

L’active learning utilise l’incertitude du modèle pour décider quels points étiqueter en priorité. Un BNN identifie les régions de l’espace d’entrée où son incertitude épistémique est maximale, et demande des labels pour ces points. C’est beaucoup plus efficace que l’étiquetage aléatoire, surtout quand l’étiquetage est coûteux (annotation médicale, tests de matériaux, expériences physiques).

Accélération matérielle

Des travaux publiés dans Nature Communications démontrent l’implémentation de BNN directement sur des puces à memristors, exploitant la nature probabiliste intrinsèque de ces composants. Un BNN entraîné par inférence variationnelle avec une « loss technologique » intégrant la physique des memristors a été programmé sur 75 crossbar arrays de 1 024 memristors chacun, réalisant la classification de battements cardiaques avec quantification d’incertitude. Cette approche matérielle ouvre la voie à des BNN embarqués pour les applications edge (capteurs médicaux, IoT) où l’efficacité énergétique est critique.

Comparaison des méthodes

Méthode Fondement théorique Coût entraînement Coût inférence Qualité UQ Simplicité
Bayes by Backprop (VI) Variational Bayes ~2x réseau normal T forward passes Bonne Moyenne
MC Dropout Approx. variationnelle 1x (identique) T forward passes Correcte Très simple
Deep Ensembles Empirique (non bayésien) M × réseau normal M forward passes Excellente Simple
MCMC (HMC/NUTS) Exact (asymptotique) Très élevé T forward passes Référence Complexe
Laplace Approximation Approximation gaussienne ~1.5x Fermée (analytique) Variable Moyenne
Recommandation pratique Pour la majorité des cas, commencez par MC Dropout (coût quasi nul d’implémentation). Si la qualité de l’incertitude est insuffisante, passez aux deep ensembles (meilleure calibration mais coût M×). Réservez la VI complète (Bayes by Backprop) pour les cas où le fondement bayésien rigoureux est nécessaire, et MCMC pour les petits modèles de référence ou la validation.

Implémentation : BNN avec MC Dropout

import torch
import torch.nn as nn
import numpy as np

class MCDropoutNet(nn.Module):
    """Réseau avec MC Dropout pour estimation d'incertitude."""

    def __init__(self, input_dim, hidden_dim=128, dropout_rate=0.1):
        super().__init__()
        self.net = nn.Sequential(
            nn.Linear(input_dim, hidden_dim),
            nn.ReLU(),
            nn.Dropout(dropout_rate),  # Gardé actif à l'inférence
            nn.Linear(hidden_dim, hidden_dim),
            nn.ReLU(),
            nn.Dropout(dropout_rate),
            nn.Linear(hidden_dim, 1),
        )

    def forward(self, x):
        return self.net(x)

    def predict_with_uncertainty(self, x, n_samples=50):
        """Prédiction avec estimation d'incertitude via MC Dropout."""
        self.train()  # Garder dropout ACTIF
        predictions = torch.stack([self(x) for _ in range(n_samples)])
        self.eval()

        mean = predictions.mean(dim=0)       # Prédiction moyenne
        std = predictions.std(dim=0)          # Incertitude épistémique
        return mean, std

# Utilisation
model = MCDropoutNet(input_dim=10)
# ... entraînement normal avec loss standard ...

x_test = torch.randn(5, 10)
mean, uncertainty = model.predict_with_uncertainty(x_test, n_samples=100)
for i in range(5):
    print(f"Prédiction: {mean[i].item():.3f} ± {uncertainty[i].item():.3f}")

Limites et défis

Coût computationnel : toutes les méthodes BNN ajoutent un surcoût par rapport aux réseaux classiques. La VI double approximativement le nombre de paramètres (moyenne + variance pour chaque poids). Les ensembles multiplient le coût par M. Même MC Dropout nécessite T forward passes au lieu d’une seule.

Sous-estimation de l’incertitude : la VI mean-field produit typiquement des intervalles de confiance trop étroits parce qu’elle ne capture pas les corrélations entre poids. Les deep ensembles sont mieux calibrés en pratique.

Scalabilité aux très grands modèles : appliquer un traitement bayésien complet à un LLM de 100 milliards de paramètres reste impraticable. Les approches pragmatiques (MC Dropout sur les couches finales, ensembles de LoRA) sont des compromis nécessaires.

Choix du prior : la performance d’un BNN dépend du prior sur les poids, mais le choix du « bon » prior pour les réseaux profonds est un problème ouvert. Les priors gaussiens isotropes sont simples mais pas nécessairement adaptés. Des travaux JMLR 2025 montrent que les priors à queues lourdes atteignent des taux de convergence optimaux pour les réseaux profonds en régression non paramétrique.


Questions fréquentes sur les Bayesian Neural Networks

Quelle est la différence entre un réseau classique et un BNN ?

Un réseau classique apprend des poids fixes (estimation ponctuelle) et produit une prédiction unique sans mesure d’incertitude. Un BNN apprend une distribution sur les poids (distribution postérieure) et produit une distribution sur les prédictions, quantifiant naturellement l’incertitude. Le réseau classique dit « la réponse est 42 ». Le BNN dit « la réponse est probablement entre 38 et 46, avec une moyenne à 42 ».

MC Dropout est-il vraiment bayésien ?

Techniquement, c’est une approximation variationnelle d’un processus gaussien profond (Gal et Ghahramani, 2016). La distribution variationnelle est implicitement définie par les masques de dropout. C’est une approximation grossière de la vraie postérieure bayésienne, mais elle fonctionne remarquablement bien en pratique pour un coût quasi nul. Les puristes bayésiens préfèrent la VI complète ou MCMC, mais MC Dropout a démocratisé la quantification d’incertitude en la rendant accessible à n’importe quel praticien du deep learning.

Les deep ensembles sont-ils meilleurs que les BNN ?

En termes de qualité de calibration et de performance prédictive, oui, dans la majorité des benchmarks publiés. Des comparaisons récentes (2025) sur des potentiels interatomiques confirment que les deep ensembles surpassent les BNN variationnels (LRT, Flipout, Radial) sur presque toutes les métriques. Cependant, les deep ensembles ne fournissent pas de fondement bayésien rigoureux (pas de prior, pas de postérieure), ce qui peut être important pour certaines applications théoriques ou réglementaires.

Peut-on appliquer les BNN aux LLM ?

Directement, c’est impraticable pour les modèles à des centaines de milliards de paramètres. Cependant, des approximations sont possibles : MC Dropout sur les couches d’attention ou les couches finales, ensembles de modèles fine-tunés avec LoRA, ou Laplace approximation post-hoc. La motivation principale est la détection d’hallucinations : un LLM bayésien pourrait signaler « je ne suis pas sûr de cette réponse » au lieu de halluciner avec confiance. C’est un axe de recherche actif en 2026.

Quels outils utiliser pour implémenter un BNN en Python ?

Pour MC Dropout, n’importe quel framework (PyTorch, TensorFlow) suffit : gardez le dropout actif à l’inférence et faites T passes. Pour la VI complète, TensorFlow Probability (couches DenseFlipout, DenseReparameterization) et Pyro/NumPyro (sur PyTorch/JAX) offrent des implémentations prêtes à l’emploi. Pour les deep ensembles, entraînez simplement M modèles indépendants. Pour MCMC, NumPyro avec NUTS est la référence pour les petits modèles. La librairie Laplace (laplace-torch) fournit une Laplace approximation post-hoc applicable à n’importe quel réseau PyTorch pré-entraîné.

Polydesk.ai — Footer