Garden of KnowledgeApplied Sciences › Computer Science › Software › Data Science › Machine Learning › DeepLearning
February 22, 2026

Autoencoders

Un autoencoder est un réseau de neurones entraîné à reconstruire son entrée en passant par une représentation compressée (le code latent). Il apprend à compresser les données de manière non-linéaire, puis à les reconstruire.

Architecture de base§

graph LR
    X["Entrée x<br/>(ex: image 784 px)"] --> ENC["Encodeur"]
    ENC --> Z["Code latent z<br/>(ex: 32 dimensions)"]
    Z --> DEC["Décodeur"]
    DEC --> XHAT["Reconstruction x̂<br/>(ex: image 784 px)"]

    X -.->|"Comparer : Loss = ||x - x̂||²"| XHAT

    style X fill:#2196F3,color:#fff
    style Z fill:#FF9800,color:#fff
    style XHAT fill:#4CAF50,color:#fff
ComposantRôleAnalogie
EncodeurCompresse l’entrée en un code latent de dimension réduiteUn résumé d’un livre
Code latent (z)Représentation compressée — le “goulot d’étranglement”Le résumé lui-même
DécodeurReconstruit l’entrée à partir du code latentRéécrire le livre à partir du résumé

Fonction de perte : erreur de reconstruction $$\mathcal{L} = ||x - \hat{x}||^2 = \sum_i (x_i - \hat{x}_i)^2$$

Le réseau apprend les features les plus importantes pour pouvoir reconstruire — c’est une forme de compression avec perte.

Types d’autoencoders§

graph TB
    AE["Autoencoders"] --> UNDER["Undercomplete<br/>(compression)"]
    AE --> SPARSE["Sparse<br/>(contrainte de parcimonie)"]
    AE --> DENOISING["Denoising<br/>(résistance au bruit)"]
    AE --> VAE2["VAE<br/>(génératif)"]
    AE --> CONV["Convolutional<br/>(pour images)"]

    style AE fill:#673AB7,color:#fff
    style VAE2 fill:#4CAF50,color:#fff
    style DENOISING fill:#FF9800,color:#fff

Undercomplete Autoencoder§

Le type le plus simple : la dimension du code latent est inférieure à celle de l’entrée, forçant le réseau à apprendre une compression efficace.

Sparse Autoencoder§

Ajoute une contrainte de parcimonie : seuls quelques neurones du code latent doivent être activés simultanément.

$$\mathcal{L} = ||x - \hat{x}||^2 + \lambda \sum_j |z_j|$$

Denoising Autoencoder§

L’entrée est corrompue (bruit ajouté), mais le réseau doit reconstruire l’entrée originale propre.

graph LR
    X["x (original)"] --> NOISE["+ Bruit"]
    NOISE --> XTILDE["x̃ (corrompu)"]
    XTILDE --> ENC2["Encodeur"]
    ENC2 --> Z2["z"]
    Z2 --> DEC2["Décodeur"]
    DEC2 --> XHAT2["x̂ ≈ x (propre)"]

    style NOISE fill:#F44336,color:#fff
    style XHAT2 fill:#4CAF50,color:#fff

Convolutional Autoencoder§

Utilise des couches de convolution (encodeur) et de convolution transposée (décodeur) au lieu de couches denses. Adapté aux images.

Variational Autoencoder (VAE)§

Le VAE est la variante la plus importante. Contrairement à un autoencoder classique, il apprend une distribution dans l’espace latent, ce qui en fait un modèle génératif.

Différence fondamentale§

Autoencoder classiqueVAE
Code latentUn point fixe $z$Une distribution $q(z \mid x) = \mathcal{N}(\mu, \sigma^2)$
Espace latentDésordonné, pas de structureContinu et structuré
GénérationDifficile (pas de structure)Échantillonner $z \sim \mathcal{N}(\mu, \sigma^2)$ et décoder
UtilisationCompression, débruitageGénération de nouvelles données

Architecture du VAE§

graph LR
    X3["Entrée x"] --> ENC3["Encodeur"]
    ENC3 --> MU["μ (moyenne)"]
    ENC3 --> SIGMA["σ (écart-type)"]
    MU --> SAMPLE["Échantillonnage<br/>z = μ + σ × ε<br/>ε ~ N(0,1)"]
    SIGMA --> SAMPLE
    SAMPLE --> DEC3["Décodeur"]
    DEC3 --> XHAT3["Reconstruction x̂"]

    style X3 fill:#2196F3,color:#fff
    style SAMPLE fill:#FF9800,color:#fff
    style XHAT3 fill:#4CAF50,color:#fff

Fonction de perte du VAE§

La loss du VAE combine deux termes :

$$\mathcal{L} = \underbrace{||x - \hat{x}||^2}{\text{Reconstruction}} + \underbrace{D{KL}\big(q(z|x) ;|; p(z)\big)}_{\text{Régularisation}}$$

TermeRôle
ReconstructionLa sortie doit ressembler à l’entrée
KL DivergenceL’espace latent doit ressembler à une distribution normale $\mathcal{N}(0, 1)$

La KL Divergence est cruciale : elle force l’espace latent à être régulier et continu, ce qui permet de générer de nouvelles données en échantillonnant.

Le reparameterization trick§

Problème : l’échantillonnage $z \sim q(z|x)$ n’est pas différentiable — on ne peut pas rétro-propager.

Solution : réécrire l’échantillonnage comme : $$z = \mu + \sigma \odot \varepsilon, \quad \varepsilon \sim \mathcal{N}(0, I)$$

Le caractère aléatoire est isolé dans $\varepsilon$ (qui ne dépend pas des paramètres), et $\mu$ et $\sigma$ restent différentiables.

Applications§

ApplicationType d’autoencoderDescription
Réduction de dimensionnalitéUndercompleteAlternative non-linéaire à PCA
Détection d’anomaliesTous typesErreur de reconstruction élevée = anomalie
Débruitage d’imagesDenoisingRestaurer des images corrompues
Génération de donnéesVAECréer de nouveaux visages, molécules, musique
InterpolationVAETransitions fluides entre deux images dans l’espace latent
CompressionConvolutionalCompresser des images avec moins de perte que JPEG
Apprentissage de représentationsTous typesPré-entraîner des features pour d’autres tâches

VAE vs GAN§

CritèreVAEGAN
EntraînementStable (une seule loss)Instable (jeu à 2 joueurs)
Qualité des imagesFloues (tendance à moyenner)Nettes et réalistes
DiversitéBonne (espace latent régulier)Risque de mode collapse
Espace latentStructuré, interprétableNon structuré
ÉvaluationELBO (objectif clair)Pas de métrique simple

Les VAE produisent des images plus floues mais offrent un espace latent structuré. Les GAN produisent des images plus nettes mais sont plus difficiles à entraîner.

—The Gardener