Formation ML / Deep Learning

Autoencoders

Intermediaire 45 min 13 sections

Decouvrez les autoencoders pour la compression de donnees, la reduction de dimensionnalite et la detection d'anomalies.

Objectifs d'apprentissage

  • Comprendre l'architecture encodeur-decodeur
  • Utiliser les autoencoders pour la reduction de dimensionnalite
  • Detecter des anomalies avec les autoencoders
  • Connaitre les variantes (VAE, denoising)

Prerequis

Module Reseaux de Neurones recommande

Theorie

Qu'est-ce qu'un autoencoder?

Un autoencoder est un reseau de neurones qui apprend a reconstruire son entree apres l'avoir comprimee.

Architecture:

  • Encodeur: Comprime l'entree en une representation plus petite (latent space)
  • Goulot d'etranglement: Representation comprimee
  • Decodeur: Reconstruit l'entree a partir de la representation comprimee

Objectif:

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

Intuition:

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

Applications:

  • Compression: Reduire la taille des donnees
  • Debruitage: Enlever le bruit (denoising autoencoder)
  • Detection d'anomalies: Les anomalies sont mal reconstruites
  • Generation: Variational Autoencoder (VAE)
  • Reduction de dimensionnalite: Alternative a PCA
Theorie

Schema: Architecture Autoencoder

Structure de l'autoencoder:

flowchart LR I["Entree
(784 dim)"] subgraph Encoder ["Encodeur"] E1["Dense 256"] E2["Dense 64"] end L["Latent Space
(16 dim)"] subgraph Decoder ["Decodeur"] D1["Dense 64"] D2["Dense 256"] end O["Sortie
(784 dim)"] I --> E1 --> E2 --> L --> D1 --> D2 --> O style L fill:#F7E64D,color:#1A1A1A

Compression et reconstruction:

flowchart TD X["x (entree)"] Z["z = encode(x)
(comprime)"] X_hat["x^ = decode(z)
(reconstruit)"] L["Loss = ||x - x^||"] X --> Z --> X_hat --> L style Z fill:#9B7AC4,color:#FFFFFF style L fill:#F7E64D,color:#1A1A1A

Pour la detection d'anomalies:

  • Donnees normales: Bien reconstruites (faible erreur)
  • Anomalies: Mal reconstruites (forte erreur)

Exemple concret avec code couleur - Reconstruction et detection:

Entree originale (4 features):

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

(montant, heure, age compte, nb transactions)

Etape 1 - Encodage (compression):

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

Etape 2 - Decodage (reconstruction):

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

Etape 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}}$ (elevee β†’ anomalie!)

Legende des couleurs:

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

Objectif: Comprendre les autoencoders a la main (encodage, decodage, perte de reconstruction).

CONTEXTE

Autoencoder simple :

  • Entree : vecteur 3D $x = [4, 6, 8]$
  • Encodeur : reduit en 1D (poids moyens)
  • Decodeur : reconstruit en 3D

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

Decodeur : $\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 compresse ?

PARTIE 2 : Decodage

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 ameliorer la reconstruction ?

PARTIE 4 : Application

4.1) Que represente z pour les donnees originales ?

4.2) Pourquoi les autoencoders sont utiles pour la reduction de dimension ?

Avance Solution de l'exercice manuel

SOLUTION DETAILLEE

$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 :

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

PARTIE 2 : Decodage

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) Ameliorations :

  • Augmenter la dimension latente (z en 2D)
  • Utiliser un encodeur/decodeur non-lineaire (reseau de neurones)
  • Ajouter plus de couches

PARTIE 4 : Application

4.1) z = 6 represente la moyenne des donnees.

C'est une "compression avec perte" qui capture la tendance centrale.

4.2) Utilite :

  • Reduction de dimension (comme PCA mais non-lineaire)
  • Detection d'anomalies (reconstruction elevee = anomalie)
  • Generation de donnees (VAE)

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

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

Code

Explorer les donnees (transactions)

Cliquez sur "Executer" pour voir le resultat
Code

Visualiser les donnees

Cliquez sur "Executer" pour voir le resultat
Contenu verrouille section restante
6 / 13

Continuez votre apprentissage

Vous avez explore 6 sections de ce module. Connectez-vous pour debloquer le reste du cours, incluant les exercices pratiques et les solutions.

Console Python

Raccourcis clavier
Ctrl/Cmd+Enter Executer
Ctrl/Cmd+Shift+/ Commenter
Tab Indenter
Shift+Tab Desindenter
Ctrl/Cmd+Z Annuler
Ctrl/Cmd+Y Retablir
Ctrl+Enter pour executer
Cliquez sur "Executer" pour voir le resultat