FR 2655452 A1 19910607 FR 8915873 A 19891201 La présente invention se rapporte à un dispositif réalisant une multiplication matricielle sur plusieurs bits à partir de composants binaires, à son application aux réseaux de neurones, et à un procédé de multiplication matricielle. Les algorithmes neuronaux mettent en jeu des produits de vecteurs par des matrices qui, pour des systèmes possédant un grand nombre de neurones, nécessitent des processeurs spécialisés La présente demande se rapporte en particulier au cas des processeurs analogiques. On connaît différents algorithmes( on se référera par exemple à "Performance limits of optical, electro-optical and electronics neurocomputers" R Hecht Nielson, SPIE, Vol 634, Optical and Hybrid Computing ( 1986), page 277 et à "An introduction to computing with neural nets"t, Lippman, IEEE ASSP April 1987 Le point commun à tous ces algorithmes est la nécessité de réaliser des produits de vecteurs par des matrices dont les éléments sont appelés poids synaptiques ou simplement poids Si on note ei (i=l N 1) les N 1 coordonnées du vecteur d'entrée et SJ (j=l N 2) celles du vecteur de sortie, l'opération matricielle à effectuer s'écrit e J 4 ( 1) Sj = Z Wji ei (j= 1 N) Cz 4 z o les W i représentent les poids de la matrice. Quand les tailles des vecteurs d'entrée et de sortie deviennent importantes (par exemple: N 1 = N 2 = 103) deux problèmes peuvent apparaître avec l'opération ( 1): 1 / Quand l'exécution est séquentielle, le temps de calcul peut devenir prohibitif pour certaines applications (car il faut réaliser Nlx N multiplications). 2 / Le nombre de poids Wji (égal à N 1 x N 2) nécessite une mémoire importante et les temps d'accès mémoire peuvent également faire chuter les capacités du système (en temps de calcul et/ou en volume). Une solution pour pallier ces inconvénients consiste à réaliser le produit (vecteur matrice) de la relation ( 1) de façon analogique. On peut citer, comme exemples non limitatifs de telles réalisations analogiques de produits vecteur-matrice, des modes de réalisation utilisant des dispositifs: optiques: les poids sont réalisés à l'aide d'hologrammes ("Multilayer optical learning networks", Kelvin Wagner and Demetri Psaltis, page 5061). optoélectroniques: la structure de base est celle d'un multiplieur vecteur matrice optique, les poids étant réalisés avec des masques de différentes transparences ou de différents indices optiques, ou à rotation de polarisation incidente par le matériau simplement transparent/opaque dans de nombreux cas -("Optoelectronic analogs of self- programming neural nets: architecture and methodologies for implementing fast stochastic learning by simulated annealing", Nabil H. Farhat, page 5093). électroniques: les poids peuvent être des résistances ou des structures plus complexes, à base de transistors par exemple ("VLSI architecture for implementation of neural networks", Massimo A Sivilotti, Michael R Emerling and Carver A Mead, AIP Conf Proc 151, 1986), pyroélectriques: les poids sont réalisés par des systèmes bistables de type ferroélectrique (cf Demande de Brevet français 87 13961). On ne détaillera pas ici ces différentes architectures, chacun de ces cas pouvant être représenté par le schéma de principe de la figure 1 Sur ce schéma, les différentes entrées de la matrices sont notées ei l ei, e+,, et les synapses d'une même colonne S: Wji 1, i+ 1 1 i Jil- w.,Fw il j, i ji Le principe commun à tous ces systèmes consiste à réaliser les N 1 N 2 multiplications en parallèle directement sur l'élément mémoire (masque ou hologramme dans le cas optique, résistance électrique dans le cas électronique, matrice ferroélectrique dans le cas pyroélectrique) On résout ainsi les deux principaux problèmes signalés précédemment: a) le temps de calcul est fortement réduit en réalisant les opérations en parallèle, b) il n'y a plus de temps d'accès mémoire puisque l'opération est directement réalisée sur cet élément mémoire et ceci en parallèle. Cependant, dans la plupart des systèmes analogiques, les informations (les poids) sont stockées sous forme binaire (ou avec un nombre très limité de niveaux différents) Ceci peut être dû à la difficulté de maîtriser les éléments analogiques qui réalisent les poids (résistances, masque, etc), cette difficulté augmentant avec le nombre de poids à stocker Pour certains systèmes analogiques, le mécanisme permettant de stocker les poids peut être de nature bistable (ferroélectrique), ce qui entraîne ainsi un enregistrement des poids sous forme binaire. La solution généralement adoptée pour travailler avec des poids non binaires consiste à enregistrer ces derniers sous la forme d'un mot binaire (donc réparti sur plusieurs cases mémoires) Plus précisément le poids est écrit sous la forme: W = W (" + W ( 2 ' 2 + W (n) 2 n et on réalise un système dont le schéma de principe est représenté en figure 2 Sur ce schéma, les différentes entrées (lignes) de la matrice sont notées comme en figure 1 Les synapses d'une même ligne, par exemple e 1, sont notés: Wi( 0), Wji ( 1) Wji(n) Chacune des colonnes est reliée à un mliplieu 3 r 1 21, 2 pour multiplieur réalisant la multiplication par 20, 22 pu les colonnes O à n Les différents multiplieurs sont reliés à un additionneur A, dont la sortie est notée Si. Le principe de cette solution consiste donc à utiliser plusieurs lignes de sortie pour effectuer les différentes multiplications binaires et à multiplier à la sortie de chaque ligne le résultat par le coefficient 2 P O (po à n) adéquat. Une première limitation de ce type d'approche est liée aux structures de matrice que l'on peut ainsi obtenir. En effet, si la matrice binaire (correspondant au composant) est une matrice carrée N par N et si les poids de la matrice "mathématique" sont codés sur N bits, alors les matrices mathématiques qui pourront être simulées correspondront (au plus) à des matrices rectangulaires N par N/n. Un deuxième inconvénient de cette approche est le mauvais rapport signal sur bruit qui peut résulter d'une amplification faite après la mesure des résultats partiels. La présente invention a pour objet un dispositif analogique de multiplication matricielle pour réseaux neuronaux qui puisse opérer avec des matrices de grandes dimensions, rapidement, et avec un bon rapport signal/bruit L'invention a également pour objet un dispositif analogique de multiplication matricielle pour réseaux neuronaux qui puisse être adapté facilement à des matrices de dimensions différentes, en particulier des matrices non "carrées" (nombre d'entrées différent du nombre de sorties). Le dispositif analogique de multiplication matricielle pour réseaux neuronaux conforme à l'invention, du type à poids enregistrés sous forme de q valeurs discrètes comporte pour chaque composante du vecteur d'entrée, m (m description détaillée de plusieurs modes de réalisation pris à titre d'exemples non limitatifs et illustrés par le dessin annexé, sur lequel: la figure 1 est un schéma de principe partiel, cité ci-dessus, d'une matrice de multiplication analogique de l'art antérieur, la figure 2 citée ci-dessus, est le schéma de principe partiel d'une matrice connue de multiplication analogique à poids non binaires enregistrés sous forme d'un mot binaire, les figure 3 et 4 sont des schémas de principe partiels de matrices de multiplication analogique conformes à l'invention, et la figure 5 est le schéma de principe partiel d'une matrice de multiplication analogique, conforme à l'invention pour des vecteurs d'entrée binaires. Sur le schéma de principe de la figure 3, on n'a représenté qu'une colonne S, et, pour le vecteur e 1, trois lignes d'entrée comportant respectivement les multiplieurs analogiques M 1 à M 5 réalisant respectivement la multiplication par 1,2,4,8 et 16 ( 2 à 24) Les poids synaptiques (O) et 2) () 4 correspondants sont WJ ( 0),W( 1), Wi( 2), Wji( 3) et W Ji( 4). jiji j' Jz La décomposition du poids WJ est la même que dans le J' cas de la figure 2. D'un point de vue plus formel, la solution connue de la figure 2 revient à décomposer l'opération ( 1) sous la forme J s fi= (P) S W e= 5 2 we= 2 i). J ic 31 361 e o Wji est binaire, chaque ligne de sortie permettant d'obtenir " W (P) e pour une valeur de p donnée, l'addition 21 ( W e) étant ensuite réalisée. fi e La solution de l'invention décompose l'opération ( 1) de la façon suivante S = lW i(P) ( 2 e)l. i: figure 2. Le second avantage de cette méthode réside dans la plus grande liberté sur la forme des matrices "mathématiques" qu'on peut implanter En effet, en combinant les solutions de la figure 2 et de l'invention, on peut, par exemple, simuler des matrices "mathématiques" carrées à partir de composants binaires correspondant également à des matrices carrées. On va illustrer cet aspect à l'aide de l'exemple simplifié de la figure 4 Cet exemple réalise la multiplication W' e, avec W'ji = W' ji(O) + 2 W'ji( 1) + 4 W'ji( 2) + 8 2 l. i J11 lz lzlz W'11) Le vecteur d'entrée e'i est envoyé à deux lignes Ji ' d'entrée à l'entrée desquelles on dispose respectivement les multiplieurs M'1 et M'2 A ces deux lignes correspondent deux colonnes S' i et S' 2 (pour pouvoir effectuer les quatre J ( 0) àW ( 3) multiplications par W' à w'Ji( 3) Sur les lignes de sortie J' S'j 1 et S' 2, on dispose respectivement les multiplieurs M'3 et M'4 Les sorties des multiplieurs M'3 et M'4 sont reliées à un additionneur A' dont la sortie constitue la sortie du dispositif de multiplication matricielle simplifié de la figure 4. Les coefficients de multiplication des multiplieurs M'1 à M'4 sont déterminés pour obtenir les quatre coefficients de pondération désirés, à savoir, 1,2,4 et 8 On choisit par exemple les coefficients 1, 2,1 et 4 pour M'1 à M'4 respectivement On obtient ainsi, à la sortie de M'3, les coefficients de pondération 1 et 2 ( 1 xi et lx 2) et à la sortie de M'4 les coefficients de pondération 4 et 8 ( 4 x 1 et 4 x 2), ce qui fait que tous les coefficients de pondération sont présents, et eux seuls, sans redondance. Ainsi, on peut réaliser avec un même composant des matrices dont le nombre de lignes est différent du nombre de colonnes dans une grande fourchette de valeurs On prend par exemple un composant analogique qui permet d'implanter 106 poids binaires sous la forme d'une matrice carrée ( 103 entrées, 103 sorties) On souhaite réaliser l'opération matricielle ( 1) avec des poids codés sur 16 bits. La solution de l'art antérieur de la figure 2 ne permet de simuler que des matrices "mathématiques" dont la taille est au plus de 1000 entrées par 62 sorties. En combinant la solution de l'invention avec la solution de la figure 2 on peut réaliser les matrices mathématiques suivantes: 62 entrées par 1000 sortiesl invention seule entrées par 500 sorties combinaison de 250 entrées par 250 sorties l'invention et de l'art 500 entrées par 125 sorties antérieur Il faut remarquer que la méthode proposée peut également être adaptée aux cas o les poids peuvent être enregistrés avec un nombre fini de valeurs supérieures à 2 Ceci constitue une généralisation immédiate de ce qui vient d'être exposé On va illustrer une telle méthode générale à l'aide d'un exemple. On suppose que les poids puissent prendre une des trois valeurs (-1,0,1) et que l'on souhaite simuler des poids prenant toute valeur entière entre -4 et 4 La méthode proposée consiste à multiplier par 2 le nombre des lignes d'entrée et à appliquer un facteur multiplicatif 3 sur une de ces deux lignes. Quand la technologie mise en jeu est numérique et que, par conséquent elle admet des signaux d'entrée ne prenant que des valeurs binaires, on peut appliquer la méthode de l'invention en considérant que la grandeur analogique en entrée est le nombre de répétitions du bit d'entrée couplé avec un additionneur ou un compteur en sortie On peut simuler des opérations avec des poids non binaires en n'effectuant que des opérations binaires. Le schéma de principe simplifié est celui représenté en figure 5. Sur ce schéma, on a seulement tenu compte d'un vecteur dont une composante d'entrée est ei = + 1, le poids W se décomposant en W (O) + W *(î) + W ( 2) + W ( 3). Ji Ji Ji Ji La composante de vecteur ei est envoyée sur quatre lignes d'entrée LI à L 4, puisqu'on suppose que le poids comporte quatre bits Cette composante étant supposée ne comporter qu'un bit (une impulsion), la multiplication d'entrée conforme à l'invention consiste à répéter 2 P fois cette impulsion, avec P = 1 n-i. Ainsi, sur Li, on n'a qu'une seule impulsion (P = 1), sur L 2 on double l'impulsion (P = 2), sur L 3 on a quatre impulsions et sur M on a huit impulsions. Aux croisements des lignes Li à M et de la colonne S, par exemple, on dispose les synapses (par exemple des portes logiques) correspondant aux composantes W J( 0) à Wji( 3)* A la sortie de la colonne C, on relie un dispositif additionneur, qui est dans le cas présent un compteur d'impulsions C. REVENDICATIONS 1 Dispositif analogique de multiplication matricielle pour réseaux neuronaux, du type à poids (W) enregistrés sous forme de q valeurs discrètes (W 1 à W N), caractérisé par le fait qu'il comporte, pour chaque composante du vecteur d'entrée (e), m (m d'entrée (Ml à M 3) par q, p valant respectivement O à m-i. 2 Dispositif selon la revendication 1, caractérisé par le fait que les valeurs discrètes sont des bits. 3 Dispositif selon la revendication 1, caractérisé par le fait que chaque multiplieur fonctionne en multiplieur du signal de commande. 4 Dispositif selon la revendication 3, caractérisé par le fait que le signal de commande est une tension électrique. 5 Dispositif selon la revendication 3, caractérisé par le fait que le signal de commande est un courant électrique. 6 Dispositif selon la revendication 3, caractérisé par le fait que le signal de commande est un signal optique. 7 Dispositif selon la revendication 1, caractérisé par le fait que chaque multiplieur fonctionne en multiplieur par récurrence (figure 5). 8 Dispositif selon l'une des revendications précédentes, caractérisé par le fait qu'il comporte en outre des multiplieurs sur les sorties de la matrice.