Bases des réseaux de neurones convolutifs : ce que vous devez savoir
Publié: 2024-09-10Les réseaux de neurones convolutifs (CNN) sont des outils fondamentaux dans l'analyse des données et l'apprentissage automatique (ML). Ce guide explique le fonctionnement des CNN, en quoi ils diffèrent des autres réseaux de neurones, leurs applications ainsi que les avantages et les inconvénients associés à leur utilisation.
Table des matières
- Qu’est-ce qu’un CNN ?
- Comment fonctionnent les CNN
- CNN vs RNN et transformateurs
- Applications des CNN
- Avantages
- Inconvénients
Qu'est-ce qu'un réseau de neurones convolutifs ?
Un réseau neuronal convolutif (CNN) est un réseau neuronal faisant partie intégrante de l'apprentissage profond, conçu pour traiter et analyser des données spatiales. Il utilise des couches convolutives avec des filtres pour détecter et apprendre automatiquement les caractéristiques importantes de l'entrée, ce qui le rend particulièrement efficace pour des tâches telles que la reconnaissance d'images et de vidéos.
Décomposons un peu cette définition. Les données spatiales sont des données dans lesquelles les pièces sont liées les unes aux autres via leur position. Les images en sont le meilleur exemple.
Dans chaque image ci-dessus, chaque pixel blanc est connecté à chaque pixel blanc environnant : ils forment le chiffre. Les emplacements des pixels indiquent également au spectateur où se trouve le chiffre dans l'image.
Les fonctionnalités sont des attributs présents dans l’image. Ces attributs peuvent aller d'un bord légèrement incliné à la présence d'un nez ou d'un œil, en passant par une composition d'yeux, de bouches et de nez. Surtout, les caractéristiques peuvent être composées de caractéristiques plus simples (par exemple, un œil est composé de quelques bords incurvés et d'une tache sombre centrale).
Les filtres font partie du modèle qui détecte ces caractéristiques dans l'image. Chaque filtre recherche une caractéristique spécifique (par exemple, un bord courbé de gauche à droite) dans toute l'image.
Enfin, le terme « convolutionnel » dans le réseau neuronal convolutif fait référence à la façon dont un filtre est appliqué à une image. Nous expliquerons cela dans la section suivante.
Les CNN ont montré de solides performances sur diverses tâches d'image, telles que la détection d'objets et la segmentation d'images. Un modèle de CNN (AlexNet) a joué un rôle important dans l’essor du deep learning en 2012.
Comment fonctionnent les CNN
Explorons l'architecture globale d'un CNN en utilisant l'exemple de la détermination du nombre (0 à 9) dans une image.
Avant d'introduire l'image dans le modèle, l'image doit être transformée en représentation numérique (ou encodage). Pour les images en noir et blanc, chaque pixel se voit attribuer un numéro : 255 s'il est complètement blanc et 0 s'il est complètement noir (parfois normalisé à 1 et 0). Pour les images couleur, chaque pixel se voit attribuer trois nombres : un pour la quantité de rouge, de vert et de bleu qu'il contient, appelé valeur RVB. Ainsi, une image de 256 × 256 pixels (avec 65 536 pixels) aurait 65 536 valeurs dans son codage noir et blanc et 196 608 valeurs dans son codage couleur.
Le modèle traite ensuite l'image à travers trois types de calques :
1 Couche convolutive :cette couche applique des filtres à son entrée. Chaque filtre est une grille de nombres d'une taille définie (par exemple, 3×3). Cette grille est superposée sur l'image en partant du coin supérieur gauche ; les valeurs de pixels des lignes 1 à 3 des colonnes 1 à 3 seront utilisées. Ces valeurs de pixels sont multipliées par les valeurs du filtre puis additionnées. Cette somme est ensuite placée dans la grille de sortie du filtre dans la ligne 1, colonne 1. Ensuite, le filtre glisse d'un pixel vers la droite et répète le processus jusqu'à ce qu'il ait couvert toutes les lignes et colonnes de l'image. En faisant glisser un pixel à la fois, le filtre peut trouver des caractéristiques n'importe où dans l'image, une propriété connue sous le nom d'invariance translationnelle. Chaque filtre crée sa propre grille de sortie, qui est ensuite envoyée à la couche suivante.
2 Couche de regroupement : cette couche résume les informations sur les caractéristiques de la couche de convolution. La couche convolutive renvoie une sortie plus grande que son entrée (chaque filtre renvoie une carte de caractéristiques approximativement de la même taille que l'entrée, et il existe plusieurs filtres). La couche de pooling prend chaque carte de caractéristiques et lui applique une autre grille. Cette grille prend soit la moyenne, soit le maximum des valeurs qu'elle contient et l'affiche. Cependant, cette grille ne déplace pas un pixel à la fois ; il passera au prochain patch de pixels. Par exemple, une grille de regroupement 3 × 3 fonctionnera d'abord sur les pixels des lignes 1 à 3 et des colonnes 1 à 3. Ensuite, il restera dans la même ligne mais passera aux colonnes 4 à 6. Après avoir couvert toutes les colonnes de la première série de lignes (1 à 3), il descendra aux lignes 4 à 6 et s'attaquera à ces colonnes. Cela réduit efficacement le nombre de lignes et de colonnes dans la sortie. La couche de pooling contribue à réduire la complexité, rend le modèle plus robuste au bruit et aux petits changements, et aide le modèle à se concentrer sur les fonctionnalités les plus importantes.
3 Couche entièrement connectée : après plusieurs séries de couches de convolution et de pooling, les cartes de caractéristiques finales sont transmises à une couche de réseau neuronal entièrement connectée, qui renvoie le résultat qui nous intéresse (par exemple, la probabilité que l'image soit un nombre particulier). Les cartes de fonctionnalités doivent être aplaties (chaque ligne d'une carte de fonctionnalités est concaténée en une longue ligne), puis combinées (chaque ligne de carte de fonctionnalités longue est concaténée en une méga ligne).
Voici une représentation visuelle de l'architecture CNN, illustrant comment chaque couche traite l'image d'entrée et contribue au résultat final :
Quelques notes supplémentaires sur le processus :
- Chaque couche convolutive successive trouve des fonctionnalités de niveau supérieur. La première couche convolutive détecte les bords, les points ou les motifs simples. La couche convolutive suivante prend comme entrée la sortie regroupée de la première couche convolutive, ce qui lui permet de détecter des compositions de caractéristiques de niveau inférieur qui forment des caractéristiques de niveau supérieur, telles qu'un nez ou un œil.
- Le modèle nécessite une formation. Pendant la formation, une image passe à travers toutes les couches (avec des poids aléatoires au début) et la sortie est générée. La différence entre le résultat et la réponse réelle est utilisée pour ajuster légèrement les pondérations, ce qui rend le modèle plus susceptible de répondre correctement à l'avenir. Cela se fait par descente de gradient, où l'algorithme d'entraînement calcule la contribution de chaque poids de modèle à la réponse finale (à l'aide de dérivées partielles) et le déplace légèrement dans la direction de la réponse correcte. La couche de pooling n'a pas de poids, elle n'est donc pas affectée par le processus d'entraînement.
- Les CNN ne peuvent travailler que sur des images de même taille que celles sur lesquelles ils ont été formés. Si un modèle a été formé sur des images de 256 × 256 pixels, toute image plus grande devra être sous-échantillonnée et toute image plus petite devra être sur-échantillonnée.
CNN vs RNN et transformateurs
Les réseaux de neurones convolutifs sont souvent mentionnés aux côtés des réseaux de neurones récurrents (RNN) et des transformateurs. Alors, en quoi diffèrent-ils ?
CNN contre RNN
Les RNN et les CNN opèrent dans des domaines différents. Les RNN conviennent mieux aux données séquentielles, telles que le texte, tandis que les CNN excellent avec les données spatiales, telles que les images. Les RNN disposent d'un module de mémoire qui garde la trace des parties précédemment vues d'une entrée pour contextualiser la partie suivante. En revanche, les CNN contextualisent certaines parties de l’entrée en examinant ses voisins immédiats. Parce que les CNN ne disposent pas de module de mémoire, ils ne sont pas bien adaptés aux tâches de texte : ils oublieraient le premier mot d'une phrase au moment où ils atteindraient le dernier mot.
CNN contre transformateurs
Les transformateurs sont également largement utilisés pour les tâches séquentielles. Ils peuvent utiliser n’importe quelle partie de l’entrée pour contextualiser une nouvelle entrée, ce qui les rend populaires pour les tâches de traitement du langage naturel (NLP). Cependant, des transformateurs ont également été récemment appliqués aux images, sous la forme de transformateurs de vision. Ces modèles intègrent une image, la divisent en correctifs, attirent l'attention (le mécanisme central des architectures de transformateur) sur les correctifs, puis classent l'image. Les transformateurs de vision peuvent surpasser les CNN sur de grands ensembles de données, mais ils n'ont pas l'invariance translationnelle inhérente aux CNN. L'invariance translationnelle dans les CNN permet au modèle de reconnaître les objets quelle que soit leur position dans l'image, ce qui rend les CNN très efficaces pour les tâches où la relation spatiale des caractéristiques est importante.
Applications des CNN
Les CNN sont souvent utilisés avec des images en raison de leur invariance translationnelle et de leurs caractéristiques spatiales. Mais, grâce à un traitement intelligent, les CNN peuvent fonctionner sur d’autres domaines (souvent en les convertissant d’abord en images).
Classement des images
La classification d'images est la principale utilisation des CNN. Les grands CNN bien formés peuvent reconnaître des millions d’objets différents et travailler sur presque toutes les images qui leur sont données. Malgré l’essor des transformateurs, l’efficacité informatique des CNN en fait une option viable.
Reconnaissance vocale
L'audio enregistré peut être transformé en données spatiales via des spectrogrammes, qui sont des représentations visuelles de l'audio. Un CNN peut prendre un spectrogramme en entrée et apprendre à mapper différentes formes d'onde sur différents mots. De même, un CNN peut reconnaître les rythmes et les échantillons musicaux.
Segmentation d'images
La segmentation d'images consiste à identifier et à tracer des limites autour de différents objets dans une image. Les CNN sont populaires pour cette tâche en raison de leurs excellentes performances dans la reconnaissance de divers objets. Une fois une image segmentée, nous pouvons mieux comprendre son contenu. Par exemple, un autre modèle de deep learning pourrait analyser les segments et décrire cette scène : « Deux personnes se promènent dans un parc. Il y a un lampadaire à leur droite et une voiture devant eux. Dans le domaine médical, la segmentation d’images peut différencier les tumeurs des cellules normales lors des analyses. Pour les véhicules autonomes, il peut identifier les marquages au sol, les panneaux routiers et d’autres véhicules.
Avantages des CNN
Les CNN sont largement utilisés dans l’industrie pour plusieurs raisons.
Fortes performances d’image
Compte tenu de l’abondance de données d’images disponibles, des modèles performants sur différents types d’images sont nécessaires. Les CNN sont bien adaptés à cet effet. Leur invariance translationnelle et leur capacité à créer des caractéristiques plus grandes à partir de plus petites leur permettent de détecter des caractéristiques dans une image. Différentes architectures ne sont pas nécessaires pour différents types d'images, car un CNN de base peut être appliqué à tous les types de données d'image.
Pas d'ingénierie manuelle des fonctionnalités
Avant les CNN, les modèles d’images les plus performants nécessitaient un effort manuel important. Les experts du domaine ont dû créer des modules pour détecter des types spécifiques de caractéristiques (par exemple, des filtres pour les bords), un processus long et manquant de flexibilité pour des images diverses. Chaque ensemble d'images nécessitait son propre ensemble de fonctionnalités. En revanche, le premier célèbre CNN (AlexNet) pouvait catégoriser automatiquement 20 000 types d’images, réduisant ainsi le besoin d’ingénierie manuelle des fonctionnalités.
Inconvénients des CNN
Bien entendu, l’utilisation des CNN comporte des compromis.
De nombreux hyperparamètres
Former un CNN implique de sélectionner de nombreux hyperparamètres. Comme tout réseau de neurones, il existe des hyperparamètres tels que le nombre de couches, la taille des lots et le taux d'apprentissage. De plus, chaque filtre nécessite son propre ensemble d'hyperparamètres : taille du filtre (par exemple, 3 × 3, 5 × 5) et foulée (le nombre de pixels à déplacer après chaque étape). Les hyperparamètres ne peuvent pas être facilement ajustés pendant le processus de formation. Au lieu de cela, vous devez entraîner plusieurs modèles avec différents ensembles d'hyperparamètres (par exemple, l'ensemble A et l'ensemble B) et comparer leurs performances pour déterminer les meilleurs choix.
Sensibilité à la taille d'entrée
Chaque CNN est formé pour accepter une image d'une certaine taille (par exemple, 256 × 256 pixels). De nombreuses images que vous souhaitez traiter peuvent ne pas correspondre à cette taille. Pour résoudre ce problème, vous pouvez augmenter ou réduire l'échelle de vos images. Cependant, ce redimensionnement peut entraîner la perte d'informations précieuses et dégrader les performances du modèle.