Qu'est ce qu'un CNN ? Un Convolutional Neural Network
Découvrez les Convolutional Neural Networks (CNN) : leur fonctionnement, entraînement et applications dans ce guide complet.
Les Convolutional Neural Networks, ou CNN, sont une classe de réseaux de neurones utilisé dans le Deep Learning ou l'apprentissage profonds, particulièrement efficaces pour analyser des données visuelles telles que des images et des vidéos.
À la différence des réseaux de neurones traditionnels, qui traitent les données de manière dense, les CNN identifient et exploitent les structures spatiales hiérarchiques dans les données, ce qui les rend particulièrement puissants pour des tâches comme la reconnaissance d'images.
Cet article vous guidera à travers les principes de base des CNN, leur fonctionnement, leurs applications, et comment ils sont entraînés.
Comprendre les Convolutional Neural Networks
Qu’est-ce qu’un Convolutional Neural Network ?
Un Convolutional Neural Networks est une architecture de réseau de neurones qui comprend généralement plusieurs couches de convolution.
Les couches de convolution utilisent ce qu'on appelle des "filtres" ou "noyaux" pour balayer l'entrée (comme une image) et en extraire des caractéristiques spécifiques, telles que les bords, les textures, ou les formes. Chaque filtre est capable de détecter un type de caractéristique à différents endroits de l'entrée.
Différences avec un réseau de neurones traditionnel
Contrairement aux réseaux neuronaux entièrement connectés, où chaque entrée est connectée à chaque sortie, les CNN exploitent la localité spatiale en connectant des régions locales de l'entrée à des neurones de la couche suivante.
Cela réduit le nombre de paramètres nécessaires, rendant le réseau plus efficace et réduisant le risque de surajustement.
Composants Clés d'un CNN
Couches de convolution
Les couches de convolution sont le cœur d'un CNN.
Elles utilisent des filtres (petites matrices de poids) qui se déplacent sur l'ensemble de l'entrée (par exemple, une image) pour effectuer des opérations matricielles.
Chaque filtre détecte des caractéristiques spécifiques comme les bords, les angles ou d'autres motifs visuels à partir de l'entrée brute.
Le filtre applique une opération de convolution en prenant le produit scalaire entre le filtre et des portions locales de l'entrée, créant ainsi une carte de caractéristiques pour chaque filtre. Cela permet de capturer des informations spatiales et de motif.
Fonction d'activation ReLU
La Rectified Linear Unit (ReLU) est une fonction d'activation couramment utilisée qui ajoute de la non-linéarité au réseau.
Sans non-linéarité, le réseau serait essentiellement un modèle linéaire, limité dans sa capacité à traiter des formes complexes de données.
ReLU transforme toutes les valeurs négatives en zéro et laisse les valeurs positives inchangées. Cela aide à accélérer la convergence du réseau lors de l'apprentissage et à réduire le problème de disparition des gradients (où les gradients deviennent très petits, entravant l'apprentissage).
{{banniere-article}}
Pooling (sous-échantillonnage)
La couche de pooling, souvent appelée aussi sous-échantillonnage, réduit la dimensionnalité de chaque carte de caractéristiques tout en conservant les caractéristiques les plus importantes.
Les méthodes les plus courantes sont le max pooling et l'average pooling. Le max pooling renvoie la valeur maximale d'une portion de la carte de caractéristiques, tandis que l'average pooling calcule la moyenne.
Cette réduction de dimensionnalité permet de diminuer la quantité de calculs et de poids dans le réseau, ce qui aide à combattre le surajustement (overfitting) et améliore la généralisation du modèle
Couches entièrement connectées
Après plusieurs couches de convolution et de pooling, les cartes de caractéristiques sont aplanies et passées à des couches entièrement connectées, aussi connues sous le nom de couches denses.
Ces couches combinent toutes les caractéristiques apprises par les couches précédentes pour effectuer la classification. Les neurones dans une couche dense ont des connexions complètes à tous les activations de la couche précédente, comme dans les réseaux de neurones traditionnels.
Imaginons un CNN simple analysant une image pour détecter des visages.
La première couche de convolution pourrait capturer des détails basiques comme les bords, ensuite une couche de pooling pourrait réduire la dimensionnalité, puis une autre couche de convolution pourrait détecter des parties de visage comme les yeux ou la bouche, avant de passer à une couche de classification qui décide si l'image contient un visage ou non.
Apprentissage et Entraînement des CNN
Processus d'Entraînement
Le processus d'entraînement d'un CNN est similaire à celui d'autres réseaux de neurones et implique la propagation avant, le calcul de la perte, et la rétropropagation pour ajuster les poids des filtres.
Le réseau apprend à minimiser l'erreur entre ses prédictions et les vérités terrain.
Optimisation et Hyperparamètres
L'optimisation des réseaux de neurones convolutifs (CNN) repose sur le réglage attentif de plusieurs hyperparamètres et l'emploi de techniques spécifiques pour accroître leur efficacité et robustesse.
Les hyperparamètres tels que le taux d'apprentissage, le nombre et la taille des filtres, et le choix de l'optimiseur sont essentiels.
Le taux d'apprentissage détermine la rapidité avec laquelle le réseau ajuste ses poids pour minimiser l'erreur; un taux mal ajusté peut soit entraver l'apprentissage, soit provoquer une instabilité.
Le nombre et la taille des filtres dans chaque couche convolutive influencent la capacité du modèle à détecter des caractéristiques à divers niveaux de granularité.
Quant à l'optimiseur, des options comme SGD et Adam affectent directement la vitesse et la qualité de la convergence du modèle.
Pour améliorer la robustesse du modèle, des techniques comme le dropout et la normalisation par lots sont souvent utilisées.
Le dropout aide à prévenir le surajustement en désactivant aléatoirement des neurones pendant l'entraînement, ce qui force le réseau à ne pas dépendre excessivement de caractéristiques spécifiques.
La normalisation par lots ajuste et met à l'échelle les activations pour stabiliser l'apprentissage, aidant à réduire les problèmes liés à la disparition ou à l'explosion des gradients.
En ajustant soigneusement ces paramètres et techniques, on peut significativement améliorer la performance des CNNs, les rendant plus aptes à généraliser à partir des données d'entraînement vers de nouvelles, inédites.
Applications Pratiques des CNN
Les CNN sont omniprésents dans les applications de vision par ordinateur.
Ils sont utilisés pour la reconnaissance d'images, la détection d'objets, la segmentation sémantique, et même dans des domaines tels que la reconnaissance de la parole et la traduction automatique et même la Data Science.
Par exemple, dans le secteur automobile, les CNN permettent de développer des systèmes de conduite autonome avancés en traitant et en interprétant en temps réel les entrées vidéo pour détecter les chemins, les obstacles, et les panneaux de signalisation.
Voici une illustration montrant des applications pratiques des CNN (réseaux de neurones convolutifs). Elle représente différentes scènes :
- Un système de reconnaissance d'images identifiant divers objets comme un chien, un chat et une voiture.
- Un véhicule autonome naviguant sur une route, détectant les voies, les obstacles et les panneaux de signalisation en temps réel.
Les scènes sont connectées par un réseau de nœuds neuronaux et de flux de données, illustrant la technologie sous-jacente des CNN.
Défis et avenir des CNN
Malgré leur succès, les CNN font face à des défis comme le besoin de grandes quantités de données annotées et une grande puissance de calcul.
Les recherches futures se concentrent sur des architectures plus efficaces, l'intégration avec d'autres types de réseaux neuronaux, et l'expansion dans de nouveaux domaines d'application.
Techniques avancées et variantes des CNN
Réseaux Résiduels (ResNets)
Les réseaux résiduels (ResNets) introduisent des connexions résiduelles ou des raccourcis qui contournent une ou plusieurs couches.
Cela permet de résoudre le problème de la dégradation des gradients dans les réseaux très profonds, en facilitant l'apprentissage de réseaux avec des centaines de couches.
Réseaux à Capsules (Capsule Networks)
Les réseaux à capsules (CapsNets) sont une autre variante des CNN qui visent à capturer les relations spatiales entre les caractéristiques dans une image.
Les capsules regroupent des ensembles de neurones qui peuvent modéliser des parties d'un objet et leurs positions relatives, améliorant ainsi la robustesse aux variations spatiales.
Fonctionnement des réseaux à capsules avec des capsules et leurs relations :
Transfert d'Apprentissage
Le transfert d'apprentissage consiste à utiliser un modèle pré-entraîné sur un large jeu de données pour l'appliquer à une tâche spécifique avec un jeu de données plus petit.
Cette technique est particulièrement utile lorsque les données annotées sont limitées, permettant de tirer parti des connaissances acquises par le modèle pré-entraîné.
Processus de transfert d'apprentissage avec un modèle pré-entraîné :
Conclusion
Les réseaux de neurones convolutifs (CNN) sont essentiels pour l'analyse de données visuelles dans l'apprentissage profond ou Deep Learning.
Ils se distinguent par leur architecture optimisée pour capturer des structures spatiales à travers des couches spécialisées, comme la convolution et le pooling, qui traitent efficacement les images et vidéos.
Le réglage des hyperparamètres, tels que le taux d'apprentissage et le choix des optimiseurs, ainsi que l'utilisation de techniques comme le dropout et la normalisation par lots, améliorent la robustesse et la généralisation des CNN.
Utilisés dans une multitude d'applications, de la reconnaissance d'images à la traduction automatique, les CNN continuent de transformer le domaine de l'intelligence artificielle, avec des innovations constantes qui surmontent des défis comme le besoin de grandes quantités de données et de puissance de calcul.