Formation ML / Apprentissage non supervisé / Deep learning

Autoencoders

Intermédiaire 45 min 13 sections

Ce que le réseau reconstruit mal est ce qu'il n'a jamais vu : la fraude se détecte ainsi.

Objectifs d'apprentissage

  • Comprendre l'architecture encodeur-décodeur
  • Utiliser les autoencoders pour la réduction de dimensionnalité
  • Détecter des anomalies avec les autoencoders
  • Connaître les variantes (VAE, denoising)

Prérequis

Module Réseau de neurones recommandé

Théorie

Qu'est-ce qu'un autoencoder?

Un autoencoder est un réseau de neurones qui apprend à reconstruire son entrée après l'avoir comprimée.

Architecture:

  • Encodeur: Comprime l'entrée en une représentation plus petite (latent space)
  • Goulot d'étranglement: Représentation comprimée
  • Décodeur: Reconstruit l'entrée à partir de la représentation comprimée

Objectif:

Minimiser l'erreur de reconstruction: $L = ||x - \hat{x}||^2$

Intuition:

"Si je peux compresser une image et la reconstruire fidèlement, c'est que j'ai capture l'essentiel."

Applications:

  • Compression: Réduire la taille des données
  • Debruitage: Enlever le bruit (denoising autoencoder)
  • Détection d'anomalies: Les anomalies sont mal reconstruites
  • Génération: Variational Autoencoder (VAE)
  • Réduction de dimensionnalité: Alternative à PCA
Théorie

Schéma: Architecture Autoencoder

Structure de l'autoencoder:

flowchart LR I["Entrée
(784 dim)"] subgraph Encoder ["Encodeur"] E1["Dense 256"] E2["Dense 64"] end L["Latent Space
(16 dim)"] subgraph Decoder ["Décodeur"] D1["Dense 64"] D2["Dense 256"] end O["Sortie
(784 dim)"] I --> E1 --> E2 --> L --> D1 --> D2 --> O class L ml-node-accent

Compression et reconstruction:

flowchart TD X["x (entrée)"] Z["z = encode(x)
(comprime)"] X_hat["x^ = décode(z)
(reconstruit)"] L["Loss = ||x - x^||"] X --> Z --> X_hat --> L class Z ml-node-main class L ml-node-accent

Pour la détection d'anomalies:

  • Données normales: Bien reconstruites (faible erreur)
  • Anomalies: Mal reconstruites (forte erreur)

Exemple concret avec code couleur - Reconstruction et détection:

Entrée originale (4 features):

$x = [\textcolor{#3498db}{100}, \textcolor{#e67e22}{45}, \textcolor{#27ae60}{12}, \textcolor{#9B7AC4}{3.5}]$

(montant, heure, âge compte, nb transactions)

Étape 1 - Encodage (compression):

$z = \text{encode}(x) = [\textcolor{#F7E64D}{2.3}, \textcolor{#F7E64D}{-0.8}]$ (2 dimensions)

Étape 2 - Décodage (reconstruction):

$\hat{x} = \text{décode}(z) = [\textcolor{#3498db}{98}, \textcolor{#e67e22}{44}, \textcolor{#27ae60}{13}, \textcolor{#9B7AC4}{3.6}]$

Étape 3 - Erreur de reconstruction:

$\text{Erreur} = ||x - \hat{x}||^2 = (\textcolor{#3498db}{100-98})^2 + (\textcolor{#e67e22}{45-44})^2 + (\textcolor{#27ae60}{12-13})^2 + (\textcolor{#9B7AC4}{3.5-3.6})^2$

$\text{Erreur} = \textcolor{#3498db}{4} + \textcolor{#e67e22}{1} + \textcolor{#27ae60}{1} + \textcolor{#9B7AC4}{0.01} = \textcolor{#27ae60}{\mathbf{6.01}}$ (faible → normal)

Pour une anomalie (fraude):

$x_{fraude} = [5000, 3, 1, 0.1]$ → Erreur = $\textcolor{#e74c3c}{\mathbf{2500}}$ (élevée → anomalie!)

Légende des couleurs:

  • $\textcolor{#3498db}{Bleu}$: Montant de transaction
  • $\textcolor{#e67e22}{Orange}$: Heure de transaction
  • $\textcolor{#27ae60}{Vert}$: Âge du compte / faible erreur (normal)
  • $\textcolor{#9B7AC4}{Violet}$: Nombre de transactions
  • $\textcolor{#F7E64D}{Jaune}$: Espace latent (z)
  • $\textcolor{#e74c3c}{Rouge}$: Erreur élevée (anomalie)
Avancé Exercice manuel: À vous de calculer!

Objectif: Comprendre les autoencoders à la main (encodage, décodage, perte de reconstruction).

CONTEXTE

Autoencoder simple :

  • Entrée : vecteur 3D $x = [4, 6, 8]$
  • Encodeur : réduit en 1D (poids moyens)
  • Décodeur : reconstruit en 3D

Encodeur : $z = \frac{x_1 + x_2 + x_3}{3}$ (espace latent)

Décodeur : $\hat{x}_i = z$ pour tout i (copie de z)

PARTIE 1 : Encodage

1.1) Calculez le code latent z 1.2) Combien d'information a-t-on compressé ?

PARTIE 2 : Décodage

2.1) Reconstruisez $\hat{x}$ 2.2) Comparez $\hat{x}$ avec $x$

PARTIE 3 : Perte de reconstruction

MSE : $L = \frac{1}{n}\sum(x_i - \hat{x}_i)^2$

3.1) Calculez la perte MSE 3.2) Comment améliorer la reconstruction ?

PARTIE 4 : Application

4.1) Que représente z pour les données originales ? 4.2) Pourquoi les autoencoders sont utiles pour la réduction de dimension ?

Avancé Solution de l'exercice manuel

SOLUTION DÉTAILLÉE

$x = [4, 6, 8]$

PARTIE 1 : Encodage

1.1) Code latent :

$$z = \frac{4 + 6 + 8}{3} = \frac{18}{3} = \textcolor{#F7E64D}{\mathbf{6}}$$

1.2) Compression :

  • Entrée : 3 dimensions
  • Code : 1 dimension
  • Ratio : $\textcolor{#e74c3c}{3:1}$ (66% de compression)

PARTIE 2 : Décodage

2.1) Reconstruction :

$$\hat{x} = [z, z, z] = \textcolor{#27ae60}{[6, 6, 6]}$$

2.2) Comparaison :

xx_hatErreur
146-2
2660
386+2

PARTIE 3 : Perte de reconstruction

3.1) MSE :

$$L = \frac{(4-6)^2 + (6-6)^2 + (8-6)^2}{3}$$

$$= \frac{4 + 0 + 4}{3} = \frac{8}{3} = \textcolor{#e74c3c}{\mathbf{2.67}}$$

3.2) Améliorations :

  • Augmenter la dimension latente (z en 2D)
  • Utiliser un encodeur/décodeur non-linéaire (réseau de neurones)
  • Ajouter plus de couches

PARTIE 4 : Application

4.1) z = 6 représente la moyenne des données. C'est une "compression avec perte" qui capture la tendance centrale.

4.2) Utilité :

  • Réduction de dimension (comme PCA mais non-linéaire)
  • Détection d'anomalies (reconstruction élevée = anomalie)
  • Génération de données (VAE)

$\boxed{\text{Autoencoder = Compression + Reconstruction}}$

Légende : $\textcolor{#F7E64D}{Jaune}$: code latent, $\textcolor{#27ae60}{Vert}$: reconstruction, $\textcolor{#e74c3c}{Rouge}$: erreur

Code

Explorer les données (transactions)

Ctrl+Entrée
Cliquez sur "Exécuter" pour voir le résultat
Code

Visualiser les données

Ctrl+Entrée
Cliquez sur "Exécuter" pour voir le résultat
Contenu verrouillé
6 / 13

Continuez votre apprentissage

Vous avez exploré 6 sections de ce module. Connectez-vous pour débloquer le reste du cours, incluant les exercices pratiques et les solutions.

Console Python

Raccourcis clavier
Ctrl/Cmd+Enter Exécuter
Ctrl/Cmd+Shift+/ Commenter
Tab Indenter
Shift+Tab Désindenter
Ctrl/Cmd+Z Annuler
Ctrl/Cmd+Y Rétablir
Ctrl+Entrée pour exécuter
Cliquez sur "Exécuter" pour voir le résultat