Hoja de repaso: Principes fondamentaux des CNN

📋 Plan du Cours

  1. Couches convolutionnelles
  2. Filtrage et kernels
  3. Dimension des tenseurs
  4. Paramètres convolutionnels
  5. Opérations en convolution
  6. Padding et padding zéro
  7. Stride et réduction dimensionnelle
  8. Pooling et sous-échantillonnage
  9. Partage de paramètres
  10. Architectures célèbres CNN
  11. Visualisation des filtres
  12. Apprentissage de représentations

📖 1. Couches convolutionnelles

🔑 Notions clés & Définitions

  • Couches convolutionnelles : couches dans un CNN qui appliquent une opération de convolution à l'entrée pour extraire des caractéristiques locales, en utilisant des filtres (ou kernels). Leur rôle principal est de détecter des motifs spécifiques dans les images, comme les contours ou textures, tout en partageant les paramètres pour réduire la complexité (voir aussi "Partage de paramètres").
  • Fonctionnement général d'une couche convolutionnelle : elle consiste à faire glisser un filtre sur l'entrée, calculant un produit scalaire entre le filtre et la portion de l'entrée à chaque position, produisant ainsi une carte de réponse (feature map). La taille de cette carte dépend des paramètres comme la taille du filtre, le padding, et le stride (voir aussi "Taille d'entrée et sortie").
  • Différence entre couches convolutionnelles et couches entièrement connectées : dans une couche convolutionnelle, les filtres sont appliqués localement avec partage de poids, ce qui limite le nombre de paramètres, contrairement à une couche entièrement connectée où chaque neurone est connecté à tous les neurones de la couche précédente, entraînant un nombre beaucoup plus élevé de paramètres (voir aussi "Partage de paramètres").
  • Exemple de taille d'entrée et sortie d'une couche convolutionnelle : si l'entrée est une image de dimensions w×hw \times h, et qu'on utilise un filtre de taille ff, avec padding pp et stride ss, la taille de la sortie est donnée par la formule w+2pfs+1×h+2pfs+1\left\lfloor \frac{w + 2p - f}{s} + 1 \right\rfloor \times \left\lfloor \frac{h + 2p - f}{s} + 1 \right\rfloor (voir aussi "Taille de la réponse").

📝 Points essentiels

  • Les couches convolutionnelles sont fondamentales dans un CNN car elles permettent d'extraire automatiquement des caractéristiques pertinentes à partir des données brutes, en détectant des motifs locaux.
  • Leur efficacité repose sur le partage des paramètres, ce qui réduit drastiquement le nombre total de paramètres par rapport à une architecture entièrement connectée, facilitant ainsi l'apprentissage et la généralisation (voir aussi "Partage de paramètres").
  • La taille de la sortie d'une couche convolutionnelle dépend des paramètres du filtre, du padding et du stride, ce qui permet de contrôler la dimension des représentations intermédiaires.
  • La convolution en CNN est une opération de filtrage qui a été historiquement utilisée en traitement du signal pour détecter des motifs spécifiques, comme les contours avec des filtres Sobel (voir aussi "Convolution en traitement du signal").
  • La compréhension de la taille des tenseurs en sortie est essentielle pour concevoir des architectures efficaces et éviter des erreurs de dimensionnement.

💡 À retenir

Les couches convolutionnelles sont le cœur des CNN, permettant une extraction efficace et hiérarchique des caractéristiques tout en limitant le nombre de paramètres grâce au partage, ce qui facilite leur entraînement sur de grandes images ou volumes.

📖 2. Filtrage et kernels

🔑 Notions clés & Définitions

  • Filtres (kernels) en convolution : Petites matrices de coefficients appliquées à une image pour extraire ou accentuer certains motifs, tels que contours ou textures. A. Carlier (2024) : "Les filtres sont utilisés pour détecter des motifs spécifiques dans une image, comme les contours, en multipliant chaque pixel par un coefficient du kernel et en sommant le résultat."
  • Utilisation des kernels pour détecter des motifs : En appliquant un kernel à une image, on peut mettre en évidence des caractéristiques particulières, par exemple, les contours avec des filtres Sobel, où un pixel indique une forte réponse si situé sur un contour. A. Carlier (2024) : "Les filtres Sobel détectent les gradients d'intensité, permettant de repérer les contours dans l'image."
  • Exemple de convolution 2D avec un kernel 3x3 : Opération où un noyau 3x3 est glissé sur l'image, multipliant chaque sous-bloc par le kernel, puis sommant pour produire une nouvelle valeur pixel. Par exemple, pour un kernel f=3, réponse = Σ (image sous le kernel × coefficients). A. Carlier (2024) : "La convolution 2D avec un kernel 3x3 consiste à faire glisser le filtre sur l'image, en calculant la somme pondérée des pixels sous le kernel."
  • Rôle des coefficients dans un kernel : Définissent la nature du filtre, par exemple, pour détecter les contours ou lisser une image. Leur valeur détermine la réponse du filtre : coefficients positifs ou négatifs, selon la caractéristique à détecter. A. Carlier (2024) : "Les coefficients du kernel modulent la réponse du filtre, permettant de cibler des motifs spécifiques comme les contours ou les textures."

📝 Points essentiels

  • Les filtres (kernels) sont des matrices de coefficients appliquées en convolution pour extraire ou accentuer des motifs dans une image, notamment contours, textures ou gradients.
  • La convolution 2D avec un kernel 3x3 consiste à faire glisser le noyau sur l'image, en multipliant chaque sous-bloc par le kernel et en sommant, produisant une nouvelle image filtrée.
  • Les coefficients du kernel déterminent la nature du filtre : par exemple, un kernel Sobel pour détecter les contours horizontaux ou verticaux, ou un filtre de lissage.
  • La réponse à une convolution indique la présence ou l'absence du motif recherché, avec une forte réponse signalant la présence du motif (ex : pixel sur un contour).
  • La convolution en signal processing est une opération fondamentale pour la détection de motifs, utilisée depuis longtemps avant l'apprentissage automatique, notamment avec Sobel pour contours.

💡 À retenir

Les filtres (kernels) en convolution sont des matrices de coefficients appliquées à une image pour détecter ou accentuer des motifs spécifiques, leur rôle étant essentiel dans l'extraction de caractéristiques en vision par ordinateur.

📖 3. Dimension des tenseurs

🔑 Notions clés & Définitions

  • Dimension des tenseurs d'entrée et de sortie : La taille ou la forme d’un tenseur (ou volume) en convolution, généralement représentée sous la forme (largeur, hauteur, profondeur). Selon A. Carlier (2024), dans une convolution 2D, l’entrée est un tenseur de dimension (w, h, c_in), et la sortie est un tenseur de dimension (w_out, h_out, c_out). La profondeur de la sortie dépend du nombre de filtres appliqués.

  • Formule de calcul de la dimension de sortie sans padding : La taille de la sortie d’une convolution 2D sans padding est donnée par w_out = w_in - f + 1 et h_out = h_in - f + 1, où w_in et h_in sont les dimensions de l’entrée, et f la taille du filtre (voir A. Carlier, 2024).

  • Extension de la formule avec padding et stride : En ajoutant un padding p et un stride s, la formule devient :
    wout=win+2pfs+1ethout=hin+2pfs+1w_{out} = \left\lfloor \frac{w_{in} + 2p - f}{s} \right\rfloor + 1 \quad \text{et} \quad h_{out} = \left\lfloor \frac{h_{in} + 2p - f}{s} \right\rfloor + 1
    p est le padding, s le stride, et \lfloor \cdot \rfloor la fonction partie entière (voir A. Carlier, 2024).

  • Exemple de calcul de dimensions avec paramètres donnés :
    Si une image de dimension (w_in=224, h_in=224), un filtre de taille f=3, padding p=1, et stride s=1, alors :
    wout=224+2×131+1=224w_{out} = \left\lfloor \frac{224 + 2 \times 1 - 3}{1} \right\rfloor + 1 = 224
    La sortie conserve la même dimension que l’entrée grâce au padding (voir A. Carlier, 2024).

📝 Points essentiels

  • La dimension des tenseurs dépend de la taille de l’image, du filtre, du padding, et du stride.
  • Sans padding, la taille de la sortie diminue à chaque convolution : wout=winf+1w_{out} = w_{in} - f + 1.
  • Avec padding p, la formule s’adapte pour permettre de conserver la taille de l’image d’origine (padding "zéro") ou de la modifier selon les besoins.
  • Le stride s’utilise pour réduire la taille de la sortie en sautant certains pixels, ce qui limite la perte d’information tout en diminuant la dimension.
  • La formule avec padding et stride permet de prévoir précisément la taille de la sortie, essentielle pour la conception des architectures CNN.

💡 À retenir

La dimension des tenseurs en convolution dépend de la taille de l’entrée, du filtre, du padding et du stride ; la formule ajustée permet de contrôler la taille de la sortie pour optimiser la conception du réseau.

📖 4. Paramètres convolutionnels

🔑 Notions clés & Définitions

  • Nombre de paramètres dans une couche convolutionnelle : La quantité totale de poids et de biais à apprendre dans cette couche. Elle se calcule en multipliant la taille du filtre (coefficients) par le nombre de canaux d'entrée, puis en ajoutant un biais par filtre (voir "Calcul des paramètres").
  • Calcul des paramètres (coefficients et biais) : La formule consiste à multiplier la taille du filtre (f × f) par le nombre de canaux d'entrée, puis par le nombre de filtres, et enfin ajouter un biais par filtre. AUTEUR (2024) : "Les coefficients des filtres sont f × f × #channels × #filters, et il y a un biais par filtre."
  • Exemple numérique de calcul des paramètres : Pour un filtre 3×3 appliqué à une image avec 3 canaux, et avec 2 filtres, le nombre total de paramètres est 3×3×3×2 + 2 = 56.
  • Différence avec le perceptron classique : Le perceptron classique nécessite un nombre de paramètres égal au produit de la taille d’entrée par le nombre de neurones, plus un biais, ce qui peut atteindre des millions pour des images volumineuses, alors que la convolution partage ses paramètres, réduisant considérablement leur nombre (voir "Partage de paramètres").

📝 Points essentiels

  • Le nombre de paramètres dans une couche convolutionnelle se compose de deux types : les coefficients des filtres (f × f × #channels × #filters) et les biais (un par filtre).
  • La formule pour le calcul est : Nombre de paramètres = (f × f × #channels × #filters) + #filters.
  • Par exemple, pour un filtre 3×3 appliqué à une image RGB (3 canaux) avec 2 filtres, cela donne 3×3×3×2 + 2 = 56 paramètres.
  • La réduction du nombre de paramètres grâce au partage de paramètres est une caractéristique clé des CNN, contrairement à un perceptron classique qui aurait besoin de beaucoup plus de paramètres (voir "Différence avec nombre de paramètres d'un perceptron classique").
  • La complexité en opérations (FLOPs) dépend du nombre de paramètres et du nombre de convolutions effectuées, influençant la vitesse d’entraînement et d’inférence (voir "Calcul des opérations").

💡 À retenir

Le nombre de paramètres dans une couche convolutionnelle est déterminé par la taille du filtre, le nombre de canaux d’entrée, et le nombre de filtres, ce qui permet une réduction significative par rapport à un perceptron classique grâce au partage de paramètres.

📖 5. Opérations en convolution

🔑 Notions clés & Définitions

  • Opération de convolution : Processus mathématique consistant à appliquer un filtre (kernel) sur une image ou un volume pour extraire des caractéristiques spécifiques, en réalisant une somme pondérée des pixels voisins (voir aussi "convolution 2D" dans le traitement du signal).
  • Calcul des opérations dans une convolution : Nombre total de multiplications et d'additions nécessaires pour réaliser la convolution, principalement dépendant de la taille du filtre, du nombre de canaux, et de la taille de l'entrée (voir "nombre d'opérations" dans la complexité).
  • Exemple détaillé de convolution 2D : Application concrète d’un filtre 3×3 sur une image, où chaque pixel de la réponse est obtenu par la somme pondérée des pixels voisins, en multipliant chaque pixel par le coefficient correspondant du filtre (voir "convolution 2D" dans le traitement d’images).
  • Importance du nombre d'opérations : Critère clé pour évaluer la complexité et la performance d’un réseau convolutionnel, influençant la consommation en ressources et la vitesse d’exécution (voir "nombre d'opérations" dans la complexité).
  • Notion de réponse d’un filtre : Résultat obtenu après convolution, qui met en évidence certaines caractéristiques de l’image, comme les contours ou textures, selon le filtre utilisé (ex : Sobel).

📝 Points essentiels

  • La convolution est un processus historique en traitement du signal, utilisé pour détecter des motifs dans une image, en particulier avec des filtres comme Sobel pour les contours (voir "convolution filters" en signal processing).
  • La réponse d’une convolution 2D sur une image de taille w×hw \times h avec un filtre de taille f×ff \times f est de dimension (wf+1)×(hf+1)(w - f + 1) \times (h - f + 1), sauf si padding est appliqué (voir "dimension des tenseurs").
  • Le calcul des opérations (multiplications et additions) est crucial pour estimer la complexité du réseau, notamment en FLOPs. Par exemple, pour une convolution avec un filtre 3×3 sur une image de 6×6 avec 3 canaux, on réalise 1728 opérations (multiplications + additions).
  • Le nombre de paramètres dans une couche convolutionnelle inclut les coefficients du filtre et un biais par filtre, ce qui influence la capacité d’apprentissage et la taille du modèle (voir "nombre de paramètres").
  • Le padding (ajout de zéros autour de l’image) permet de conserver la taille de l’image après convolution, facilitant la conception d’architectures (voir "padding").
  • Le stride (pas de déplacement du filtre) permet de réduire la dimension des tenseurs, limitant la perte d’informations tout en diminuant la charge computationnelle (voir "stride").

💡 À retenir

L’opération de convolution est au cœur des CNN, permettant d’extraire efficacement des caractéristiques tout en influant directement sur la complexité du modèle, notamment par le nombre d’opérations nécessaires.

📖 6. Padding et padding zéro

🔑 Notions clés & Définitions

  • Padding : Technique consistant à ajouter des valeurs (souvent des zéros) autour des bords d'une image ou d'un tenseur d'entrée pour modifier la taille de la sortie après convolution, permettant de contrôler la dimension du résultat (voir "Padding zéro" et "Tensor dimension" dans la source).
  • Padding zéro : Méthode spécifique de padding où des zéros sont ajoutés autour de l'image, ce qui permet d'obtenir une réponse de convolution de même dimension que l'entrée (voir "Padding" dans la source).
  • Effet du padding zéro sur la dimension de sortie : Lorsqu'on applique un padding p à une image de dimension w × h, la taille de la réponse de convolution devient (w + 2p − f + 1) × (h + 2p − f + 1), ce qui peut préserver ou ajuster la taille selon la valeur de p (voir "Tensor dimension" dans la source).
  • Avantages du padding pour conserver la taille : Permet de maintenir la dimension de l'entrée dans la sortie, simplifiant la conception des architectures CNN, notamment pour empiler plusieurs couches sans réduction progressive de la taille (voir "Padding" et "Padding zéro" dans la source).
  • Exemple d'application de padding zéro sur une image : En ajoutant un padding p=1 à une image de 224×224, la taille devient 226×226, et après convolution avec un filtre de taille 3×3, la sortie reste de 224×224, conservant ainsi la taille d'origine (voir "Padding" et "Tensor dimension" dans la source).

📝 Points essentiels

  • Le padding zéro consiste à ajouter des zéros autour de l'image pour ajuster la taille de la sortie après convolution.
  • La formule de la dimension de la réponse avec padding p est : (w + 2p − f + 1) × (h + 2p − f + 1).
  • L'utilisation du padding zéro permet de conserver la taille de l'image d'entrée, ce qui facilite la conception de réseaux profonds sans réduction de la dimension à chaque étape.
  • L'ajout de padding est crucial pour éviter la perte d'information en bordure, notamment lors de l'empilement de plusieurs couches convolutionnelles.
  • Exemple pratique : padding p=1 sur une image 224×224 avec un filtre 3×3 donne une sortie de taille 224×224, identique à l'entrée.

💡 À retenir

Le padding zéro est une technique essentielle en convolution pour préserver la taille des tenseurs, simplifier la conception des architectures CNN, et éviter la perte d'information en bordure.

📖 7. Stride et réduction dimensionnelle

🔑 Notions clés & Définitions

  • Stride : Pas de déplacement du filtre lors de la convolution, c’est-à-dire l’intervalle entre deux positions successives du filtre sur l’image. Selon A. Carlier (2024), le stride contrôle la vitesse de déplacement du filtre et influence directement la taille de la réponse.
  • Effet du stride sur la réduction dimensionnelle : Lorsqu’on augmente le stride, la taille de la sortie diminue, permettant une réduction efficace de la dimension du tenseur, tout en limitant la perte d’informations importantes, comme le souligne A. Carlier (2024).
  • Formule de calcul de la dimension de sortie avec stride : La taille de la réponse d’une convolution avec stride ss, padding pp, et filtre de taille ff est donnée par : w+2pfs+1×h+2pfs+1\left\lfloor \frac{w + 2p - f}{s} + 1 \right\rfloor \times \left\lfloor \frac{h + 2p - f}{s} + 1 \right\rfloor (voir équation 1 dans A. Carlier, 2024).
  • Exemple d’utilisation du stride pour réduire la taille : En utilisant un stride de 2 avec un filtre de taille 3 sur une image de 28×28, la dimension de la sortie est divisée par deux, ce qui permet de réduire la taille du tenseur tout en conservant les caractéristiques essentielles (exemple illustré dans A. Carlier, 2024).

📝 Points essentiels

  • Le stride est un paramètre crucial pour contrôler la réduction dimensionnelle dans les CNN, permettant d’optimiser la taille des tenseurs et la complexité du modèle.
  • L’augmentation du stride limite la taille de la réponse, ce qui accélère le traitement et réduit la consommation de ressources, tout en pouvant entraîner une perte d’informations si le stride est trop élevé.
  • La formule de la dimension de sortie intègre le stride, le padding, et la taille du filtre, facilitant la conception de réseaux convolutifs adaptés à différentes architectures.
  • L’utilisation du stride 1 permet une réponse de taille proche de l’entrée, tandis qu’un stride supérieur à 1 est utilisé pour réduire la taille de la sortie, notamment dans les couches de pooling ou pour accélérer le traitement.

💡 À retenir

Le stride contrôle le déplacement du filtre lors de la convolution, et en augmentant sa valeur, on réduit la dimension du tenseur de sortie, ce qui permet d’optimiser la complexité du réseau tout en conservant l’essentiel des informations.

📖 8. Pooling et sous-échantillonnage

🔑 Notions clés & Définitions

Principe du max-pooling : Technique de pooling qui consiste à sélectionner la valeur maximale dans une région donnée d'une carte de caractéristiques, permettant de réduire la dimension tout en conservant les informations les plus saillantes (A. Carlier, 2024).

Rôle du pooling dans la réduction de la dimension : Le pooling sert à diminuer la taille des tenseurs en regroupant les réponses locales, ce qui réduit la complexité du modèle, limite le surapprentissage, et facilite la détection de motifs invariants à la translation (A. Carlier, 2024).

Absence de paramètres à apprendre dans le pooling : Contrairement aux couches convolutionnelles ou entièrement connectées, le pooling ne comporte aucun paramètre à ajuster lors de l'apprentissage, ce qui simplifie l'entraînement et évite l'augmentation du nombre de paramètres (A. Carlier, 2024).

Conservation des réponses fortes des filtres : Le pooling, notamment max-pooling, privilégie les réponses élevées, ce qui permet de préserver les caractéristiques les plus significatives détectées par les filtres, tout en réduisant la sensibilité aux variations locales (A. Carlier, 2024).

📝 Points essentiels

  • Le max-pooling sélectionne la valeur maximale dans une région, ce qui permet de capturer les éléments saillants tout en réduisant la taille de la carte de caractéristiques.
  • La réduction de dimension via pooling limite la charge computationnelle et favorise la généralisation du modèle.
  • Le pooling n'introduit pas de paramètres à apprendre, contrairement aux couches convolutionnelles ou fully-connected, ce qui simplifie la phase d'apprentissage.
  • En conservant les réponses fortes, le pooling assure que les motifs clés détectés par les filtres restent représentés dans les couches suivantes, même après réduction de la taille.
  • La technique de pooling est souvent combinée avec des couches convolutionnelles pour construire des architectures efficaces, comme dans le cas de Max-Pooling avec un stride de 2.

💡 À retenir

Le pooling, en particulier max-pooling, est une opération sans paramètre qui réduit la dimension des cartes de caractéristiques tout en conservant les réponses les plus fortes, facilitant ainsi la détection de motifs invariants et la simplification du modèle.

📖 9. Partage de paramètres

🔑 Notions clés & Définitions

  • Partage de paramètres : mécanisme par lequel une même valeur de poids (coefficient du filtre) est utilisée dans plusieurs positions d’une couche convolutionnelle, permettant de réduire le nombre total de paramètres (voir aussi "Impact sur la réduction du nombre de paramètres").
  • Convolution vs couches entièrement connectées : dans une couche convolutionnelle, les poids sont partagés (même filtre appliqué à différentes régions), contrairement aux couches entièrement connectées où chaque connexion possède un poids unique, ce qui entraîne un nombre de paramètres beaucoup plus élevé (voir aussi "Comparaison avec couches entièrement connectées").
  • Mise à jour multiple des poids : lors de l’entraînement, le même ensemble de poids (filtre) est mis à jour plusieurs fois grâce au partage de paramètres, ce qui permet une meilleure généralisation et une réduction de la complexité du modèle (voir aussi "Impact sur la réduction du nombre de paramètres").

📝 Points essentiels

  • Le partage de paramètres dans une couche convolutionnelle consiste à utiliser un seul filtre (ensemble de coefficients) appliqué à différentes régions de l’image, ce qui limite le nombre total de paramètres à apprendre. Par exemple, un filtre 3×3 appliqué à une image de 224×224×3 ne nécessite que 3×3×3 coefficients, indépendamment du nombre de positions où il est appliqué.
  • Cette technique permet de réduire considérablement le nombre de paramètres par rapport à une couche entièrement connectée, où chaque neurone de la couche précédente est connecté à chaque neurone de la suivante avec un poids distinct.
  • La mise à jour des poids lors de l’entraînement se fait de manière répétée pour le même filtre, ce qui favorise l’apprentissage de motifs invariants dans l’image, tout en limitant la complexité du modèle.
  • La réduction du nombre de paramètres facilite la généralisation, diminue le risque de surapprentissage, et réduit le coût computationnel (voir aussi "Impact sur la réduction du nombre de paramètres").
  • La comparaison avec les couches entièrement connectées montre que le partage de paramètres est une innovation clé pour traiter des données structurées comme les images, où la localisation des motifs est importante (voir aussi "Comparaison avec couches entièrement connectées").

💡 À retenir

Le partage de paramètres dans les couches convolutionnelles permet de réduire le nombre de paramètres, d’améliorer la généralisation et de rendre l’entraînement plus efficace, tout en captant des motifs invariants dans les images grâce à la mise à jour multiple des mêmes poids lors de l’apprentissage.

📖 10. Architectures célèbres CNN

🔑 Notions clés & Définitions

  • LeNet-5 (1998) : architecture pionnière de CNN conçue par LeCun et al., caractérisée par une structure simple avec environ 60 000 paramètres, utilisant principalement des fonctions d'activation sigmoid, et adaptée à la reconnaissance de chiffres manuscrits.
  • AlexNet (2012) : réseau révolutionnaire introduit par Krizhevsky et al., comportant environ 60 millions de paramètres, avec 8 couches, utilisant la fonction ReLU comme activation standard, et ayant grandement amélioré la performance sur ImageNet.
  • VGG-16 (2014) : architecture de référence de Simonyan et Zisserman, comptant environ 138 millions de paramètres, avec une structure très régulière basée sur l’empilement systématique de convolutions 3×3, pour étudier l’impact de la profondeur sur la performance.

📝 Points essentiels

  • LeNet-5 est considéré comme la première architecture CNN à succès, illustrant la capacité des réseaux convolutifs à reconnaître des chiffres manuscrits avec peu de paramètres, grâce à une architecture simple et l’utilisation de fonctions sigmoid.
  • AlexNet a marqué un tournant en introduisant la fonction ReLU, permettant une convergence plus rapide, et en utilisant des techniques telles que le dropout et le data augmentation pour améliorer la généralisation. Sa profondeur et ses paramètres ont permis de surpasser largement les méthodes précédentes sur ImageNet.
  • VGG-16 a été conçu pour analyser l’effet de la profondeur, en utilisant une architecture très régulière avec des convolutions 3×3 empilées, ce qui a permis d’augmenter la capacité du réseau tout en maintenant une certaine simplicité dans la conception. Sa régularité facilite la mise en œuvre et la compréhension.
  • La progression des architectures (LeNet-5 → AlexNet → VGG-16) illustre l’évolution vers des réseaux plus profonds, plus paramétrés, et plus performants, tout en cherchant à maintenir une certaine régularité et simplicité dans la conception.
  • La taille et le nombre de paramètres jouent un rôle crucial dans la capacité d’apprentissage et la complexité des modèles, avec une augmentation exponentielle de 60k à 138M paramètres.

💡 À retenir

Les architectures CNN ont évolué d’un modèle pionnier simple comme LeNet-5 à des réseaux très profonds et paramétrés comme VGG-16, en passant par l’impact majeur d’AlexNet avec l’introduction de la ReLU, ce qui a permis d’atteindre des performances sans précédent dans la reconnaissance d’images.

📖 11. Visualisation des filtres

🔑 Notions clés & Définitions

  • Visualisation des filtres appris en première couche : représentation graphique des filtres convolutifs de la première couche d’un CNN, souvent des motifs simples comme des bords ou des textures, permettant d’interpréter ce que le réseau détecte initialement (voir Zeiler et Fergus).
  • Visualisation des filtres en couches profondes : représentation des filtres situés dans les couches plus avancées du CNN, qui capturent des motifs plus complexes et abstraits, illustrant l’évolution des motifs détectés à travers le réseau (voir Zeiler et Fergus).
  • Interprétation des motifs détectés par les filtres : analyse des motifs activés par les filtres lorsqu’ils répondent à des régions spécifiques d’une image, permettant de comprendre quels éléments visuels sont saisis par le réseau (voir Zeiler et Fergus).

📝 Points essentiels

  • La visualisation des filtres en première couche révèle souvent des motifs simples tels que des bords, des textures ou des couleurs, ce qui correspond à la détection de caractéristiques basiques (Zeiler et Fergus).
  • En progressant dans le réseau, les filtres deviennent plus complexes, capturant des motifs sémantiques plus abstraits, comme des formes ou des parties d’objets (Zeiler et Fergus).
  • La visualisation permet d’interpréter la hiérarchie de l’apprentissage, en montrant comment les motifs simples se combinent pour former des représentations plus sophistiquées.
  • Ces visualisations facilitent la compréhension du fonctionnement interne du CNN, en révélant les motifs que chaque filtre active lors du traitement d’une image.
  • La méthode de Zeiler et Fergus (2014) a popularisé cette approche, en utilisant des techniques de déconvulation pour reconstruire les motifs à partir des activations.

💡 À retenir

La visualisation des filtres, notamment celle proposée par Zeiler et Fergus, permet d’interpréter ce que le CNN apprend à chaque étape, en révélant la progression des motifs détectés, du simple au complexe, ce qui facilite la compréhension et l’explication du modèle.

📖 12. Apprentissage de représentations

🔑 Notions clés & Définitions

  • Apprentissage de représentations : Processus par lequel un réseau apprend à extraire des caractéristiques pertinentes à partir des données brutes, permettant une meilleure compréhension et classification (voir section 1).
  • Rôle des couches convolutionnelles : Fonctionnent comme des extracteurs de caractéristiques, détectant des motifs locaux tels que contours ou textures, en utilisant des filtres appris lors de l'entraînement (voir section 1).
  • Extracteur de caractéristiques vs classifieur dense : L'extracteur de caractéristiques (convolutionnel) transforme l'entrée en représentations abstraites, tandis que le classifieur dense utilise ces représentations pour effectuer la prédiction finale (voir section 4).
  • Transfert d'apprentissage : Technique consistant à réutiliser un réseau pré-entraîné sur une grande base de données (ex : ImageNet) pour une nouvelle tâche, en extrayant ses représentations sans le réentraîner entièrement (voir section 4).
  • Feature extraction, transfert learning statique et fine-tuning :
    • Feature extraction : Extraction de caractéristiques à partir d’un réseau pré-entraîné, en conservant ses paramètres fixes (voir section 4).
    • Transfert learning statique : Utilisation des représentations pré-apprises sans modification des poids (voir section 4).
    • Fine-tuning : Re-entrainement partiel ou total du réseau pré-entraîné avec ajustement des paramètres pour mieux s’adapter à la nouvelle tâche, en utilisant un faible taux d’apprentissage (voir section 4).

📝 Points essentiels

  • Les CNN apprennent à représenter les données sous forme de caractéristiques hiérarchiques, allant de motifs simples (bords, textures) dans les premières couches à des concepts plus complexes dans les couches profondes (Zeiler et Fergus).
  • Les couches convolutionnelles jouent un rôle crucial en tant qu’extracteurs de caractéristiques, en détectant localement des motifs via des filtres appris lors de l’entraînement (A. Carlier, 2024).
  • La distinction entre extracteur de caractéristiques et classifieur dense permet de comprendre la modularité des CNN : la partie convolutionnelle sert à générer des représentations, tandis que la partie dense se charge de la classification (voir section 4).
  • Le transfert d’apprentissage permet de réutiliser ces représentations, ce qui est particulièrement efficace lorsque les données annotées sont rares ou coûteuses à obtenir (A. Carlier, 2024).
  • La méthode de feature extraction consiste à fixer les poids du réseau pré-entraîné et à entraîner uniquement un classifieur additionnel. En revanche, le fine-tuning consiste à ajuster aussi les couches convolutionnelles pour mieux adapter le modèle à la nouvelle tâche, en utilisant un faible taux d’apprentissage pour préserver les filtres appris (voir section 4).

💡 À retenir

L’apprentissage de représentations par CNN permet de transformer des données brutes en caractéristiques hiérarchiques, facilitant la classification. Le transfert d’apprentissage, via le feature extraction ou le fine-tuning, optimise l’utilisation des représentations pré-apprises pour de nouvelles tâches, réduisant ainsi le besoin de grandes quantités de données annotées.

📊 Tableaux de Synthèse

AspectDétailsAuteur / Référence
Fonction d'une couche convolutionnelleApplique un filtre glissant pour extraire des motifs locaux, partage de paramètres, réduit la complexité-
Filtrage (kernels)Matrices appliquées pour détecter contours, textures, gradients ; exemple : filtres SobelA. Carlier (2024)
Dimension des tenseursFormule : wout=win+2pfs+1w_{out} = \left\lfloor \frac{w_{in} + 2p - f}{s} \right\rfloor + 1A. Carlier (2024)
Paramètres convolutionnelsTaille du filtre, padding, stride ; impact sur la taille de sortie-
Opérations en convolutionProduit scalaire entre filtre et sous-zone de l'entrée, sommation-
Padding (zéro ou autre)Ajout de pixels autour de l'entrée pour contrôler la taille de sortie-
Pooling (sous-échantillonnage)Réduction de dimension par max pooling ou average pooling-
Partage de paramètresRéduction du nombre de paramètres par réutilisation de filtres-
Architectures célèbres CNNLeNet, AlexNet, VGG, ResNet, Inception-
Visualisation des filtresMéthodes pour voir ce que chaque filtre apprend à détecter-
Apprentissage de représentationsExtraction hiérarchique de caractéristiques par couches successives-

⚠️ Pièges & Confusions Fréquentes

  1. Confondre la taille de la sortie avec celle de l'entrée sans prendre en compte padding et stride.
  2. Croire que tous les filtres ont la même taille, alors que certains CNN utilisent des filtres de tailles différentes.
  3. Confondre convolution et corrélation (en pratique, souvent utilisées comme équivalentes en CNN).
  4. Oublier que le partage de paramètres limite le nombre total de paramètres, contrairement aux couches entièrement connectées.
  5. Mal interpréter la formule de calcul de la dimension de sortie, notamment avec padding et stride.
  6. Confondre padding "zéro" avec padding "réfléchi" ou "cymmetric" (différentes techniques).
  7. Négliger l’impact du stride sur la réduction dimensionnelle et la vitesse d’apprentissage.

✅ Checklist Examen

  1. Connaître la définition de la couche convolutionnelle et son rôle dans un CNN.
  2. Savoir comment calculer la taille de la sortie d’une convolution 2D avec ou sans padding et stride, en utilisant la formule win+2pfs+1\left\lfloor \frac{w_{in} + 2p - f}{s} \right\rfloor + 1.
  3. Expliquer le fonctionnement d’un filtre (kernel) en convolution, en précisant le rôle des coefficients.
  4. Différencier une convolution d’un filtrage classique en signal processing.
  5. Connaître la différence entre couches convolutionnelles et couches entièrement connectées.
  6. Maîtriser la notion de partage de paramètres et ses avantages.
  7. Identifier les principaux filtres utilisés en vision par ordinateur, notamment Sobel.
  8. Connaître les architectures célèbres de CNN (LeNet, AlexNet, VGG, ResNet, Inception).
  9. Comprendre l’intérêt de la visualisation des filtres pour l’interprétation des CNN.
  10. Savoir ce qu’est le pooling et ses différentes formes (max, moyenne).
  11. Connaître l’impact du padding et du stride sur la dimension des tenseurs.
  12. Connaître la définition et l’utilisation des kernels en convolution.

Pon a prueba tus conocimientos

Pon a prueba tus conocimientos sobre Principes fondamentaux des CNN con 12 preguntas de opción múltiple con correcciones detalladas.

1. Qu'est-ce qu'une couche convolutionnelle dans un réseau de neurones convolutifs (CNN) ?

2. Quelle est la formule pour calculer la dimension de la sortie d'une convolution 2D avec padding zéro, stride s, et filtre de taille f, appliquée à une entrée de dimension w ?

Realiza el cuestionario →

Repasa con tarjetas de memoria

Memoriza los conceptos clave de Principes fondamentaux des CNN con 24 tarjetas de memoria interactivas.

Couches convolutionnelles — rôle ?

Extraire des caractéristiques locales dans une image.

Filtrage — définition ?

Application d’un kernel pour détecter motifs ou contours.

Dimension tenseur — formule ?

(w_out, h_out, c_out) selon padding, stride, f.

Ver tarjetas de memoria →

Similar courses

Crea tus propias hojas de repaso

Importa tu curso y la IA genera hojas, cuestionarios y tarjetas de memoria en 30 segundos.

Generador de hojas