Accueil / Factory / Algos ML / VAE — factory / algos ML / modèles génératifs

AUTOENCODEUR VARIATIONNEL.

Un VAE (autoencodeur variationnel) compresse chaque donnée en quelques nombres, puis la reconstruit. Contrairement à un autoencodeur classique, il organise cet espace compressé de façon régulière : un point tiré au hasard y donne une donnée nouvelle et crédible. Il sert à générer, à cartographier une base et à repérer les cas atypiques.

GénérationDeep learningEspace latentDétection d'anomaliesNiveau : avancé

FICHE D'IDENTITÉ

notes sur 5 · usage entreprise
PerformanceGénère des données plausibles, mais souvent floues
InterprétabilitéEspace latent visualisable, dimensions sans sens garanti
VitesseEntraînement court sur petites images, génération immédiate
Facilité de réglageStable, mais compromis netteté / régularité à doser
Tolérance aux données brutesDonnées à mettre à l'échelle, perte à choisir selon leur type
EN 30 SECONDES

Un archiviste qui résume chaque dossier en deux coordonnées et range ces résumés sur un plan sans trou. N'importe quel point du plan correspond alors à un dossier plausible, même s'il n'a jamais existé.

1. L'encodeur résume en une zone

Chaque image est traduite en une moyenne et une variance dans un petit espace, ici à 2 dimensions. L'encodeur ne donne pas un point précis mais une zone probable.

2. On tire un point et on reconstruit

On tire un point dans cette zone, et le décodeur reconstruit l'image à partir de lui. L'erreur de reconstruction dit si le résumé a gardé l'essentiel.

3. Une pénalité garde l'espace régulier

Une seconde perte, la divergence de Kullback-Leibler, rapproche chaque zone d'une loi normale standard. L'espace n'a plus de trou : un point tiré au hasard donne une image crédible.

LE CAS MÉTIER

saisie de formulaires · banque / assurance / administration
EN ENTRÉE

1 797 chiffres manuscrits de 8 × 8 pixels

Des chiffres numérisés, chaque image formant une ligne de 64 intensités. Le VAE apprend sans utiliser les étiquettes.

EN SORTIE

Un score d'atypie et des chiffres inédits

Chaque image reçoit une erreur de reconstruction : les plus élevées signalent des chiffres mal formés, à envoyer en vérification humaine. Le décodeur génère aussi un chiffre nouveau à partir d'un point tiré au hasard.

CE QU'ON MESURE

La part de vrais douteux parmi les signalés

On fait relire les images les plus atypiques et on compte la part réellement illisible ou ambiguë. On fixe ensuite le seuil selon la capacité de l'équipe de vérification.

QUAND LE SORTIR, QUAND L'ÉVITER

OUI

  • Générer des variantes réalistes d'un jeu de données pour tester ou augmenter
  • Repérer des cas atypiques sans exemples d'anomalies étiquetés
  • Cartographier une base complexe sur un plan à 2 dimensions bien organisé
  • Comprendre les modèles récents : Stable Diffusion travaille dans l'espace compressé d'un autoencodeur de cette famille

NON

  • Images nettes et détaillées : un modèle de diffusion ou un GAN fait mieux
  • Anomalies dans un simple tableau : essayer d'abord Isolation Forest
  • Moins de quelques centaines d'exemples : le réseau n'a pas de quoi apprendre
  • Besoin d'axes interprétables : une ACP est plus lisible
LES 4 RÉGLAGES QUI COMPTENT

Noms donnés pour le code PyTorch de la fiche.

Dimension latente

Taille du résumé. 2 permet de dessiner la carte ; 10 à 50 reconstruit mieux. On choisit selon l'usage.

Poids de la pénalité KL (beta)

Plus il est fort, plus l'espace est régulier mais plus les reconstructions sont floues. Le VAE standard prend 1 ; les beta-VAE l'augmentent pour obtenir des dimensions plus lisibles.

Perte de reconstruction

Entropie croisée binaire pour des valeurs entre 0 et 1, comme les pixels du code ; erreur quadratique pour des valeurs continues. Ce choix change l'équilibre avec la pénalité KL.

Seuil d'atypie

Un réglage de la décision, pas du modèle : quelle part des images envoie-t-on en vérification ? On le fixe par un quantile, par exemple les 2 % les plus mal reconstruites.

LE CODE MINIMAL

jeu d'exemple : chiffres_manuscrits.csv ↓
# Formulaires manuscrits : VAE en Python
import pandas as pd
import torch
from torch import nn

chiffres = pd.read_csv("chiffres_manuscrits.csv")
X = torch.tensor(chiffres.drop(columns="chiffre").values / 16, dtype=torch.float32)  # pixels entre 0 et 1

torch.manual_seed(42)
encodeur = nn.Sequential(nn.Linear(64, 128), nn.ReLU(), nn.Linear(128, 4))  # 2 moyennes + 2 log-variances
decodeur = nn.Sequential(nn.Linear(2, 128), nn.ReLU(), nn.Linear(128, 64), nn.Sigmoid())
opt = torch.optim.Adam(list(encodeur.parameters()) + list(decodeur.parameters()), lr=1e-3)

def pertes(x):
    mu, logvar = encodeur(x).chunk(2, dim=1)
    z = mu + torch.randn_like(mu) * torch.exp(0.5 * logvar)  # tirage dans la zone (reparamétrisation)
    reconstruction = nn.functional.binary_cross_entropy(decodeur(z), x, reduction="none").sum(1)
    kl = -0.5 * (1 + logvar - mu ** 2 - logvar.exp()).sum(1)  # écart à la loi normale standard
    return reconstruction, kl

for epoque in range(100):
    for lot in torch.randperm(len(X)).split(128):
        reconstruction, kl = pertes(X[lot])
        perte = (reconstruction + kl).mean()
        opt.zero_grad(); perte.backward(); opt.step()

with torch.no_grad():
    erreur = pertes(X)[0]  # score d'atypie : erreur de reconstruction de chaque image
    print("Chiffres des 10 images les plus atypiques :", chiffres["chiffre"].values[erreur.argsort()[-10:].numpy()])
    nouveau = decodeur(torch.randn(1, 2)) * 16  # un chiffre inédit, tiré au hasard
    print(nouveau.round().reshape(8, 8))

Les VAE se pratiquent en Python (PyTorch, Keras) : le package R keras3 le permet, mais l'usage reste rare en entreprise.

QUESTIONS FRÉQUENTES

Quelle différence entre un autoencodeur et un VAE ?

Un autoencodeur classique associe à chaque donnée un point précis de l'espace compressé, avec des trous entre les points : générer y est hasardeux. Le VAE associe une zone à chaque donnée et impose que ces zones remplissent l'espace régulièrement, ce qui permet de générer par simple tirage.

Pourquoi les images générées par un VAE sont-elles floues ?

La perte de reconstruction favorise une moyenne des images plausibles, et la pénalité KL limite la précision du résumé. Le résultat ressemble à une image moyenne, donc floue. Les GAN et les modèles de diffusion produisent des images plus nettes.

À quoi sert l'astuce de reparamétrisation ?

Un tirage au hasard bloque normalement le calcul des gradients. L'astuce écrit le tirage comme moyenne plus écart-type multiplié par un bruit tiré à part : le réseau peut alors apprendre moyenne et écart-type par descente de gradient. C'est la ligne « z = mu + … » du code.

LES ALGOS VOISINS

à comparer avant de choisir
la version sans génération

Autoencodeur

Compresse et reconstruit aussi, mais son espace compressé a des trous : on ne peut pas y générer de façon fiable.

Voir la fiche →
l'autre générateur

GAN

Images plus nettes, mais entraînement instable et aucun espace latent organisé par construction.

Voir la fiche →
le successeur

Modèles de diffusion

Les plus performants pour générer des images. Stable Diffusion débruite dans l'espace compressé d'un autoencodeur de ce type.

Voir la fiche →
— formation

Passer de la fiche à la pratique

Dataistudio forme les équipes au machine learning et à l'IA, sur des cas concrets.

Voir les formations →