Module L31 · Partie K · Ingénierie de l’IA
Les familles de réseaux : ce qui les distingue vraiment.
MLP, CNN, RNN/LSTM, transformers, GNN, autoencodeurs, GAN, modèles de diffusion, modèles à état (SSM), mixtures d’experts : chaque famille est un biais inductif — une hypothèse sur la structure des données codée dans l’architecture — avec un coût, une façon de s’entraîner et un domaine où elle gagne. Ce chapitre les met côte à côte, mathématiquement (invariances, équivariances, complexité, objectifs) et pratiquement (quand choisir laquelle), avec des implémentations minimales et les articles fondateurs.
Durée : 3 séances · Prérequis : L14, L15, L25. Objectifs : formuler le biais inductif de chaque famille ; connaître leurs complexités et leurs objectifs d’entraînement ; implémenter une convolution, une cellule GRU, une couche de graphe, une étape de diffusion ; choisir une architecture pour un problème donné ; lire les articles fondateurs.
Ce que vous saurez faire à la fin
- Expliquer équivariance par translation (CNN), permutation (GNN, attention), et ce que cela implique en données.
- Comparer RNN, transformer et SSM en coût par token et en portée de la mémoire.
- Décrire les objectifs : supervision, reconstruction (AE), adversarial (GAN), débruitage (diffusion), contraste (CLIP).
- Choisir, avec arguments, entre un CNN et un ViT, un LSTM et un transformer, un modèle discriminatif et génératif.
Fiche de cours · Définitions
Définitions
Fiche de cours · Formules
Le tableau comparatif à connaître
| Famille | Opération clé | Coût par couche (n éléments, d dims) | Biais inductif | Mémoire / portée | Parallélisme |
|---|---|---|---|---|---|
| MLP | h = φ(Wx + b) | O(d²) | Aucun | — | Total |
| CNN | (x ∗ K)(i) = Σu x(i+u)K(u) | O(n·k·Cin·Cout) | Localité, équivariance translation, partage de poids | Champ réceptif ∝ profondeur | Total |
| RNN (GRU/LSTM) | ht = f(ht−1, xt) | O(n·d²) | Ordre, causalité, état borné | Théoriquement infinie, pratiquement ~100 pas | Séquentiel en t |
| Transformer | softmax(QKᵀ/√d)V | O(n²·d + n·d²) | Aucun sur l’ordre (ajouté) ; tout-à-tout | Contexte entier, exact | Total (entraînement) |
| GNN (message passing) | hv ← φ(hv, ⊕u∈N(v) ψ(hu, euv)) | O(|A|·d + |S|·d²) | Équivariance par permutation, localité de graphe | k sauts après k couches | Par couche |
| SSM (Mamba) | ht = Atht−1 + Btxt, yt = Ctht | O(n·d·N) | Récurrence linéaire sélective | État compressé de taille N | Scan parallèle |
| MoE | y = Σi∈top-k gi(x)·Ei(x) | k experts actifs sur E | Spécialisation | — | Total ; routage |
Fiche de cours · Théorèmes et démonstrations
Démonstrations à savoir refaire
01 / Implémenter
Convolution, GRU, couche de graphe : trois biais inductifs en quelques lignes
01 / Implémenter
Génératif en 1D : VAE, GAN, diffusion sur la même loi — pour voir ce qui change
02 / Choisir
Quelle famille pour quel problème : la grille de décision
| Données | Tâche | Premier choix | Alternative | Pourquoi |
|---|---|---|---|---|
| Tableau (colonnes hétérogènes) | Classification / régression | Gradient boosting (XGBoost, LightGBM) | MLP avec embeddings de catégories | Sans structure spatiale, les arbres gagnent jusqu’à ~10⁵ lignes (Grinsztajn 2022) |
| Images | Classification, détection, segmentation | CNN pré-entraîné (ResNet, ConvNeXt) affiné | ViT/DINOv2 si beaucoup de données ou pré-entraînement fort | Équivariance = efficacité en données ; ViT dépasse avec ≥ 10⁶ images ou auto-supervision |
| Séries temporelles (capteurs) | Prévision, détection d’anomalie | CNN 1D / GRU ; modèles linéaires (DLinear) souvent compétitifs | Transformer temporel (PatchTST) si longues séquences | Peu de données par série ; les transformers sur-apprennent |
| Texte | Classification, extraction | Encodeur transformer affiné (BERT-like) | LLM zero/few-shot si peu de données | Pré-entraînement massif disponible |
| Texte | Génération, dialogue | LLM décodeur (L27) | — | — |
| Audio | ASR, classification | Whisper / wav2vec 2.0 (L30) | CNN sur log-mel pour des tâches fermées | — |
| Graphes (molécules, réseaux, scènes) | Propriétés de nœuds/graphes | GNN (GIN, GAT) | Transformer de graphe | Équivariance par permutation |
| Images/audio | Génération | Diffusion (latente) | GAN pour la vitesse, VAE pour la compression | Stabilité et qualité ; coût d’échantillonnage |
| Séquences très longues (10⁵–10⁶) | Tout | SSM / hybrides | Transformer avec attention creuse | Coût linéaire |
| Robotique : perception + commande | Politique | CNN/ViT + MLP ; diffusion policy | Transformer de trajectoires | L16, L21 ; les politiques par diffusion gèrent la multimodalité des actions |
Règle d’ingénierie : commencer par le modèle le plus simple qui incorpore le bon biais (linéaire → arbres → CNN/pré-entraîné), mesurer, et n’augmenter la complexité que si la courbe d’apprentissage (L13) le justifie.
03 / Articles
Les articles fondateurs, par famille
| Famille | Article | À retenir |
|---|---|---|
| CNN | LeCun et al., Gradient-based learning applied to document recognition, Proc. IEEE 1998 ; Krizhevsky et al., AlexNet, NeurIPS 2012 ; He et al., ResNet, CVPR 2016 — 1512.03385 | Convolution + partage de poids ; GPU + données ; connexions résiduelles pour la profondeur |
| RNN | Hochreiter & Schmidhuber, LSTM, Neural Computation 1997 ; Cho et al., GRU, 2014 — 1406.1078 | Portes = chemin additif pour le gradient (Théorème 2) |
| Transformer | Vaswani 2017 (L25) ; Dosovitskiy, ViT, 2021 — 2010.11929 | Sans biais spatial : exige des données ou un pré-entraînement |
| GNN | Kipf & Welling, GCN, ICLR 2017 — 1609.02907 ; Xu et al., How Powerful are GNNs? (GIN), ICLR 2019 — 1810.00826 | Théorème 3 (borne WL) |
| VAE | Kingma & Welling, Auto-Encoding Variational Bayes, ICLR 2014 — 1312.6114 | ELBO + reparamétrisation |
| GAN | Goodfellow et al., Generative Adversarial Nets, NeurIPS 2014 — 1406.2661 ; Karras et al., StyleGAN, 2019 | Jeu min-max ; instabilité et effondrement des modes |
| Diffusion | Ho et al., DDPM, NeurIPS 2020 — 2006.11239 ; Rombach et al., Latent Diffusion (Stable Diffusion), CVPR 2022 — 2112.10752 | Théorème 4 ; diffuser dans un espace latent compressé |
| Contrastif | Chen et al., SimCLR, ICML 2020 — 2002.05709 ; Radford et al., CLIP, 2021 — 2103.00020 | Représentations sans étiquettes ; alignement image-texte |
| SSM | Gu et al., S4, ICLR 2022 — 2111.00396 ; Gu & Dao, Mamba, 2023 — 2312.00752 | Récurrence linéaire stable + sélectivité |
| MoE | Shazeer et al., Outrageously Large Neural Networks, ICLR 2017 — 1701.06538 ; Fedus et al., Switch Transformer, 2021 — 2101.03961 | Paramètres ≫ calcul par token ; équilibrage du routage |
| Tableaux | Grinsztajn et al., Why do tree-based models still outperform deep learning on tabular data?, NeurIPS 2022 — 2207.08815 | Le biais inductif des arbres convient aux données hétérogènes |
TP guidé
TP — Même tâche, quatre familles (5 h)
- Données. Un jeu d’images petit (CIFAR-10 ou vos photos de robot, 10 classes, 5 000 images) et un jeu de séries temporelles (accéléromètre du robot, 6 activités).
- Images. PyTorch : MLP, petit CNN, ResNet-18 pré-entraîné affiné, ViT-small pré-entraîné (timm) affiné. Même budget de temps, 3 graines : exactitude, paramètres, temps, et exactitude en fonction de la fraction de données (10 %, 30 %, 100 %) — la courbe montre l’effet du biais inductif et du pré-entraînement.
- Séries. GRU, CNN 1D, transformer léger, modèle linéaire : même protocole. Ajouter une évaluation sur des séquences 2× plus longues que celles d’entraînement (généralisation en longueur).
- Génératif. Entraîner un petit DDPM sur MNIST (30 min GPU) et un VAE ; comparer visuellement et par FID (pytorch-fid) ; mesurer le coût d’échantillonnage.
- Graphe. PyTorch Geometric : GCN vs GIN sur un jeu de molécules (MUTAG) ; construire deux graphes WL-équivalents et vérifier que les représentations coïncident (Théorème 3).
- Livrable. Tableaux et courbes, une page « biais inductif observé » par famille, et une recommandation par type de données.
Exercices
Exercices auto-corrigés
Exercice 1 — Champ réceptif et paramètres
Écrivez champ_receptif(couches) pour une liste de (noyau k, stride s) : taille du champ réceptif de la dernière sortie (formule rℓ = rℓ−1 + (kℓ − 1)·Πi<ℓ si), et parametres_cnn(canaux, k) pour une pile de convolutions k×k avec la liste des canaux (biais inclus).
Correction
def champ_receptif(couches):
r, saut = 1, 1
for k, s in couches: r += (k - 1) * saut; saut *= s
return r
def parametres_cnn(canaux, k): return sum(k * k * ci * co + co for ci, co in zip(canaux, canaux[1:]))Exercice 2 — Cellule GRU et mémoire
Implémentez gru_pas(h, x, P) (formules de la fiche, P = dict de matrices Wz, Wr, W agissant sur [h, x]) et vérifiez : avec z forcée près de 0 (biais très négatif sur Wz), l’état est conservé sur 100 pas ; avec z ≈ 1, l’état est réécrit à chaque pas.
Correction
def gru_pas(h, x, P):
sig = lambda v: 1 / (1 + np.exp(-v)); hx = np.concatenate([h, x, [1.0]])
z = sig(P["Wz"] @ hx); r = sig(P["Wr"] @ hx)
h_tilde = np.tanh(P["W"] @ np.concatenate([r * h, x, [1.0]]))
return (1 - z) * h + z * h_tildeExercices
Exercices auto-corrigés (suite)
Exercice 3 — Test de Weisfeiler-Lehman
Implémentez wl_couleurs(adj, k) : k raffinements des couleurs des nœuds (couleur initiale = degré ; nouvelle couleur = hachage de (couleur, multi-ensemble trié des couleurs des voisins)), renvoyant l’histogramme final des couleurs. Vérifiez que deux hexagones disjoints et un cycle de 12 sont indistinguables (même histogramme) alors qu’un cycle de 6 et un chemin de 6 le sont.
Correction
def wl_couleurs(adj, k=3):
col = {v: ("d", len(adj[v])) for v in adj}
for _ in range(k):
col = {v: (col[v], tuple(sorted(col[u] for u in adj[v]))) for v in adj}
return Counter(col.values())Exercice 4 — Bruitage de diffusion
Écrivez abar(betas) (produit cumulé des 1 − βt) et bruiter(x0, t, betas, eps) = √ᾱt x₀ + √(1 − ᾱt) ε ; vérifiez que la variance de xt pour x₀ de variance 1 reste 1 (conservation) et que le rapport signal/bruit décroît vers 0.
Correction
def abar(betas): return np.cumprod(1 - betas)
def bruiter(x0, t, betas, eps): a = abar(betas)[t]; return np.sqrt(a) * x0 + np.sqrt(1 - a) * epsFiche de cours · Exercices corrigés
Exercices corrigés (rédaction)
Vérification
Pourquoi un CNN apprend-il des images avec 100× moins de données qu’un MLP ?
Deux questions supplémentaires
1. Que borne le test WL pour les GNN ? Le pouvoir de distinction : deux graphes WL-équivalents ont les mêmes représentations quel que soit le GNN par passage de messages.
2. Pourquoi les LSTM ont-ils des portes ? Pour créer un chemin additif où le gradient n’est pas multiplié par W à chaque pas (Théorème 2).
Référence
Les mots à retenir
| Mot | Définition |
|---|---|
| Biais inductif | Hypothèse structurelle codée dans l’architecture ; économise des données. |
| Équivariance | f(g·x) = g·f(x) ; convolution ↔ translation, GNN ↔ permutation. |
| Champ réceptif | Portée des entrées influençant une sortie. |
| Portes (LSTM/GRU) | Chemin additif contre l’évanouissement du gradient. |
| Passage de messages | Agrégation des voisins ; borné par Weisfeiler-Lehman. |
| ELBO | Borne variationnelle ; VAE et diffusion. |
| Diffusion | Apprendre à débruiter ; régression stable ; génération par inversion. |
| SSM / MoE | Récurrence linéaire sélective / experts routés. |
Suite
Tout modèle se juge. Le chapitre le plus long de la partie : les métriques.
Classification, régression, classement, génération de texte, RAG, prompts, agents, calibration, robustesse, équité, coût : comment mesurer, comment se tromper, comment lire un classement public.