Brevet FR3045892A1 (20170623)
REVENDICATIONS1. Circuit neuronal apte à réaliser une somme pondérée (11) de signaux numérisés d'entrée (12) et à appliquer une fonction d'activation (14) à ladite 5 somme pondérée pour produire en sortie (40) un signal d'activation numérisé, ledit circuit comportant au moins : - un multiplieur (31) multipliant chaque signal d'entrée (xi à xn) avec une valeur de poids (1421, à wnj ) ; - un accumulateur (34) accumulant les résultats dudit multiplieur pour 10 produire ladite somme pondérée et ; - une unité d'activation (38) effectuant ladite fonction d'activation (14) ; caractérisé en ce que ladite unité d'activation comporte au moins une unité de décalage (42) apte à approximer une fonction d'activation non linéaire, le résultat de ladite fonction d'activation approximée étant obtenu par un ou 15 plusieurs décalages arithmétiques appliqués sur ladite somme pondérée.\n<CLM>\1\tCircuit neuronal selon la revendication 1, caractérisé en ce que l'unité de d'activation (38) comporte une unité de saturation (33) apte à effectuer une opération de saturation directement sur ladite somme pondérée ou sur ledit 20 résultat de la fonction d'activation, la donnée saturée étant délivrée en sortie (40) de ladite unité d'activation.\n<CLM>\1\tCircuit neuronal selon la revendication 2, caractérisé en ce que l'unité de saturation (43) est confondue avec l'unité de décalage (42), la saturation 25 étant réalisée par un décalage à droite sur ladite somme, dont la valeur est déduite de la position de saturation désirée, par conservation des bits de poids faible en fonction de la précision finale voulue.\n<CLM>\1\tCircuit neuronal selon l'une quelconque des revendications précédentes, 30 caractérisé en ce que l'unité d'activation (38) comporte un rectifieur linéaire apte à effectuer en outre une rectification linéaire sur la donnée présente en 3045892 20 sortie de l'unité de saturation (43), ladite donnée étant le résultat d'une saturation effectuée directement sur ladite somme pondérée présente en entrée de ladite unité d'activation, ladite rectification linéaire réalisant ladite fonction d'activation.\n<CLM>\1\tCircuit neuronal selon l'une quelconque des revendications précédentes, caractérisé en ce qu'il comporte un registre (35) mémorisant la position du bit de poids fort de chaque nouvelle donnée accumulée dans ledit accumulateur (34), la mémorisation de ladite position étant effectuée simultanément à la mémorisation dans le registre d'accumulation (36) de l'accumulation de ladite nouvelle donnée ou du chargement dudit registre d'accumulation (36).\n<CLM>\1\tCircuit neuronal selon la revendication 5, caractérisé en ce que ladite position du bit de poids fort est transmise à l'unité de décalage (42), le décalage appliqué étant déduit de ladite position, ou d'une position de bit de poids fort précédemment sauvegardée ou d'un paramètre quelconque fixé par l'utilisateur ou contenu en mémoire ou précédemment calculé.\n<CLM>\1\tCircuit neuronal selon les revendications 2 et 5, caractérisé en ce que ladite position du bit de poids fort est transmise à l'unité de saturation (43), le décalage appliqué pour l'opération de saturation étant déduit de ladite position ou d'une position de bit de poids fort précédemment sauvegardée, ou d'un paramètre quelconque fixé par l'utilisateur ou contenu en mémoire ou précédemment calculé.\n<CLM>\1\tCircuit neuronal selon l'une quelconque des revendications 5 à 7, caractérisé en ce que ladite unité d'activation (38) est apte à approximer une fonction à base radiale, à partir d'un enchaînement d'opérations de décalage effectuées par ladite unité de décalage (42) ainsi que par des saturations effectuées par ladite unité de saturation (43). 3045892 21\n<CLM>\1\tCircuit neuronal selon la revendication 8, caractérisé en ce que la valeur de chaque décalage est déduite de ladite position du bit de poids fort de la donnée décalée ou d'une position de bit précédemment sauvegardée, ou d'un paramètre quelconque fixé par l'utilisateur ou contenu en mémoire ou 5 précédemment calculé.\n<CLM>\1\tCircuit neuronal selon l'une quelconque des revendications précédentes, caractérisé en ce qu'il comporte une unité arithmétique et logique (39) réalisant des opérations sur les signaux d'entrées (12). 10\n<CLM>\1\tArchitecture neuronale, caractérisée en ce qu'elle est composée de circuits neuronaux selon l'une quelconque des revendications précédentes.\n<CLM>\1\tProcédé d'exécution d'un réseau de neurones, ledit procédé réalisant 15 pour chaque neurone une somme pondérée de signaux numérisés d'entrée (12) et appliquant une fonction d'activation (14) à ladite somme pondérée pour produire en sortie (40) un signal d'activation, caractérisé en ce que ledit procédé comporte au moins les étapes suivantes : - multiplier (31) chaque signal d'entrée (x/ à xn) avec une valeur de 20 poids (w11 à w721) ; - accumuler (34) les résultats de la multiplication pour produire ladite somme pondérée et ; - effectuer (38) ladite fonction d'activation (14) par un ou plusieurs décalages arithmétiques (42) appliqués sur ladite somme pondérée. 25\n<CLM>\1\tProcédé selon la revendication 12, caractérisé en ce qu'il effectue une opération de saturation (33) directement sur ladite somme pondérée ou sur ledit résultat de la fonction d'activation, la donnée saturée étant délivrée en sortie (40) de ladite fonction d'activation. 3045892 22\n<CLM>\1\tProcédé selon l'une quelconque des revendications 12 ou 13, caractérisé en ce qu'il effectue en outre une rectification linéaire sur la donnée présente en sortie de l'unité de saturation (43), ladite donnée étant le résultat d'une saturation effectuée directement sur ladite somme pondérée, ladite 5 rectification linéaire réalisant ladite fonction d'activation.\n<CLM>\1\tProcédé selon l'une quelconque des revendications précédentes, caractérisé en ce qu'il comporte une étape de mémorisation (35) de la position du bit de poids fort de chaque nouvelle donnée accumulée, ladite 10 étape de mémorisation étant effectuée simultanément à la mémorisation (36) de ladite nouvelle donnée.\n<CLM>\1\tProcédé selon la revendication 15, caractérisé en ce que le décalage appliqué est déduit de ladite position ou d'une position de bit de poids fort 15 précédemment sauvegardée, ou d'un paramètre quelconque fixé par l'utilisateur ou contenu en mémoire ou précédemment calculé.\n<CLM>\1\tProcédé selon les revendications 13 et 15, caractérisé en ce que le décalage appliqué pour l'opération de saturation est déduit de ladite position 20 ou d'une position de bit de poids fort précédemment sauvegardée, ou d'un paramètre quelconque fixé par l'utilisateur ou contenu en mémoire ou précédemment calculé..\n<CLM>\1\tProcédé selon l'une quelconque des revendications 15 à 17, caractérisé 25 en ce qu'il réalise l'approximation d'une fonction d'activation à base radiale, à partir d'un enchaînement d'opérations de décalages ainsi que par des saturations.\n<CLM>\1\tProcédé selon la revendication 18, caractérisé en ce que la valeur de 30 chaque décalage est déduit de ladite position du bit de poids fort de la 304 5 892 23 donnée décalée ou d'une position de bit précédemment sauvegardée, ou d'un paramètre quelconque fixé par l'utilisateur ou contenu en mémoire ou précédemment calculé. 5\n<CLM>\1\tProcédé selon l'une quelconque des revendications 12 à 19, caractérisé en ce qu'il est apte à être appliqué au moyen d'une architecture selon la revendication\n<CLM>\1\t21. Produit programme d'ordinateur, comprenant des instructions de code 10 permettant d'effectuer les étapes du procédé selon les revendications 12 à 20 lorsque ledit programme d'ordinateur est exécuté sur un ordinateur. 15