Brevet FR3025344A1 — publié le 20160304

Réseau de neurones convolutionnels Domaine technique L'invention concerne de manière générale les réseaux de neurones artificiels et en particulier la mise en oeuvre de réseaux de neurones convolutionnels sous forme de circuits électroniques à partir de dispositifs memristifs. Art Antérieur Les réseaux de neurones artificiels sont schématiquement inspirés des réseaux de neurones biologiques dont ils imitent le fonctionnement. Les réseaux de neurones artificiels sont composés essentiellement de neurones interconnectés entre eux par des synapses, qui sont classiquement implémentées par des mémoires numériques, mais qui peuvent être également implémentées par des composants résistifs dont la conductance varie en fonction de la tension appliquée à leurs bornes. Les réseaux de neurones artificiels sont utilisés dans différents domaines de traitement du signal (visuel, sonore, ou autre) comme par exemple dans le domaine de la classification ou la reconnaissance d'image. Les réseaux de neurones convolutionnels correspondent à un modèle particulier de réseau de neurones articifiels. Les réseaux de neurones convolutionnels ont été décrits pour la première fois dans l'article de K. Fukushima, « Neocognitron: A self-organizing neural network model for a mechanism of pattern recognition unaffected by shift in position. Biological Cybernetics, 36(4):193-202, 1980. ISSN 0340-1200. doi: 10.1007/BF00344251 ». De nombreux développements relatifs aux réseaux de neurones ont été proposés, comme par exemple dans les articles : - Y. LeCun, L. Bottou, Y. Bengio, et P. Haffner, « Gradient-based learning applied 25 to document recognition. Proceedings of the IEEE, 86(11):2278-2324, 1998. ISSN 0018-9219. doi: 10.1109/ 5.726791. », et - P. Simard, D. Steinkraus, et J. C. Platt, « Best practices for convolutional neural networks applied to visual document analysis. Document Analysis and 3025344 2 Recognition, 2003. Proceedings. Seventh International Conference on, pages 958-963, 2003. doi: 10.1109/ICDAR.2003. 1227801 ». Les réseaux de neurones convolutionnels (désignés en langue anglo-saxonne par les expressions "convolutional neural networks", ou "deep (convolutional) neural 5 networks" ou encore "ConvNets") sont des réseaux de neurones sans rétro-action (« feedforward »), inspirés par les systèmes visuels biologiques. Appliqués à la reconnaissance d'images, ces réseaux permettent un apprentissage des représentations intermédiaires d'objets dans les images qui sont plus petites et généralisables pour des objets similaires, ce qui facilite leur reconnaissance. Un 10 tel réseau peut être constitué de plusieurs couches de convolution, incluant ou non des couches de regroupement (« pooling » en langue anglo-saxonne) et qui sont généralement suivi par un classifieur type perceptron multicouches, la sortie d'une couche étant connectée sur l'entrée de la suivante. Dans une couche de convolution, chaque neurone est connecté à une sous- 15 matrice de la matrice d'entrée. Les sous-matrices ont la même taille. Elles sont décalées les unes des autres de manière régulière et peuvent se chevaucher. La matrice d'entrée peut être de dimension quelconque. Cependant, la matrice d'entrée est généralement de dimension 2D lorsque les données à traiter sont des données visuelles, les deux dimensions correspondant alors aux dimensions 20 spatiales X et Y d'une image. Les neurones sont connectés à leur sous-matrice d'entrée I par des synapses dont le poids est réglable. La matrice K des poids synaptiques appliquée aux sous-matrices d'entrée des neurones est la même pour tous les neurones d'une même carte de sortie ("feature map" en langue anglo-saxone). Une telle matrice K est encore appelée « noyau de convolution ». Le fait que le noyau de convolution soit partagé pour l'ensemble des neurones d'une même carte de sortie O, et donc appliqué sur l'ensemble de la matrice d'entrée, diminue la mémoire nécessaire pour le stockage des coefficients, ce qui optimise les performances. Par exemple pour la reconnaissance d'images, cela permet de minimiser le nombre de filtres ou de représentations intermédiaires qui codent au mieux les caractéristiques de l'image et qui sont réutilisables sur toute l'image. Les coefficients d'un noyau de 3025344 3 convolution K (c'est-à-dire les poids synaptiques) peuvent correspondre à des filtres classiques de traitement du signal (Gaussien, Gabor, Laplace...), ou être déterminés par apprentissage, supervisé ou non-supervisé, par exemple en utilisant l'algorithme de rétro-propagation du gradient utilisé dans les réseaux de 5 neurones de type perceptrons multi-couches. Les coefficients des noyaux de convolution peuvent être positifs ou négatifs, et sont généralement normalisés entre -1 et 1, tout comme les valeurs d'entrée et de sortie des neurones. Un neurone réalise dans un premier temps la somme pondérée h des coefficients de sa sous-matrice d'entrée par le noyau de convolution (autrement dit le produit 10 scalaire entre la sous-matrice d'entrée I et la matrice K), en appliquant la fonction d'agrégation g = . La sortie du neurone correspond à la valeur de la fonction d'activation g du neurone appliquée à cette somme : g(h). Classiquement, g peut prendre la forme d'une fonction sigmoïde, typiquement la fonction tangente hyperbolique. 15 Une couche de convolution peut contenir un ou plusieurs noyaux de convolution, qui ont chacun une matrice d'entrée, qui peut être la même, mais qui ont des coefficients différents correspondant à des filtres différents. Chaque noyau de convolution dans une couche produit une carte de sortie différente de sorte que les neurones de sortie sont différents pour chaque noyau. 20 Les réseaux convolutionnels peuvent également inclure des couches de "pooling" locales ou globales qui combinent les sorties de groupe de neurones d'une ou plusieurs cartes de sortie. La combinaison des sorties peut consister par exemple à prendre la valeur maximale ou moyenne des sorties du groupe de neurones, pour la sortie correspondante, sur la carte de sortie de la couche de « pooling ». 25 Les couches de « pooling » permettent de réduire la taille des cartes de sorties d'une couche à l'autre dans le réseau, tout en améliorant ses performances en le rendant plus tolérant à de petites déformations ou translations dans les données d'entrée. Les réseaux convolutionnels peuvent également inclure des couches 30 complètement connectés de type perceptron. 3025344 4 La figure 1 représente un exemple de réseau convolutionnel simple, avec une couche d'entrée « env » correspondant à la matrice d'entrée, deux couches de convolution, « conv1 » et « conv2 », ainsi que deux couches complètement connectés « fc1 » et « fc2 ». Dans cet exemple, la taille des noyaux de convolution 5 est de 5x5 pixels et ils sont décalés entre eux de 2 pixels (soit un décalage ou « stride » de 2) : - « conv1 » a une matrice d'entrée « env » et 6 noyaux de convolution différents produisant 6 cartes de sorties ; - « conv2 » a 12 noyaux de convolution différents et donc 12 cartes de sorties, 10 et chaque carte de sortie prend en entrée l'ensemble des 6 cartes de sortie de la couche précédente. Il existe des solutions consistant à implémenter les réseaux de neurones sur processeur graphique GPU pour améliorer significativement leurs performances, comme la solution décrite dans l'article de D. C. Ciresan, U. Meier, J. Masci, L. M. 15 Gambardella, and J. Schmidhuber, « Flexible, high performance convolutional neural networks for image classification. Proceedings of the Twenty-Second International Joint Conference on Artificial Intelligence - Volume Two», IJCAI' 11, pages 1237-1242, 2011. ISBN 978-1-57735-514-4. doi: 10.5591/978-1-57735- 516-8/ IJCA111-210. 20 Une caractéristique importante des réseaux de neurones est leur passage à l'échelle. En effet, les réseaux de neurones restent efficaces quelle que soit la taille de la base d'images à apprendre comme décrit dans : - Q. V. Le, R. Monga, M. Devin, K. Chen, G. S. Corrado, J. Dean, and A. Y. Ng. Building high-level features using large scale unsupervised learning, In 25 International Conference on Machine Learning, 2012; - A. Krizhevsky, 1. Sutskever, and G. E. Hinton. Imagenet classification with deep convolutional neural networks. In Advances in Neural Information Processing Systems 25, pages 1097-1105. Curran Associates, Inc., 2012. Dans leur version classique, les éléments constituant la matrice d'entrée et les 30 cartes de sortie sont des nombres, entiers ou décimaux, à virgule fixe ou flottante. Ainsi, l'opération de convolution entre une sous-matrice d'entrée et un neurone de sortie correspond au produit scalaire entre la sous-matrice d'entrée I et la matrice 3025344 5 K. Dans une version dite « impulsionnelle », les valeurs d'entrée et de sortie sont codées avec des impulsions. Une valeur peut ainsi être codée par le nombre d'impulsions durant une fenêtre de temps fixée (codage fréquentiel), ou par l'instant d'émission d'une impulsion selon une technique de codage d'ordre de 5 rang. Dans le cas d'un codage fréquentiel, le calcul de la somme pondérée h se fait par accumulation du coefficient du noyau de convolution à chaque arrivée d'une impulsion sur l'entrée correspondante. La fonction d'activation du neurone g peut dans ce cas être remplacée par un seuil. Lorsque la valeur absolue de h dépasse 10 le seuil suite à l'arrivée d'une impulsion sur la sous-matrice d'entrée, le neurone de sortie émet une impulsion du signe de h et remet h à la valeur 0. Le neurone entre alors dans une période dite « réfractaire » durant laquelle il ne peut plus émettre d'impulsion durant une période fixée. Les impulsions peuvent par conséquent être positives ou négatives, selon le signe de h au moment du 15 dépassement du seuil. Une impulsion négative en entrée inverse le signe du coefficient du noyau correspondant pour l'accumulation. Une équivalence entre version classique et version impulsionnelle est montrée dans J. Perez-Carrasco, B. Zhao, C. Serrano, B. Acha, T. Serrano-Gotarredona, S. Chen, and B. LinaresBarranco. Mapping from frame-driven to frame-free event-driven vision systems by 20 low-rate rate coding and coincidence processing-application to feedforward convnets. Pattern Analysis and Machine Intelligence, IEEE Transactions on, 35(11):2706-2719, 2013. ISSN 0162-8828. doi: 10.1109/TPAMI.2013.71. Une implémentation matérielle de réseau convolutionnel impulsionnel a notamment été proposée dans L. Camunas-Mesa, C. Zamarreno-Ramos, A. 25 Linares-Barranco, A. Acosta-Jimenez, T. Serrano- Gotarredona, and B. Linares- Barranco. An event-driven multi-kernel convolution processor module for eventdriven vision sensors. Solid-State Circuits, IEEE Journal of, 47(2):504-517, 2012. ISSN 0018-9200. doi: 10.1109/JSSC.2011.2167409. Une telle implémentation de convolution utilise une mémoire numérique séparée pour stocker les coefficients 30 des noyaux de convolution et nécessite de copier ces coefficients du noyau de la mémoire à l'unité de calcul (ALU) à chaque arrivée d'impulsion. 3025344 6 Ainsi, les solutions existantes nécessitent toutes une unité de calcul pour le calcul de convolution. Par ailleurs, de telles solutions sont limitées par la taille du bus de données des mémoires numériques et nécessitent dans un premier temps une récupération de la valeur stockée dans la mémoire avant de pouvoir effectuer une 5 opération sur celle-ci. Ainsi, par exemple, si la taille du bus mémoire est de 64 bits et que les coefficients sont stockés sur 8 bits, il n'est possible de récupérer à chaque coup d'horloge que 8 coefficients. Des millions de cycles d'horloge peuvent donc être nécessaires en fonction du nombre de coefficients dans le réseau. Il en résulte un temps de traitement conséquent, ainsi qu'une 10 consommation énergétique importante pour calculer l'ensemble des sorties du réseau pour une donnée d'entrée. Une telle situation constitue un goulot d'étranglement fondamental de ce type d'architecture (encore appelé Goulot d'étranglement de Von Neumann ou « Von Neumann bottleneck » en langue anglo-saxonne). Un tel goulot d'étranglement peut tout au plus être limité (mais 15 non éliminé) par l'utilisation d'instructions de type SIMD (acronyme pour « Single Instruction on Multiple Data » signifiant littéralement « instruction unique sur des données multiples ») pour le traitement de plusieurs données en une instruction processeur et par l'utilisation de mémoire distribuée avec plusieurs unités de calcul comme dans les processeurs graphiques GPU. zo Définition générale de l'invention L'invention vient améliorer la situation. A cet effet, elle propose un réseau de neurones convolutionnel comprenant une pluralité de neurones artificiels agencés en une ou plusieurs couches. Chaque couche de convolution comprenant une ou plusieurs matrices de sortie comprenant un ensemble de neurones de sortie. 25 Chaque matrice de sortie est connectée à une matrice d'entrée, qui comprend un ensemble de neurones d'entrée, par des synapses artificielles associées à une matrice de convolution comprenant les coefficients de poids synaptiques correspondant aux neurones de sortie de ladite matrice de sortie. La valeur de sortie de chaque neurone de sortie est déterminée à partir des neurones d'entrée 30 de la matrice d'entrée auxquels le neurone de sortie est connecté et des coefficients de poids synaptiques de la matrice de convolution associée à la matrice de sortie. Chaque synapse est constituée d'un ensemble de dispositif 3025344 7 memristifs comprenant au moins un dispositif memristif, chaque ensemble de dispositif memristif stockant un coefficient de ladite matrice de convolution. En réponse à un changement d'état d'un neurone d'entrée d'une matrice d'entrée, le réseau de neurones est apte à : 5 - interconnecter dynamiquement chaque ensemble de dispositifs memristifs stockant les coefficients de la matrice de poids aux neurones de sortie connectés au neurone d'entrée, et - pour chaque neurone de sortie, accumuler les valeurs des coefficients de poids stockées dans les ensembles de dispositifs memristifs interconnectés 10 dynamiquement au neurone de sortie dans un accumulateur de sortie, ce qui fournit la valeur de sortie du neurone de sortie. Selon un mode de réalisation, les neurones peuvent utiliser un codage temporel, l'interconnexion dynamique étant mise en oeuvre en réponse au déclenchement 15 d'un neurone d'entrée de la matrice d'entrée. En réponse à l'interconnexion dynamique, l'accumulation des valeurs des coefficients de poids peut alors être mise en oeuvre par propagation d'au moins une impulsion codant la valeur de chaque coefficient de poids, selon le codage 20 temporel, les valeurs accumulées dans les accumulateurs de sortie constituant les valeurs de sortie de la matrice de sortie. Le réseau de neurones peut comprendre un ensemble de commutateurs et un circuit logique de mise en correspondance des coefficients de poids synaptiques 25 avec les neurones de sortie connectés au neurone d'entrée ayant subi un changement d'état, à partir de l'adresse du neurone d'entrée dans la matrice d'entrée, pour réaliser l'interconnexion dynamique. Chaque impulsion peut comprendre un train de bits codant l'adresse (X, Y) de 30 destination de l'impulsion suivant deux axes perpendiculaires X et Y, le repère (X, Y) correspondant au repère de la matrice d'entrée ; lorsque ladite impulsion arrive sur la matrice d'entrée, l'adresse (X, Y) codée représente l'emplacement du neurone d'entrée à activer. 3025344 8 Selon un mode de réalisation, l'interconnexion dynamique peut être réalisée en parallèle et en un seul cycle, en connectant simultanément l'ensemble des coefficients de poids stockés dans les dispositifs memristifs aux neurones de sortie connectés au neurone d'entrée ayant subi un changement d'état. 5 Selon un autre mode de réalisation, l'interconnexion dynamique peut être réalisée semi-séquentiellement en connectant les coefficients de la matrice de poids stockés dans les dispositifs memristifs, une ligne de la matrice après l'autre, aux neurones de sortie connectés au neurone d'entrée ayant subi un changement Io d'état. En variante, l'interconnexion dynamique peut être réalisée semi-séquentiellement, en connectant les coefficients de la matrice de poids stockés dans les dispositifs memristifs, une colonne de la matrice après l'autre, aux neurones de sortie 15 connectés au neurone d'entrée ayant subi un changement d'état. Dans une autre variante encore, l'interconnexion dynamique peut être réalisée séquentiellement, en connectant les coefficients de la matrice de convolution, stockés dans lesdits dispositifs memristifs, l'un après l'autre, aux neurones de 20 sortie connectés au neurone d'entrée ayant subi un changement d'état. Selon une caractéristique, le réseau de neurones peut comprendre un accumulateur agencé à la sortie de chaque synapse, l'accumulateur réalisant l'accumulation de la valeur du coefficient de poids stockée dans les dispositifs memristifs de la synapse avec la valeur stockée dans l'accumulateur du neurone 25 de sortie correspondant, la valeur stockée dans l'accumulateur auxiliaire étant ensuite propagée par les impulsions dans l'accumulateur de la matrice de sortie. Selon une autre caractéristique, le réseau de neurones peut comprendre un accumulateur agencé au niveau de chaque neurone de sortie, la sortie de chaque dispositif memristif de la synapse étant propagée au niveau du neurone de sortie, 30 la valeur ainsi propagée étant accumulée avec la valeur stockée dans l'accumulateur. 3025344 9 Les sorties de neurones peuvent être groupées, tandis que les valeurs accumulées correspondant à des sorties groupées sont stockées dans un accumulateur commun. Selon une autre caractéristique encore, le réseau de neurones peut comprendre 5 un apprentissage en ligne de type STDP à partir de l'interconnexion dynamique. Les modes de réalisation proposés permettent ainsi de faire le calcul de convolution directement dans la mémoire et en parallèle, ce qui améliore la rapidité et l'efficacité énergétique de l'opération. Brève description des dessins 113 D'autres caractéristiques et avantages de l'invention apparaîtront à l'aide de la description qui suit et des figures des dessins annexés dans lesquels: La figure 1 représente un exemple de réseau convolutionnel simple à trois couches, ainsi que la couche de sortie ; La figure 2 représente un exemple de réseau convolutionnel complexe, 15 incluant des couches de "pooling"; La figure 3 est un schéma montrant une couche de convolution constituée de plusieurs cartes/matrices de sortie ; La figure 4 illustre le principe de fonctionnement d'une couche convolutionnelle dans un tel réseau ; 20 La figure 5 est un schéma illustrant le codage impulsionnel et la propagation dans le réseau de neurones des impulsions ; La figure 6 représente un dispositif matériel implémentant un réseau de neurones convolutionnel impulsionnel, selon certains modes de réalisation ; La figure 7 est un organigramme représentant le procédé de convolution, 25 selon certains modes de réalisation ; - La figure 8 est une représentation schématique d'un autre exemple d'implémentation matérielle des opérations de convolution dans un réseau 3025344 10 de neurones avec regroupement des sorties (sous-échantillonnage en sortie) ; La figure 9 est une représentation schématique d'un autre exemple d'implémentation matérielle des opérations de convolution dans un réseau 5 de neurones avec apprentissage STDP ; La figure 10 est un organigramme illustrant l'étape d'interconnexion dynamique, selon un mode de réalisation parallèle (en un cycle) ; La figure 11 représente un exemple de réalisation matérielle du réseau de neurones correspondant à un mode de réalisation parallèle (1 seul cycle) 10 conformément au mode de réalisation de la figure 10 ; La figure 12 est un organigramme illustrant l'étape d'interconnexion dynamique, selon un mode de réalisation semi-séquentiel (en n cycles). La figure 13 représente un exemple de réalisation matérielle du réseau de neurones selon un mode un mode semi-séquentiel en Y ; 15 La figure 14 est un organigramme illustrant l'étape d'interconnexion dynamique, selon un mode de réalisation complètement séquentiel ; La figure 15 représente un exemple de réalisation matérielle du réseau de neurones correspondant à un mode de réalisation complètement séquentiel ; 20 La figure 16 est un organigramme illustrant l'étape d'interconnexion dynamique, selon un mode de réalisation semi-séquentiel ; La figure 17 représente un exemple de réalisation matérielle du réseau de neurones selon un mode semi-séquentiel en X ; La figure 18 est un organigramme représentant l'étape d'accumulation, 25 selon un mode de réalisation côté noyau ; La figure 19 représente un exemple de réalisation matérielle de l'accumulateur dans le mode de réalisation côté noyau en mode écriture-ajout ; 3025344 11 La figure 20 représente l'exemple de réalisation matérielle de la partie accumulation de la figure 19 en mode rétro-écriture ; La figure 21 est un organigramme représentant l'étape d'accumulation, selon un mode de réalisation de l'accumulation côté sortie ; et 5 La figure 22 représente un exemple de réalisation matérielle de l'accumulateur dans le mode de réalisation de l'accumulation côté sortie. Description détaillée La Figure 2 représente un exemple de réseau convolutionnel incluant des couches de regroupement (« pooling »), pour la classification d'images. Les images en bas 10 de la figure 2 représentent un extrait des noyaux de convolution de la première couche, après un apprentissage de type rétro-propagation du gradient, sur une base d'images telle que ImageNet. Un réseau de neurones artificiel (encore appelé réseau de neurones « formel » ou désigné simplement par l'expression « réseau de neurones » ci-après) est 15 constitué d'une ou plusieurs couches de neurones, interconnectées entre elles. Chaque couche est constituée d'un ensemble de neurones, qui sont connectés à une ou plusieurs couches précédentes. Chaque neurone d'une couche peut être connecté à un ou plusieurs neurones d'une ou plusieurs couches précédentes. La dernière couche du réseau est appelée « couche de sortie ». 20 Les neurones sont connectés entre eux par des synapses, ou poids synaptiques, qui pondèrent l'efficacité de la connexion entre les neurones, constituent les paramètres réglables d'un réseau et qui stockent l'information comprise dans le réseau. Les poids synaptiques peuvent être positifs ou négatifs. Les réseaux de neurones dit « convolutionnels » (ou encore « convolutional », 25 « deep convolutional », « convnets ») sont en outre composés de couches de types particuliers telles que les couches de convolution, les couches de regroupement (« pooling » en langue anglo-saxonne) et les couches complètement connectés (« fully connected »). Par définition, un réseau de neurones convolutionnel comprend au moins une couche de convolution ou de 30 « pooling ». 3025344 12 Comme illustré sur la figure 3, une couche de convolution ou de « pooling » peut être constituée d'une ou plusieurs matrices de sortie 14 (encore appelées « cartes de sortie » ou « output feature map » en langue anglo-saxonne), chaque carte de sortie pouvant être connectée à une ou plusieurs matrices d'entrée 11 (encore 5 appelées « cartes d'entrée »). Comme illustré sur la figure 4, une matrice de sortie notée 0 comprend des coefficients Oii, et a une taille notée (Oh, Ow). Cette matrice correspond à une matrice de neurones et les coefficients Oii correspondent aux valeurs de sortie de ces neurones, calculée à partir des entrées et des poids synaptiques. Une matrice ou carte d'entrée 11 peut correspondre à une carte de sortie d'une couche précédente, ou à une matrice d'entrée du réseau qui reçoit les stimuli ou une partie des stimuli à traiter. Un réseau peut être constitué d'une ou plusieurs matrices d'entrée. Il peut s'agir par exemple des composantes RGB, HSV, YUV ou de toute autre composante classique d'une image, avec une matrice par 15 composante. Une matrice d'entrée notée I comprend des coefficients IQ, et a une taille notée (/h, /w). Une carte de sortie 0 est connectée à une matrice d'entrée I par une opération de convolution, via un noyau de convolution 12 noté K (le noyau de convolution est encore appelé filtre, ou matrice de convolution), de taille (n, m) et comprenant des 20 coefficients Km. Chaque neurone de la carte de sortie 14 est connecté à une partie de la matrice d'entrée 11, cette partie étant encore appelée « sous-matrice d'entrée » ou « champ récepteur du neurone » et étant de même taille que la matrice de convolution K. La matrice de convolution K comprenant les poids synaptiques est commune pour l'ensemble des neurones de la carte de sortie 0 25 (les poids de la matrice K sont alors dits « poids partagés). Chaque coefficient de sortie de la matrice de sortie Oij satisfait alors la formule suivante : /min (n-1,1h-i.si) min (m-1,/w-j.sj) Oij = g Kk,1 k=0 1=0 3025344 13 Dans la formule ci-dessus, g() désigne la fonction d'activation du neurone, tandis que si et s1 désignent les paramètres de décalage (« stride » en langue anglosaxone) vertical et horizontal respectivement. Un tel décalage « stride » correspond au décalage entre chaque application du noyau de convolution sur la 5 matrice d'entrée. Par exemple, si le décalage est supérieur ou égal à la taille du noyau, alors il n'y a pas de chevauchement entre chaque application du noyau. Une carte de sortie 0 est connectée à une matrice d'entrée I par une opération de « pooling » qui réalise un sous-échantillonnage de la matrice d'entrée, ce qui fournit une matrice sous-échantillonnée. Le sous-échantillonnage peut être de 10 deux types : - Un type de sous-échantillonnage dit « MAX pooling » (regroupement maximal) selon l'équation ci-dessous: m = g (max kmin0 (n-1,/h-i.si)max i in (m-1,/w-j.si) T.o - Un type d'échantillonnage dit « AVERAGE pooling » (regroupement moyen) selon l'équation ci-dessous : Oij = g 1 min (n-1,/h-i.si) min (m-1,/w-j.si) k=0 1=0 n. 15 Les poids synaptiques associés aux connexions dans le cas d'une couche de « pooling » sont généralement unitaires et n'apparaissent donc pas dans les formules ci-dessus. Une couche complètement connectée comprend un ensemble de neurones, chaque neurone étant connecté à toutes les entrées de la couche. Chaque 20 neurone Oi dispose de ses propres poids synaptiques Wi j avec les entrées Ii correspondantes et effectue la somme pondérée des coefficients d'entrée avec les poids qui est ensuite passée à la fonction d'activation du neurone pour obtenir la sortie du neurone. 3025344 14 La fonction d'activation des neurones g() est généralement une fonction sigmoïde, comme par exemple la fonction tanh(). Pour les couches de « pooling », la fonction d'activation peut être par exemple la fonction Identité. Les poids synaptiques sont déterminés par apprentissage. L'apprentissage d'un 5 réseau de neurones consiste à trouver les valeurs optimales des poids synaptiques à partir d'une méthode d'optimisation et d'une base d'apprentissage. Il existe une multitude de méthodes d'apprentissage tels que la méthode de rétro-propagation du gradient, le principe de base consistant, à partir d'un stimulus en entrée du réseau, à calculer la sortie du réseau, la comparer à la sortie attendue 10 (dans le cas d'un apprentissage dit supervisé) et rétro-propager un signal d'erreur dans le réseau, qui vient modifier les poids synaptiques par une méthode de descente du gradient. Les réseaux de neurones peuvent être transposés en codage impulsionnel comme illustré sur la figure 5. Dans ce cas, les signaux propagés en entrée et en 15 sortie des couches du réseau ne sont plus des valeurs numériques, mais des impulsions électriques (assimilables à des impulsions Dirac). L'information qui était codée dans la valeur des signaux (normalisé entre -1 et 1) est alors codée temporellement avec l'ordre d'arrivée des impulsions (codage par rang, ou « rank order coding ») ou avec la fréquence des impulsions. 20 Dans le cas d'un codage par rang, l'instant d'arrivée de l'impulsion est inversement proportionnel à la valeur absolue du signal à coder. Le signe de l'impulsion détermine alors le signe de la valeur du signal à coder. Dans le cas d'un codage fréquentielle, la fréquence des impulsions, comprise entre fmin et fmax, est proportionnelle à la valeur absolue du signal à coder. Le 25 signe de l'impulsion détermine le signe de la valeur du signal à coder. Par exemple, en considérant une matrice d'entrée du réseau correspondant à la composante de luminance d'une image, normalisée entre 0 et 1, un pixel (ou coefficient de la matrice) blanc, codé par une valeur 1, émettra des impulsions à une fréquence fmax, un pixel noir, codé par une valeur 0, émettra des impulsions à 30 une fréquence fmin, tandis qu'un pixel gris, codé par une valeur x, émettra des impulsions à une fréquence f = fmin + x(fmax - fmin). Le codage peut également 3025344 15 être pseudo-fréquentiel, par exemple poissonien : dans ce cas fmax et fmin représentent des fréquences moyennes uniquement. La phase initiale des impulsions peut être aléatoire. Les impulsions peuvent également provenir directement d'un capteur, tel qu'une 5 rétine ou une cochlée artificielle, imitant le fonctionnement de leur équivalent biologique. Dans le cas d'un neurone impulsionnel, la somme pondérée des poids synaptiques avec les signaux d'entrée est remplacée par l'intégration des impulsions provenant des mêmes entrées pondérées par les poids synaptiques. 10 Toutes les impulsions sont identiques, excepté leur signe, si bien que leur intégrale peut être considérée comme unitaire ou normalisé. Par ailleurs, dans l'approche impulsionnelle, la fonction d'activation du neurone est remplacée par un seuillage qui est unitaire dans le cas de poids synaptiques normalisés entre -1 et 1. Lorsque la valeur absolue de l'intégration du neurone 15 dépasse le seuil défini par le seuillage, le neurone émet une impulsion en sortie, qui est propagée vers l'ensemble des neurones des couches suivantes connectés à ce neurone. Le signe de cette impulsion correspond au signe de l'intégration du neurone. Lorsque le neurone émet une impulsion, son intégration est remise à 0 et le neurone entre dans une période dite « réfractaire ». 20 Lorsqu'un neurone est en période « réfractaire », il ne peut pas émettre de nouvelle impulsion en sortie, jusqu'à la fin de la période réfractaire, qui peut être égale à la période minimale des impulsions se propageant dans le réseau. Les synapses artificielles d'un réseau de neurones peuvent être réalisées à partir de dispositifs memristifs. Un dispositif memristif est un composant électronique à 25 deux terminaux qui se comporte comme une résistance ou une conductance, dont la valeur peut être changée avec l'application d'un courant ou d'une tension à ses bornes. Un dispositif de ce type peut être caractérisé par les équations suivantes : i = G.v 3025344 16 dG = f (v, G) dt Dans les équations ci-dessus, G désigne la conductance du dispositif qui relie son courant d'entrée i à la tension à ses bornes y. 5 Un dispositif memristif peut être binaire et/ou stochastique. Une famille de dispositifs memristifs particulièrement adaptée à la réalisation de synapses artificielles dans un réseau de neurones est telle que la caractéristique f(v,G) est non linéaire, comme par exemple les dispositifs de type MIM (Metal-InsulatorMetal) qui constituent la cellule de base de plusieurs technologies de mémoires 10 non volatiles telles que RRAM « Resistive Random Access Memory », CBRAM « Conductive-Bridging RAM » et OxRAM « Oxide-based Resistive Random Access Memory ». Ainsi, une synapse peut être composée d'un ou plusieurs dispositifs memristifs. De nombreuses autres technologies peuvent en outre être considérées comme 15 memristives, comme la mémoire à changement de phase (PCRAM ou PCM « Phase Change Memory »), les transistors à grille flottante, les memristors, les memristors organiques, le transistor NOMFET « Nano-particle Organic Memory Field Effect Transistor ». Un réseau de neurones artificiel peut être réalisé en utilisant de tels dispositifs 20 memristifs en tant que synapses artificiels et en les intégrant dans une structure de type « crossbar ». La Figure 6 représente un dispositif matériel 100 implémentant une carte de sortie d'une couche de convolution d'un réseau de neurones convolutionnel impulsionnel, selon certains modes de réalisation. 25 Selon un aspect de l'invention, le dispositif 100 est constitué de synapses 10, chaque synapse étant implémentée à partir d'un ou plusieurs dispositifs memristifs, pour effectuer les opérations de convolution d'un réseau de neurones convolutionnel 11 sans qu'il soit nécessaire d'utiliser d'unités de calcul pour de telles opérations et des opérations de copie du noyau de convolution. Dans la 3025344 17 suite de la description, il sera fait référence principalement à un unique « dispositif memristif » comme élément constitutif d'une synapse à titre d'illustration. Toutefois, l'invention s'applique également à une synapse constituée de plusieurs dispositifs memristif en parallèle dont la conductance équivalente correspond à la 5 somme des conductances des dispositifs memristifs individuels. La matrice (« crossbar » en langue anglo saxonne) dans laquelle sont intégrés les dispositifs memristifs 10 est désignée par la référence 5. Sur la figure 6, les coefficients du noyau 12 sont numérotés de 1 à 9 et étalés verticalement. Bien que non limitée à de telles applications, le dispositif 100 peut être utilisé pour 10 réaliser une implémentation matérielle de réseaux de neurones convolutionnels pour la classification et la reconnaissance d'images. La suite de la description sera faite essentiellement en référence à des cartes d'entrée comprenant des neurones de type pixels, à titre d'illustration. Les opérations de convolutions mises en oeuvre par le dispositif 100 permettent de 15 déterminer chaque coefficient Oij de la matrice de sortie 14 pour une couche de convolution donnée à partir de la matrice d'entrée 11 (encore notée I) de la couche de convolution et du noyau de convolution 12 (encore notée K). L'opération de convolution à partir de laquelle est définie chaque coefficient de sortie Oii est donnée par l'équation 1 ci-dessous: /min (n-1,1h-i.s1) min (n-1,/w-j.sj) Oii = g i.si+k,j.s j+1. Kk,1 (1) k=0 1=0 20 Dans cette équation, les coefficients lij représentent les coefficients de la matrice d'entrée I de la couche de convolution considérée, et les coefficients Kk,I représentent les coefficients du noyau de convolution 12 (poids des connexions inter-neuronales). Plus particulièrement, le dispositif de réseau de neurones 100 utilise une pluralité 25 de dispositifs memristifs 10 pour stocker le ou les noyaux de convolution 12 associé(s) à une matrice de sortie de la couche de convolution. Chaque dispositif 3025344 18 memristif 10 a une valeur de résistance commutable électriquement et peut être de tout type (comme par exemple un transistor). Dans une forme de réalisation, le dispositif 100 peut utiliser un ou plusieurs dispositifs memristifs, constituant une synapse 10 pour chaque coefficient du noyau de convolution Km. 5 Les impulsions transitant entre les couches du réseau de neurones peuvent être codées au format AER (« Address-Event Representation »). Dans ce format, l'impulsion est numérique et constituée d'un train de bits codant l'adresse (X, Y) de destination de l'impulsion suivant deux axes perpendiculaires X et Y, le repère (X, Y) correspondant au repère de la matrice d'entrée, ainsi que le signe de 10 l'impulsion. Lorsque l'impulsion arrive sur la matrice d'entrée, l'adresse (X, Y) codée représente l'emplacement du neurone d'entrée à activer. Ainsi, lorsqu'une impulsion arrive sur la matrice d'entrée, son adresse (X, Y) donne l'emplacement à activer avec : X-*jetY-*i. 15 Selon une autre caractéristique, le dispositif 100 peut appliquer en complément une opération de codage temporel d'information pour réaliser chaque convolution entre la matrice d'entrée 1 d'une couche de convolution donnée et le noyau de convolution 12, l'opération de pondération des coefficients d'entrées I; j de la matrice d'entrée 1 d'une couche de convolution donnée avec les coefficients Kk,I 20 du noyau de convolution étant alors multiplexée temporellement. Selon un aspect de l'invention, l'opération de pondération est réalisée directement dans les dispositifs memristifs 10 stockant les coefficients correspondant aux poids du noyau de convolution, par la loi d'Ohm : I = G(conductance)*U, 25 où G désigne la conductance d'un ou plusieurs dispositifs memristifs formant une synapse, et U désigne la tension d'une impulsion qui est fixe, la valeur du coefficient d'entrée étant codée temporellement (par exemple par codage fréquentiel ou codage par rang). Le paramètre I est la valeur à accumuler dans le neurone de sortie correspondant. 30 Un neurone d'entrée 1 appartient au champ récepteur d'un ou plusieurs neurones de sortie 140. 3025344 19 Sur la figure 6, un neurone de la matrice d'entrée est activé (pixel dans l'exemple considéré) et est entouré par un cadre noir. Dans la représentation de l'état d'activation de la matrice 11, le pixel 28 de la matrice d'entrée est activé. En supposant que le noyau de convolution a une taille de 3x3 et que le décalage 5 « stride » est de 1, le pixel d'entrée considéré appartient au champ récepteur de 9 neurones de sortie (partie supérieure de la figure 6) : - le pixel activée est connecté au champ récepteur du neurone de sortie N°8, avec le coefficient N°9 du noyau de convolution (partie inférieure de la figure 6) ; - le pixel activée est connecté au champ récepteur du neurone de sortie N°9, avec 113 le coefficient N°8 du noyau de convolution ; - le pixel activée est connecté au champ récepteur du neurone de sortie N°10, avec le coefficient N°7 du noyau de convolution ; - etc. Selon un autre aspect de l'invention, les coefficients j de la matrice d'entrée I 15 peuvent être implémentés matériellement par une fréquence prédéfinie des impulsions tandis que les coefficients Ku sont stockés sous la forme d'une conductance électrique d'un dispositif memristif 10. Ainsi, chaque dispositif memristif 10 est configuré pour recevoir une impulsion pré-synaptique émise par un neurone de la matrice d'entrée 1 auquel il est connecté en amont. Telle 20 qu'utilisée ici, l'expression « impulsion pre-synaptique » désigne une impulsion émise par un neurone en direction d'une synapse à laquelle il est connecté en aval. Une impulsion pre-synaptique ainsi émise depuis un neurone d'entrée 11 se propage vers la synapse, matérialisée par le dispositif memristif 10, à laquelle le neurone d'entrée est connecté. Une impulsion d'entrée se propage du neurone 25 d'entrée aux neurones de sortie qui ont le neurone d'entrée dans leur champ récepteur, selon l'exemple de la figure 6. L'impulsion arrivant sur chaque neurone de sortie est pondérée par le poids synaptique correspondant au coefficient du noyau de convolution associée pour cette entrée. Cette pondération peut se faire électriquement par modulation de la tension de l'impulsion avec la conductance 3025344 20 équivalente de la synapse, constituée d'un ou plusieurs dispositifs memristifs, grâce à la loi d'Ohm. Une impulsion modulée de cette manière arrivant sur un neurone de sortie est alors intégrée dans le neurone (analogiquement ou numériquement), qui émet une impulsion en sortie si cette intégration dépasse 5 une valeur de seuil. Selon une caractéristique de l'invention, le dispositif 100 comprend une matrice d'interconnexion 13 configurée pour associer dynamiquement (opération dite de «mapping » dynamique en langue anglo-saxonne) chaque sortie 121 du noyau de convolution correspondant à un coefficient du noyau de convolution, avec une 10 position 140 de la matrice d'accumulation 14, lors de l'activation d'un neurone d'entrée. L'opération de « mapping » dynamique met en correspondance les coefficients du noyau, avec l'ensemble des neurones de sortie faisant intervenir l'entrée activée pour le calcul de la convolution, comme décrit par les équations précédentes. Par exemple, comme représenté sur la figure 6, lorsque le neurone 15 d'entrée 1 est déclenché, la ligne horizontale coupant la ligne verticale reliée à l'élément 9 dans la matrice 12 représentant le noyau de convolution 12 est connectée dynamiquement, au niveau de son extrémité 121, à la position 8 de l'accumulateur 14. Ainsi, pour une entrée Ii j de la matrice d'entrée activée (activée par exemple avec 20 une impulsion AER provenant d'une couche précédente ou d'un capteur type rétine ou cochlée artificielle avec pour adresse (X,Y)), les coefficients Km du noyau de convolution sont connectés aux sorties 0 i-k j-1 de la manière suivante : Si 'Sj Kk,1 Oi-k j-1 si ' sj Pour k = i mod si; k REVENDICATIONS1. Réseau de neurones convolutionnel (100) comprenant une pluralité de neurones artificiels agencés en une ou plusieurs couches, chaque couche de convolution comprenant une ou plusieurs matrices de sortie (14) comprenant un ensemble de neurones de sortie, chaque matrice de sortie étant connectée à une matrice d'entrée, comprenant un ensemble de neurones d'entrée, par des synapses artificielles associées à une matrice de convolution comprenant les coefficients de poids synaptiques correspondant aux neurones de sortie de ladite matrice de sortie, la valeur de sortie de chaque neurone de sortie étant déterminée à partir des neurones d'entrée de ladite matrice d'entrée auxquels le neurone de sortie est connecté et des coefficients de poids synaptiques de la matrice de convolution associée à ladite matrice de sortie, caractérisé en ce que chaque synapse est constituée d'un ensemble de dispositif memristifs comprenant au moins un dispositif memristif, chaque ensemble de dispositif memristif stockant un coefficient de ladite matrice de convolution, et en ce que, en réponse à un changement d'état d'un neurone d'entrée d'une matrice d'entrée, le réseau de neurones est apte à : - interconnecter dynamiquement chaque ensemble de dispositifs memristifs stockant les coefficients de la matrice de poids aux neurones de sortie connectés audit neurone d'entrée, et - pour chaque neurone de sortie, accumuler les valeurs des coefficients de poids stockées dans lesdits ensembles de dispositifs memristifs interconnectés dynamiquement audit neurone de sortie dans un accumulateur de sortie (140), ce qui fournit la valeur de sortie dudit neurone de sortie. 2. Réseau de neurones selon la revendication 1, caractérisé en ce que les neurones utilisent un codage temporel, et en ce que l'interconnexion dynamique est mise en oeuvre en réponse au déclenchement d'un neurone d'entrée de la matrice d'entrée (11). 3. Réseau de neurones selon la revendication 2, caractérisé en ce que, en réponse à l'interconnexion dynamique, l'accumulation des valeurs des coefficients de poids est mise en oeuvre par propagation d'au moins une impulsion codant la 3025344 37 valeur de chaque coefficient de poids, selon ledit codage temporel, lesdites valeurs accumulées dans les accumulateurs de sortie constituant les valeurs de sortie de ladite matrice de sortie (14). 5 4. Réseau de neurones selon la revendication 1, caractérisé en ce qu'il comprend un ensemble de commutateurs et un circuit logique de mise en correspondance des coefficients de poids synaptiques avec les neurones de sortie connectés au neurone d'entrée ayant subi un changement d'état, à partir de l'adresse dudit neurone d'entrée dans la matrice d'entrée, pour réaliser ladite interconnexion 10 dynamique. 5. Réseau de neurones selon l'une des revendications 3 et 4, caractérisé en ce que chaque impulsion comprend un train de bits codant l'adresse (X, Y) de destination de l'impulsion suivant deux axes perpendiculaires X et Y, le repère (X, 15 Y) correspondant au repère de la matrice d'entrée, et en ce que lorsque ladite impulsion arrive sur la matrice d'entrée, ladite adresse (X, Y) codée représente l'emplacement du neurone d'entrée à activer. 6. Réseau de neurones selon l'une des revendications précédentes, caractérisé 20 en ce que l'interconnexion dynamique est réalisée en parallèle et en un seul cycle, en connectant simultanément l'ensemble des coefficients de poids stockés dans lesdits dispositifs memristifs (10) aux neurones de sortie connectés au neurone d'entrée ayant subi un changement d'état. 25 7. Réseau de neurones selon l'une des revendications 1 à 6, caractérisé en ce que l'interconnexion dynamique est réalisée semi-séquentiellement, en connectant les coefficients de la matrice de poids stockés dans lesdits dispositifs memristifs (10), une ligne de la matrice après l'autre, aux neurones de sortie connectés au neurone d'entrée ayant subi un changement d'état. 30 8. Réseau de neurones selon l'une des revendications 1 à 6, caractérisé en ce que l'interconnexion dynamique est réalisée semi-séquentiellement, en connectant les coefficients de la matrice de poids stockés dans lesdits dispositifs memristifs 3025344 38 (10), une colonne de la matrice après l'autre aux neurones de sortie connectés au neurone d'entrée ayant subi un changement d'état. 9. Réseau de neurones selon l'une des revendications 1 à 6, caractérisé en ce 5 que l'interconnexion dynamique est réalisée séquentiellement, en connectant les coefficients de la matrice de convolution (5), stockés dans lesdits dispositifs memristifs (10), l'un après l'autre, aux neurones de sortie connectés au neurone d'entrée ayant subi un changement d'état. 10. Réseau de neurones selon l'une des revendications précédentes, caractérisé 10 en ce qu'il comprend un accumulateur (21, 22) agencé à la sortie de chaque synapse (5), ledit accumulateur réalisant l'accumulation de la valeur du coefficient de poids stockée dans les dispositifs memristifs de ladite synapse avec la valeur stockée dans l'accumulateur (140, 24) du neurone de sortie correspondant, la valeur stockée dans ledit accumulateur auxiliaire étant ensuite propagée par les 15 dites impulsions dans ledit accumulateur (140, 24) de la matrice de sortie. 11. Réseau de neurones selon l'une des revendications 1 à 9, caractérisé en ce qu'il comprend un accumulateur (23, 25) agencé au niveau de chaque neurone de sortie, la sortie de chaque dispositif memristif (10) de la synapse étant propagée au niveau du neurone de sortie, la valeur ainsi propagée étant accumulée avec la 20 valeur stockée dans l'accumulateur (140, 23). 12. Réseau de neurones selon l'une des revendications précédentes, caractérisé en ce que les sorties de neurones sont groupées, et en ce que les valeurs accumulées correspondant à des sorties groupées sont stockées dans un accumulateur commun (142). 25 13. Réseau de neurones selon l'une des revendications précédentes, caractérisé en ce qu'il comprend un apprentissage en ligne de type STDP à partir de l'interconnexion dynamique.