Convolutional Neural Network (CNN)
Un Réseau de Neurones Convolutif, ou Convolutional Neural Network (CNN), est une classe spécialisée de réseaux de neurones artificiels conçue pour traiter des données qui ont une topologie de grille, telles que les images. Inspirés par le cortex visuel biologique, les CNN sont au cœur des avancées majeures en deep learning, particulièrement dans le domaine de la vision par ordinateur. Leur architecture est spécifiquement adaptée pour détecter des hiérarchies de caractéristiques dans les données d’entrée, allant de simples motifs locaux à des structures complexes.
Les concepts fondamentaux des CNN reposent sur plusieurs types de couches spécialisées qui traitent et transforment l’information. La couche la plus distinctive est la couche de convolution. Celle-ci applique un ensemble de filtres (ou noyaux, kernels en anglais) apprenables à l’image d’entrée. Chaque filtre est une petite matrice de poids qui glisse sur toute l’image, effectuant un produit scalaire entre les valeurs du filtre et la portion correspondante de l’image. Cette opération produit une « carte de caractéristiques » (feature map) qui met en évidence la présence de motifs spécifiques (par exemple, des arêtes, des textures, des formes) à différents endroits de l’image. 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 total de paramètres à apprendre par rapport à un réseau de neurones traditionnel et confère au modèle une certaine invariance à la translation des motifs.
Une autre couche essentielle est la couche de pooling (ou sous-échantillonnage). Son rôle principal est de réduire progressivement la dimensionnalité spatiale 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 sélectionne la valeur maximale dans une fenêtre locale, et l’average pooling, qui calcule la moyenne. En rendant la représentation des caractéristiques plus robuste aux petites variations de position, le pooling contribue à une certaine invariance aux translations et aux déformations locales.
Après plusieurs couches de convolution et de pooling alternées, qui extraient et affinent les caractéristiques de manière hiérarchique (des caractéristiques simples aux plus complexes), les cartes de caractéristiques résultantes sont généralement aplaties en un vecteur unidimensionnel. Ce vecteur est ensuite transmis à une ou plusieurs couches entièrement connectées (fully connected layers), similaires à celles des réseaux de neurones multicouches classiques. Ces couches finales effectuent la tâche de classification (par exemple, attribuer une étiquette à l’image) ou de régression (prédire une valeur continue) en se basant sur les caractéristiques extraites par les couches précédentes.
Les fonctions d’activation jouent un rôle crucial dans les CNN, comme dans tous les réseaux de neurones. Elles introduisent la non-linéarité dans le modèle, permettant d’apprendre des relations complexes dans les données. La fonction d’activation la plus couramment utilisée dans les CNN modernes est l’Unité Linéaire Rectifiée (ReLU), appréciée pour sa simplicité et son efficacité à atténuer le problème de la disparition du gradient. D’autres fonctions comme la sigmoïde ou la tangente hyperbolique (tanh) peuvent également être utilisées, bien que moins fréquemment dans les couches cachées des CNN profonds. L’apprentissage d’un CNN se fait typiquement par rétropropagation du gradient, où les poids du réseau sont ajustés itérativement pour minimiser une fonction de perte qui mesure l’écart entre les prédictions du modèle et les vraies étiquettes.
L’importance des CNN est immense, particulièrement dans le domaine de la vision par ordinateur qu’ils ont révolutionné. Avant leur avènement, la reconnaissance d’objets et d’autres tâches visuelles nécessitaient une ingénierie manuelle fastidieuse de caractéristiques. Les CNN, en revanche, apprennent automatiquement les caractéristiques pertinentes directement à partir des données brutes (pixels d’une image). Cette capacité a conduit à des performances surpassant de loin les méthodes traditionnelles sur des benchmarks complexes comme ImageNet. Leur impact s’étend au-delà de la vision par ordinateur, influençant des domaines tels que le traitement du langage naturel (où les CNN 1D sont utilisés pour analyser des séquences de mots), l’analyse de signaux (par exemple, audio ou séries temporelles), la découverte de médicaments (analyse de structures moléculaires) et la bio-informatique.
Les applications pratiques des CNN sont omniprésentes et continuent de se multiplier. Dans la vie quotidienne, ils alimentent les systèmes de reconnaissance faciale sur les smartphones et dans les systèmes de sécurité. Les véhicules autonomes les utilisent pour détecter les piétons, les autres véhicules, les panneaux de signalisation et les marquages au sol. En médecine, les CNN assistent les radiologues en analysant des images médicales (radiographies, scanners, IRM) pour détecter des anomalies, des tumeurs ou d’autres pathologies avec une précision parfois comparable, voire supérieure, à celle des experts humains. Ils sont également employés dans les systèmes de recommandation, par exemple pour analyser les images de produits et suggérer des articles similaires, ou dans la recherche d’images inversée où l’on recherche des images similaires à une image requête. Les CNN sont aussi utilisés pour la modération de contenu en ligne, l’analyse de documents numérisés (OCR avancé), la création artistique (style transfer), et même dans des domaines scientifiques comme l’astronomie pour analyser des images télescopiques.
Il existe plusieurs nuances et variations du concept de CNN. La dimensionnalité des données d’entrée dicte souvent le type de CNN utilisé : les CNN 1D traitent des séquences (texte, signaux audio), les CNN 2D sont les plus courants pour les images, et les CNN 3D sont employés pour des données volumiques (vidéos, scans IRM 3D). Au fil des ans, de nombreuses architectures CNN spécifiques ont été proposées, chacune apportant des innovations pour améliorer la performance, réduire la complexité ou faciliter l’entraînement de réseaux plus profonds. Parmi les plus célèbres, on peut citer LeNet-5 (pionnier pour la reconnaissance de chiffres), AlexNet (qui a relancé l’intérêt pour les CNN en 2012), VGGNet (avec son architecture uniforme de petits filtres), GoogLeNet/Inception (introduisant les modules « Inception » pour une meilleure efficacité), ResNet (permettant d’entraîner des réseaux extrêmement profonds grâce aux connexions résiduelles), et plus récemment des architectures comme DenseNet, EfficientNet ou les Vision Transformers qui commencent à concurrencer les CNN sur certaines tâches. Le concept de « transfer learning » est également très important : il s’agit d’utiliser un CNN pré-entraîné sur un grand jeu de données (comme ImageNet) comme point de départ pour une nouvelle tâche, en réajustant (fine-tuning) ses couches pour s’adapter à des données spécifiques, ce qui est particulièrement utile lorsque les données disponibles pour la nouvelle tâche sont limitées. D’autres variations techniques incluent les convolutions dilatées (atrous convolutions) pour augmenter le champ réceptif sans augmenter le nombre de paramètres, ou les convolutions séparables en profondeur (depthwise separable convolutions) pour réduire la charge computationnelle.
Plusieurs concepts sont étroitement liés aux CNN. Ils sont une sous-catégorie des Réseaux de Neurones Artificiels (ANN) et un pilier du Deep Learning (apprentissage profond), qui se réfère aux réseaux de neurones avec de multiples couches. La Vision par Ordinateur est le principal domaine d’application, bien que non exclusif. L’extraction de caractéristiques est ce que les CNN font implicitement. La rétropropagation est l’algorithme d’apprentissage utilisé. Un synonyme couramment utilisé est « ConvNet ». Il n’y a pas d’antonymes directs, mais on peut contraster les CNN avec les approches traditionnelles de vision par ordinateur qui reposaient sur des extracteurs de caractéristiques manuels (comme SIFT, SURF, HOG) ou avec d’autres types 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 temporelles, bien que CNN et RNN puissent être combinés. Les Transformers, initialement développés pour le NLP, sont aussi de plus en plus adaptés aux tâches de vision et représentent une alternative ou un complément aux architectures CNN.
L’histoire des CNN remonte bien avant leur popularité actuelle. Le Neocognitron, proposé par Kunihiko Fukushima dans les années 1980, est souvent considéré comme un précurseur des CNN, introduisant déjà les idées de couches convolutives et de sous-échantillonnage. Dans les années 1990, Yann LeCun et ses collaborateurs ont développé LeNet-5, un CNN performant pour la reconnaissance de chiffres manuscrits, utilisé notamment pour lire les chèques bancaires. Cependant, les CNN sont restés relativement en marge pendant plusieurs années, en partie à cause des limitations de la puissance de calcul et de la taille des jeux de données disponibles. C’est en 2012 que les CNN ont connu une renaissance spectaculaire avec AlexNet, conçu par Alex Krizhevsky, Ilya Sutskever et Geoffrey Hinton. AlexNet a remporté de manière écrasante le concours ImageNet Large Scale Visual Recognition Challenge (ILSVRC), démontrant la puissance des CNN entraînés sur des unités de traitement graphique (GPU) avec de grandes quantités de données. Cet événement a marqué un tournant, propulsant les CNN au premier plan de la recherche en intelligence artificielle. Depuis, une « course à la profondeur » et à l’efficacité a mené à des architectures toujours plus performantes et complexes.
Les CNN présentent de nombreux avantages. Leur capacité à apprendre automatiquement des hiérarchies de caractéristiques à partir de données brutes est leur atout majeur. Ils atteignent des performances de pointe dans de nombreuses tâches de vision. Le partage de poids dans les couches de convolution réduit significativement le nombre de paramètres par rapport aux réseaux entièrement connectés de taille comparable, ce qui facilite l’entraînement et améliore la généralisation. Les opérations de convolution et de pooling leur confèrent une certaine invariance aux translations, rotations et déformations locales des objets dans les images. Cependant, les CNN ont aussi des inconvénients et des défis. Ils nécessitent généralement de très grandes quantités de données étiquetées pour l’entraînement, ce qui peut être coûteux et difficile à obtenir. L’entraînement de CNN profonds est computationnellement intensif et requiert souvent du matériel spécialisé comme des GPU. Leur nature de « boîte noire » rend difficile l’interprétation de leurs décisions, ce qui peut être problématique pour des applications critiques. Ils sont également vulnérables aux attaques adverses, de petites perturbations quasi-invisibles à l’œil humain qui peuvent tromper le réseau et le conduire à des classifications erronées. Enfin, comme tous les modèles d’apprentissage profond, ils peuvent souffrir de surapprentissage (overfitting) si les données d’entraînement sont insuffisantes ou si le modèle n’est pas correctement régularisé. Les limitations incluent une efficacité moindre pour les données non structurées ou tabulaires, où d’autres algorithmes d’apprentissage automatique peuvent être plus adaptés, et parfois une compréhension limitée du contexte global d’une scène par rapport à des architectures plus récentes comme les Transformers, bien que cette distinction tende à s’estomper avec l’évolution des modèles. La recherche continue vise à surmonter ces limitations, en améliorant l’efficacité, l’interprétabilité, la robustesse et en réduisant la dépendance aux grandes quantités de données.