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)
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.
Objectifs pédagogiques
- Comprendre les trois idées de base des ConvNets : champs récepteurs locaux, poids partagés, pooling.
- Relier l’architecture (Conv → Pool → FC) aux résultats progressifs sur MNIST.
- Savoir pourquoi on peut entraîner ces réseaux (moins de paramètres, ReLU, régularisation, données).
- Avoir une idée des progrès en reconnaissance d’images et des autres approches (RNN, LSTM).
- Manipuler les widgets (champs récepteurs, max-pooling, architecture) et faire les exercices dynamiques.
Niveau et prérequis
Niveau : lycée / début universitaire (après chapitres approfondis 1–5).
Prérequis : réseaux feedforward, rétropropagation, surapprentissage, gradients (chapitres approfondis 1 à 5).
Durée indicative : 2 h à 2 h 30 pour le parcours complet avec exercices et quiz.
Pistes de correction
Exercice 1 : (28−5)/1+1 = 24. Exercice 2 : FC a beaucoup plus de paramètres. Exercice 3 : Convolution → Activation → Max-pooling. Exercice 4 : souvent sur les couches FC. Exercice 5 : 24/2 = 12. Exercice 6 : Vrai (poids partagés = même détecteur partout).
Idées d’activités
- Faire manipuler le widget « Champs récepteurs » pour voir le nombre de neurones en fonction de la taille de la grille et de la fenêtre.
- Comparer sur le widget « Max-pooling » les valeurs avant et après pooling.
- Débat : jusqu’où les réseaux peuvent-ils « voir » comme un humain ? (progrès vs images adverses)