Qu’est-ce qu’un Convolutional Neural Network (CNN) ?
Un réseau de neurones convolutifs (CNN ou ConvNet) est une classe d’algorithmes de Deep Learning spécialisée dans le traitement de données présentant une topologie de grille, comme les images. Inspirés par le cortex visuel humain, les CNN sont devenus l’outil de prédilection pour les tâches de vision par ordinateur, telles que la classification d’images, la détection d’objets et la segmentation.
Définition détaillée de Convolutional Neural Network (CNN)
Les réseaux de neurones convolutifs tirent leur nom de l’opération mathématique de “convolution”, un processus au cœur de leur fonctionnement. Contrairement aux réseaux de neurones traditionnels où chaque neurone d’une couche est connecté à tous les neurones de la couche précédente, les CNN utilisent une architecture spécifique qui leur permet d’apprendre des hiérarchies de caractéristiques. Cela signifie qu’ils peuvent d’abord apprendre à reconnaître des caractéristiques simples comme des bords et des coins, puis combiner ces caractéristiques pour en reconnaître de plus complexes comme des yeux ou des visages, et enfin des objets entiers.
L’histoire des CNN remonte aux années 1980 avec le travail de Yann LeCun et de son équipe sur LeNet-5, un des premiers CNN utilisé avec succès pour la reconnaissance de chiffres manuscrits. Cependant, ce n’est qu’avec l’avènement de grandes bases de données d’images comme ImageNet et la puissance de calcul accrue des GPU que les CNN ont véritablement explosé en popularité et en performance au début des années 2010. Des architectures comme AlexNet, VGGNet, GoogLeNet et ResNet ont depuis repoussé les limites de ce qui est possible en matière de vision par ordinateur.
Comment fonctionne un Convolutional Neural Network (CNN) ?
Un CNN est généralement composé de trois types de couches : les couches de convolution, les couches de pooling (ou sous-échantillonnage) et les couches entièrement connectées. Les couches de convolution appliquent un ensemble de filtres (ou noyaux) à l’image d’entrée. Chaque filtre est conçu pour détecter une caractéristique spécifique, comme un bord vertical ou une couleur particulière. En faisant glisser ces filtres sur toute l’image, la couche de convolution crée une “carte de caractéristiques” qui met en évidence la présence de ces caractéristiques à différents endroits de l’image.
Les couches de pooling sont ensuite utilisées pour réduire la dimension spatiale des cartes de caractéristiques, ce qui permet de réduire la complexité de calcul et de rendre le modèle plus robuste aux variations de position des caractéristiques dans l’image. Enfin, les couches entièrement connectées, similaires à celles d’un réseau de neurones classique, sont utilisées pour classer l’image en fonction des caractéristiques extraites par les couches précédentes.
Quelles sont les différences entre un CNN et un réseau de neurones traditionnel ?
La principale différence entre un CNN et un réseau de neurones traditionnel (ou perceptron multicouche) réside dans leur architecture et leur manière de traiter les données. Alors qu’un réseau de neurones traditionnel traite les données d’entrée comme un vecteur plat, un CNN est spécifiquement conçu pour traiter des données avec une structure spatiale, comme les images. Les CNN utilisent des couches de convolution et de pooling pour exploiter cette structure spatiale, ce qui leur permet d’être beaucoup plus efficaces et performants pour les tâches de vision par ordinateur. De plus, les CNN ont beaucoup moins de paramètres à apprendre qu’un réseau de neurones traditionnel de taille comparable, ce qui les rend moins sujets au surapprentissage.
Qu’est-ce que le transfert d’apprentissage (transfer learning) avec les CNN ?
Le transfert d’apprentissage est une technique très populaire en Deep Learning qui consiste à utiliser un modèle pré-entraîné sur une grande base de données (comme ImageNet) comme point de départ pour une nouvelle tâche. Au lieu d’entraîner un CNN à partir de zéro, ce qui peut nécessiter d’énormes quantités de données et de temps de calcul, on peut réutiliser les couches de convolution d’un modèle pré-entraîné, qui ont déjà appris à extraire des caractéristiques générales des images. On ne ré-entraîne alors que les dernières couches entièrement connectées pour les adapter à la nouvelle tâche. Cette approche permet d’obtenir d’excellents résultats même avec des ensembles de données relativement petits.
Applications concrètes
Les applications des CNN sont omniprésentes dans notre vie quotidienne. Elles sont au cœur des systèmes de reconnaissance faciale de nos smartphones, des voitures autonomes qui doivent détecter les piétons et les panneaux de signalisation, des diagnostics médicaux assistés par ordinateur qui analysent les images médicales pour détecter des tumeurs, et des systèmes de recommandation de contenu qui analysent les images des produits que nous consultons. Les CNN sont également utilisés dans le traitement du langage naturel pour des tâches comme la classification de texte et l’analyse de sentiments.
Convolutional Neural Network (CNN) et les métiers de la Data
La maîtrise des CNN est une compétence très recherchée pour de nombreux métiers de la Data, en particulier pour les Data Scientists, les Machine Learning Engineers et les spécialistes en vision par ordinateur. Ces professionnels sont chargés de concevoir, d’entraîner et de déployer des modèles de CNN pour résoudre des problèmes concrets en entreprise. Pour en savoir plus sur les carrières dans la Data et l’IA, vous pouvez consulter nos bootcamps et notre glossaire. Pour approfondir vos connaissances, des ressources comme la page Wikipedia sur les CNN ou les notes de cours de Stanford CS231n sont d’excellents points de départ.