Polydesk-logotype
Polydesk.ai — Header

Variational Inference (Inférence Variationnelle)

L’inférence variationnelle (VI) est une méthode d’inférence bayésienne approchée qui transforme le problème de calcul d’une distribution postérieure intractable en un problème d’optimisation. Au lieu d’échantillonner la postérieure (comme le fait MCMC), elle cherche la distribution la plus simple qui s’en rapproche le mieux.

Le problème fondamental est le suivant : en statistique bayésienne, on veut calculer la distribution postérieure P(z|x) des variables latentes z étant donné les données observées x. Le théorème de Bayes donne P(z|x) = P(x|z)·P(z) / P(x), mais le dénominateur P(x) (l’évidence) nécessite d’intégrer sur toutes les valeurs possibles de z. Pour des modèles complexes avec des millions de variables latentes, cette intégrale est intractable.

L’inférence variationnelle contourne ce problème en posant une question différente : « Quelle est la distribution simple q(z) qui ressemble le plus à la vraie postérieure P(z|x) ? ». Ce « ressembler le plus » est mesuré par la divergence KL, et la recherche de q optimale se fait par descente de gradient. On transforme l’inférence (un problème d’intégration) en optimisation (un problème de minimisation).

C’est cette reformulation qui a rendu la VI incontournable en machine learning moderne : elle est plus rapide que MCMC, plus facilement parallélisable sur GPU, et naturellement intégrable dans les pipelines de deep learning via la rétropropagation. Les Variational Autoencoders (VAE), l’un des modèles génératifs les plus influents, reposent entièrement sur l’inférence variationnelle.

Variational Inference en bref
Catégorie
Méthode d’inférence bayésienne approchée
Objectif
Approximer une postérieure intractable P(z|x) par une distribution simple q(z)
Outil central
Evidence Lower Bound (ELBO) / Divergence KL
Variantes
Mean-field VI, Stochastic VI, Amortized VI, Black-box VI, Normalizing Flows
Applications
VAE, réseaux bayésiens, topic modeling, estimation d’incertitude, physique

Pourquoi l’inférence exacte est impossible

En inférence bayésienne, le calcul de la postérieure nécessite l’évaluation de l’évidence (ou vraisemblance marginale) :

P(x) = ∫ P(x|z) · P(z) dz

Cette intégrale somme (ou intègre) sur toutes les configurations possibles des variables latentes z. Pour un modèle simple avec quelques variables discrètes, c’est faisable. Pour un réseau de neurones avec des millions de poids (chacun étant une variable latente dans un cadre bayésien), ou pour un modèle latent avec des espaces continus de haute dimension, l’intégrale est astronomiquement complexe.

Deux familles de solutions approchées existent. Les méthodes de Monte Carlo (MCMC, Gibbs sampling, Hamiltonian MC) échantillonnent la postérieure : elles sont théoriquement exactes (convergent vers la vraie distribution avec assez d’échantillons) mais lentes, difficiles à diagnostiquer (on ne sait pas quand elles ont convergé), et mal adaptées aux GPU et à la parallélisation.

L’inférence variationnelle prend l’autre chemin : elle optimise plutôt que d’échantillonner. C’est plus rapide, on sait quand l’algorithme a convergé (l’objectif d’optimisation se stabilise), mais la solution est biaisée (elle ne converge pas vers la vraie postérieure sauf si la famille variationnelle la contient).

La théorie fondamentale

La divergence KL

La divergence de Kullback-Leibler mesure la « distance » (au sens informationnel) entre deux distributions. Pour mesurer à quel point q(z) s’éloigne de P(z|x) :

KL(q(z) || P(z|x)) = E_q[log q(z) - log P(z|x)]

Minimiser cette divergence KL revient à trouver le q le plus proche de la vraie postérieure. Le problème : cette expression contient P(z|x), qu’on ne sait pas calculer (c’est exactement ce qu’on cherche à approximer). On tourne en rond.

L’ELBO : la clé de voûte

L’astuce centrale de la VI est de reformuler la divergence KL pour faire apparaître un objectif calculable. En développant :

log P(x) = ELBO(q) + KL(q(z) || P(z|x))

où l’ELBO (Evidence Lower Bound) est défini par :

ELBO(q) = E_q[log P(x, z) - log q(z)]

Comme log P(x) est une constante (elle ne dépend pas de q) et que la KL est toujours ≥ 0, maximiser l’ELBO revient exactement à minimiser la KL. Et l’ELBO est calculable : il ne contient que le modèle joint P(x, z) (qu’on connaît) et la distribution variationnelle q(z) (qu’on choisit).

L’ELBO se décompose en deux termes interprétables :

ELBO = E_q[log P(x|z)] - KL(q(z) || P(z))

Le premier terme est la vraisemblance attendue : q doit expliquer les données. Le second est un terme de régularisation : q ne doit pas s’éloigner trop du prior P(z). C’est un compromis entre fidélité aux données et parcimonie, exactement comme la régularisation en machine learning classique.

ELBO = borne inférieure sur l’évidence L’ELBO est toujours inférieur ou égal à log P(x) (d’où son nom de « borne inférieure »). L’écart entre les deux est exactement la divergence KL entre q et la postérieure. Plus l’ELBO est élevé, meilleure est l’approximation. Un ELBO qui atteint log P(x) signifie KL = 0, c’est-à-dire que q est exactement la postérieure.

Mean-field : l’approximation factorielle

L’approximation mean-field est la forme la plus simple et la plus utilisée de VI. On suppose que la distribution variationnelle q se factorise en composantes indépendantes :

q(z) = q₁(z₁) · q₂(z₂) · ... · qₙ(zₙ)

Chaque variable latente est traitée indépendamment des autres. C’est une hypothèse forte (la postérieure réelle a souvent des corrélations entre variables), mais elle rend l’optimisation tractable : on peut optimiser chaque qᵢ séparément en gardant les autres fixes (optimisation coordonnée).

L’avantage est la simplicité et la vitesse. La limite est qu’on ne peut pas capturer les corrélations entre variables latentes, ce qui conduit à sous-estimer la variance de la postérieure (le q mean-field est typiquement trop « concentré » par rapport à la vraie postérieure).

Techniques modernes

Stochastic Variational Inference (SVI)

La VI classique traite toutes les données à chaque itération, ce qui la rend impraticable sur de gros datasets. Le SVI (Hoffman et al., 2013) applique la descente de gradient stochastique (SGD) à l’optimisation de l’ELBO : à chaque itération, on ne traite qu’un mini-batch de données, et on met à jour les paramètres variationnels avec un estimateur non biaisé du gradient.

Le SVI a rendu la VI applicable à des datasets de millions de points, et c’est la méthode standard pour les modèles bayésiens à grande échelle comme le Latent Dirichlet Allocation (LDA) pour le topic modeling.

Black-Box Variational Inference (BBVI)

Le BBVI (Ranganath et al., 2014) généralise la VI à n’importe quel modèle probabiliste. L’idée est d’estimer le gradient de l’ELBO par Monte Carlo, sans avoir besoin de dériver analytiquement les mises à jour pour chaque modèle spécifique. Deux techniques principales estiment ce gradient :

Le score function estimator (REINFORCE) utilise l’astuce du log-dérivé pour exprimer le gradient comme une espérance échantillonnable. Il est générique mais a une variance élevée.

L’estimateur par reparamétrisation (Kingma et Welling, 2014) ré-écrit l’échantillonnage de q comme une transformation déterministe d’un bruit aléatoire, permettant de propager les gradients directement à travers les échantillons. Il a une variance plus faible mais nécessite que q soit « reparamétrisable » (typiquement gaussienne).

Amortized Variational Inference

Dans la VI classique, chaque point de donnée a ses propres paramètres variationnels. L’inférence amortisée utilise un réseau de neurones (le réseau d’inférence ou encodeur) pour prédire directement les paramètres variationnels à partir des données. Au lieu d’optimiser séparément pour chaque x, on entraîne un réseau qui apprend la correspondance x → paramètres de q(z|x).

C’est exactement le mécanisme du VAE : l’encodeur est un réseau d’inférence amortisée qui prend une image en entrée et produit les paramètres (moyenne et variance) de la distribution variationnelle gaussienne sur l’espace latent.

Normalizing Flows

L’une des limites du mean-field est la restriction à des distributions simples (typiquement gaussiennes). Les normalizing flows enrichissent la famille variationnelle en appliquant une série de transformations inversibles à une distribution simple. Chaque transformation complexifie la distribution tout en gardant le calcul de la densité tractable.

Concrètement, on part d’un z₀ ~ N(0, I) et on applique des transformations f₁, f₂, …, fₖ pour obtenir zₖ = fₖ(… f₂(f₁(z₀))). La densité de zₖ peut être calculée via la formule du changement de variable. Le résultat est une distribution variationnelle beaucoup plus expressive, capable de capturer des postérieures multimodales et corrélées.


Le Variational Autoencoder (VAE)

Le VAE (Kingma et Welling, 2014 ; Rezende et al., 2014) est l’application la plus célèbre de l’inférence variationnelle en deep learning. C’est un modèle génératif qui combine un encodeur (réseau d’inférence) et un décodeur (modèle génératif) entraînés conjointement en maximisant l’ELBO.

L’encodeur qφ(z|x) prend une observation x (ex. : une image) et produit les paramètres d’une distribution gaussienne dans l’espace latent : une moyenne μ et une variance σ². C’est l’inférence amortisée.

L’espace latent z est un vecteur de faible dimension qui capture les facteurs de variation essentiels de x. Le prior P(z) est fixé comme une gaussienne standard N(0, I).

Le décodeur pθ(x|z) prend un point de l’espace latent et reconstruit l’observation. C’est le modèle génératif.

L’objectif d’entraînement est exactement l’ELBO :

ELBO = E_q[log pθ(x|z)] - KL(qφ(z|x) || N(0, I))

Le premier terme pousse le VAE à bien reconstruire les données. Le second régularise l’espace latent pour qu’il reste proche d’une gaussienne standard, ce qui permet l’échantillonnage de nouveaux z et donc la génération de nouvelles données.

L’astuce de reparamétrisation est cruciale : au lieu d’échantillonner directement z ~ qφ(z|x), on écrit z = μ + σ · ε où ε ~ N(0, I). Cela permet de rétropropager les gradients à travers l’échantillonnage et d’entraîner l’encodeur par descente de gradient standard.

VAE dans les architectures modernes Le VAE n’est plus utilisé seul pour la génération d’images haute résolution (les modèles de diffusion et les GAN le surpassent en qualité), mais sa composante encodeur est intégrée dans des architectures comme Stable Diffusion, où le VAE encode les images dans un espace latent de dimension réduite avant d’appliquer la diffusion. C’est le « latent » dans « Latent Diffusion Model ».

Applications

Modèles génératifs

Au-delà du VAE classique, la VI alimente une famille de modèles génératifs profonds. Les hierarchical VAE (NVAE, VDVAE) empilent des couches de variables latentes pour capturer des structures à différentes échelles. Les VAE-GAN combinent la régularisation variationnelle du VAE avec le signal adversarial du GAN pour une meilleure qualité de génération.

Deep learning bayésien

Les réseaux de neurones bayésiens placent des distributions sur les poids du réseau plutôt que des valeurs ponctuelles. La VI (souvent mean-field gaussien sur les poids) est la méthode la plus courante pour entraîner ces réseaux. Le résultat est un modèle qui produit non seulement une prédiction mais aussi une estimation d’incertitude, essentielle pour les applications critiques (médecine, conduite autonome, finance).

Des travaux de 2025 dans JMLR démontrent que la Variational Bayes avec des priors à queues lourdes sur les poids de réseaux profonds atteint des taux de convergence optimaux en régression non paramétrique, avec adaptation automatique à la régularité de la fonction inconnue.

Topic modeling et NLP

Le Latent Dirichlet Allocation (LDA), le modèle classique de découverte de thèmes dans des corpus de texte, utilise la VI pour inférer les distributions de thèmes dans chaque document et les distributions de mots dans chaque thème. Le SVI a permis d’appliquer LDA à des corpus de millions de documents.

Physique et sciences

Un article de 2025 dans les Philosophical Transactions of the Royal Society présente la VI comme la méthodologie de référence pour l’inférence dans les modèles génératifs profonds appliqués à la physique. La VI est utilisée pour les problèmes inverses (reconstruire des paramètres physiques à partir d’observations), les modèles surrogate (remplacer des simulations PDE coûteuses), et la quantification d’incertitude dans les prédictions physiques.

Systèmes de recommandation

Les VAE collaboratifs modélisent les préférences utilisateurs comme des variables latentes inférées par VI. Ils fournissent des recommandations avec quantification d’incertitude, permettant de distinguer « l’utilisateur n’aimera probablement pas cet item » de « on ne sait pas si l’utilisateur aimera cet item » (exploration vs exploitation).


VI vs MCMC : guide de choix

Critère Variational Inference MCMC
Nature Optimisation Échantillonnage
Vitesse Rapide (surtout avec SGD) Lent (convergence difficile à diagnostiquer)
Précision Biaisée (dépend de la famille Q) Asymptotiquement exacte
Scalabilité Excellente (mini-batches, GPU) Limitée (dataset entier à chaque itération)
Convergence Détectable (ELBO se stabilise) Difficile à diagnostiquer
Multimodalité Difficile (mean-field capture un mode) Possible (mais transitions lentes entre modes)
Intégration deep learning Naturelle (rétropropagation) Plus complexe
Cas d’usage Modèles à grande échelle, VAE, deep learning bayésien Petits modèles où la précision est critique
Le biais de la VI n’est pas anodin La VI mean-field tend à sous-estimer la variance de la postérieure (elle produit des intervalles de confiance trop étroits). Pour des décisions à haut risque (médecine, finance), ce biais peut être dangereux. Les normalizing flows et les méthodes hybrides VI+MCMC atténuent ce problème, mais ne l’éliminent pas entièrement. Quand la précision de l’incertitude est critique, MCMC reste la référence.

Implémentation

Voici un VAE minimal en PyTorch illustrant les concepts clés de la VI :

import torch
import torch.nn as nn
import torch.nn.functional as F

class VAE(nn.Module):
    def __init__(self, input_dim=784, latent_dim=20):
        super().__init__()
        # Encodeur (réseau d'inférence amortisée)
        self.fc1 = nn.Linear(input_dim, 400)
        self.fc_mu = nn.Linear(400, latent_dim)      # Moyenne de q(z|x)
        self.fc_logvar = nn.Linear(400, latent_dim)   # Log-variance de q(z|x)
        # Décodeur (modèle génératif)
        self.fc3 = nn.Linear(latent_dim, 400)
        self.fc4 = nn.Linear(400, input_dim)

    def encode(self, x):
        h = F.relu(self.fc1(x))
        return self.fc_mu(h), self.fc_logvar(h)

    def reparameterize(self, mu, logvar):
        """Astuce de reparamétrisation : z = mu + sigma * epsilon"""
        std = torch.exp(0.5 * logvar)
        eps = torch.randn_like(std)  # epsilon ~ N(0, I)
        return mu + std * eps

    def decode(self, z):
        h = F.relu(self.fc3(z))
        return torch.sigmoid(self.fc4(h))

    def forward(self, x):
        mu, logvar = self.encode(x.view(-1, 784))
        z = self.reparameterize(mu, logvar)
        return self.decode(z), mu, logvar

def elbo_loss(recon_x, x, mu, logvar):
    """ELBO = reconstruction + régularisation KL"""
    # Terme de reconstruction : E_q[log p(x|z)]
    recon = F.binary_cross_entropy(recon_x, x.view(-1, 784), reduction='sum')
    # Terme KL : KL(q(z|x) || N(0,I))
    # Formule analytique pour deux gaussiennes
    kl = -0.5 * torch.sum(1 + logvar - mu.pow(2) - logvar.exp())
    return recon + kl

Les librairies Pyro (Uber) et NumPyro (JAX) fournissent des frameworks complets pour la VI avec support automatique du SVI, des guides variationnels, et des normalizing flows.

Tendances récentes

VI pour les LLM : des travaux explorent l’utilisation de la VI pour le fine-tuning bayésien des LLM, permettant de quantifier l’incertitude des réponses générées. C’est particulièrement pertinent pour la détection d’hallucinations : un modèle bayésien peut distinguer « je ne sais pas » (haute incertitude) de « je suis confiant dans ma réponse ».

Physique-informée : la combinaison de VI avec des contraintes physiques (PDE, lois de conservation) permet de faire de l’inférence sur des systèmes physiques complexes avec quantification d’incertitude intégrée. C’est un domaine actif en 2025-2026.

Score-based VI : les modèles de diffusion (score-based models) peuvent être interprétés dans un cadre variationnel, unifiant la diffusion et la VI sous un même formalisme mathématique.


Questions fréquentes sur l’inférence variationnelle

Quelle est la différence entre variational inference et MCMC ?

La VI transforme l’inférence en optimisation : elle cherche la meilleure approximation de la postérieure dans une famille de distributions simples. MCMC (Monte Carlo, Gibbs sampling) transforme l’inférence en échantillonnage : elle génère des échantillons de la postérieure réelle. La VI est plus rapide et scalable mais biaisée. MCMC est asymptotiquement exacte mais lente. En pratique, la VI domine pour les modèles à grande échelle (VAE, deep learning bayésien), MCMC pour les petits modèles où la précision est critique.

Qu’est-ce que l’ELBO exactement ?

L’ELBO (Evidence Lower Bound) est l’objectif d’optimisation de la VI. C’est une borne inférieure sur le log de l’évidence log P(x). Maximiser l’ELBO revient à minimiser la divergence KL entre la distribution variationnelle q(z) et la vraie postérieure P(z|x). L’ELBO se décompose en un terme de vraisemblance des données (l’approximation doit expliquer les observations) et un terme de régularisation KL (l’approximation ne doit pas trop s’éloigner du prior). C’est le même compromis que la régularisation en ML classique.

Le VAE est-il un cas particulier de variational inference ?

Oui. Le VAE est une application spécifique de la VI amortisée à la modélisation générative. L’encodeur du VAE est le réseau d’inférence amortisée (il produit les paramètres de q(z|x) pour chaque observation), et le décodeur est le modèle génératif P(x|z). L’objectif d’entraînement est l’ELBO, et l’astuce de reparamétrisation permet l’entraînement par rétropropagation. Tout le framework mathématique du VAE découle directement de la théorie de la VI.

La variational inference est-elle utilisée dans les LLM modernes ?

Pas directement dans l’architecture standard des LLM (qui sont des modèles autorégressifs entraînés par maximum de vraisemblance). Cependant, la VI influence indirectement les LLM de plusieurs façons : le composant VAE dans les modèles de diffusion latente (Stable Diffusion), le fine-tuning bayésien pour la quantification d’incertitude, et les connexions théoriques entre l’ELBO et la divergence KL utilisée dans le RLHF (la pénalité KL entre la politique courante et la politique de référence a une interprétation variationnelle).

Quels outils utiliser pour l’inférence variationnelle en Python ?

Pyro (basé sur PyTorch) et NumPyro (basé sur JAX) sont les frameworks de référence. Ils fournissent des guides variationnels automatiques, du SVI intégré, des normalizing flows, et une syntaxe déclarative pour spécifier des modèles probabilistes. Pour des applications simples, PyTorch seul suffit (comme dans l’exemple VAE ci-dessus). Stan et Edward sont des alternatives pour la statistique bayésienne plus traditionnelle. TensorFlow Probability offre un écosystème TensorFlow pour la VI.

Polydesk.ai — Footer