Réseaux neuronaux convolutifs
Bien que vous puissiez utiliser des modèles d’apprentissage profond pour tout type de Machine Learning, ils sont particulièrement utiles pour traiter les données qui se composent de grands tableaux de valeurs numériques, telles que des images. Les modèles de Machine Learning qui fonctionnent avec des images sont la base d’une intelligence artificielle sur le secteur appelée vision par ordinateur, et les techniques de Deep Learning ont été chargées de la création d’innovations étonnantes dans ce domaine au cours des dernières années.
Au cœur de la réussite du Deep Learning dans ce domaine se trouve un type de modèle appelé réseau neuronal convolution, ouCNN. Un CNN fonctionne généralement en extrayant des fonctionnalités des images, puis en alimentant ces fonctionnalités dans un réseau neuronal entièrement connecté pour générer une prédiction. Les couches d’extraction de fonctionnalités du réseau ont pour effet de réduire le nombre de fonctionnalités du tableau potentiellement énorme de valeurs de pixel individuelles à un plus petit ensemble de fonctionnalités prenant en charge la prédiction d’étiquette.
Couches dans une CNN
Les CNN se composent de plusieurs couches, chacune effectuant une tâche spécifique dans l’extraction des fonctionnalités ou la prédiction des étiquettes.
Couches de convolution
L’un des principaux types de couche est une couche de convolution qui extrait des fonctionnalités importantes dans les images. Une couche de convolution fonctionne en appliquant un filtre aux images. Le filtre est défini par un noyau qui se compose d’une matrice de valeurs de poids.
Par exemple, un filtre 3x3 peut être défini comme suit :
1 -1 1
-1 0 -1
1 -1 1
Une image est également simplement une matrice de valeurs de pixels. Pour appliquer le filtre, vous devez le superposer sur une image et calculer une somme pondérée des valeurs de pixels d’image correspondantes sous le noyau de filtre. Le résultat est ensuite affecté à la cellule centrale d’un correctif de 3 x 3 équivalent dans une nouvelle matrice de valeurs de la même taille que l’image. Par exemple, supposons qu’une image 6 x 6 possède les valeurs de pixel suivantes :
255 255 255 255 255 255
255 255 100 255 255 255
255 100 100 100 255 255
100 100 100 100 100 255
255 255 255 255 255 255
255 255 255 255 255 255
L’application du filtre au correctif 3 x 3 de l’image est similaire à celle-ci :
255 255 255 1 -1 1 (255 x 1)+(255 x -1)+(255 x 1) +
255 255 100 x -1 0 -1 = (255 x -1)+(255 x 0)+(100 x -1) + = 155
255 100 100 1 -1 1 (255 x1 )+(100 x -1)+(100 x 1)
Le résultat est affecté à la valeur de pixel correspondante dans la nouvelle matrice comme suit :
? ? ? ? ? ?
? 155 ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
À présent, le filtre est déplacé en même temps (conversement), en utilisant généralement une taille d' étape de 1 (pour se déplacer le long d’un pixel vers ladroite) etla valeur du pixel suivant est calculée.
255 255 255 1 -1 1 (255 x 1)+(255 x -1)+(255 x 1) +
255 100 255 x -1 0 -1 = (255 x -1)+(100 x 0)+(255 x -1) + = -155
100 100 100 1 -1 1 (100 x1 )+(100 x -1)+(100 x 1)
Nous pouvons donc maintenant renseigner la valeur suivante de la nouvelle matrice.
? ? ? ? ? ?
? 155 -155 ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
Le processus se répète jusqu’à ce que nous ayons appliqué le filtre sur tous les correctifs 3x3 de l’image pour produire une nouvelle matrice de valeurs comme suit :
? ? ? ? ? ?
? 155 -155 155 -155 ?
? -155 310 -155 155 ?
? 310 155 310 0 ?
? -155 -155 -155 0 ?
? ? ? ? ? ?
En raison de la taille du noyau de filtre, nous ne pouvons pas calculer les valeurs des pixels à la périphérie. Nous appliquons donc généralement une valeur de remplissage (souvent 0) :
0 0 0 0 0 0
0 155 -155 155 -155 0
0 -155 310 -155 155 0
0 310 155 310 0 0
0 -155 -155 -155 0 0
0 0 0 0 0 0
La sortie de la convolution est généralement transmise à une fonction d’activation, qui est souvent une fonction d' unité linéaire régularisée (ReLU) qui garantit que les valeurs négatives sont définies sur 0 :
0 0 0 0 0 0
0 155 0 155 0 0
0 0 310 0 155 0
0 310 155 310 0 0
0 0 0 0 0 0
0 0 0 0 0 0
La matrice résultante est une carte de caractéristiques des valeurs de fonctionnalité qui peut être utilisée pour effectuer l’apprentissage d’un modèle de machine learning.
Remarque: les valeurs de la carte de fonctionnalités peuvent être supérieures à la valeur maximale d’un pixel (255). par conséquent, si vous souhaitez visualiser la carte de fonctionnalité en tant qu’image, vous devez normaliser les valeurs de fonctionnalité entre 0 et 255.
Le processus de convolution est illustré dans l'animation ci-dessous.
- Une image est transmise à la couche de convolution. Dans ce cas, l’image est une forme géométrique simple.
- L’image est composée d’un tableau de pixels dont les valeurs sont comprises entre 0 et 255 (pour les images de couleur, il s’agit généralement d’un tableau à trois dimensions avec des valeurs pour les canaux rouge, vert et bleu).
- Un noyau de filtre est généralement initialisé avec des pondérations aléatoires (dans cet exemple, nous avons choisi des valeurs pour mettre en évidence l’effet qu’un filtre peut avoir sur les valeurs de pixel ; mais dans une CNN réelle, les poids initiaux sont généralement générés à partir d’une distribution gaussienne aléatoire). Ce filtre sera utilisé pour extraire une carte de fonctionnalités des données de l’image.
- Le filtre est appliqué à l’ensemble de l’image, en calculant les valeurs des caractéristiques en appliquant une somme des poids multiplié par leurs valeurs de pixel correspondantes à chaque position. Une fonction d’activation d’unité linéaire redressée (ReLU) est appliquée pour garantir que les valeurs négatives sont définies sur 0.
- Après la convolution, la carte des fonctionnalités contient les valeurs des fonctionnalités extraites, qui mettent souvent en évidence les attributs visuels clés de l’image. Dans ce cas, la carte des fonctionnalités met en surbrillance les bords et les angles du triangle dans l’image.
En règle générale, une couche convolution applique plusieurs noyaux de filtre. Chaque filtre produit une carte de fonctionnalités différente, et tous les mappages de fonctionnalités sont transmis à la couche suivante du réseau.
Couches de regroupement
Après l’extraction des valeurs de fonctionnalités à partir d’images, les couches de regroupement (ou de sous- échantillonnage) permettent de réduire le nombre de valeurs de fonctionnalités tout en conservant les principales fonctionnalités de différenciation qui ont été extraites.
L’un des genres les plus courants de regroupement est le regroupement maximal dans lequel un filtre est appliqué à l’image, et seule la valeur de pixel maximale dans la zone de filtre est conservée. Par exemple, l’application d’un noyau de regroupement 2x2 au correctif suivant d’une image produirait le résultat 155.
0 0
0 155
Notez que l’effet du filtre de regroupement 2x2 est de réduire le nombre de valeurs comprises entre 4 et 1.
Comme avec les couches convolution, les couches de regroupement fonctionnent en appliquant le filtre sur l’ensemble de la carte de fonctionnalités. L’animation ci-dessous montre un exemple de regroupement max pour une image interactive.
- La carte de fonctionnalité extraite par un filtre dans une couche convolution contient un tableau de valeurs de fonctionnalités.
- Un noyau de regroupement est utilisé pour réduire le nombre de valeurs de fonctionnalités. Dans ce cas, la taille du noyau est de 2x2, donc un tableau avec le nombre de valeurs de fonctionnalités sera généré.
- Le noyau de regroupement est conversé sur le plan des fonctionnalités, en conservant uniquement la valeur de pixel la plus élevée à chaque position.
Suppression de couches
L’un des défis les plus difficiles dans une CNN est l’évitement du surajustement, où le modèle résultant fonctionne bien avec les données d’apprentissage, mais n’est pas bien généralisé aux nouvelles données sur lesquelles il n’a pas été formé. L’une des techniques que vous pouvez utiliser pour atténuer le surajustement consiste à inclure des couches dans lesquelles le processus d’apprentissage élimine (ou « chute ») des cartes de fonctionnalités de façon aléatoire. Cela peut paraître non intuitif, mais il s’agit d’un moyen efficace de s’assurer que le modèle n’apprend pas à être dépendant des images de formation.
Les autres techniques que vous pouvez utiliser pour atténuer le surajustement incluent le retournement aléatoire, la mise en miroir ou l’inclinaison des images de formation pour générer des données qui varient entre les époques de formation.
Aplatissement des couches
Après avoir utilisé des couches de convolution et de regroupement pour extraire les fonctionnalités importantes dans les images, les mappages de fonctionnalités résultants sont des tableaux multidimensionnels de valeurs de pixels. Une couche d’aplatissement est utilisée pour aplatir les mappages de fonctionnalités en un vecteur de valeurs qui peuvent être utilisées comme entrée dans une couche entièrement connectée.
Couches entièrement connectées
En règle générale, une CNN se termine par un réseau entièrement connecté dans lequel les valeurs des fonctionnalités sont transmises dans une couche d’entrée, par le biais d’une ou de plusieurs couches masquées et génèrent des valeurs prédites dans une couche de sortie.
Une architecture CNN de base peut se présenter comme suit :
- Les images sont alimentées dans une couche convolution. Dans ce cas, il existe deux filtres, donc chaque image produit deux mappages de fonctionnalités.
- Les mappages de fonctionnalités sont passés à une couche de regroupement, où un noyau de regroupement 2x2 réduit la taille des mappages de fonctionnalités.
- Une couche de suppression supprime de façon aléatoire certains mappages de fonctionnalités afin d’empêcher le surajustement.
- Une couche d’aplatissement prend les tableaux de cartes de fonctionnalités restants et les aplatit dans un vecteur.
- Les éléments vectoriels sont alimentés dans un réseau entièrement connecté, qui génère les prédictions. Dans ce cas, le réseau est un modèle de classification qui prédit les probabilités pour trois classes d’image possibles (triangle, carré et cercle).
Formation d’un modèle CNN
Comme pour tout réseau neuronal profond, une CNN est formée en transmettant des lots de données d’apprentissage sur plusieurs époques, en ajustant les valeurs de poids et de biais en fonction de la perte calculée pour chaque époque. Dans le cas d’une CNN, la rétropropagation des poids ajustés comprend les poids du noyau de filtre utilisés dans les couches de convolution, ainsi que les pondérations utilisées dans les couches entièrement connectées.