CNN (Convolutional Neural Network)
Un Réseau de Neurones Convolutif, communément abrégé en CNN (de l’anglais Convolutional Neural Network) ou parfois ConvNet, est une classe spécifique de réseaux de neurones artificiels, particulièrement adaptée au traitement et à l’analyse de données structurées en grille, telles que les images et les vidéos. Inspirés par l’organisation du cortex visuel animal, les CNN utilisent des opérations de convolution pour apprendre automatiquement et de manière hiérarchique des représentations de données, allant des caractéristiques simples de bas niveau (contours, textures) à des concepts complexes de haut niveau (objets, scènes).
Les concepts fondamentaux et les principes essentiels des CNN reposent sur plusieurs types de couches spécialisées qui traitent l’information séquentiellement. La couche de convolution est la pierre angulaire. Elle applique un ensemble de filtres (ou noyaux) apprenables à l’entrée. Chaque filtre est une petite matrice de poids qui glisse sur toute l’image d’entrée (ou la carte de caractéristiques précédente) pour calculer des produits scalaires. Ce processus génère une carte de caractéristiques (feature map) qui met en évidence la présence de motifs spécifiques (comme des bords ou des formes) à différents endroits de l’entrée. Un principe clé ici est le partage de poids : le même filtre est utilisé sur toute l’image, ce qui réduit considérablement le nombre de paramètres à apprendre par rapport à un réseau de neurones entièrement connecté, et confère au réseau une certaine invariance à la translation des objets. D’autres paramètres importants de la couche de convolution incluent la taille du filtre, le pas (stride) avec lequel le filtre se déplace, et le remplissage (padding) qui peut être ajouté aux bords de l’entrée pour contrôler la taille de la sortie.
Après les couches de convolution, on trouve souvent des couches de fonction d’activation non linéaire, comme la fonction ReLU (Rectified Linear Unit), qui introduit la non-linéarité dans le modèle, permettant d’apprendre des fonctions plus complexes. Les couches de pooling (ou sous-échantillonnage) suivent généralement les couches de convolution. Leur rôle est de réduire la dimension spatiale (largeur et hauteur) des cartes de caractéristiques, ce qui diminue la quantité de calculs et de paramètres, et aide à contrôler le surapprentissage. Les opérations de pooling les plus courantes sont le max pooling, qui conserve la valeur maximale d’une petite fenêtre, et l’average pooling, qui calcule la moyenne. Ces opérations contribuent également à une forme d’invariance aux petites transformations locales. Enfin, après plusieurs séquences de couches de convolution et de pooling, l’architecture d’un CNN se termine généralement par une ou plusieurs couches entièrement connectées (fully connected layers). Ces couches prennent en entrée les caractéristiques de haut niveau extraites par les couches précédentes (souvent après avoir été aplaties en un vecteur) et effectuent la tâche finale, comme la classification (attribuer une étiquette à l’image) ou la régression. L’apprentissage des poids dans toutes ces couches se fait typiquement par rétropropagation de l’erreur et optimisation par descente de gradient.
L’importance des CNN dans le domaine de l’intelligence artificielle, et plus particulièrement en vision par ordinateur, est considérable. Avant leur avènement, l’extraction de caractéristiques pertinentes à partir d’images était un processus manuel laborieux, dépendant fortement de l’expertise humaine. Les CNN ont révolutionné cette approche en apprenant automatiquement les caractéristiques les plus discriminantes directement à partir des données brutes. Leur capacité à atteindre des performances surpassant de loin les méthodes traditionnelles sur des tâches complexes comme la classification d’images à grande échelle (par exemple, sur le benchmark ImageNet) a marqué un tournant décisif. Cet impact s’étend au-delà de la vision par ordinateur, influençant des domaines variés tels que le traitement du langage naturel, la reconnaissance vocale, et la découverte de médicaments. Les CNN ont contribué à démocratiser l’accès à des technologies d’analyse d’image performantes et ont stimulé une vague d’innovations dans de nombreux secteurs industriels et scientifiques.
Les applications pratiques des CNN sont multiples et en constante expansion. En vision par ordinateur, ils sont au cœur des systèmes de reconnaissance d’images (par exemple, identifier des objets, des animaux ou des scènes dans des photographies), de détection d’objets (localiser et classifier plusieurs objets dans une image, comme les piétons et les véhicules pour les voitures autonomes), de segmentation sémantique (attribuer une étiquette à chaque pixel d’une image pour délimiter précisément les objets) et de segmentation d’instance. La reconnaissance faciale, utilisée pour la sécurité et l’identification, repose largement sur les CNN. Dans le domaine médical, les CNN aident à l’analyse d’images médicales telles que les radiographies, les IRM et les scanners CT pour la détection précoce de maladies comme le cancer ou des anomalies. Les véhicules autonomes utilisent des CNN pour interpréter leur environnement en temps réel à partir de caméras et de capteurs LiDAR. Au-delà des images, les CNN monodimensionnels (1D CNN) sont appliqués avec succès au traitement du langage naturel pour des tâches comme la classification de texte (analyse de sentiment, détection de spam) et à l’analyse de séries temporelles (prévision, détection d’anomalies). Les CNN tridimensionnels (3D CNN) sont utilisés pour l’analyse de données volumétriques (IRM 3D) ou de vidéos (reconnaissance d’actions). Des architectures génératives basées sur les CNN, comme les Réseaux Antagonistes Génératifs (GAN), peuvent même créer de nouvelles images réalistes.
Il existe plusieurs nuances et variations du concept de CNN, principalement sous la forme d’architectures spécifiques qui ont été développées pour améliorer les performances, réduire la complexité ou s’adapter à des tâches particulières. LeNet-5, développé par Yann LeCun dans les années 1990, est l’une des premières architectures CNN réussies, principalement pour la reconnaissance de chiffres manuscrits. AlexNet, en 2012, a relancé l’intérêt pour les CNN en remportant de manière spectaculaire le concours ImageNet. Par la suite, des architectures plus profondes et plus complexes ont émergé, comme VGGNet (avec des couches de convolution très uniformes), GoogLeNet (avec ses modules « Inception » qui effectuent des convolutions de différentes tailles en parallèle), ResNet (qui introduit les connexions résiduelles ou « skip connections » pour faciliter l’entraînement de réseaux très profonds), et DenseNet (où chaque couche est connectée à toutes les couches suivantes). Des architectures plus légères, comme MobileNet et EfficientNet, ont été conçues pour être efficaces sur des appareils mobiles avec des ressources limitées. Les Réseaux Entièrement Convolutifs (FCN) modifient l’architecture CNN classique pour produire une sortie de la même taille que l’entrée, ce qui est utile pour la segmentation sémantique. Les CNN dilatés (ou à trous) utilisent des filtres avec des « trous » pour augmenter le champ réceptif sans augmenter le nombre de paramètres ni réduire la résolution spatiale. Les réseaux de capsules (CapsNets) représentent une tentative plus récente de surmonter certaines limitations des CNN, notamment en ce qui concerne la compréhension des relations hiérarchiques et des points de vue.
Plusieurs concepts sont étroitement liés aux CNN. L’apprentissage profond (Deep Learning) est le domaine plus large auquel appartiennent les CNN, caractérisé par l’utilisation de réseaux de neurones avec de nombreuses couches. Les réseaux de neurones artificiels (ANN) sont la structure de base sur laquelle les CNN sont construits. La vision par ordinateur (Computer Vision) est le principal domaine d’application des CNN. L’extraction de caractéristiques (Feature extraction) est une tâche centrale que les CNN automatisent. L’apprentissage supervisé est le paradigme d’apprentissage le plus courant pour entraîner les CNN, bien que des approches non supervisées et par renforcement existent également. Le terme « ConvNet » est un synonyme direct et couramment utilisé. Il n’y a pas d’antonyme direct, mais on peut contraster les CNN avec d’autres architectures de réseaux de neurones comme les Réseaux de Neurones Récurrents (RNN), qui sont spécialisés dans le traitement de données séquentielles (comme le texte ou la parole), ou les Perceptrons Multicouches (MLP), qui sont des réseaux de neurones plus généraux mais moins efficaces pour les données spatiales brutes. On peut aussi les opposer aux méthodes traditionnelles de vision par ordinateur qui reposent sur l’ingénierie manuelle de caractéristiques.
L’origine des CNN remonte aux années 1980 avec le Neocognitron de Kunihiko Fukushima, un modèle inspiré par le cortex visuel qui introduisait déjà les concepts de couches convolutives et de sous-échantillonnage. Cependant, c’est le travail de Yann LeCun et ses collaborateurs à la fin des années 1980 et dans les années 1990, avec le développement de LeNet-5 pour la reconnaissance de chiffres manuscrits sur les chèques, qui a posé les fondations des CNN modernes, intégrant l’apprentissage par rétropropagation. Malgré ces succès précoces, les CNN sont restés relativement en marge pendant plusieurs années, en partie à cause des limitations en termes de puissance de calcul et de la disponibilité de grandes bases de données étiquetées. Leur popularité a explosé en 2012 lorsque AlexNet, un CNN profond entraîné sur des unités de traitement graphique (GPU), a remporté de manière décisive la compétition ImageNet Large Scale Visual Recognition Challenge (ILSVRC). Cet événement a marqué le début de la « révolution du deep learning » et a conduit à une recherche et un développement intensifs, aboutissant à des architectures de plus en plus profondes, performantes et efficaces. L’évolution continue est alimentée par l’amélioration des algorithmes, la croissance exponentielle des données disponibles et les progrès constants dans le matériel de calcul.
Les CNN présentent de nombreux avantages. Leur principal atout est leur capacité à apprendre automatiquement des hiérarchies de caractéristiques pertinentes directement à partir des données brutes, ce qui élimine le besoin d’une ingénierie manuelle de caractéristiques, souvent complexe et spécifique à la tâche. Le partage de poids dans les couches convolutives réduit considérablement le nombre de paramètres par rapport aux réseaux entièrement connectés, ce qui les rend plus faciles à entraîner, plus rapides à exécuter (pour une taille d’entrée donnée) et moins sujets au surapprentissage. Ils possèdent une invariance intégrée aux translations et une robustesse aux petites déformations des objets dans l’image, grâce aux opérations de convolution et de pooling. Leur architecture hiérarchique mime la façon dont les systèmes visuels biologiques traitent l’information.
Cependant, les CNN ont aussi des inconvénients et des limitations. Ils nécessitent généralement de très grandes quantités de données étiquetées pour atteindre de bonnes performances, ce qui peut être coûteux et long à acquérir. L’entraînement de CNN profonds peut être très gourmand en ressources de calcul, nécessitant souvent des GPU spécialisés et beaucoup de temps. Malgré leurs succès, les CNN sont souvent considérés comme des « boîtes noires » car il est difficile d’interpréter précisément comment ils prennent leurs décisions, ce qui peut être problématique pour des applications critiques. Ils sont également vulnérables aux attaques adverses (adversarial attacks), où de petites perturbations imperceptibles à l’œil humain peuvent amener le réseau à faire des erreurs de classification grossières.
Les défis actuels de la recherche sur les CNN incluent le développement de méthodes pour entraîner des modèles performants avec moins de données (par exemple, via l’apprentissage par transfert, l’apprentissage auto-supervisé ou l’apprentissage one-shot/few-shot), l’amélioration de leur robustesse et de leur capacité de généralisation à des domaines inconnus, l’augmentation de leur interprétabilité, et la réduction de leur empreinte computationnelle pour un déploiement sur des appareils à ressources limitées. Malgré ces défis, les CNN restent un outil fondamental et puissant dans le domaine de l’intelligence artificielle, avec un potentiel d’application encore largement inexploité.