FR 2998697 A1 20140530 FR 1261155 A 20121123 2998697 Architecture de réseau de neurone, procédé d'obtention et programmes correspondants. 1. Domaine de l'invention L'invention se rapporte à l'implémentation physique d'un modèle théorique de réseau de neurone. L'invention se rapporte plus particulièrement à une optimisation d'une implémentation d'un réseau de neurone. L'invention vise à rendre envisageable la production de processeurs basés sur un modèle théorique de réseau de neurone. Un nouveau modèle théorique de réseau de neurones a été conçu par C. BERROU et V. GRIPPON. Ces nouveaux réseaux, appelés GBNN, sont notamment décrits dans les documents [1] « Vincent Gripon, Claude Berrou: Sparse Neural Networks With Large Learning Diversity », [2] « Vincent Gripon, Claude Berrou: Nearly-optimal associative memories based on distributed constant weight codes » [3] « X. Jiang, V. Gripon et C. Berrou: Learning long sequences in binary neural networks, Proceedings of Cognitive 2012 » [4] « Vincent Gripon, Claude Berrou : Dispositif d'apprentissage et de décodage de messages, mettant en oeuvre un réseau de neurones, demande de brevet FR1056760 », dont les divulgations sont référencée dans la présente demande. Des publications décrivent notamment des méthodes de création de tels réseaux de neurones basés sur ce modèle théorique [5] « H. Jarollahi, N. Onizawa, V. Gripon et W. J. Gross: Architecture and Implementation of an Associative Memory Using Sparse Clustered Networks ». Concrètement, ce modèle s'inspire d'une part des réseaux de Hopfield (réseaux de neurones récurrents à temps discret dont la matrice des connexions est symétrique et nulle sur la diagonale) et d'autre part des codes correcteurs d'erreurs de type LDPC (low-density parity-check). Un réseau GBNN comprend un ensemble de clusters comprenant chacun un ensemble de neurones et utilise la notion de « clique » neurale pour l'apprentissage et la reconnaissance de l'information. Il a été démontré dans [1][2][3][4] que la mémoire associative créée par un réseau GBNN était nettement plus performante, à nombre égal de neurones, qu'une mémoire associative basée sur le modèle de Hopfield. De plus, cette mémoire associative GBNN est également résistante aux erreurs. La découverte de ce nouveau modèle de réseau de neurones a été largement reprise par la communauté scientifique. 2. Art Antérieur On présente en premier lieu le modèle GBNN puis l'unique proposition d'implémentation de ce modèle actuellement existante. 2.1. Présentation sommaire du modèle GBNN Les auteurs de ce réseau ont exploité les techniques des codes correcteurs d'erreurs pour remédier aux insuffisances des réseaux de Hopfield. Un code correcteur d'erreur (turbo-code, LDPC) ajoute de la redondance aux messages, afin de les rendre plus robustes au bruit. Il est à noter que tout comme la valeur des neurones, les poids synaptiques sont des booléens dans le modèle GBNN, ce qui les distingue de la plupart des réseaux connus (Perceptron, Hopfield...), dans lesquels les poids synaptiques sont soit des entiers, soit des réels. Plus particulièrement, dans le GBNN, les poids synaptiques sont remplacés par des coefficients et la matrice des poids synaptiques est remplacée par une matrice d' adjacence. Toutefois, bien que les opérandes soient booléennes, les calculs réalisés dans le GBNN se font dans le domaine des entiers i.e. les résultats partiels sont des entiers. De plus, le modèle GBNN repose sur la notion de Cluster : un réseau de neurone de type GBNN est ainsi composé de C clusters contenant chacun L neurones (nommés fanaux) ayant la particularité de ne pas être connectés entre eux au sein d'un même cluster. Le message (ou pattern) à apprendre est d'abord divisé en sous-messages (principe des codes en bloc) : chaque sous- message, de taille k, est associé à un code économe de taille L = 2Ak. Un code économe est un code qui contient tous les mots binaires sur {0; 1} de taille n et qui n'ont qu'un seul bit de valeur 1. Les notations suivantes sont utilisées tout au long de la présentation de l'art antérieur et de l'invention : - L : nombre de neurones d'un cluster (chaque sous-message d'un cluster est de taille k=log2(L)) ; - C : nombre de clusters ; - N : nombre total de neurones dans le réseau (donc N = CxL) ; - M : nombre de messages appris ; - ni j avec i Le principal avantage du réseau GBNN est que le réseau obtenu présente une efficacité nettement supérieure par rapport aux réseaux de Hopfield. Le nombre de motifs pouvant être mémorisés est de l'ordre de : (C-1)xL2 / PC2xlog2(LC)], contre N/(2.log(N)) dans un réseau de Hopfield. Par ailleurs la capacité du réseau (quantité maximale d'informations binaires qui peuvent être apprises par le réseau) passe de NA2/(2.log(N)) dans un réseau de Hopfield, à log2(M+1) combinaisons de 2 parmi N. Par exemple, un réseau de Hopfield de 256 neurones permet de créer une mémoire associative qui retiendra environ 50 mots de 256 bits (soit 400 mots de 32 bits), alors qu'un GBNN formé de 4 clusters de 64 neurones chacun (soit 256 neurones), donc travaillant sur des messages de 4 xlog2(64), pourra retenir environ 1200 mots de 32 bits. La quantité maximale d'information binaire apprise est donc très supérieure à celle d'un réseau de Hopfield. 2.2. Présentation de l'unique implémentation décrite L'attrait du modèle GBNN a été immédiatement perçu par la communauté scientifique. En l'état actuel, cependant, une seule implémentation physique de ce modèle théorique a été décrite. Plus particulièrement, cette implémentation physique a été décrite dans le document « Architecture and Implementation of an Associative Memory Using Sparse Clustered Networks » voir [5] (cette implémentation est nommée VO par la suite). L'article [5] cité en référence propose la première implémentation sur FPGA du GBNN (VO). Le fonctionnement du GBNN VO est le suivant, présenté en relation avec la figure 1 : 1. Une phase d'apprentissage : on renseigne une matrice des poids synaptique avec un nouveau motif 2. Présentation d'un message partiellement effacé : un décodeur LDT-1 permet de préciser si dans le message, certains sous-messages (donc des clusters) sont effacés ou non. 3. Le résultat du décodage LDT-1 est transmis à un « Global Decoder » (initialement le module d'itération ne sert à rien), plus précisément aux neurones (contenu dans le bloc GNCE), qui vont calculer des valeurs entières à partir du message décodé. 4. Toujours dans le Global Decoder, le « Winner-Take-All » est calculé (dans le module GCCM), et à la suite le neurone vainqueur de chaque cluster prend pour valeur 1 (tous les autres neurones prennent pour valeur 0). Notons que sur le schéma de la figure 1, le décodeur LDT-2 ne sert à rien (les auteurs n'ont pas justifié son intérêt). 5. Le nouvel état du réseau est présenté aux neurones, si le nombre maximum d'itérations n'a pas été atteint (vérification réalisée dans le « Iteration Module »). Si le nombre maximum d'itérations est atteint, ou si le réseau a convergé, alors la valeur des clusters est ré-encodée (on passe de L à k=log2(L) bits), le message est transmis à l'utilisateur. L'approche proposée dans ce document présente de nombreux inconvénients. L'architecture proposée réalise pour chaque neurone la somme entière des produits des états des (C-1).L neurones distants par les (C-1).L coefficients d'adjacence relatifs. De façon évidente, il en résulte un grand nombre de calculs qui impliquent d'utiliser un grand nombre de calculateurs fonctionnant en parallèle pour obtenir de bonnes performances temporelles. Ceci se traduit donc classiquement par une surface et une consommation d'énergie très importante. De plus, les calculs étant réalisés sur des entiers, le temps de propagation des signaux dans les opérateurs arithmétiques se fait en suivant les chaines de retenues, ralentissant d'autant la fréquence de fonctionnement des circuits (qu'ils soient de type processeurs programmables ou de type circuits dédiés non programmables). De plus, chaque neurone est connecté en permanence à la matrice d'adjacence, et à chaque itération, il reçoit la valeur des (C-1).L neurones à qui il peut être connecté. De ce fait, l'architecture nécessite de relier chacun des N neurones contenus dans le réseau à tous leurs neurones distants respectifs (i.e. (C-1)xL) ce qui se traduit par un nombre prohibitif de connexions i.e. Cx(C-1)xL2 connexions. Les inventeurs ont noté que certaines communications sont inutiles : en effet, les neurones inactifs n'ont aucune influence sur les résultats (accumulation de résultats nuls provenant de produits partiels ente des valeurs de neurones inactifs donc nuls et des coefficients dans la matrice d'adjacence). Il n'est donc pas nécessaire de communiquer leurs valeurs. De plus les communications pourraient être sérialisées pour réduire le nombre de connexions. En outre, les inventeurs ont également noté que la solution décrite dans [5] propose de mémoriser les états des connexions dans une matrice d'adjacence carrée. Ainsi, si deux neurones nij et ni, j, sont connectés, la matrice contiendra deux coefficients : un premier coefficient w((0 (i',j')) pour le neurones ni j et un deuxième coefficient w((i, j,) (ii)) pour le neurones ni, j,. Les valeurs des coefficients w((0 (i',j')) et w((i, j,) (0) sont identiques, puisque ces coefficients représentent l'état d'une même et unique connexion entre les neurones nij et ni, j,. L'architecture proposée entraine une double mémorisation de la même information. La taille de la matrice de coefficients d'adjacence pourrait donc être divisée par deux et les calculs réalisés durant la phase pourraient être deux fois moins nombreux sans modifier le fonctionnement général du réseau. Finalement, dans un réseau GBNN, chaque neurone effectue un ensemble de calculs à partir d'un ensemble d'informations qui lui sont transmises (i.e. les états des neurones distants) et d'un ensemble d'informations stockées localement (l'état des connexions mémorisés dans la matrice d'adjacence locale). Les états des connexions étant aussi mémorisés dans les clusters distants (voir paragraphe précédent), les sommes partielles des produits pourraient être réalisées dans les clusters distants. De ce fait, seuls les résultats correspondants pourraient être transmis réduisant d'autant le nombre de connexions nécessaires entre les neurones. D'autre part, un grands nombre d'informations inutiles sont communiquées et utilisées dans les calculs. En effet, certains opérandes et certains calculs sont inutiles -e.g. les neurones inactifs n'ont aucune influence sur les résultats (accumulation de résultats nuls provenant de produits partiels entre des valeurs de neurones inactifs donc nuls et des coefficients dans la matrice d'adjacence). Ainsi, il est nécessaire de proposer des solutions pour permettre la réalisation d'une architecture qui puisse être réellement déployée à l'échelle et qui économiquement soit rentable par rapport à la capacité de mémorisation créée. Plus particulièrement, les problèmes posés par cette architecture VO sont les suivants : une trop grande complexité des calculs ; 2. une quantité de mémoire trop importante ; 3. un nombre trop important de connexions entre les neurones ; 4. une inadéquation entre les informations échangées et les informations réellement nécessaires. Ces problèmes entrainent une impossibilité de mise en oeuvre à grande échelle. Ils engendrent également des problèmes de coût, de fréquence et/ou de nombre d'accès aux données et de consommation énergétique. 3. Résumé de l'invention L'invention permet de pallier, au moins en partie, au défaut de l'architecture 30 antérieurement proposée et par voie de conséquence du modèle théorique de base lui-même. En effet, l'invention se rapporte à un procédé d'obtention d'une donnée représentative d'un identifiant d'un neurone parmi un ensemble de L neurones appelé cluster, L étant un entier 1. naturel de valeur supérieure ou égale à deux, ledit cluster appartenant à un réseau de neurone comprenant C clusters, C étant un entier naturel de valeur supérieure ou égale à deux, chaque neurone dudit réseau de neurone comprenant au moins deux états. Selon l'invention, ledit procédé comprend, pour au moins un cluster Ci courant : - une étape d'obtention d'un ensemble E d'état de neurone en provenance d'au moins un cluster Ci,.ffi ; - une étape d'obtention d'un ensemble A de coefficients d'adjacence entre au moins un neurone dudit cluster courant Ci, et au moins un neurone d'un cluster C.; du réseau de neurones.ffi ; - une étape de calcul, en fonction dudit ensemble E d'état de neurone, dudit ensemble A de coefficients d'adjacence et en fonction d'au moins un état parmi des états desdits neurones dudit cluster courant Ci, d'au moins un neurone gagnant N G, délivrant ladite donnée représentative d'un identifiant dudit au moins un neurone gagnant N G. Ainsi, le procédé de l'invention permet d'obtenir un neurone gagnant dans un cluster donné en fonction des états des autres neurones des clusters qui font partie du réseau de neurone. En fonction des modes de réalisation, l'obtention des ensembles d'états est réalisée différemment. Selon un mode de réalisation particulier, ladite étape de calcul comprend, pour un neurone courant no dudit cluster courant Ci, l'application de la formule suivante : c 7 7 L \ /L \\ 19(n, ,i,t + 1) = V19(rik'et) A w(0)(k,g) V Va (rik'g' t) k=i ,k#/ \ \g=1 / \g=1 1 I dans laquelle : + 1) est l'état du neurone niià l'instant t+1 ; A /cc 1 ,k#i(-) est une conjonction (ET logique) de C-1 éléments binaires non nuls fournis par les équations logiques appliquées à tous les autres clusters du réseau de neurones ; j)(k,g) est le coefficient d'adjacence de entre le neurone nk,g et le neurone n ; 19(nk,g,t) est l'état du neurone nk,g à l'instant t ; VgL =1 ... est l'opération de disjonction (OU logique) de L éléments binaires représentant l'état à l'instant t (actif ou non) des neurones des clusters distants ; (vgL =1 ...) est l'opération de disjonction complémentée (NON-OU logique) de L éléments binaires L'opération de disjonction complémentée (NON-OU logique) de L éléments binaires permet de déterminer pour un cluster distant k, lorsque ce dernier est actif [autrement dit si le 5 cluster distant contient au moins un neurone actif nkg], si l'un (OU logique) de ses neurones actifs nk,g est connecté (w(ij)(k,g)) au neurone n7,1 à l'instant t, sinon cette disjonction complémentée permet de ne pas tenir compte d'une information qui serait alors non pertinente. Selon un mode de réalisation particulier, ladite étape de calcul comprend une étape de 10 sélection, parmi les neurones dudit cluster courant Ci, du neurone NG dont l'état à l'instant t+1 est 1. Selon un mode de réalisation particulier, ladite étape de calcul comprend une étape de sélection, parmi les neurones dudit cluster courant Ci, du neurone NG dont l'état à l'instant t+2 est 1, en appliquant la fonction suivante : L \\ \ 19(ni't + 1) \j#; I t + 2) = L 19(n' t + 1) A i=1 15 Selon un mode de réalisation particulier, ladite étape d'obtention d'un ensemble A de coefficients d'adjacence en provenance d'au moins un cluster Ci, comprend une pluralité d'étapes d'accès à au moins une structure centralisée de mémorisation de coefficients d'adjacence de neurones desdits neurones desdits clusters dudit réseau de neurones. Selon un mode de réalisation particulier, ladite au moins une structure centralisée de 20 mémorisation de coefficients d'adjacence de neurones se présente sous la forme d'une matrice triangulaire par bloc comprenant un nombre de blocs égal à i i, un bloc comprenant L coefficients d' adj acence. Selon un mode de réalisation particulier, ladite étape d'obtention d'un ensemble E d'état de neurone en provenance d'au moins un cluster Ci, comprend L étapes de 25 transmission simultanée par chaque cluster Ci, d'un seul état d'un seul neurone. Selon un mode de réalisation particulier, ladite étape d'obtention d'un ensemble E d'état de neurone en provenance d'au moins un cluster Ci, comprend C étapes de transmission simultanée, une par cluster Ci, de tous les états du cluster. Selon un mode de réalisation particulier, ladite étape d'obtention d'un ensemble E d'état de neurone en provenance d'au moins un cluster Ci, comprend, au sein dudit cluster courant Ci, une étape de mise en oeuvre d'un registre à décalage d'une taille prédéterminée. Selon un mode de réalisation particulier, ladite taille prédéterminée dudit registre à décalage est égale au nombre d'étapes de transmission simultanée. Selon une caractéristique particulière, ledit au moins un cluster Ci, met en oeuvre au moins un partie de ladite étape de calcul et transmet audit cluster Ci, la somme et/ou la disjonction des coefficients d'adj acence de ses neurones actifs. Selon une implémentation particulière, les différentes étapes des procédés selon l'invention sont mises en oeuvre par un ou plusieurs logiciels ou programmes d'ordinateur, comprenant des instructions logicielles destinées à être exécutées par un processeur de données d'un module relais selon l'invention et étant conçu pour commander l'exécution des différentes étapes des procédés. En conséquence, l'invention vise aussi un programme, susceptible d'être exécuté par un ordinateur ou par un processeur de données, ce programme comportant des instructions pour commander l'exécution des étapes d'un procédé tel que mentionné ci-dessus. Ce programme peut utiliser n'importe quel langage de programmation, et être sous la forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel que dans une forme partiellement compilée, ou dans n'importe quelle autre forme souhaitable. L'invention vise aussi un support d'informations lisible par un processeur de données, et comportant des instructions d'un programme tel que mentionné ci-dessus. Le support d'informations peut être n'importe quelle entité ou dispositif capable de stocker le programme. Par exemple, le support peut comporter un moyen de stockage, tel qu'une ROM, par exemple un CD ROM ou une ROM de circuit microélectronique, ou encore un moyen d'enregistrement magnétique, par exemple une disquette (floppy disc) ou un disque dur. D'autre part, le support d'informations peut être un support transmissible tel qu'un signal électrique ou optique, qui peut être acheminé via un câble électrique ou optique, par radio ou par d'autres moyens. Le programme selon l'invention peut être en particulier téléchargé sur un réseau de type Internet. Alternativement, le support d'informations peut être un circuit intégré dans lequel le programme est incorporé, le circuit étant adapté pour exécuter ou pour être utilisé dans 9 2998697 l'exécution du procédé en question. Selon un mode de réalisation, l'invention est mise en oeuvre au moyen de composants logiciels et/ou matériels. Dans cette optique, le terme "module" peut correspondre dans ce document aussi bien à un composant logiciel, qu'à un composant matériel ou à un ensemble 5 de composants matériels et logiciels. Un composant logiciel correspond à un ou plusieurs programmes d'ordinateur, un ou plusieurs sous-programmes d'un programme, ou de manière plus générale à tout élément d'un programme ou d'un logiciel apte à mettre en oeuvre une fonction ou un ensemble de fonctions, selon ce qui est décrit ci-dessous pour le module concerné. Un tel composant logiciel est 10 exécuté par un processeur de données d'une entité physique (terminal, serveur, passerelle, set- top-box, routeur, etc) et est susceptible d'accéder aux ressources matérielles de cette entité physique (mémoires, supports d'enregistrement, bus de communication, cartes électroniques d'entrées/sorties, interfaces utilisateur, etc). De la même manière, un composant matériel correspond à tout élément d'un ensemble 15 matériel (ou hardware) apte à mettre en oeuvre une fonction ou un ensemble de fonctions, selon ce qui est décrit ci-dessous pour le module concerné. Il peut s'agir d'un composant matériel programmable ou avec processeur intégré pour l'exécution de logiciel, par exemple un circuit intégré, une carte à puce, une carte à mémoire, une carte électronique pour l'exécution d'un micrologiciel (firmware), etc. 20 Les différents modes de réalisation mentionnés ci-dessus sont combinables entre eux pour la mise en oeuvre de l'invention. 4. Figures D'autres caractéristiques et avantages de l'invention apparaîtront plus clairement à la lecture de la description suivante d'un mode de réalisation préférentiel, donné à titre de simple 25 exemple illustratif et non limitatif, et des dessins annexés, parmi lesquels : - la figure 1, déjà introduite, décrit une implémentation proposée d'un réseau de neurone GBNN ; - la figure 2 illustre une matrice de connexion synaptique dans un réseau simplifié de trois clusters comprenant trois neurones chacun ; 30 - la figure 3 représente une liaison entre deux neurones et les coefficients d' adj acence ; - la figure 4 représente une matrice non optimisée dans laquelle l'information est stockée deux fois ; la figure 5 représente une matrice optimisée selon un mode de réalisation de l'invention. la figure 6 représente la mise à jour du réseau de neurones dans une configuration cluster-série ; la figure 7 représente la mise à jour du réseau de neurones dans une configuration neurone-série ; la figure 8 représente la logique normalement nécessaire à l'apprentissage et à la restitution des coefficients d' adj acence dans le cas neurones ou matrice série ; la figure 9 représente un registre à décalage selon l'art antérieur ; la figure 10 représente un anneau de flip-flop selon l'invention ; la figure 11 représente l'information mémorisée dans une matrice non triangularisée et comment retrouver les informations relatives aux neurones de chaque cluster (accès en ligne) ; les figures 12, 13 et 14, représentent comment respectivement trois clusters A, B et C accèdent aux mêmes informations que celle de la figure 11 dans matrice triangularisée ; la figure 15 représente un exemple d'utilisation d'un anneau de flip-flop sur l'une des sous-matrices dans une communication cluster série et un traitement parallèle ; la figure 16 représente la mise en oeuvre deux séries d'anneaux de flip flop pour l'accès en ligne et en colonne à une sous matrice dans la cadre d'une communication cluster série et d'un traitement cluster série ; la figure 17 représente la mise en oeuvre d'anneau de flip-flop diagonaux dans un mode de réalisation particulier de l'invention. 5. Description de modes de réalisation 5.1. Rappel de principe général. Le principe général de l'invention repose, dans au moins un mode de réalisation, sur l'amélioration de la mise en oeuvre du modèle GBNN. Plus particulièrement, la solution pour circuit intégré numérique existante (telle que proposée dans « Architecture and Implementation of an Associative Memory Using Sparse Clustered Networks ») est en réalité une simple transposition du modèle théorique en une architecture matérielle numérique sans identifier les limites d'une telle transposition. Or pour que cette transposition du modèle dans un circuit intégré numérique soit économiquement et technologiquement viable pour un passage à l'échelle, il est nécessaire justement d'identifier les limites de cette transposition et de proposer des solutions permettant de résoudre les problèmes posés. De manière complémentaire, l'identification des limites de la transposition permet également d'identifier les limites du modèle théorique, comme cela est exposé par la suite. Les inventeurs ont réussi à identifier ces limites, ce qui constitue l'une des composantes de l'invention, à part entière. En effet, outres les optimisations apportées, l'une des difficultés a résidé dans l'identification des problèmes posés et de la source de ces problèmes. Plus particulièrement, les inventeurs ont identifié que pour permettre un passage à l'échelle de l'architecture proposée initialement, il était nécessaire de modifier la manière dont les calculs, les communications, la mémorisation sont réalisées mais aussi de modifier le type d'informations échangées. Chacune des modifications apportées à l'architecture d'origine est indépendante des autres modifications et chacune de ces modifications permet de réduire drastiquement les coûts de l'architecture initiale. Bien entendu, lorsque toutes les optimisations sont combinées, la réduction est telle que l'architecture devient technologiquement plausible et économiquement exploitable, dans les conditions actuelles. Plus spécifiquement, comme présenté en détail par la suite, les optimisations portent : - Sur la simplification des calculs à réaliser : les inventeurs ont démontré qu'il était possible de fortement simplifier la complexité des calculs en ne travaillant que sur des informations booléennes à l'aide d'équations logiques tout en conservant le fonctionnement et la logique des réseaux GBNN intacts. - Sur la réduction de la taille de la matrice : les inventeurs ont démontré qu'il était possible de réduire drastiquement la matrice d'adjacence en réduisant sa taille de manière importante tout en conservant sa fonction logique intacte. Plus particulièrement les inventeurs ont identifié une méthode permettant de réduire cette matrice. - Sur la réduction du nombre de connexions : les inventeurs ont démontré qu'il était possible de diminuer le nombre de connexions entre les neurones en modifiant la manière dont les clusters de neurones communiquent entre eux. - Sur la complexité de l'architecture du réseau : les inventeurs ont démontré qu'il était possible de réduire la complexité de l'architecture en modifiant le type d'information échangée entre les clusters et les neurones. Ces deux derniers points permettent de réduire le nombre de connexions sur le circuit. Ainsi, l'invention permet de diviser quasiment par dix le nombre d'unités logiques nécessaires à la réalisation d'un tel circuit. Cette réduction de la surface s'accompagne d'une amélioration des performances temporelles via l'augmentation de la fréquence de fonctionnement d'un tel circuit, mais aussi d'une réduction de la consommation énergétique via la réduction du nombre d'accès aux mémoires, du nombre de communications et de la simplification des calculs. Le principe général de l'invention peut également être mis en oeuvre en modifiant ou en créant un code logiciel exécutable par un ou plusieurs processeurs (CPU, GPU...). Dans ce cas, l'architecture améliorée de l'invention se présente sous la forme d'un code exécutable optimisé. Les bénéfices retirés par ce code exécutable sont cependant les mêmes ou de même nature que ceux d'une mise en oeuvre sur circuit numérique physique. Chacune de ces optimisations donne lieu à un mode de réalisation de l'invention. La combinaison de ces optimisations donnant elle-même lieu à un nouveau mode de réalisation. Par ailleurs, les travaux d'optimisation menés sur cette architecture ont amené les inventeurs à définir une version améliorée du modèle initial en remplaçant les données échangées entre les clusters par de nouvelles données. Il s'agit donc d'une cinquième optimisation de l'architecture initiale. Selon l'invention, dans ce cinquième mode de réalisation dit « Super Neurone », chaque cluster est vu comme un seul neurone à état binaire. Comme cela est présenté par la suite, dans ce cinquième mode de réalisation, un cluster joue alternativement, en fonction du sous message qui lui est transmis, le rôle d'un seul neurone parmi les L neurones qui le composent. En d'autres termes, dans ce cinquième mode de réalisation, le cluster est un neurone reconfigurable (c'est-à-dire que le cluster joue le rôle d'un unique neurone à un instant donné). D'une manière générale, et d'un certain point de vue, l'invention peut être décrite comme un procédé d'obtention d'au moins un neurone gagnant NG. Par rapport à l'art antérieur précédemment décrit, le neurone gagnant est obtenu en appliquant au moins une des optimisations apportées. Ainsi, l'invention, dans au moins un mode de réalisation, se rapporte à un procédé d'obtention d'une donnée représentative d'un identifiant d'un neurone parmi un ensemble de L neurones appelé cluster, L étant un entier naturel de valeur supérieure ou égale à deux, ledit cluster appartenant à un réseau de neurone comprenant C clusters, C étant un entier naturel de valeur supérieure ou égale à deux, chaque neurone dudit réseau de neurone comprenant au moins deux états, Selon l'invention, le procédé comprend, pour au moins un cluster C courant : - une étape d'obtention d'un ensemble E d'état de neurone en provenance d'au moins un cluster Ci, ; - une étape d'obtention d'un ensemble A de coefficients d'adjacence entre au moins un neurone dudit cluster courant C, et au moins un neurone d'un cluster Ci du réseau de neurones ; - une étape de calcul, en fonction dudit ensemble E d'état de neurone, dudit ensemble A de coefficients d'adjacence et en fonction d'au moins un état parmi des états desdits neurones dudit cluster courant C, d'au moins un neurone gagnant NG, délivrant ladite donnée représentative d'un identifiant dudit au moins un neurone gagnant NG Chacune des étapes de ce procédé se rapporte à au moins une des optimisations préalablement présentées. Par exemple, l'étape de calcul est effectuée en réalisant une binarisation des calculs, pour l'obtention du ou des neurones gagnants et/ou pour le WTA. Les étapes d'obtention des ensembles d'états et de coefficients sont effectuées soit de manière locale ou de manière centralisée, en fonction des modes de réalisation décrits ci-après. Dans le mode de réalisation « SuperNeurone », chaque cluster émet la somme ou la disjonction (selon que l'on est en calcul entier ou binaire) des coefficients d'adjacence de ses neurones actifs à la place d'émettre l'état des neurones. C'est-à-dire que l'on obtient bien les ensembles A et E précités, mais au moins une partie du calcul est effectué au niveau du cluster Ci, et l'information transmise est différente de celle transmise dans les autres modes de réalisation. Bien entendu, comme cela est décrit par la suite, il est possible de représenter l'invention directement sou la forme d'un système intégrant des modules qui peuvent prendre en charge les optimisations décrites. Sou une autre forme, l'invention peut également être vue comme un circuit qui intègre directement des composants électroniques pour la mise en oeuvre de l'invention. Dans ce cas les composants sont agencés pour pouvoir réaliser l'apprentissage te la reconnaissance de messages à l'aide des optimisations matérielles proposées (registres à décalage, multiplexeurs, transpositions physiques des équations logiques, etc.). 5.2. Descriptions de modes de réalisation (optimisation successives) 5.2.1. BINARISATION DES CALCULS : VERSION MATRICE CARREE (V1) L'idée de la version 'Matrice' de base est d'optimiser la logique de calcul de l'architecture : la version de base de l'architecture (VO) propose des calculs entiers, la première optimisation réalisée (version V/) consiste à passer en calculs binaires. Ainsi l'architecture proposée (version V/) remplace, dans chaque cluster, la somme entière des produits des états des (C-1).L neurones distants par les (C-1).L coefficients d'adjacence relatifs par une équation logique manipulant des variables booléennes. De plus, l'architecture proposée (version V/) ne nécessite plus, comme c'est le cas dans le modèle théorique, d'effectuer les calculs liés au WTA pour prendre une décision « souple » (i.e. définir dans chaque cluster quels sont les différents neurones actifs si l'on considère que plusieurs neurones peuvent être actifs dans un cluster). Par ailleurs, afin de prendre une décision « dure » (i.e. définir quel est l'unique neurone actif), ce qui n'est pas proposé dans le modèle théorique initial, le WTA est remplacé par une simple équation logique manipulant des variables booléennes. En d'autres termes, quel que soit le type de décision prise, on remplace une sommation d'entier et une comparaison entre les sommes obtenues par une équation logique, bien moins gourmande en capacité de calcul requise. À titre d'illustration des principes de ce mode de réalisation, il a été choisi un modèle de réseau pédagogique (trois clusters de trois neurones chacun), qui permet de comprendre le principe de cette optimisation. On présente, en relation avec la figure 2, la matrice des connexions synaptiques (connexions entre tous les neurones du réseau), sans la diagonale, puisque les neurones d'un même cluster ne sont pas connectés entre eux (le poids de la connexion est donc systématiquement 0, et il n'est pas nécessaire de stocker l'information). Dans la Figure 2, chaque colonne représente les connexions d'un neurone du réseau (il y a LxC = 3x 3=9 neurones au total) vers les L neurones des (C-1) clusters distants (3X2). La valeur du neurone à un certain instant t (sur la figure, a2, qui est entouré en pointillé) apparaît sur la ligne en-dessous du réseau (//). Cette ligne est un mot binaire, qui représente l'état du réseau à l'instant t. A l'instant (t+/), ce mot sera exploité pour calculer un nouvel état, ce qui est représenté par la colonne à gauche de la matrice (Col_). Le processus d'apprentissage (mémorisation des coefficients dans la matrice d'adjacence, c'est-à-dire dans le modèle GBNN de l'existence ou non d'une connexion entre deux neurones) n'est pas détaillé dans ce mode de réalisation, car il est sensiblement identique à celui de la version VO. La validité, du point de vue du modèle initial, du passage d'une donnée de type « entier » à une donnée de type « binaire » est démontrée de la manière suivante : le calcul de la valeur d'un neurone se fait en fonction des valeurs des autres neurones, et des connexions entre ces neurones. On peut réduire l'équation initiale à une équation logique plus simple à mettre en oeuvre : l'idée des inventeurs est de ne plus travailler qu'avec des opérateurs logiques et des valeurs binaires (dans la version VO, la valeur d'un neurone est d'abord un entier, puis le cluster choisit celui de ses neurones qui a la plus grande valeur, c'est le principe du WTA). Le passage d'un calcul d'entiers à un calcul de booléens se fait en constatant que dans un cluster, au terme du WTA, un seul neurone a été choisi (lorsque l'on est dans un cas de prise de décision « dure », voir par la suite). Par conséquent, lors de l'émission de ses valeurs, ce cluster ne transmettra qu'un seul bit à 1, et tous les autres à O. Lorsque l'on se place au niveau d'un cluster qui reçoit les informations des clusters distants, dans la version VO, chaque neurone doit faire la somme de ses entrées pondérées par la valeur du coefficient de la matrice d'adjacence (soit des 0 ou des 1). Cependant, les inventeurs ont trouvé qu'il n'est pas utile de faire une somme entière : il suffit d'un simple ET logique sur la valeur transmise par tous les clusters distants. Si le résultat booléen de cette opération est 1, alors cela signifie que le neurone courant est sur la clique sur laquelle sont les neurones distants. En effet, ce résultat, en valeur entière, donnerait (C-1). À titre d'exemple, voici l'équation simplifiée de mise à jour (instant t+/) du premier neurone (a/) du premier cluster (A) dans le cas d'un réseau de trois clusters de trois neurones chacun : cç 0 =((4(t) .)12+b2(t)3424,2+b30312)±1110-Fb2(t)+1(t)).((c,(t).wc4,q+c2(t)31;c4,c2 ± C3 (t) .11;44 )-Fg(t)-Fc2(t)+c3(t)) Le neurone al du cluster A sera actif à l'instant t+1 si à l'instant t : - le neurone b1 du cluster B est actif et qu'il est connecté au neurone al i.e. b1 ET watt,' valent 1,ou - le neurone b2 du cluster B est actif et qu'il est connecté au neurone al i.e. b2 ET wal,b2 valent 1,ou - le neurone b3 du cluster B est actif et qu'il est connecté au neurone al i.e. b3 ET Watb3 valent 1,ou - les trois neurones b1, b2 et b3 sont inactifs i.e. valent 0 et le neurone cl du cluster C est actif et qu'il est connecté au neurone al i.e. c1 ET Wal,bl valent 1,ou le neurone c2 du cluster C est actif et qu'il est connecté au neurone al i.e. c2 ET Wal,c2 valent 1,ou le neurone c3 du cluster C est actif et qu'il est connecté au neurone al i.e. c3 ET Wal,c3 valent 1,ou les trois neurones cl, c2 et c3 sont inactifs i.e. valent O. Autrement dit, un neurone sera potentiellement actif s'il est connecté à au moins un des neurones actifs dans chacun des clusters ayant des neurones actifs (i.e. qu'il appartient à la clique courante). Une condition pour que cette équation soit valide est d'ignorer les clusters éteints (i.e. ne contenants pas de neurones actifs) : par exemple si aucun neurone du cluster B n'est actif (c'est-à-dire que le sous message du cluster B est effacé), alors le ET logique que vont faire les neurones des autres clusters ne doit pas être faussé par les valeurs de B. En ajoutant un NOR sur tous les neurones de chaque cluster, on obtient le comportement désiré : un cluster ne contenant pas de neurones actifs reste transparent et ne vient donc pas interférer dans le résultat. Concrètement, l'adjonction du NOR sur tous les neurones permet de conserver la propriété du modèle initial selon laquelle la reconnaissance est possible même avec un message partiel. L'équation précédente peut être généralisée de la manière suivante pour C cluster et N neurones en utilisant les notations fournies préalablement (et les notations générales de l'algèbre de Boole) : // L \\ t 1) v,(nk,g, t) A w(ii)(k,g) V19 (nk,g , t) k=1,1c#i \g=1 \g=1 La valeur (u(ni t+1)) non nulle à l'instant t+1 d'un neurone courant n7j, (i étant l'identifiant du cluster et j l'identifiant du neurone dans ce cluster i) est le résultat d'une conjonction (ET logique, Ak=1,k#i ( - - .)) de résultats non nuls fournis par les équations logiques appliquées à tous les autres clusters du réseau de neurones. Ces équations logiques permettent de déterminer pour chaque cluster distant k, lorsque ce dernier est actif (NOR logique sur les u(nk,g, t)) [autrement dit si le cluster distant contient au moins un neurone actif nkg] , si l'un (OU logique) de ses neurones actifs nk,g est connecté (w(ij)(k,g)) au neurone à l'instant t. Afin de prendre une décision « souple » (c'est-à-dire de définir dans chaque cluster quels sont les différents neurones actifs lorsque l'on considère que plusieurs neurones peuvent être actifs dans un cluster), aucun calcul supplémentaire n'est nécessaire par rapport à celui précédent. Toutefois, afin de prendre une décision « dure » (c'est-à-dire de définir quel est l'unique neurone actif lorsque l'on considère qu'un unique neurone peut être actif dans un cluster), le WTA est remplacé par l'équation logique suivante : L V19(nj, t + 1) j*i t + 2) = 19(n' t + 1) A De plus, à la différence du modèle original du GBNN, la réalisation de l'ensemble des calculs en binaire permet intrinsèquement au réseau de ne pas produire de faux positifs et de ne pas fournir des solutions erronées comme décrit dans la référence [2]. 5.2.2. OPTIMISATION DE LA MÉMOIRE : VERSION MATRICE TRIANGLE (V1.0) Dans la version du GBNN telle que décrite originellement un message peut se représenter par un graphe non orienté dont les noeuds sont des mots du message. Les architectes de la version VO se sont limités à cette mise en oeuvre qui est strictement identique au modèle. L'existence des connexions entre les mots i.e. l'existence d'une arrête entre deux noeuds du graphe est donc stockée dans une matrice symétrique. Toutefois, une redondance d'information dans cette matrice symétrique est présente. En effet, l'existence ou l'inexistence d'une arrête connectant deux noeuds x et y du graphe est mémorisée à l'aide de deux éléments mémorisant : un premier élément mémorisant est associé au noeud x et stocke à l'aide d'un bit l'existence ou l'inexistence d'une arrête avec le noeud y ; un deuxième élément mémorisant est associé au noeud y et stocke à l'aide d'un bit l'existence ou l'inexistence d'une arrête avec le noeud x. Ainsi, dans une telle matrice, chaque ligne représente les connections entre un neurone et tous les autres neurones de tous les autres clusters, et chaque cluster est représenté par un groupe de lignes (une pour chacun de ses neurones). Cette redondance n'est pas négligeable. Or les inventeurs ont trouvé qu'il était possible, sans perdre d'information, de diviser par deux le nombre d'éléments mémorisant nécessaires au stockage des coefficients. La logique de calcul n'est pas affectée, puisqu'on ne diminue pas le nombre de neurones (sommets du graphe). Ceci est illustré en relation avec les figures 4, 5 et 6. Dans cette version, pour représenter les interconnections entre deux clusters Ci et C2, les coefficients d' adj acence (c'est-à-dire les connexions) des neurones de C'1 avec ceux de C2 se trouvent en lisant la sous matrice correspondante en ligne ; les coefficients d'adjacence des neurones de C2 avec ceux de C'1 se trouvent en lisant cette même sous matrice correspondante en colonne. La figure 3 illustre deux sommets (c'est-à-dire deux neurones), v(i ',j) et v(i,j) d'un graphe non orienté. L'arête entre ces deux neurones est 142((i j '), (i,j)) : il s'agit du coefficient d'adjacence. La version non optimisée de la mémoire se contente de stocker deux fois la même information, comme illustré en figure 4. Dans cette figure, on présente une matrice non optimisée des coefficients d'adjacence, sur un réseau de trois clusters de trois neurones chacun. Les cellules a et p stockent le même poids à deux endroits différents. Ce type de matrice est mis en oeuvre dans la version VO. Par exemple, le a représente la connexion entre le deuxième neurone du l' cluster et le l' neurone du troisième cluster. Les inventeurs ont eu l'idée de modifier cette matrice pour diminuer les ressources attribuées à la mémoire. L'optimisation consiste à ne stocker le coefficient d'adjacence de deux neurones qu'à un seul endroit. Ainsi, on passe d'une matrice carré à une matrice triangulaire par bloc. Bien entendu, l'architecture générale est modifiée: il faut en effet tirer deux pistes (ou réaliser deux accès) vers cet unique point mémoire pour alimenter les opérateurs des deux neurones concernés, afin que chacun de ces deux neurones puisse avoir accès à l'information. Toutefois, puisque ces pistes existaient déjà dans la matrice carré, il ne résulte de cette optimisation aucune augmentation du nombre de pistes ou de signaux (ou de nombre d'accès dans le cadre d'une mise en oeuvre logicielle). Ainsi, aucune augmentation n'est engendrée ce qui est un avantage. La figure 5 illustre la mise à plat de la matrice d'adjacence, sur un réseau de trois clusters de trois neurones. Les informations redondantes concernant les connexions entre neurones ont été supprimées (cellules en bas à gauche). On dispose alors d'une matrice triangulaire par bloc. Les blocs de la diagonale représentent la connexion de chaque Cluster avec lui-même et sont par voie de conséquence à O. On a donc un nombre de blocs égal à Ei111 i. Pour trois clusters, comme sur la figure 4 on obtient donc une matrice triangulaire par bloc comprenant trois blocs. Pour quatre clusters, on obtient six blocs. Pour cinq clusters, on obtient dix blocs, etc. Chaque bloc comprend un nombre L de coefficients d' adj acence. Ainsi, tout en conservant inchangé le nombre de pistes ou d'accès, l'optimisation réalisée est importante en terme de points mémoire. En effet, le nombre de bits de la matrice est de l'ordre 1,2C2, précisément L2*C*(C-1), dans la version VO (une matrice de LC*LC bits, 19 2998697 dont on a supprimé la diagonale puisque les neurones d'un même cluster ne peuvent être connectés entre eux). Une mise à plat de la matrice (suppression du triangle inférieur) permet d'aboutir à 0.5*L2*C*(C-1), ce qui représente donc une économie conséquente, puisqu'on est sur l'ordre de grandeur majorant de l'architecture VO. Pour pouvoir accéder aux informations 5 stockées dans cette matrice triangulaire, on effectue une modification du sens de lecture de certaines données. En effet, les données qui étaient stockées dans des points mémoires supprimés par la triangularisation de la matrice étaient préalablement lues en lignes. Ils doivent donc être désormais lus en colonnes. Plus particulièrement, l'accès horizontal AccH aux coefficients d'adjacence a et p de la figure 4 est effectué, après application de 10 l'optimisation de triangularisation (i.e. suppression de la partie inférieure gauche de la matrice, tel que décrit en figure 5 par un accès vertical AccV. Les détails techniques de ces accès sont fournis par la suite. Par ailleurs, on obtient de manière inattendue un effet corolaire important : la ressource d'apprentissage, c'est-à-dire la logique qui permet de donner leur valeur aux 15 différents coefficients de la matrice est également réduite de moitié : en effet, puisque le nombre de coefficients est divisé par deux, la logique qui permet d'écrire ces coefficients est réduite d'autant. Ainsi, par rapport à la version VO, les inventeurs sont donc parvenus non seulement à réduire les ressources de calcul, mais aussi les ressources de mémoire et d'apprentissage : on 20 gagne par cette optimisation environ 50% de la surface. 5.2.3. SÉRIALISATION DES COMMUNICATIONS : VERSIONS MATRICE SERIE Dans un mode de réalisation de l'invention, plutôt que de tirer une piste entre chaque couple de neurones distants (pour faire en sorte qu'ils se transmettent l'information), on réalise une sérialisation du transfert de données entre cluster. En effet, puisque les clusters 25 s'échangent des informations lors de la restitution (et sur certains modèles, pendant l'apprentissage), la réduction des connexions entre clusters passe par la sérialisation des données : si un cluster doit transmettre L valeurs à tous les autres clusters, on a initialement L2*C*(C-1) connexions dans le réseau d'interconnexion entre clusters (par la suite, le terme RIC est aussi employé pour désigner le « Réseau d'Interconnexion entre Clusters »). La 30 sérialisation consiste à mettre en oeuvre plusieurs étapes pour permettre un transfert des données les unes à la suite des autres. En permettant à un cluster de répartir entre tous ses neurones un bit qu'il reçoit, on passe à L *C*(C-1) pistes, ce qui est une première optimisation. En sérialisant les transferts, on réduit le nombre de pistes du réseau d'interconnexion entre clusters, et on mutualise les ressources de calcul utilisées, puisque les neurones (ou les clusters) utilisent ces ressources à tour de rôle (i.e. dès qu'ils reçoivent des informations les concernant). Les inventeurs ont identifié deux axes de sérialisation : ^ Sérialisation par clusters : à chaque itération, un et un seul cluster envoie sur le réseau d'interconnexion (RIC) la valeur de tous ses neurones (le RIC comprend donc L pistes). ^ Sérialisation par neurones : à chaque itération, chaque cluster transmet sur le réseau la valeur d'un et un seul de ses neurones (le RIC comprend donc C pistes). La sérialisation implique une augmentation de la latence, respectivement d'un facteur L ou C. La sérialisation implique également l'introduction d'un séquenceur dans les architectures ainsi que d'une circuiterie de sélection et d'aiguillage. Le séquenceur est un automate (ou machine à états finis) comportant L ou C, selon qu'on sérialise par neurones ou par clusters. La circuiterie de sélection et d'aiguillage requiert l'utilisation d'une série de multiplexeurs (classiquement organisé en arbre) permettant de sélectionner le cas échéant un cluster ou un neurone. De plus, pour piloter ces multiplexeurs, un vecteur d'adressage (obtenu par transcodage du registre d'état du séquenceur) serait nécessaire et augmenterait d'autant le coût d'une telle solution. Le surcoût de l'ajout de tels multiplexeurs et de la logique associée est tel (cf Figure 9) que l'optimisation proposée pourrait, au moins dans certains cas, perdre son intérêt (gain nul ou perte). Cependant, les inventeurs ont contourné ce problème de séquençage en utilisant une technique astucieuse : des registres à décalage circulaire particuliers (également appelés anneau de flip-flop) peuvent ainsi être exploités. Ainsi, on mémorise directement l'information voulue dans le registre à décalage (cf Figure 11), puis c'est la propriété même de « décalage » que l'on exploite pour séquencer la transmission d'information sur le réseau d'interconnexion. La taille du registre à décalage employé est, dans un mode de réalisation particulier, égale au nombre d'étapes de transmission simultanée d'information (C ou L) comme cela est explicité par la suite. On présente par la suite les deux axes de sérialisation identifiés qui permettent d'optimiser l'architecture de base. 5.2.3.1. SÉRIALISATION DES CLUSTERS : VERSION MATRICE-CLUSTERS- SERIE (V1.1) Dans ce mode de réalisation de l'invention, la mise à jour du réseau i.e. une itération de décodage prend C étapes (soit une étape par cluster du réseau de neurone). Comme cela est illustré en figure 6 pour un réseau de trois clusters de trois neurones chacun, à chaque étape, un et un seul cluster transmet aux autres la valeur de tous ses neurones (il y a donc L pistes sur le bus du réseau d'interconnexion entre clusters). L'équation logique décrite dans la version V1 s'applique toujours, mais, en fonction des modes de réalisation, on stocke des résultats intermédiaires (le temps de recevoir l'intégralité des données). Voici un exemple de mise à jour du l' neurone du l' cluster, s'il y a C clusters dans le réseau (il y a C étapes de mise à jour) : 60 :(60) Cependant, les inventeurs ont eu l'idée d'une optimisation qui permet de tirer profit de toutes les versions séries de l'architecture : l'utilisation de registres à décalage pour le stockage des points mémoire. Cette utilisation est décrite par la suite. 5.2.3.2. SÉRIALISATION DES NEURONES : VERSION MATRICE-NEURONES-SERIE (V1 .2) Dans ce mode de réalisation, la mise à jour du réseau prend L étapes, une étape par neurone. À chaque étape, chaque cluster transmet sur le réseau d'interconnexion (RIC) la valeur d'un et un seul de ses neurones. Cette valeur est récupérée par tous les neurones des autres clusters. Ainsi le RIC comprend C pistes, mais chaque cluster ne reçoit que (C-1) pistes (un cluster ne se parle pas à lui-même). Le problème de transparence rencontré dans la version V1.1 ne se pose donc pas. Le principe est décrit en relation avec la figure 7. Comme pour la version V1.1, l'équation de fonctionnement est identique à la version matrice (V1), et la sérialisation permet de mutualiser les ressources de calcul. Cependant, les inventeurs ont aussi constaté que cette mise en oeuvre, bien qu'intéressante du point de vue logique, était sous optimale. En effet, on constate en chiffrant cette architecture, que les gains par rapport à la version matrice non sérialisée (V1.0), sont peu importants : la raison en est que comme précédemment, une part non négligeable du gain réalisé en termes de ressources de calcul (calcul de la valeur des neurones et WTA au niveau du cluster) est compensé par une perte induite par l'utilisation de ressources d'aiguillage. 5.2.3.3. MISE EN OEUVRE DE REGISTRES À DÉCALAGE (PRINCIPE DE L'ANNEAU DE FLIP-FLOP) Supposons que l'on ait stocké quatre coefficients d'adjacence dans la matrice d'adjacence, et que l'on désire y accéder séquentiellement (puisque l'architecture est sérialisée). La figure 9 représente la logique nécessaire à l'apprentissage et à la restitution de ces coefficients d'adjacence. L'adresse (a0, al) représente l'état du séquenceur, qui est un mot binaire codé en One- Hot (mot contenant au maximum un seul bit à 1). On constate que pour égrener les quatre poids (quatre flip-flop), on doit mettre en oeuvre une logique de multiplexage relativement lourde (pour L poids, il faut (L-1) MUX2: 1). Les inventeurs ont trouvé que l'on pouvait réduire considérablement les ressources en créant un anneau de flip-flop : en mode apprentissage, ce registre à décalage se remplit avec l'entrée (data In) présentée, et en restitution, il se recopie dans lui-même. Il suffit donc pour réaliser cet aiguillage d'un multiplexeur 2-vers-1, piloté par le bit learn (figure 10). Cet anneau se distingue des registres à décalage classiques (cf figure 9) par les adaptations architecturales proposées par les inventeurs pour répondre aux besoins spécifiques de l'invention. Le gain est considérable, puisque les inventeurs ont ainsi pu supprimer l'ensemble de la logique d'aiguillage, et que l'on réduit d'un ordre de grandeur la logique d'apprentissage. Ce fonctionnement est valide pour tout type de sérialisation (par cluster, par neurone, ou les deux à la fois). On chute ainsi d'un ordre de grandeur : les ressources nécessaires à l'aiguillage et à l'apprentissage passent à un ordre L2C ou LC2, selon qu'on sérialise les clusters ou les neurones. La barrière du L2C2 est franchie au niveau des ressources de calcul : ainsi par l'utilisation de l'anneau de flip-flop, selon l'invention, seule la quantité de mémoire nécessaire reste d'un ordre de grandeur L2C2 toutes les autres ressources sont d'un ordre de grandeur (L ou C) en-dessous, et deviennent donc négligeables par rapport à la mémoire lors d'un chiffrage global. Ainsi, lorsque l'on remplace la logique d'aiguillage par ce registre à décalage, on constate que les versions clusters-série et neurones-série sont équivalentes en termes de surface par rapport aux architectures précédentes. Ceci tient au fait que la chute des ressources hors-mémoire sous la barre des L2C2 rend ces ressources négligeables par rapport à la mémoire elle-même, par conséquent les ressources occupées par la mémoire forment l'essentiel des ressources de l'architecture. Les inventeurs ont donc quasiment éliminé les ressources nécessaires à l'apprentissage et au calcul. 5.2.4. COMBINAISONS DES OPTIMISATIONS SUR LA MÉMOIRE ET LA COMMUNICATION Les optimisations concernant les calculs (i.e. la binarisation) peuvent être combinées sans aucune modification avec les optimisations visant la mémoire (triangularisation) ou la sérialisation des communications. Par contre, certaines combinaisons des optimisations visant la mémoire et des optimisations visant la communication requièrent des solutions architecturales dédiées. Soit un réseau de neurones de 3 clusters et 3 neurones chacun. La figure 11 représente l'information mémorisée dans une matrice non triangularisée et comment retrouver les informations relatives aux neurones de chaque cluster (accès en ligne). Les figures 13, 14 et 15, représentent comment respectivement les trois clusters A, B et C vont accéder aux mêmes informations dans matrice triangularisée selon l'approche proposée précédemment : le cluster A accède toujours à ses informations en ligne (figure 12) ; le cluster B accède à ses informations en colonne (pour les informations mutualisées avec celles du cluster A) et en ligne pour les autres (figure 12) et enfin, les informations relatives au cluster C étant partagées avec les cluster A et B, le cluster C accèdera à ses données le colonne (figure 14). a) Communication cluster série et traitement parallèle : À un instant t, un unique cluster (émetteur) diffuse l'état de tous ses neurones en parallèle et tous les autres clusters (receveurs) réceptionnent ces informations. Ceux-ci accèdent à une matrice d'adjacence en parallèle pour récupérer leurs coefficients et réaliser localement leurs traitements. Ce mode de communication combine sans problème la triangularisation de la matrice et l'utilisation de l'anneau de flip-flop (cf figure 15 pour un exemple d'utilisation d'un anneau de flip-flop sur l'une des sous-matrices), puisqu'à tout instant chaque cluster receveur n'accède qu'aux coefficients d'adjacence de ses propres neurones avec les neurones du cluster émetteur (partage de la matrice d' adj acence commune à tous les clusters distincts). Il n'y aura donc, dans ce mode de réalisation, aucun conflit d'accès aux coefficients d' adj acence de la matrice triangulaire. b) Communication cluster série et traitement cluster série : À un instant t, un unique cluster diffuse l'état de tous ses neurones en parallèle et tous les autres clusters (receveurs) réceptionnent ces informations. Ceux-ci accèdent alors à la matrice d'adjacence en série (les uns après les autres) pour récupérer leurs coefficients et réaliser localement leurs traitements. L'accès en série à la matrice permet de mutualiser les ressources de calculs entre les clusters. Si la matrice est optimisée par triangularisation, alors l'ajout de ressources d'aiguillage spécifique est nécessaire. En effet, dans ce cas l'utilisation d'un anneau de flip-flop comme décrit précédemment ne peut s'appliquer simplement (comme illustré en figure 15), les matrices d'adjacence étant partagées entre clusters, et chaque cluster devant implémenter un anneau de flip-flop entre toutes ses matrices d'adjacence, il y a là un conflit car les permutations requises par un cluster Ci faussent celles requises par le cluster Cj. De fait, selon l'invention, ceci revient à implémenter cet anneau de flip-flop à la fois sur les lignes et les colonnes de la matrice d'adjacence (cf figure 16 pour l'illustration de ce principe). Ainsi, les lignes ou les colonnes ne sont pas accédées simultanément. Deux anneaux sont nécessaires : un premier anneau est utilisé pour réaliser un accès en ligne et un deuxième anneau est utilisé pour réaliser un accès en colonne, comme illustré en figure 16. c) Communication neurone série et traitement parallèle : À un instant t, tous les clusters diffusent l'état d'un et d'un seul de leurs neurones en parallèle à tous les autres clusters. Les clusters accèdent donc à leur matrice d'adjacence en parallèle pour récupérer leurs coefficients et réaliser localement leurs traitements. Toutefois, dans le cadre de la triangularisation, puisque deux clusters vont accéder en même temps à leur matrice d'adjacence partagée, et qu'ils ne doivent pas la parcourir dans le même sens l'utilisation d'un anneau de flip-flop pour sérialiser les transferts d'informations n'est pas triviale. En effet, dans ce cas cela supposerait qu'il faille faire tourner l'anneau de flip-flop à la fois sur les lignes (accès requis par un cluster Ci) et sur les colonnes (accès requis par un cluster C1) de la matrice d'adjacence. De fait, selon l'invention, ceci revient à implémenter cet anneau de flip-flop non pas sur les lignes et les colonnes de la matrice d'adjacence, mais sur les diagonales (cf figure 17) : Soit Mc,, ci une matrice d'adjacence entre deux clusters Ci, Cj (ou un bloc de matrice d'adjacence) contenant les coefficients d'adjacences w((kg)(k',g)) que l'on notera w(i, j), la permutation réalisée par les anneaux de flip-flop se décrit alors : w(i, j) = w((i+l)modL, (j+1)modL); Cette permutation offre l'immense avantage de permettre aux clusters des accès en lecture à leurs coefficients toujours dans la même case mémoire, il n'est donc pas requis d'ajouter des ressources d'aiguillage supplémentaires et l'on réduit donc avantageusement la taille et/ou le nombre d'accès de l'ensemble. Par ailleurs, on peut également se contenter d'un seul anneau de flip-flop quel que soit le type d'accès, en ligne ou en colonne et on n'est donc pas obligé de dédoubler les anneaux de flip flop. d) Communication neurone série et traitement cluster série : À un instant t, tous les clusters diffusent l'état d'un et d'un seul de leurs neurones en parallèle à tous les autres clusters. Ceux-ci accèdent à une matrice d'adjacence en série pour récupérer leurs coefficients et réaliser localement leurs traitements. Dans le cadre de la triangularisation, deux clusters n'accéderont jamais en même temps à leur matrice d'adjacence partagée, donc même s'ils ne la parcourent pas dans le même sens, il n'y a pas de conflit particulier à gérer à condition d'utiliser deux anneaux de flip-flop (permutations sur les lignes pour la première matrice, et puis permutations sur les colonnes pour la seconde). On remarquera qu'il est également possible d'utiliser des anneaux de flip-flop en diagonale pour diminuer le coût de cette solution architecturale. Toute autre combinaison concernant les modes de communication ou de partage des calculs se réalise via tout ou partie des quatre grands modes de réalisation proposés ci-dessus. Ils reposent tous sur l'utilisation simple, combinée ou en diagonale d'anneaux de flip-flop. 5.2.5. Architecture de la version SuperNeurone (version V2) Dans ce mode de réalisation, les inventeurs ont modifié l'interprétation du modèle théorique GBNN. Le principe de ce mode de réalisation est décrit en relation avec la figure 10. Dans un réseau GBNN chaque neurone effectue localement un ensemble de calculs à partir d'informations qui lui sont transmises (i.e. tous les états des neurones distants) et d'informations stockées localement (les états des connexions dans la matrice d'adjacence locale). Le principe proposé ici consiste à ne transmettre, et par voie de conséquence à n'utiliser dans les calculs locaux, que les informations relatives aux neurones n,,, étant dans un état actif à l'instant t (i.e. une valeur u(nij, t) non nulle) e appartenant à un cluster connu. À la différence des réseaux de neurones GBNN classiques, les informations transmises par les clusters distants ne sont plus les valeurs de leurs neurones 19(nk,g, t) mais les coefficients de leur matrice d'adjacence w(imk,g) dans l'équation généralisée (partie 5.2.1). En effet, les états des connexions sont mémorisés dans la mémoire d'adjacence du cluster distant et dans la mémoire d'adjacence du cluster local. Ainsi, lorsqu'un cluster réceptionne une séquence de valeurs w(ii)(k,g) d'un cluster distant, il doit l'interpréter comme une séquence valeurs binaires indiquant si le neurone du(des) cluster(s) distant(s) est(sont) connecté(s) ou non avec ces neurones locaux. De fait, le cluster local n'a plus qu'à réaliser le calcul permettant de savoir quels neurones locaux sont actifs (i.e. le WTA). Afin d'apporter différents niveaux d'optimisation, la version « superNeurone » peut se 30 décliner en deux modes de fonctionnement dans le modèle GBNN : 1- Modèle à décision dure : Un cluster connu à l'instant t possède exactement un neurone actif. Autrement dit, un cluster inconnu à l'instant t possède soit zéro neurone actif, soit au moins deux neurones actifs (dans le cas où le WTA ne puisse faire de choix entre ces au moins deux neurones). 2- Modèle à décision souple : Dans ce mode, un cluster connu à l'instant t possède au moins un neurone actif Dans le modèle à décision dure, les informations transmises sont les valeurs des coefficients de la matrice d'adjacence pour l'unique neurone actif (sinon aucune valeur ou des valeurs nulles sont transmises). Dans le modèle à décision souple, les informations reçues par les clusters locaux sont les sommes ou les disjonctions (selon que l'on est en calcul entier ou binaire) partielles ou non (selon le mode de réalisation) des produits ou conjonctions entre la valeur d'un neurone distant actif et son coefficient de la matrice d'adjacence lui correspondant. En effet, ces calculs peuvent être réalisés pour chaque neurone local dans les clusters distants puisque les états des connexions sont mémorisés dans la mémoire d'adjacence du cluster distant et la mémoire d'adjacence du cluster local. Ainsi, le cluster distant ne transmettra pas les valeurs w(ii)(k,g) d'un neurone actif mais l'accumulation des valeurs w(imk,g) de tous ses neurones actifs. De ce fait, seul le résultat partiel d'un neurone local calculé dans un cluster distant est transmis audit neurone. Soit l'exemple donné en partie 5.2.1, si l'on considère que le cluster B est effacé, et que le WTA a déterminé que les neurones b1 et b2 sont actifs, alors dans le modèle à décision souple, le cluster distant B transmettra au cluster local A le résultat de la somme partielle suivante : -Fiva ou de façon équivalente ((bi(t).iva +b,(t)e,,)) ou de façon équivalente ((bi(t)wai,b, +b,(t).ivb2)) selon le mode de réalisation. Le WTA peut ensuite être réalisé quel que soit le mode de décision par le cluster local en utilisant ces résultats de calculs distants partiels reçus pour déterminer quels sont les neurones locaux actifs. Ainsi, dans le cas d'un superNeurone, nous ne sommes plus en présence de neurones qui s'échangent leurs états, mais en présence de clusters qui transmettent aux neurones une information leur indiquant s'ils sont ou non connectés à leur(s) neurone(s) actif(s). Naturellement, les optimisations précédemment évoquées dans ce document peuvent se combiner avec ce mode de fonctionnement original. Ainsi, les inventeurs ont également tiré parti de la possibilité de sérialiser les transferts d'informations entre cluster pour simplifier l'architecture de calcul du WTA. En effet, puisque le cluster local reçoit les coefficients d'adjacence des neurones actifs des autres clusters, le transfert de ces informations en série pour chacun de ses neurones (sérialisation) permet de remplacer le calcul simultané des scores de tous les neurones, par un calcul à la volée du score de chaque neurone local concerné. Cette modification permet ainsi une réduction drastique des ressources de calcul nécessaires pour le WTA. 1 REVENDICATIONS1. Procédé d'obtention, au sein d'un système, d'une donnée représentative d'un identifiant d'un neurone parmi un ensemble de L neurones appelé cluster, L étant un entier naturel de valeur supérieure ou égale à deux, ledit cluster appartenant à un réseau de neurone comprenant C clusters, C étant un entier naturel de valeur supérieure ou égale à deux, chaque neurone dudit réseau de neurone comprenant au moins deux états, procédé caractérisé en ce qu'il comprend, pour au moins un cluster Ci courant : une étape d'obtention d'un ensemble E d'état de neurone en provenance d'au moins un cluster Ci, j#i ; une étape d'obtention d'un ensemble A de coefficients d'adjacence entre au moins un neurone dudit cluster courant Ch et au moins un neurone d'un cluster Ci du réseau de neurones jei ; une étape de calcul, en fonction dudit ensemble E d'état de neurone, dudit ensemble A de coefficients d'adjacence et en fonction d'au moins un état parmi des états desdits neurones dudit cluster courant Ci, d'au moins un neurone gagnant NG, délivrant ladite donnée représentative d'un identifiant dudit au moins un neurone gagnant NG. 2. Procédé selon la revendication 1, caractérisé en ce que ladite étape de calcul comprend, pour un neurone courant tz.:.; dudit cluster courant Ci, l'application de la formule suivante : t 1) = ) dans laquelle : t3(n.;.i,t -1- I) est l'état du neurone 11,;,i à l'instant t+1 ; AL ) est une conjonction (ET logique) de C-1 éléments binaires non nuls fournis par les équations logiques appliquées à tous les autres clusters du réseau de neurones ; W(i.,..xicsg> est le coefficient d'adjacence de entre le neurone 12;,.e. et le neurone ;a(reke, ) est l'état du neurone like à l'instant t ; 11,11;_: est l'opération de disjonction (OU logique) de L éléments binaires représentant l'état à l'instant t (actif ou non) des neurones des clusters distants ; ...) est l'opération de disjonction complémentée (NON-OU logique) de L éléments binaires. 3. Procédé selon la revendication 2, caractérisé en ce que ladite étape de calcul comprend une étape de sélection, parmi les neurones dudit cluster courant Ci, du neurone NG dont l'état à l'instant t+1 est 1. 4. Procédé selon la revendication 2, caractérisé en ce que ladite étape de calcul comprend une étape de sélection, parmi les neurones dudit cluster courant Ci, du neurone NG dont l'état à l'instant t+2 est 1, en appliquant la fonction suivante : 15 t + 2 (... -a., r = 1) A. 15*(7a,, î + 1) ... -1 , I IL: 5. Procédé selon la revendication 1, caractérisé en ce que ladite étape d'obtention d'un ensemble A de coefficients d'adjacence en provenance d'au moins un cluster Ci, #i comprend une pluralité d'étapes d'accès à au moins une structure centralisée de 20 mémorisation de coefficients d'adjacence de neurones desdits neurones desdits clusters dudit réseau de neurones. 6. Procédé selon la revendication 5, caractérisé en ce que ladite au moins une structure centralisée de mémorisation de coefficients d'adjacence de neurones se présente sous 25 la forme d'une matrice triangulaire par bloc comprenant un nombre de blocs égal à e:71i, un bloc comprenant L coefficients d'adjacence. 7. Procédé selon la revendication 1, caractérisé en ce que ladite étape d'obtention d'un ensemble E d'état de neurone en provenance d'au moins un cluster Ci, jei comprend L - 3 2998697 étapes de transmission simultanée par chaque cluster Ci, jei, d'un seul état d'un seul neurone. 8. Procédé selon la revendication 1, caractérisé en ce que ladite étape d'obtention d'un 5 ensemble E d'état de neurone en provenance d'au moins un cluster Ci, jei comprend C étapes de transmission simultanée, une par cluster Ci, jei, de tous les états du cluster. 9. Procédé selon la revendication 7 ou 8, caractérisé en ce que ladite étape d'obtention d'un ensemble E d'état de neurone en provenance d'au moins un cluster Ci, j# 10 comprend, au sein dudit cluster courant Ci, une étape de mise en oeuvre d'un registre à décalage d'une taille prédéterminée. 10. Procédé selon la revendication 1, caractérisé en ce que ledit au moins un cluster Ci, met en oeuvre au moins un partie de ladite étape de calcul et transmet audit cluster Ci, la somme et/ou la disjonction des coefficients d'adjacence de ses neurones actifs.