Introduction

Les réseaux de neurones convolutifs sont directement inspirés du cortex visuel des vertébrés. Un réseau de neurones à convolution, appelé aussi convnet (pour «Convolutional Network»), ou encore CNN (pour «Convolutional Neural Network») .

On distingue deux parties, une première partie que l’on appelle la partie convolutive du modèle et la seconde partie, que l’on va appeler la partie classification du modèle qui correspond à un modèle MLP (Multi Layers Perceptron).

C'est un réseau de neurones multicouches et plus précisément c’est un réseau profond composé de multiples couches qui en générale sont organisées en blocs (CONV→ RELU → POOL). 

Il existe quatre types de couches pour un réseau de neurones convolutif: la couche de convolution, la couche de pooling, la couche de correction ReLU et la couche fully-connected

Source: http://cs231n.github.io/assets/cnn/convnet.jpeg

 

La couche de convolution 

La couche de convolution est la composante clé des réseaux de neurones convolutifs, et constitue toujours au moins leur première couche.

Son but est de repérer la présence d'un ensemble de features dans les images reçues en entrée. Pour cela, on réalise un filtrage par convolution: le principe est de faire "glisser" une fenêtre représentant la feature sur l'image, et de calculer le produit de convolution entre la feature et chaque portion de l'image balayée. Une feature est alors vue comme un filtre : les deux termes sont équivalents dans ce contexte.

Trois hyperparamètres permettent de dimensionner le volume de la couche de convolution 

  1. Profondeur de la couche : nombre de noyaux de convolution (ou nombre de neurones associés à un même champ récepteur).
  2. Le pas contrôle le chevauchement des champs récepteurs. Plus le pas est petit, plus les champs récepteurs se chevauchent et plus le volume de sortie sera grand.
  3. La marge (à 0) ou zero padding : parfois, il est commode de mettre des zéros à la frontière du volume d'entrée. La taille de ce zero-padding est le troisième hyperparamètre. Cette marge permet de contrôler la dimension spatiale du volume de sortie. En particulier, il est parfois souhaitable de conserver la même surface que celle du volume d'entrée.

 

Schéma du parcours de la fenêtre de filtre sur l'image.

http://www.natural-solutions.eu/blog/la-reconnaissance-dimage-avec-les-rseaux-de-neurones-convolutifs

 

Couche de mise en commun: pooling 

Ce type de couche est souvent placé entre deux couches de convolution : elle reçoit en entrée plusieurs feature maps, et applique à chacune d'entre elles l'opération de pooling

L'opération de pooling ( ou sub-sampling)consiste à réduire la taille des images, tout en préservant leurs caractéristiques importantes.

Pour cela, on découpe l'image en cellules régulière, puis on garde au sein de chaque cellule la valeur maximale. En pratique, on utilise souvent des cellules carrées de petite taille pour ne pas perdre trop d'informations. Les choix les plus communs sont des cellules adjacentes de taille 2 × 2 pixels qui ne se chevauchent pas, ou des cellules de taille 3 × 3 pixels, distantes les unes des autres d'un pas de 2 pixels (qui se chevauchent donc). On obtient en sortie le même nombre de feature maps qu'en entrée, mais celles-ci sont bien plus petites.

La couche de pooling permet de réduire le nombre de paramètres et de calculs dans le réseau. On améliore ainsi l'efficacité du réseau et on évite le sur-apprentissage.

Il est courant d'insérer périodiquement une couche Pooling entre les couches Conv successives dans une architecture ConvNet. Sa fonction est de réduire progressivement la taille spatiale de la représentation afin de réduire la quantité de paramètres et de calculs dans le réseau, et donc de contrôler également le sur-ajustement. La couche de pooling fonctionne indépendamment sur chaque tranche de profondeur de l'entrée et la redimensionne spatialement, en utilisant l'opération MAX.

Ainsi, la couche de pooling rend le réseau moins sensible à la position des features : le fait qu'une feature se situe un peu plus en haut ou en bas, ou même qu'elle ait une orientation légèrement différente ne devrait pas provoquer un changement radical dans la classification de l'image.

la couche ReLU

Pour améliorer l'efficacité du traitement en intercalant entre les couches de traitement une couche qui va opérer une fonction mathématique (fonction d'activation) sur les signaux de sortie. dans ce cadre on trouve

ReLU (Rectified Linear Units) désigne la fonction réelle non-linéaire

définie par ReLU(x)=max(0,x).

La couche de correction ReLU remplace donc toutes les valeurs négatives reçues en entrées par des zéros. Elle joue le rôle de fonction d'activation

Souvent, la correction Relu est préférable, mais il existe d'autre forme

  • La correction par tangente hyperbolique f(x)=tanh(x),
  • La correction par la tangente hyperbolique saturantef(x)=|tanh(x)|,
  • La correction par la fonction sigmoïde{\displaystyle f(x)=(1+e^{-x})^{-1}}. f(x)= (1+e-x)-1

 Couche fully-connected 

La couche fully-connected constitue toujours la dernière couche d'un réseau de neurones, convolutif ou non – elle n'est donc pas caractéristique d'un CNN. 

Ce type de couche reçoit un vecteur en entrée et produit un nouveau vecteur en sortie. Pour cela, elle applique une combinaison linéaire puis éventuellement une fonction d'activation aux valeurs reçues en entrée.

La couche fully-connected permet de classifier l'image en entrée du réseau : elle renvoie un vecteur de taille N, où N est le nombre de classes dans notre problème de classification d'images. Chaque élément du vecteur indique la probabilité pour l'image en entrée d'appartenir à une classe.

Par exemple, si le problème consiste à distinguer les chats des chiens, le vecteur final sera de taille 2 : le premier élément (respectivement, le deuxième) donne la probabilité d'appartenir à la classe "chat" (respectivement "chien"). Ainsi, le vecteur [0.90.1] signifie que l'image a 90% de chances de représenter un chat.

Chaque valeur du tableau en entrée "vote" en faveur d'une classe. Les votes n'ont pas tous la même importance : la couche leur accorde des poids qui dépendent de l'élément du tableau et de la classe.

Pour calculer les probabilités, la couche fully-connected multiplie donc chaque élément en entrée par un poids, fait la somme, puis applique une fonction d'activation (logistique si N=2, softmax si N>2) :

Il est possible de remplacer les couches entièrement connectées d'un CNN par des couches convolutionnelles, ce qui le rend entièrement convolutionnelAll-convolutional network est une bonne idée je vous invite à le découvrir.

 Exemple 1

(Exemple présenté  par Brandon Rohrer dans son article intitulé : How do Convolutional Neural Networks work? l'article est traduit en français par Charles Crouspeyre. lien)

Pour commencer

Pour nous aider à comprendre le fonctionnement d’un réseau de neurones à convolution, nous allons nous aider d’un exemple simplifié et chercher à déterminer si une image représente un X ou un O.

Notre CNN n’a qu’une seule tâche à réaliser: chaque fois qu’on lui présente une photo, il doit décider si cette photo représente un X ou un O. Il considère que dans chaque cas, il ne peut y avoir que l’un ou l’autre.

 

pour un ordinateur, une image n’est rien d’autre qu’un tableau de pixels en 2 Dimensions (une sorte d’échiquier géant) avec chaque case contenant un numéro spécifique: Dans notre exemple, un pixel ayant la valeur 1 est un pixel blanc, et -1 est noir.

Caractéristiques - features.

Le CNN compare les images fragment par fragment. Les fragments qu’il recherche sont appelés les caractéristiques (features).

Les caractéristiques correspondent à des morceaux de l'image.

En trouvant des caractéristiques approximatives qui se ressemblent à peu près dans 2 images différentes, le CNN est bien meilleur à détecter des similitudes que par une comparaison entière image à image.

 

Chaque caractéristique est comme une mini-image i.e. un petit tableau de valeurs de dimension 2. Les caractéristiques rassemblent les aspects les plus communs des images. Dans le cas de l’image montrant un X, les caractéristiques définissant les deux diagonales et l’entrecroisement de ces dernières représentent les traits les plus communs d’un X. Ces caractéristiques correspondent probablement aux bras et au centre de toute image d’un X.

 

Convolution

Quand on lui présente une nouvelle image, le CNN ne sait pas exactement si les caractéristiques seront présentes dans l’image ou où elles pourraient être, il cherche donc à les trouver dans toute l’image et dans n’importe quelle position.

 

En calculant dans toute l’image si une caractéristique est présente, nous faisons un filtrage. Les mathématiques que nous utilisons pour réaliser cette opération sont appelés une convolution, de laquelle les réseaux de neurones à convolution tiennent leur nom.

Pour calculer la correspondance entre une caractéristique et une sous-partie de l’image, il suffit de multiplier chaque pixel de la caractéristique par la valeur que ce même pixel contient dans l’image. Ensuite, on additionne les réponses et divise le résultat par le nombre total de pixels de la caractéristique. Si les 2 pixels sont blancs (de valeur 1) alors 1 * 1 = 1. Si les deux sont noires, alors (-1) * (-1) = 1. Dans tous les cas, chaques pixels correspondant ont pour résultat 1. De manière similaire, chaque décalages donnent -1.

Si tous les pixels dans une caractéristique correspondent, alors leur addition puis leur division par le nombre total de pixels donne 1. De la même manière, si aucun des pixels de la caractéristique ne correspond à la sous-partie de l’image, alors la réponse est -1.

Pour compléter une convolution, on répète ce processus alignant les caractéristiques avec chaque sous-partie de l’image. On prend alors le résultat de chaque convolution et créé avec un nouveau tableau de 2 dimensions. Cette map des correspondances est aussi une version filtrée de l’image d’origine. C’est une map indiquant où la caractéristique a été trouvée dans l’image.

Les valeurs proches de 1 montrent une forte correspondance, celles proches de -1 montrent une forte correspondance pour le négatif photographique de la fonctionnalité et les valeurs proches de 0 ne correspondent à aucun type.

ou

Une image devient une pile d'images filtrées

L’étape suivante est de répéter le processus complet de convolution pour chacune des autres caractéristiques existantes. Le résultat est un ensemble d’images filtrées, dont chaque image correspond à un filtre particulier.

Il est conseillé de considérer cet ensemble d’opérations de convolutions comme une unique étape de traitement: Dans les réseaux de neurones à convolutions, on appelle cela la couche de convolution, ce qui laisse deviner qu’il y aura par la suite d’autre couches ajoutées à celles-ci.

Bien que le principe soit relativement simple et l’on puisse facilement expliquer notre CNN au dos d’une serviette, le nombre d’additions, de multiplications et de divisions peut rapidement s’accumuler. En termes mathématiques, elles s’accroissent linéairement avec le nombre de pixels de l’image, avec le nombre de pixels de chaque caractéristique.

Avec tant de facteurs, il est très facile de rendre ce problème infiniment plus complexe. Il n’est donc pas étonnant que les fabricants de microprocesseurs fabriquent maintenant des puces spécialisées dans le type d’opérations qu’exigent les CNNs.

La couche Pooling

Le Pooling est une méthode permettant de prendre une large image et d’en réduire la taille tout en préservant les informations les plus importantes qu’elle contient. Les mathématiques derrière la notion de pooling ne sont une nouvelle fois pas très complexe. En effet, il suffit de faire glisser une petite fenêtre pas à pas sur toutes les parties de l’image et de prendre la valeur maximum de cette fenêtre à chaque pas. En pratique, on utilise souvent une fenêtre de 2 ou 3 pixels de côté et une valeur de 2 pixels pour ce qui est de la valeur d’un pas.

Pooling: réduire la pile d'images

  • Choisissez une taille de fenêtre (généralement 2 ou 3).
  • Choisissez un pas (généralement 2).
  • Parcourez votre fenêtre à travers vos images filtrées.
  • De chaque fenêtre, prenez la valeur maximale.

 

 

 

 

Après avoir procédé au pooling, l’image n’a plus qu’un quart du nombre de ses pixels de départ.

Parce qu’il garde à chaque pas la valeur maximale contenue dans la fenêtre, il préserve les meilleurs caractéristiques de cette fenêtre. Cela signifie qu’il ne se préoccupe pas vraiment d’où a été extraite la caractéristique dans la fenêtre.

Le résultat est que le CNN peut trouver si une caractéristique est dans une image, sans se soucier de l’endroit où elle se trouve. Cela aide notamment à résoudre le problème liés au fait que les ordinateurs soient hyper-littéraires.

Au final, une couche de pooling est simplement un traitement de pooling sur une image ou une collection d’images. L’output aura le même nombre d’images mais chaque images aura un nombre inférieur de pixels. Cela permettra ainsi de diminuer la charge de calculs. Par exemple, en transformant une image de 8 mégapixels en une image de 2 mégapixels, ce qui nous rendra la vie beaucoup plus facile pour le reste des opérations à effectuer par la suite.

Unités Rectifié Linéaire (ReLU)

Normalization

Changer tout négatif à zéro

 

Un élément important dans l’ensemble du processus est l’Unité linéaire rectifiée ou ReLU. Les mathématiques derrière ce concept sont assez simples encore une fois: chaque fois qu’il y a une valeur négative dans un pixel, on la remplace par un 0. Ainsi, on permet au CNN de rester en bonne santé (mathématiquement parlant) en empêchant les valeurs apprises de rester coincer autour de 0 ou d’exploser vers l’infinie.

C’est un outil pas vraiment sexy mais fondamental car sans lequel le CNN ne produirait pas vraiment les résultats qu’on lui connaît.

Le résultat d’une couche ReLU est de la même taille que ce qui lui est passé en entrée, avec simplement toutes les valeurs négatives éliminées.

La sortie de l'un devient l'entrée du suivant.

Apprentissage Profond

 Les couches  peuvent être répétés plusieurs fois

Vous aurez probablement remarqué que ce que l’on donne en entrée à chaque couche (i.e. des tableaux de 2 Dimensions) ressemble énormément à ce que l’on obtient en sortie (d’autres tableaux de 2 Dimensions). Pour cette raison, nous pouvons les ajouter les uns après les autres comme on ferait avec des Legos.

Les images brutes sont filtrées, rectifiées et mises en commun pour créer un ensemble d’images rétrécies et filtrées par caractéristiques visibles dans chaque image. Celles-ci peuvent ainsi être filtrées et rétrécies encore et encore. A chaque fois, les caractéristiques deviennent plus grandes et plus complexes, et les images deviennent plus compactes. Cela permet aux couches inférieures de représenter des aspects simples de l’image, tels que les bords et points lumineux. Les couches supérieures quant à elles représentent des aspects beaucoup plus complexes de l’image, tels que des formes et des patterns. Ceux-ci ont tendance à être facilement reconnaissables.

Couches entièrement connectées

Les CNNs ont une autre flèche dans leur carquois. En effet, les couches entièrement connectés prennent les images filtrées de haut niveau et les traduisent en votes. Dans notre exemple, nous devons seulement décider entre deux catégories, X et O.

Les couches entièrement connectées sont les principaux blocs de construction des réseaux de neurones traditionnels. Au lieu de traiter les inputs comme des tableaux de 2 Dimensions, ils sont traités en tant que liste unique et tous traités de manière identique. Chaque valeur a son propre vote quant à si l’image est un X ou un O. Cependant, le process n’est pas complètement démocratique. Certaines valeurs sont bien meilleures à détecter lorsqu’une i mage est un X que d’autres, et d’autres sont bien meilleures à détecter un O. Celles-ci ont donc davantage de pouvoir de vote que les autres. Ce vote est appelé le poids, ou la force de la connection, entre chaque valeur et chaque catégorie.

Lorsqu’une nouvelle image est présentée au CNN, elle se répand à travers les couches inférieures jusqu’à atteindre la couche finale entièrement connectée. L’élection a ensuite lieu. Et la solution avec le plus de vote gagne et est déclarée la catégorie de l’image.

Les couches entièrement connectées, tout comme les autres couches, peuvent être ajoutées les unes à la suite des autres car leur valeur en sortie (une liste de votes) ressemble énormément à leur valeur en entrée (une liste de valeur). En pratique, plusieurs couches entièrement connectées sont souvent ajoutées les unes à la suite des autres, avec chaque couche intermédiaire votant pour des catégories “cachées” fantômes. En effet, chaque couche additionnelle laisse le réseau apprendre des combinaisons chaque fois plus complexes de caractéristiques qui aident à améliorer la prise de décision.

Rétropropagation

Q: D'où viennent tous les nombres magiques?

Caractéristiques des couches convolutives

Poids de vote dans les couches entièrement connectées

Backpropagation

Même si notre analyse des CNNs avance bien, il y a toujours quelque chose qui manque: D’où viennent les caractéristiques? Et comment définit-on les poids de nos couches entièrement connectées? S’il fallait tout choisir manuellement, les CNNs serait bien moins populaires qu’ils ne le sont. Heureusement, un concept très important fait ce travail pour nous: la rétropropagation.

Pour pouvoir faire appel à la rétropropagation, nous devons avoir une collection d’images pour lesquelles nous connaissons déjà la catégorie à sélectionner. Cela veut dire que quelques âmes charitables (et patientes) ont analysés des milliers d’images en amont et ont associés à chacune d’entre elles leur catégorie respective, X ou O.

Error = right answer – actual answer

On utilise donc ces images avec un CNN qui n’a pas encore été entraîné, ce qui veut dire que chaque pixel de chaque caractéristique et chaque poids de chaque couche entièrement connectée est configurée avec une valeur aléatoire. Apres ca, on commence à passer des images au CNN, une par une.

Pour chaque image analysée par le CNN on obtient un vote. Le nombre d’erreurs que l’on fait dans notre classification nous renseigne ensuite sur la qualité de nos caractéristiques et de nos poids. Les caractéristiques et poids peuvent ensuite être ajustées de manière à réduire l’erreur. Chaque valeur est augmentée ou diminuée, et la nouvelle valeur de l’erreur de notre réseau est recalculée, à chaque fois. Quel que soit l’ajustement fait, si l’erreur diminue, l’ajustement est conservé.

Après avoir fait ca, pour chaque pixel de chaque caractéristique, de chaque couche convolutive et pour chaque poids dans chaque couche entièrement connectée, les nouveaux poids permettent d’obtenir une réponse qui marche légèrement mieux pour cette image.

Ce processus est ensuite répété avec chacune des autres images qui ont un label.

Les éléments qui n’apparaissent que dans de rares images sont rapidement oubliées, mais les patterns que l’on trouve régulièrement dans un grand nombre d’images sont retenus par les caractéristiques et le poids des connections. Si vous avez suffisamment d’images avec labels, ces valeurs se stabilisent à un ensemble de valeurs qui marche plutôt bien pour un ensemble de cas variés.

Comme c’est certainement apparent, la rétropropagation est une autre étape de calcul coûteuse et une autre motivation pour le matériel informatique spécialisé.

Hyperparameters

Malheureusement, tous les aspects des CNNs ne sont pas aussi intuitifs à apprendre et comprendre que ce que nous avons vu jusqu’à présent. Ainsi, il y a toujours une longue liste de paramètres qui doivent être définis manuellement pour permettre au CNN d’avoir de meilleurs résultats.

  • Pour chaque couche convolutive, combien de caractéristiques doit on choisir?
  • Combien de pixels doit-on considérer dans chaque caractéristique?
  • Pour chaque couche de Pooling, quelle taille de fenêtre doit-on choisir? Quel pas?
  • Pour chaque couche entièrement connectée supplémentaire, combien de neurones cachés doit on définir?

En plus de ces paramètres, il y a aussi d’autres éléments architecturaux de plus haut niveau à considérer:

  • Combien de couches de chaque type doit on inclure?
  • Dans quel ordre?

Certains modèles d’apprentissage profond peuvent avoir plus d’une centaine de couches, ce qui rend le nombre de possibilités extrêmement important.

Avec tant de combinaisons et permutations envisageables, seulement une petite fraction des configurations possibles ont été testées jusqu’à présent. Les différentes conceptions de CNNs sont en général motivées par la connaissance accumulée par la communauté scientifique, avec certains écarts occasionnels permettant des améliorations surprenantes en performances. Et bien que nous ayons présenté les principales briques nécessaires à la construction des CNNs de manière relativement simple et intuitive, il existe un grand nombre de variations et de réglages qui ont été testés et ont permis d’obtenir de très bons résultats, tel que de nouveaux types de couches et des manières plus complexes de connecter les couches entres elles.

Exemples d'architecture CNN

Il existe plusieurs architectures dans le domaine des réseaux convolutifs qui ont un nom. Les plus courants sont:

  • LeNet. Les premières applications réussies des réseaux convolutionnels ont été développées par Yann LeCun dans les années 1990. Parmi ceux-ci, le plus connu est l' architecture LeNetutilisée pour lire les codes postaux, les chiffres, etc.

  • AlexNet. Le premier travail qui a popularisé les réseaux convolutionnels dans la vision par ordinateur, développé par Alex Krizhevsky, Ilya Sutskever et Geoff Hinton. L'AlexNet a été soumis au challenge ImageNet ILSVRCen 2012 et a nettement surperformé le deuxième finaliste (erreur de top 5 de 16% par rapport à la deuxième place avec une erreur de 26%). Le réseau avait une architecture très similaire à celle de LeNet, mais il était plus profond, plus grand et comportait des couches convolutives empilées les unes sur les autres (auparavant, il était courant de n'avoir qu'une seule couche CONV immédiatement suivie d'une couche POOL)

  • ZF Net. Le gagnant de l'ILSVRC 2013 était un réseau convolutionnel de Matthew Zeiler et Rob Fergus. Il est devenu connu sous le nom de ZFNet (abréviation de Zeiler & Fergus Net). C'était une amélioration de AlexNet en modifiant les hyperparamètres de l'architecture, en particulier en augmentant la taille des couches de convolution moyennes et en réduisant la taille des pas et des filtres sur la premier couche.

  • GoogLeNet. Le gagnant de l'ILSVRC 2014 était un réseau convolutionnel de Szegedy et al.  Sa principale contribution a été le développement d'un module de lancement qui a considérablement réduit le nombre de paramètres dans le réseau (4M, comparé à AlexNet avec 60M). En outre, ce document utilise le regroupement moyen au lieu des couches entièrement connectées en haut du ConvNet, éliminant une grande quantité de paramètres qui semblent peu importants. Il existe également plusieurs versions de suivi du GoogLeNet, le plus récemment Inception-v4.

  • VGGNet. La deuxième place dans ILSVRC 2014 était le réseau de Karen Simonyan et Andrew Zisserman, connu sous le nom de VGGNet . Sa principale contribution a été de montrer que la profondeur du réseau est un composant essentiel pour de bonnes performances. Leur meilleur réseau final contient 16 couches CONV / FC et, de manière attrayante, présente une architecture extrêmement homogène qui ne réalise que 3 x 3 convolutions et un regroupement 2x2 du début à la fin. Leur modèle prétentieux est disponible pour une utilisation plug and play dans Caffe. Un inconvénient du VGGNet est qu'il est plus coûteux à évaluer et utilise beaucoup plus de mémoire et de paramètres (140M). La plupart de ces paramètres se trouvent dans la première couche entièrement connectée, et il a depuis été constaté que ces couches FC peuvent être supprimées sans dégradation des performances, ce qui réduit considérablement le nombre de paramètres nécessaires.

  • ResNetRéseau résiduel développé par Kaiming He et al. a été le gagnant d'ILSVRC 2015. Il propose des connexions spéciales et un usage intensif de la normalisation des lots . L'architecture ne contient pas de couches entièrement connectées à la fin du réseau. (la présentation de Kaiming ( vidéo , diapositives ) et quelques expériences récentes reproduisant ces réseaux dans Torch).  ResNets sont actuellement des modèles de réseaux neuronaux convolutifs de pointe et constituent le choix par défaut pour l'utilisation de ConvNets dans la pratique. En particulier, voir également les développements plus récents qui modifient l'architecture originale deKaiming He et al. Mappages d'identité dans des réseaux résiduels profonds (publié en mars 2016).

 

 

Application dans le traitement automatique de la langue naturelle (NLP)

 Au lieu de pixels d'image, la plupart des fonctions NLP ont comme entrées des phrases ou des documents

l'idée  pour appliquer un CNN (voir n'import quel RN) est de transformer les mots et les documents sous une forme matricielle . Chaque ligne de la matrice correspond à un jeton, généralement un mot, mais il peut s'agir aussi d'un caractère. C'est-à-dire que chaque ligne est un vecteur qui représente un mot. 

En règle générale, ces vecteurs sont des inclusions de mots (représentations de faible dimension) comme word2vec ou GloVe.

Par exemple, pour une phrase de 20 mots utilisant une incorporation de 100 dimensions, nous aurions une matrice de 20 × 100 comme entrée. C'est notre "image" pour  CNN.

Un filtrage par convolution dans le traitement des image consiste à faire "glisser" une fenêtre représentant la feature sur l'image, et de calculer le produit de convolution entre la feature et chaque portion de l'image balayée. cependant en PNL, nous utilisons généralement des filtres qui glissent sur des lignes complètes de la matrice (les mots). Ainsi, la "largeur" des filtres est généralement la même que la largeur de la matrice d'entrée. La hauteur, ou la taille de la région , peut varier, mais les fenêtres glissantes de plus de 2 à 5 mots à la fois sont typiques.

“Figure: Illustration d'une architecture CNN pour la classification de phrases. Nous décrivons trois tailles de région de filtre: 2,3,4, chacune ayant 2 filtres. Les filtres effectuent des convolutions sur la matrice de phrases et génèrent des features maps (cartes de caractéristique)s (de longueur variable); Le regroupement 1-max est effectué sur chaque map, c'est-à-dire que le plus grand nombre de chaque feature map est enregistré. Ainsi, un vecteur de caractéristiques univarié est généré à partir des six maps, et ces 6 features sont concaténées pour former un vecteur de caractéristiques pour l'avant-dernière couche. La variable finale softmax reçoit ensuite ce vecteur de caractéristiques en entrée et l'utilise pour classifier la phrase; nous supposons ici une classification binaire et décrivons donc deux états de sortie possibles.”

Source: Zhang, Y., & Wallace, B. (2015). A Sensitivity Analysis of (and Practitioners’ Guide to) Convolutional Neural Networks for Sentence Classification.

 

Auteur:

Pr. BENLAHLAR EL Habib