Accueil – Chapitre approfondi 6

À la fin de ce chapitre, tu sauras : ce qu’est un réseau convolutionnel (champs récepteurs locaux, poids partagés, pooling), comment on l’utilise en pratique pour les images (MNIST jusqu’à ~99,6 %), les idées de code et d’architecture, les progrès récents en reconnaissance d’images, d’autres approches (RNN, LSTM) et une ouverture sur l’avenir du deep learning.

Bienvenue dans le chapitre approfondi 6. Tu as vu dans les chapitres précédents comment les réseaux profonds sont puissants mais difficiles à entraîner. Ici, on découvre des techniques qui permettent de les faire apprendre : les réseaux convolutionnels pour les images, puis la pratique (ReLU, données augmentées, dropout, ensembles), les idées de code, les progrès en reconnaissance d’images et d’autres modèles (réseaux récurrents, etc.).

Parcours du chapitre (en une image)

Réseau FC Conv (champs, poids) Pooling Pratique Progrès & Avenir

En résumé : ce chapitre présente les réseaux convolutionnels (idées de base, pratique, code), les progrès en reconnaissance d’images et une ouverture sur d’autres approches et l’avenir du deep learning.

Lexique

Objectif : connaître les termes du chapitre : champ récepteur local, poids partagés, feature map, noyau/filtre, max-pooling, stride, ConvNet, invariance par translation.

Champ récepteur local
Petite fenêtre (ex. 5×5 pixels) sur l’image d’entrée à laquelle est connecté un neurone de la couche suivante. Chaque neurone « voit » seulement cette région, pas toute l’image.
Stride
Pas de déplacement de la fenêtre quand on la fait glisser sur l’image. Stride 1 = on décale d’un pixel ; stride 2 = on décale de deux pixels.
Poids partagés
Les mêmes poids (et le même biais) sont utilisés pour tous les neurones d’une même « carte de traits » : on applique le même filtre partout sur l’image.
Feature map (carte de traits)
Ensemble des sorties des neurones qui partagent le même filtre. Chaque position de la carte indique si un certain type de motif (ex. bord) est détecté à cet endroit.
Noyau / filtre
La petite matrice de poids (ex. 5×5) qui définit ce qu’un neurone détecte dans son champ récepteur. On dit aussi « noyau » ou « filtre » pour la convolution.
Max-pooling
Opération qui découpe la carte en blocs (ex. 2×2) et garde la valeur maximale de chaque bloc. Réduit la taille et rend la détection moins sensible à la position exacte.
ConvNet (réseau convolutionnel)
Réseau de neurones qui utilise des couches convolutionnelles (champs locaux + poids partagés) et du pooling, particulièrement adapté aux images.
Invariance par translation
Idée qu’un même motif (ex. un bord) peut être détecté où qu’il soit dans l’image, grâce aux poids partagés.
ReLU (rappel)
Fonction d’activation f(z) = max(0, z). Souvent utilisée dans les ConvNets car elle évite en partie le problème des gradients qui disparaissent.
Dropout (rappel)
Pendant l’entraînement, on « éteint » au hasard certains neurones pour éviter le surapprentissage. Dans les ConvNets, on l’applique souvent surtout sur les couches entièrement connectées.

Introduction au deep learning

Objectif : situer ce chapitre : pourquoi on veut entraîner des réseaux profonds et quelles techniques permettent d’y arriver.

Dans le chapitre approfondi 5, tu as vu que les réseaux très profonds sont difficiles à entraîner (gradients qui disparaissent ou explosent). Pourtant, on a de bonnes raisons de vouloir des réseaux avec plusieurs couches : ils peuvent apprendre des hiérarchies de concepts (pixels → traits → formes → objets). Ce chapitre présente des techniques qui rendent l’entraînement possible : les réseaux convolutionnels pour les images, l’utilisation de ReLU, la régularisation (dropout), l’augmentation des données et plus de calcul (GPU). Sur l’exemple MNIST, on peut atteindre une précision d’environ 99,6 % avec un ConvNet bien réglé.

En résumé : le deep learning, c’est tirer parti de la profondeur des réseaux en utilisant des architectures et des astuces d’entraînement adaptées.

Réseau entièrement connecté vs images

Objectif : comprendre la limite des couches « fully-connected » pour les images et pourquoi on veut exploiter la structure spatiale.

Jusqu’ici, on a souvent représenté l’entrée comme une longue liste de neurones (ex. 784 pour une image 28×28). Chaque neurone de la couche cachée était connecté à tous les pixels. Du coup, le réseau ne « sait » pas que deux pixels voisins sur l’image sont proches : il traite un pixel en haut à gauche et un en bas à droite exactement de la même façon. Or, pour reconnaître des formes, les voisinages comptent (un trait, une boucle, un bord). Une architecture qui tient compte de cette structure spatiale peut apprendre plus efficacement. C’est ce que font les réseaux convolutionnels.

Choisis un type de réseau

En résumé : un réseau entièrement connecté ne modélise pas la géométrie de l’image ; les ConvNets, oui.

Champs récepteurs locaux

Objectif : comprendre qu’un neurone peut ne « voir » qu’une petite fenêtre de l’image, et que en faisant glisser cette fenêtre on obtient toute une carte de sortie.

Au lieu de connecter chaque neurone caché à tous les pixels, on le connecte à une petite région de l’image, par exemple un carré 5×5. Cette région s’appelle le champ récepteur local du neurone. On fait ensuite glisser cette fenêtre sur toute l’image : à chaque position, il y a un neurone différent. Pour une image 28×28 et une fenêtre 5×5, avec un déplacement d’un pixel à chaque fois (stride 1), on obtient (28 − 5 + 1) × (28 − 5 + 1) = 24×24 neurones dans cette couche cachée.

Déplace la fenêtre sur la grille

Position X : 0   Position Y : 0

Grille 8×8, fenêtre 3×3 → nombre de positions (neurones) = 36

En résumé : chaque neurone regarde une petite fenêtre ; en déplaçant la fenêtre on obtient une carte 24×24 (pour 28×28 et fenêtre 5×5 avec stride 1).

Poids et biais partagés

Objectif : comprendre que le même filtre (poids + biais) peut être appliqué partout, ce qui donne une « carte de traits » et réduit le nombre de paramètres.

On va encore simplifier : au lieu d’avoir des poids différents pour chaque position de la fenêtre, on utilise les mêmes poids (et le même biais) pour tous les 24×24 neurones. Ainsi, chaque neurone détecte le même type de motif (par exemple un bord vertical), mais à des endroits différents. L’ensemble des sorties forme une feature map (carte de traits). On peut avoir plusieurs feature maps (plusieurs filtres) pour détecter des bords, des courbes, etc. Un énorme avantage : au lieu de 24×24×26 paramètres pour cette couche, on n’a que 5×5+1 = 26 paramètres par filtre (plus quelques filtres). Beaucoup moins de paramètres = moins de risque de surapprentissage et entraînement plus rapide.

Un même noyau 2×2 appliqué à deux patches

Noyau : [[1, 0], [0, -1]] (exemple). Patch 1 (haut-gauche) → sortie = 0   Patch 2 (centre) → sortie = 0

En résumé : poids partagés = même détecteur partout = feature map + beaucoup moins de paramètres.

Pooling (sous-échantillonnage)

Objectif : comprendre le max-pooling : garder l’information « le motif est-il présent ? » tout en réduisant la taille.

Après une couche convolutionnelle, on a par exemple une carte 24×24. Pour réduire la taille et rendre le réseau moins sensible à la position exacte du motif, on applique un pooling. Le plus courant est le max-pooling : on découpe la carte en blocs 2×2 et on garde la valeur maximale de chaque bloc. Ainsi 24×24 devient 12×12. L’idée : « est-ce que le motif est présent dans cette zone ? » (le max est grand) plutôt que « où exactement ? ». On peut aussi utiliser du L2-pooling (racine de la somme des carrés dans le bloc), mais le max-pooling est très répandu.

Max-pooling sur une grille 4×4 (blocs 2×2)

Grille 4×4 → 4 blocs 2×2 → sortie 2×2 :

En résumé : max-pooling = prendre le max par bloc 2×2 → division par 2 de chaque dimension, et moins de sensibilité à la position.

Mettre tout ensemble : architecture complète

Objectif : voir le schéma complet d’un ConvNet pour MNIST : Conv → Pool → Conv → Pool → FC → 10 sorties.

On enchaîne : entrée 28×28 → première couche conv (ex. 20 filtres 5×5) → 24×24×20 → max-pool 2×2 → 12×12×20 → deuxième couche conv (ex. 40 filtres 5×5) → 8×8×40 → max-pool 2×2 → 4×4×40 → on « aplatit » en 640 neurones → couche entièrement connectée (ex. 100 neurones) → couche de sortie (10 neurones, softmax). Les couches conv+pool extraient des traits locaux ; la partie FC fait la décision finale (quel chiffre).

Survole ou clique sur un bloc pour voir ses dimensions

En résumé : Conv → Pool → (éventuellement encore Conv → Pool) → FC → sortie. C’est la structure type d’un ConvNet pour la classification d’images.

Réseaux convolutionnels en pratique

Objectif : voir l’évolution des résultats sur MNIST quand on ajoute conv, ReLU, données augmentées, dropout et ensemble.

Sur MNIST, un réseau shallow (100 neurones cachés) atteint environ 97,8 %. Dès qu’on ajoute une couche conv+pool (20 filtres 5×5) puis une couche FC, on monte à environ 98,78 %. Avec une deuxième couche conv+pool (40 filtres), on atteint environ 99,06 %. En passant aux neurones ReLU au lieu de la sigmoïde, on gagne encore un peu (~99,23 %). En augmentant les données (par exemple en décalant légèrement les images d’un pixel), on peut atteindre ~99,37 %. En appliquant du dropout sur les couches entièrement connectées (et en les agrandissant), on atteint environ 99,60 %. En entraînant plusieurs réseaux et en prenant un vote (ensemble), on peut dépasser 99,67 %. Pourquoi appliquer le dropout surtout sur les couches FC ? Parce que les couches convolutionnelles ont déjà une forme de régularisation (poids partagés) ; le dropout est surtout utile là où il y a beaucoup de paramètres (les couches FC).

Explore l’évolution des résultats

En résumé : conv + ReLU + données augmentées + dropout (sur FC) + éventuellement ensemble = des résultats proches de 99,6 % sur MNIST.

Pourquoi on peut entraîner ces réseaux

Objectif : relier les difficultés du chapitre 5 aux solutions utilisées dans les ConvNets.

Dans le chapitre 5, tu as vu que les réseaux profonds souffrent de gradients qui disparaissent ou explosent. Plusieurs facteurs permettent quand même d’entraîner des ConvNets profonds : (1) les couches convolutionnelles ont beaucoup moins de paramètres qu’une couche FC de même « taille » visuelle, ce qui simplifie l’optimisation ; (2) la régularisation (dropout, poids partagés) limite le surapprentissage ; (3) les ReLU évitent en partie la saturation et gardent des gradients plus utiles ; (4) on utilise plus de données (augmentation) et plus de calcul (GPU, plus d’époques). Ensemble, cela rend l’entraînement réalisable malgré la profondeur.

Choisis un facteur

En résumé : moins de paramètres (conv), régularisation, ReLU et plus de données/calcul expliquent pourquoi on peut entraîner des ConvNets profonds.

Code et architecture (idées)

Objectif : avoir une idée des « briques » logicielles : ConvPoolLayer, FullyConnectedLayer, SoftmaxLayer, SGD.

En pratique, un ConvNet est souvent construit avec des couches : une couche qui fait convolution + pooling (ConvPoolLayer), des couches entièrement connectées (FullyConnectedLayer), et une couche de sortie (SoftmaxLayer). L’entraînement reste de la descente de gradient stochastique (SGD) : on calcule le coût (par ex. log-vraisemblance), le gradient par rétropropagation (adaptée aux conv et au pooling), et on met à jour les poids. Les poids des couches conv sont partagés ; ceux des couches FC ne le sont pas. On ne rentre pas ici dans le détail d’une bibliothèque précise ; l’important est de retenir cette décomposition en couches et le flux : entrée → conv → activation → pool → (répéter) → flatten → FC → softmax → sortie.

Rôle de chaque brique

En résumé : ConvPoolLayer, FullyConnectedLayer, SoftmaxLayer ; SGD et rétropropagation adaptée ; flux de données clair.

Progrès en reconnaissance d’images

Objectif : avoir une idée des progrès récents : grands jeux de données, réseaux très profonds, performances proches de l’humain ; et des limites (images adverses).

Au-delà de MNIST, la reconnaissance d’images a connu des bonds importants grâce aux grands jeux de données (millions d’images, des centaines ou milliers de catégories) et aux réseaux convolutionnels très profonds. Certains modèles ont atteint des précisions « top-5 » (la bonne catégorie est parmi les 5 prédictions les plus probables) comparables à celles d’un humain expert sur des benchmarks difficiles. En revanche, on a aussi découvert que des images très légèrement modifiées (imperceptibles à l’œil) peuvent tromper ces réseaux : ce sont les « images adverses ». Cela montre que la robustesse et la compréhension des modèles restent des sujets ouverts.

Choisis un modèle ou une période

En résumé : grands données + ConvNets profonds = progrès spectaculaires ; comparaison humain/machine et images adverses rappellent les limites.

Autres approches (réseaux profonds)

Objectif : savoir qu’il existe d’autres architectures (RNN, LSTM, modèles génératifs) pour d’autres types de données.

Les ConvNets sont adaptés aux images. Pour des données séquentielles (parole, texte, séries temporelles), on utilise souvent des réseaux récurrents (RNN) : les neurones peuvent dépendre des pas de temps précédents. Un problème classique des RNN est le gradient qui disparaît ou explose dans le temps. Les LSTM (Long Short-Term Memory) sont une variante conçue pour mieux garder une « mémoire » à long terme et stabiliser l’apprentissage. D’autres modèles, comme certains réseaux « génératifs » (capables de générer des données ressemblant aux exemples), ont aussi joué un rôle dans l’histoire du deep learning. Aujourd’hui, selon le domaine (images, texte, parole, jeux), on combine souvent plusieurs idées (conv, attention, récurrence).

Domaine d’application

En résumé : RNN et LSTM pour les séquences ; d’autres modèles pour la génération ; le paysage du deep learning est riche et varie selon le domaine.

Avenir des réseaux et du deep learning

Objectif : ouvrir sur les interfaces pilotées par l’intention, le rôle des données et les limites connues.

Le deep learning alimente déjà des interfaces qui tentent de comprendre l’intention de l’utilisateur (recherche, assistant vocal, recommandations) plutôt que de réagir à des commandes très précises. La disponibilité de grandes quantités de données et la puissance de calcul ont créé une boucle vertueuse : de meilleurs modèles → de nouvelles applications → plus de données et d’investissements. La place des réseaux de neurones dans l’apprentissage automatique reste néanmoins un sujet de recherche : on comprend encore mal pourquoi ils généralisent aussi bien avec autant de paramètres, et les questions ouvertes (robustesse, interprétabilité, limites) restent nombreuses. Il est raisonnable de rester prudent sur les promesses d’une « intelligence artificielle générale » à court terme.

Explore un thème

En résumé : interfaces intention, données et calcul ; rôle central du deep learning aujourd’hui ; nombreuses limites et questions ouvertes.

Exercices

Objectif : t’entraîner sur les notions de convolution, pooling, paramètres, ordre des opérations, dropout et invariance.

Exercice 1 – Nombre de neurones après conv

Énoncé : pour une entrée de taille N, un filtre de taille F et un stride S, la taille de sortie est (N − F) / S + 1 (en une dimension). Calcule pour N = 28, F = 5, S = 1 puis vérifie.

Entrée N =   Filtre F =   Stride S =

Ta réponse : taille =

Formule : (N − F) / S + 1 = 24

Exercice 2 – Nombre de paramètres

Énoncé : une couche conv avec 20 filtres 5×5 a 20×26 = 520 paramètres (20×(25+1)). Une couche FC 784→30 a 784×30+30 = 23 550. Choisis la bonne comparaison.

Quelle affirmation est correcte ?

Exercice 3 – Ordre des opérations

Énoncé : dans un bloc typique d’un ConvNet, quel est l’ordre habituel ? Choisis l’ordre correct.

Ordre correct pour un bloc conv

Exercice 4 – Où appliquer le dropout ?

Énoncé : dans un ConvNet pour la classification d’images, où applique-t-on souvent le dropout ?

Choisis la réponse

Exercice 5 – Taille après pooling

Énoncé : une carte 24×24 avec un pooling 2×2 donne une sortie de quelle taille ? Entre la taille d’entrée H et la taille de la fenêtre de pooling P, la sortie est H/P (en supposant H divisible par P).

Hauteur (ou largeur) entrée H =   Pool 2×2 donc P = 2. Sortie = H/P = 12

Ta réponse :

Exercice 6 – Invariance par translation

Énoncé : « Les poids partagés permettent de détecter le même motif partout dans l’image. » Vrai ou faux ?

Choisis

En résumé : les exercices portent sur la taille après conv/pool, le nombre de paramètres, l’ordre des opérations, le dropout et l’invariance.

Quiz

Objectif : vérifier ta compréhension des réseaux convolutionnels, du pooling, de ReLU, du dropout et des progrès récents.

Choisis un quiz :

Fiche enseignant

Fiche pédagogique pour le chapitre approfondi 6 : objectifs, niveau, durée, pistes de correction et idées d’activités autour des réseaux convolutionnels et du deep learning.