Bien qu'il existe de nombreuses introductions concernant les Réseaux de Neurones Convolutionnels (CNN), beaucoup de terminologies ne sont pas clairement exprimées
Bien qu'il existe de nombreuses introductions concernant les Réseaux de Neurones Convolutionnels (CNN), beaucoup de terminologies ne sont pas clairement exprimées. Les débutants peuvent être confus tout en apprenant CNN à partir de zéro. Par conséquent, dans cet article, je voudrais essayer d'exprimer l'architecture générale d'un modèle CNN.
Cette vue d'ensemble fictive d'un modèle CNN est basée sur l'introduction de Yoon Kim (2014), qui se concentre sur la classification des phrases.
1. Un modèle d'apprentissage en profondeur de base
Pour commencer, j'aimerais commencer par décrire l'architecture générale traitée dans un modèle d'apprentissage en profondeur.
Fig. 1 - Une architecture de base d'un modèle d'apprentissage en profondeur.
Dans une architecture de base d'un modèle d'apprentissage en profondeur, il contient une couche d'entrée, plusieurs couches cachées et une couche de sortie. Un modèle d'apprentissage en profondeur est connu comme «profond» en raison de ses multiples couches cachées. Un réseau neuronal traditionnel contient environ 2 à 5 couches cachées; Cependant, dans un modèle d'apprentissage en profondeur, le nombre de couches cachées pourrait être fixé à 20, 50, 100, 200, 500 ou même plus.
Deux procédures principales sont impliquées dans un modèle d'apprentissage en profondeur, qui sont la propagation vers l'avant et la propagation vers l'arrière.
1-1. Propagation vers l'avant
Chaque couche contient plusieurs neurones (x). Les liens entre chaque neurone sont des poids différents (w). L'état initial des poids est mis en place de manière aléatoire. Puis, à partir de la couche d'entrée, nous sommes en mesure de calculer les valeurs pour les neurones dans la première couche cachée via la figure 1 (en prenant le calcul de H1 comme exemple).
Fig. 2 - La représentation des neurones et des poids est liée à un autre neurone dans la couche cachée .
Pour H1, il a trois poids (w1, w2, w3) et trois neurones d'entrée (x1, x2, x3). La valeur de H1 peut être calculée par l'équation (1), avec un biais (b). Et l'équation (1) peut être appliquée pour calculer d'autres neurones dans la couche cachée 1 (par exemple H2 à H4).
Equation (1)
Puisque la sortie de cette équation est toujours linéaire. Afin de transférer ces valeurs linéaires en non linéaire, une fonction d'activation est appliquée, avant de prendre l'équation (1) pour calculer les neurones dans la couche cachée suivante, H5 à H8. Un tas de fonctions d'activation ont été proposées, telles que sigmoïde, tanh, ReLU, et ainsi de suite.
Fig. 3 - Avant que le calcul ne passe des couches cachées 1 à 2, une fonction d'activation est appliquée pour
transférer les valeurs en non linéaire.
Ensuite, la propagation vers l'avant est traitée jusqu'à la couche de sortie et produit le premier ensemble d'étiquettes prédites.
1-2. Propagation vers l'arrière
Après la production du premier ensemble de résultats prédits, la procédure de propagation vers l'arrière commence. Il commence par calculer la perte et le coût entre les étiquettes prédites et les étiquettes annotées. Divers algorithmes de perte et de coût ont été proposés. Ci-dessous, j'utiliserai la perte carrée (une sorte de fonction de perte) et l'erreur moyenne quadratique (une fonction de coût) pour l'illustration.
La perte carrée consiste à calculer la perte entre chaque étiquette prédite et son étiquette annotée correspondante.
Fig. 4 - Etiquettes prédites et étiquettes annotées pour le calcul de la perte et du coût.
L'équation d'une fonction de perte carrée est:
Équation (2) - Perte carrée (fonction de perte)
En prenant la première étiquette par exemple, il calcule les différences entre f (x1 | θ) et y1 via l'équation: l (f (x1 | θ), y1) = (f (x1 | θ) - y1) ².
L'erreur moyenne quadratique (MSE) calcule en outre la perte globale des étiquettes prédites et annotées. L'équation est:
Équation (3) - Erreur quadratique moyenne (fonction de coût).
Comme le montre l'équation, MSE résume les valeurs de la fonction de perte et compte ensuite la moyenne.
Après que la valeur de la fonction de coût est connue, une règle de mise à jour de poids est ensuite ajoutée, afin de mettre à jour les poids en fonction de la fonction de coût. De nombreuses règles de mise à jour de poids sont proposées, telles que la descente de gradient stochastique (SGD), Adam, Adadelta (Yoon Kim, 2014) et ainsi de suite. Prenez SGD comme exemple.
Fig. 5 - Descente de gradient stochastique
En propagation vers l'avant, tous les poids sont mis en place de façon aléatoire à un état initial. Ensuite, nous pouvons utiliser les fonctions de perte et de coût pour calculer la performance entre les étiquettes prédites et annotées. Ensuite, afin de mettre à jour de nouveaux poids pour traiter à nouveau la propagation vers l'avant, une technique, SGD, est utilisée pour mettre à jour ces nouveaux poids en fonction de la fonction de coût.
SGD compte simplement la dérivée d'une fonction de coût J (θ0, θ1), et apprend quelle direction sera vers un coût minimum. (* La valeur α est le taux d'apprentissage dans l'équation (4).)
Équation (4) - Descente en gradient stochastique
Chaque fois que les poids sont mis à jour, il est connu comme une itération. Le nombre d'itérations pourrait être établi en calculant le nombre d'exemples d'entraînement (a.k.a.nombre de lots) divisé par tous les exemples d'apprentissage.
Fig. 5 - Lot, taille de lot, itération et époque
Par exemple, si une donnée d'apprentissage contient 1000 échantillons d'apprentissage et une taille de lot = 100 échantillons d'apprentissage, un total de 10 itérations sera traité. Après avoir terminé toutes les 10 itérations, on appelle alors qu'une époque a été complétée (ce qui signifie que tous les échantillons d'entraînement sont entraînés une fois). Toute la procédure d'entraînement doit être terminée jusqu'à la convergence.
Et la procédure de base d'un modèle d'apprentissage en profondeur se termine. (* Il convient de noter que chaque couche contient une fonction d'activation, même la couche de sortie.)
2. Réseaux de neurones convolutionnels
L'idée d'un modèle CNN (Convolutional Neural Networks) a d'abord été appliquée pour reconnaître automatiquement une image.
Fig. 6 - Une image est transférée dans une matrice
Une image peut être transformée en une matrice. Ensuite, une opération de convolution est traitée en résumant simplement chaque poids de cellule * dans une taille de fenêtre. Cette taille de fenêtre scanne de deux directions (de gauche à droite, et de haut en bas).
Fig. 7 - Opération de convolution
Tout en appliquant cette technique à la classification des phrases, la taille de la fenêtre scanne de haut en bas. Une trame de données est préparée avec un mot dans chaque rangée, et les colonnes sont remplies de caractéristiques générées à partir d'un modèle d'incorporation de mots (en utilisant normalement un modèle Word2Vec ou un modèle GloVe).
La taille de la fenêtre peut être définie avec différentes tailles (n lignes * longueur de colonne complète), également appelés filtres ou noyaux. Normalement, la taille du filtre peut être définie entre n = 2 et 5. (Notez qu'avec une taille de filtre plus importante, le calcul est plus coûteux.) Même Google Ngram livre des ensembles de données qui ne dépassent pas 5 grammes.
Fig. 8 - Cartes de filtre et de caractéristiques.
Après avoir traité un opérateur de convolution et une fonction d'activation à chaque taille de filtre, chaque taille de filtre générera alors une carte d'entités. Dans la figure ci-dessus, K2 à K5 représentent chaque carte d'entités produite à partir du filtre = 2 à 5. Ces cartes d'entités sont également appelées couches convolutionnelles.
Fig. 9 - Procédure CNN.
Ensuite, l'un de la méthode de regroupement (par exemple, la mise en commun max, qui est simple à comprendre et à traiter facilement) est appliqué à ces cartes de caractéristiques. La mise en pool maximale consiste à extraire la valeur maximale de chaque mappe d'entités et à générer une couche de regroupement. En raison de la simplicité de cette approche, elle a été largement appliquée jusqu'à présent.
Fig. 10 - Max pooling.
Jusqu'à présent, les couches sont entièrement connectées, ce qui pourrait présenter les deux inconvénients suivants:
- Temps de calcul élevé
- Surapprentissage (ce qui signifie que les données d'entraînement sont si bien formées et ne seront pas en mesure de prédire finement les échantillons en dehors des données d'entraînement).
Afin d'éviter les problèmes mentionnés ci-dessus, une technique d'abandon est utilisée. Une valeur de décrochage est définie de 0 à 1. Si dropout = 0.5 et appliqué à chaque couche, alors les résultats seront comme suit: (adapté de coursera).
La suppression peut être appliquée à chaque couche. (L'abandon est appliqué uniquement à la couche de mise en commun dans l'article de Yoon Kim (2014).)
Ensuite, la couche de regroupement est capable de prédire les étiquettes et de générer la couche de sortie. Dans la couche de sortie, une fonction d'activation est appliquée avant de produire les étiquettes prédites. Dans l'article de Yoon Kim (2014), la fonction d'activation softmax est appliquée.
Une fonction softmax peut être vue comme une version "soft" de la fonction max. Par exemple, étant donné un vecteur de 3 étiquettes [a, b, c], si un échantillon est prédictif d'avoir la plus forte probabilité d'être étiqueté comme a, alors, grâce à une fonction max, l'échantillon sera étiqueté comme a.
Si ce vecteur est utilisé comme données d'apprentissage, le modèle sera entraîné en affectant toujours l'étiquette avec la probabilité maximale à un échantillon. En d'autres termes, le modèle tend à attribuer une seule étiquette au résultat prévu.
Cependant, comme il peut y avoir des échantillons invisibles dans les données de test, nous ne voulons pas que le jugement du modèle soit aussi absolu. Nous aimerions que le modèle soit plus flexible dans la prédiction des étiquettes, en fournissant des probabilités à chaque étiquette. Une softmax est prise pour transférer ces étiquettes dans une probabilité, comme un échantillon pourrait être assigné avec [a: 0,73, b: 0,21, c: 0,06]. Une fonction softmax est "soft", car elle produit la probabilité pour chaque étiquette et conserve les informations d'une fonction max. En faisant cela, l'échantillon est assigné avec des probabilités de chaque étiquette, au lieu d'une seule étiquette. Et le résultat de sortie est normalisé, et va de 0 à 1.
Plus d'informations liées au modèle d'apprentissage en profondeur peuvent être apprises à partir de cours en ligne librement accessibles: https://developers.google.com/machine-learning/crash-course/
auteur: HOURRANE Oumaina
PhD. sous la direction de Pr. Ben Lahmar à la faculté des sciences Ben M'Sik.






















