EP3899800A1 - Processeur de traitement de donnees, procede et programme d'ordinateur correspondant - Google Patents

Processeur de traitement de donnees, procede et programme d'ordinateur correspondant

Info

Publication number
EP3899800A1
EP3899800A1 EP19813025.4A EP19813025A EP3899800A1 EP 3899800 A1 EP3899800 A1 EP 3899800A1 EP 19813025 A EP19813025 A EP 19813025A EP 3899800 A1 EP3899800 A1 EP 3899800A1
Authority
EP
European Patent Office
Prior art keywords
function
activation
calculation
configurable
neuron
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
EP19813025.4A
Other languages
German (de)
English (en)
Inventor
Michel Doussot
Michel Paindavoine
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Universite de Technologie de Troyes
Universite de Bourgogne
Original Assignee
Universite de Technologie de Troyes
Universite de Bourgogne
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Universite de Technologie de Troyes, Universite de Bourgogne filed Critical Universite de Technologie de Troyes
Publication of EP3899800A1 publication Critical patent/EP3899800A1/fr
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions

Abstract

L'invention se rapporte à un processeur de traitement de données, ledit processeur comprenant au moins une mémoire de traitement (MEM) et une unité de calcul (CU). Selon l'invention, l'unité de calcul (CU) comprend un ensemble d'unités de calculs configurables appelées neurones configurables, chaque neurone configurable (NC) de l'ensemble de neurones configurables (ENC) comprenant un module de calcul de fonctions de combinaison (MCFC) et un module de calcul de fonctions d'activation (MCFA), chaque module de calcul de fonctions d'activation (AFU) comprenant un registre de réception d'une commande de paramétrage, de sorte que ladite commande détermine une fonction d'activation à exécuter parmi au moins deux fonctions d'activation exécutables par le module de calcul de fonctions d'activation (AFU).

Description

DESCRIPTION
TITRE : Processeur de traitement de données, procédé et programme d'ordinateur
correspondant.
1. Domaine Technique
L'invention se rapporte à la matérialisation de réseaux de neurones. Plus particulièrement, l'invention se rapporte à la mise en œuvre physique de réseaux de neurones adaptables et configurables. Plus spécifiquement encore, l'invention se rapporte à la mise en œuvre d'un réseau de neurones génériques dont la configuration et le fonctionnement peut être adaptée en fonction des besoins.
2. Art antérieur
Dans le domaine du traitement informatisé de données, un réseau de neurones est un système numérique dont la conception est originellement inspirée du fonctionnement des neurones biologiques. Un réseau de neurones est plus généralement modélisé sous la forme d'un système comprenant une algorithmique de traitement et des données statistiques (comprenant notamment des poids). L'algorithmique de traitement permet de traiter des données d'entrée, lesquelles sont combinées avec les données statistiques pour obtenir des résultats en sortie. L'algorithmique de traitement consiste à définir les calculs qui sont réalisées sur les données d'entrée en combinaison avec les données statistiques du réseau pour fournir des résultats de sortie. Parallèlement, les réseaux de neurones informatisés sont divisés en couches. Ils présentent généralement une couche d'entrée, une ou plusieurs couches intermédiaires et une couche de sortie. Le fonctionnement général du réseau de neurones informatisé, et donc le traitement général appliqué sur les données d'entrées consiste à mettre en œuvre un processus
algorithmique itératif de traitement, dans lequel les données d'entrées sont traitées par la couche d'entrée, laquelle produit des données de sortie, ces données de sortie devenant des données d'entrées de la couche suivante et ainsi de suite, autant de fois qu'il y a de couches, jusqu'à obtenir les données finales de sortie, qui sont délivrées par la couche de sortie.
Comme l'objet initial du réseau de neurones artificiels était de mimer le fonctionnement d'un réseau de neurones biologiques, l'algorithmique utilisée pour combiner les données d'entrée et les données statistiques d'une couche du réseau comprend des traitements qui tentent d'imiter le fonctionnement d'un neurone biologique. On considère ainsi, dans un réseau de neurones artificiels (simplement appelé réseau de neurones dans la suite), qu'un neurone comprend généralement d'une part une fonction de combinaison et une fonction d'activation. Cette fonction de combinaison et cette fonction d'activation sont mises en œuvre de manière informatisée par l'utilisation d'un algorithme associé au neurone ou à un ensemble de neurones situés dans une même couche.
La fonction de combinaison sert à combiner les données d'entrées avec les données statistiques (les poids synaptiques). Les données d'entrées sont matérialisées sous la forme d'un vecteur, chaque point du vecteur représentant une valeur donnée. Les valeurs statistiques (i.e. poids synaptiques) sont également représentées par un vecteur. La fonction de combinaison est donc formalisée comme étant une fonction vecteur-à-scalaire, ainsi :
dans les réseaux de neurones de type MLP (perceptron multicouches), un calcul d'une combinaison linéaire des entrées est effectué, c'est-à-dire que la fonction de combinaison renvoie le produit scalaire entre le vecteur des entrées et le vecteur des poids synaptiques ;
dans les réseaux de neurones de type RBF (« radial basis function »), un calcul de la distance entre les entrées est effectué, c'est-à-dire que la fonction de combinaison renvoie la norme euclidienne du vecteur issu de la différence vectorielle entre le vecteur d'entrée et le vecteur correspondant aux poids synaptiques.
La fonction d'activation, pour sa part, est utilisée pour effectuer une rupture de linéarité dans le fonctionnement du neurone. Les fonctions de seuillage présentent généralement trois intervalles en dessous du seuil, le neurone est non-actif (souvent dans ce cas, sa sortie vaut 0 ou -1) ; aux alentours du seuil, une phase de transition ;
au-dessus du seuil, le neurone est actif (souvent dans ce cas, sa sortie vaut 1).
Parmi les fonctions d'activation classiques, on retrouve par exemple :
La fonction sigmoïde ;
La fonction tangente hyperbolique ;
La fonction de Heaviside.
D'innombrables publications portent sur les réseaux de neurones. D'une manière générale, ces publications portent sur des aspects théoriques des réseaux de neurones (comme la recherche de nouvelles fonctions d'activations, ou encore sur la gestion des couches, ou encore sur la rétroaction ou encore sur l'apprentissage ou plus précisément sur la descente de gradient dans les sujets relatifs au « machine learning »). D'autres publications portent sur l'utilisation pratique de systèmes mettant en œuvre des réseaux de neurones informatisés pour répondre à telle ou telle problématique. Moins fréquemment, on trouve également des publications relatives à l'implémentation, sur un composant spécifique, de réseaux de neurones particuliers. C'est par exemple le cas de la publication « FPGA Implémentation of Convolutional Neural Networks with Fixed-Point Calculations » de Roman A. Solovye et Al (2018), dans laquelle il est proposé de localiser les calculs effectués au sein d'un réseau de neurones sur un composant matériel.
L'implémentation matérielle proposée dans ce document est cependant limitée en termes de portée. En effet, elle se limite à la mise en œuvre d'un réseau de neurones convolutif dans lequel de nombreuses réductions sont réalisées. Elle apporte cependant une mise en œuvre de calculs en virgule fixe ou en virgule flottante. L'article « Implémentation of Fixed-point Neuron Models with Threshold, Ramp and Sigmoid Activation Functions » de Lei Zhang (2017) porte également sur la mise en œuvre d'un réseau de neurones comprenant la mise en œuvre de calculs à virgule fixe pour un neurone particulier et trois fonctions d'activation particulières, unitairement implémentées.
Cependant, les solutions décrites dans ces articles ne permettent pas de résoudre les problématiques d'implémentation matérielles de réseaux de neurones génériques, à savoirs des réseaux de neurones implémentant des neurones généraux, qui peuvent mettre en œuvre une multiplicité de type de réseaux de neurones, incluant des réseaux de neurones mixtes comprenant plusieurs fonctions d'activation et/ou plusieurs fonctions de combinaison.
Il existe donc un besoin de fournir un dispositif qui permette de mettre en œuvre un réseau de neurones, implémentant des neurones de manière fiable et efficace, qui soit de plus
reconfigurable et qui puisse prendre place sur une surface de processeur réduite.
3. Résumé de l'invention
L'invention ne pose pas au moins un des problèmes de l'art antérieur. Plus particulièrement, l'invention se rapporte à un processeur de traitement de données, ledit processeur comprenant au moins une mémoire de traitement et une unité de calcul, le dit processeur étant caractérisé en ce que l'unité de calcul comprend un ensemble d'unités de calculs configurables appelées neurones configurables, chaque neurone configurable de l'ensemble de neurones configurables comprenant un module de calcul de fonctions de combinaison et un module de calcul de fonctions d'activation, chaque module de calcul de fonctions d'activation comprenant un registre de réception d'une commande de paramétrage, de sorte que ladite commande détermine une fonction d'activation à exécuter parmi au moins deux fonctions d'activation exécutables par le module de calcul de fonctions d'activation. Ainsi, l'invention permet de paramétrer, à l'exécution, un ensemble de neurones reconfigurables, afin que ceux-ci exécutent une fonction prédéterminée selon le mot de commande fourni aux neurones lors de l'exécution. Le mot de commande, reçu dans un espace mémoire, pouvant être dédié, du neurone reconfigurable, peut être différent pour chaque couche d'un réseau de neurones particulier, et ainsi faire partie des paramètres du réseau de neurones à exécuter (implémenter) sur le processeur en question.
Selon un mode de réalisation particulier, caractérisé en ce que les au moins deux fonctions d'activation exécutables par le module de calcul de fonctions d'activation appartiennent au groupe comprenant :
la fonction sigmoïde ;
la fonction tangente hyperbolique ;
la fonction gaussienne ;
la fonction RELU (« Rectified linear Unit »).
Ainsi, un neurone reconfigurable est en mesure de mettre en œuvre les principales fonctions d'activation utilisées pour l'industrie.
Selon un mode de réalisation particulier, le module de calcul de fonctions d'activation est configuré pour effectuer une approximation desdites au moins deux fonctions d'activation.
Ainsi, la capacité de calcul du processeur neuronal embarquant un ensemble de neurones reconfigurables peut être réduite entraînant une réduction de la taille, de la consommation et donc de l'énergie nécessaire à la mise en œuvre de la technique proposée par rapport aux
Selon une caractéristique particulière, le module de calcul de fonctions d'activation comprend un sous module de calcul d'une opération de base correspondant à une approximation du calcul de la sigmoïde de la valeur absolue de Àx :
[Math
Ainsi, à l'aide d'une opération de base, il est possible d'approcher, par une série de calculs simples, le résultat d'une fonction d'activation particulière, définie par un mot de commande. Selon un mode de réalisation particulier, l'approximation desdites au moins deux fonctions d'activation est effectuée en fonction d'un paramètre d'approximation l.
Le paramètre d'approximation l peut ainsi être utilisé, conjointement au mot de commande, pour définir le comportement de l'unité de calcul de l'opération de base pour calculer une approximation circonstanciée de la fonction d'activation du mot de commande. En d'autres termes, le mot de commande route le calcul (réalise un routage du calcul) à effectuer dans l'unité de calcul de la fonction d'activation tandis que le paramètre d'approximation l conditionne (paramètre) ce calcul.
Selon une caractéristique particulière, l'approximation desdites au moins deux fonctions d'activation est effectuée en configurant le module de calcul de fonctions d'activation pour que les calculs soient effectués en virgule fixe ou virgule flottante.
Lorsqu'effectué en virgule fixe, ceci permet avantageusement de réduire encore les ressources nécessaires à la mise en œuvre de la technique proposée, et donc de réduire encore la consommation en énergie. Une telle implémentation est avantageuse pour des dispositifs à faible capacité/faible consommation tels que les objets connectés.
Selon une caractéristique particulière, le nombre de bits associés aux calculs en virgule fixe ou virgule flottante est paramétré pour chaque couche du réseau. Ainsi, un paramètre
complémentaire peut être enregistré dans les ensembles de paramètres de couches du réseau de neurones.
Selon un mode de réalisation particulier, le processeur de traitement de données comprend une mémoire de stockage de configuration du réseau au sein de laquelle des paramètres (PS, cmd, l) d'exécution de réseau de neurones sont enregistrés.
Selon une autre implémentation, l'invention se rapporte également à un procédé de traitement de données, ledit procédé étant mis en œuvre par un processeur de traitement de données comprenant au moins une mémoire de traitement et une unité de calcul, l'unité de calcul comprend un ensemble d'unités de calculs configurables appelées neurones configurables, chaque neurone configurable de l'ensemble de neurones configurables comprenant un module de calcul de fonctions de combinaison et un module de calcul de fonctions d'activation, le procédé comprenant :
une étape d'initialisation comprenant le chargement dans la mémoire de traitement d'un un ensemble de données applicatives et le chargement d'un ensemble de données, correspondant à l'ensemble des poids synaptiques et des configurations des couches dans la mémoire de stockage de configuration du réseau ;
l'exécution du réseau de neurone, selon une mise en œuvre itérative, comprenant pour chaque couche, l'application d'une commande de paramétrage, de sorte que ladite commande détermine une fonction d'activation à exécuter parmi au moins deux fonctions d'activation exécutables par le module de calcul de fonctions d'activation, l'exécution délivrant des données traitées ;
la transmission des données traitées à une application appelante.
Les avantages procurés par un tel procédé sont similaires à ceux précédemment énoncés. Le procédé peut cependant être mis en œuvre sur tout type de processeur.
Selon un mode de réalisation particulier, l'exécution du réseau de neurone comprend au moins une itération des étapes suivantes, pour une couche courante du réseau de neurones :
transmission d'au moins un mot de commande, définissant la fonction de combinaison et/ou la fonction d'activation mise en œuvre pour la couche courante ;
chargement des poids synaptiques de la couche courante ;
chargement des données d'entrée en provenance de la mémoire de stockage temporaire ; calcul de la fonction de combinaison, pour chaque neurone et chaque vecteur d'entrée, en fonction dudit au moins un mot de commande, délivrant, pour chaque neurone utilisé, un scalaire intermédiaire ;
calcul de la fonction d'activation en fonction du scalaire intermédiaire, et dudit au moins un deuxième mot de commande, délivrant, pour chaque neurone utilisé, un résultat d'activation ; enregistrement du résultat d'activation dans la mémoire de stockage temporaire.
Ainsi, l'invention permet, au sein d'un processeur dédié (ou bien au sein d'un procédé de traitement spécifique) de réaliser des optimisations des calculs des fonctions non linéaires en effectuant des factorisations de calculs et des approximations qui permettent de diminuer la charge de calcul des opérations, notamment au niveau de la fonction d'activation.
Il est entendu, dans le cadre de la description de la présente technique selon l'invention, qu'une étape de transmission d'une information et/ou d'un message d'un premier dispositif à un deuxième dispositif, correspond au moins partiellement, pour ce deuxième dispositif à une étape de réception de l'information et/ou du message transmis, que cette réception et cette transmission soit directe ou qu'elle s'effectue par l'intermédiaire d'autres dispositifs de transport, de passerelle ou d'intermédiation, incluant les dispositifs décrits dans la présente selon l'invention.
Selon une implémentation générale, les différentes étapes des procédés selon l'invention sont mises en œuvre 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 dispositif d'exécution selon l'invention et étant conçu pour commander l'exécution des différentes étapes des procédés, mis en œuvre au niveau du terminal de communication, du dispositif électronique d'exécution et/ou du serveur distant, dans le cadre d'une répartition des traitements à effectuer et déterminés par un code source scripté.
En conséquence, l'invention vise aussi des programmes, susceptibles d'être exécutés par un ordinateur ou par un processeur de données, ces programmes comportant des instructions pour commander l'exécution des étapes des procédés tel que mentionnés ci-dessus.
Un 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 un support mobile (carte mémoire) ou un disque dur ou un SSD.
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 l'exécution du procédé en question.
Selon un mode de réalisation, l'invention est mise en œuvre 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 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 œuvre une fonction ou un ensemble de fonctions, selon ce qui est décrit ci-dessous pour le module concerné. Un tel composant logiciel est 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 matériel (ou hardware) apte à mettre en œuvre 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.
Chaque composante du système précédemment décrit met bien entendu en œuvre ses propres modules logiciels.
Les différents modes de réalisation mentionnés ci-dessus sont combinables entre eux pour la mise en œuvre de l'invention.
4. Présentation des dessins
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 exemple illustratif et non limitatif, et des dessins annexés, parmi lesquels :
[fig 1] décrit un processeur dans lequel l'invention est mise en œuvre ;
[fig 2] illustre le découpage de la fonction d'activation d'un neurone configurable selon l'invention ;
[fig 3] décrit l'enchaînement des blocs dans un mode de réalisation particuliers, pour le calcul d'une valeur approchante de la fonction d'activation ;
[fig 4] décrit un mode de réalisation d'un procédé de traitement de données au sein d'un réseau de neurones selon l'invention.
5. Description détaillée
5.1. Exposé du principe technique
5.1.1. Généralités
Confrontés à la problématique de mise en œuvre d'un réseau de neurones adaptable et configurable, les inventeurs se sont penchés sur la matérialisation des calculs à mettre en œuvre dans différentes configurations. Comme explicité précédemment, il s'avère que les réseaux de neurones se différencient entre eux principalement par les calculs effectués. Plus
particulièrement, les couches qui composent un réseau de neurones mettent en œuvre des neurones unitaires qui réalisent à la fois des fonctions de combinaison et des fonctions d'activation qui peuvent être différentes d'un réseau à l'autre. Or, sur un dispositif électronique donné, tel qu'un smartphone, une tablette ou un ordinateur personnel, de nombreux réseaux de neurones différents peuvent être mis en œuvre, chacun de ces réseaux de neurones étant utilisé par des applications ou des processus différents. Dès lors, dans un souci d'implémentation matérielle efficace de tels réseaux de neurones, il n'est pas envisageable de disposer d'un composant matériel dédié par type de réseau de neurones à mettre en œuvre. C'est pour cette raison que majoritairement, les réseaux de neurones actuels sont mis en œuvre de manière purement logicielle et non matériellement (c'est-à-dire en utilisant directement des instructions de processeurs). Partant de ce constat, comme exposé précédemment, les inventeurs ont développé et mis au point un neurone spécifique qui peut être matériellement reconfigurable. Grâce à un mot de commande, un tel neurone peut prendre la forme qui convient dans un réseau de neurones en cours d'exécution. Plus particulièrement, dans au moins un mode de réalisation, l'invention se matérialise sous la forme d'un processeur générique. Les calculs effectués par ce processeur générique peuvent, en fonction de modes de réalisation, être réalisés en virgule fixe ou en virgule flottante. Lorsqu'ils sont réalisés en virgules fixe, les calculs peuvent
avantageusement être mis en œuvre sur des plateformes disposant de peu de ressources de calcul et de traitement, tels que de petits dispositifs de type objets connectés. Le processeur fonctionne avec un apprentissage hors-ligne. Il comprend une mémoire comprenant notamment : les poids synaptiques des différentes couches ; le choix de la fonction d'activation de chaque couche ; ainsi que des paramètres de configuration et d'exécution des neurones de chaque couche. Le nombre de neurones et de couches cachées dépend de la mise en œuvre
opérationnelle et de considérations économiques et pratiques. Plus particulièrement, la mémoire du processeur est dimensionnée en fonction de la capacité maximale que l'on souhaite offrir au réseau de neurones. Une structure de mémorisation des résultats d'une couche, également présente au sein du processeur, permet de réutiliser les mêmes neurones pour plusieurs couches cachées consécutives. Cette structure de mémorisation est, dans un objectif de simplification, appelée mémoire de stockage temporaire. Ainsi, le nombre de neurones reconfigurable du composant (processeur) est lui aussi sélectionné en fonction du nombre maximal de neurones que l'on souhaite autoriser pour une couche donnée du réseau de neurones.
[Fig 1] La figure 1 illustre succinctement le principe général de l'invention. Un processeur, comprend une pluralité de neurones configurable (seize neurones sont représentés sur la figure). Chaque neurone est composé de deux unités distinctes : une unité de calcul de la fonction de combinaison et une unité de calcul de la fonction d'activation (AFU). Chacune de ces deux unités est configurable par un mot de commande ( cmd ). Les neurones sont adressés par des bus de connexion (CBUS) et des routages de connexion (CROUT). Les données d'entrée sont représentées sous la forme d'un vecteur (Xt) qui contient un certain nombre de valeurs d'entrées (huit valeurs dans l'exemple). Les valeurs sont routées dans le réseau pour produire huit scalaires résultats (z0,..., z7). Les poids synaptiques, les commandes et le paramètre d'ajustement l sont décrits par la suite. Ainsi, l'invention se rapporte à un processeur de traitement de données, ledit processeur comprenant au moins une mémoire de traitement (MEM) et une unité de calcul (CU), le dit processeur étant caractérisé en ce que l'unité de calcul (CU) comprend un ensemble d'unités de calculs configurables appelées neurones configurables, chaque neurone configurable (NC) de l'ensemble de neurones configurables (ENC) comprenant un module de calcul de fonctions de combinaison (MCFC) et un module de calcul de fonctions d'activation (MCFA), chaque module de calcul de fonctions d'activation (AFU) comprenant un registre de réception d'une commande de paramétrage, de sorte que ladite commande détermine une fonction d'activation à exécuter parmi au moins deux fonctions d'activation exécutables par le module de calcul de fonctions d'activation (AFU). Le processeur comprend également une mémoire de stockage de
configuration du réseau (MEMR) au sein de laquelle des paramètres (PS, cmd, l) d'exécution de réseau de neurones sont enregistrés. Cette mémoire peut être la même que la mémoire de traitement (MEM).
On expose par la suite différentes caractéristiques du processeur objet de l'invention et plus particulièrement la structure et les fonctions d'un neurone reconfigurable.
5.1.2. Neurone configurable
Un neurone configurable du réseau de neurones configurables objet de l'invention comprend deux modules (unités) de calcul qui sont paramétrables : un en charge du calcul de la fonction de combinaison et un en charge du calcul de la fonction d'activation. Cependant, selon l'invention, afin de rendre l'implémentation du réseau efficace et performante, les inventeurs ont en quelque sorte simplifié et factorisé (mutualisé) les calculs, de sorte qu'un maximum de calculs en commun puisse être effectué par ces modules. Plus particulièrement, le module de calcul de la fonction d'activation (également appelé AFU) optimise les calculs communs à l'ensemble des fonctions d'activation, en simplifiant et en approximant ces calculs. Une mise en œuvre illustrative est détaillée par la suite. De façon imagée, le module de calcul de la fonction d'activation effectue des calculs de sorte à reproduire un résultat proche de celui de la fonction d'activation choisie, en mettant en commun les parties de calcul qui servent à reproduire une approximation de la fonction d'activation.
Le neurone artificiel, dans ce mode de réalisation, est décomposé en deux éléments (modules) paramétrables. Le premier élément (module) paramétrable calcule soit le produit scalaire (la plupart des réseaux) ou la distance euclidienne. Le deuxième élément (module) appelé UFA (pour Unité de Fonction d'Activation, AFU en onglois) implémente les fonctions d'activations. Le premier module implémente une approximation du calcul de la racine carrée pour le calcul de la distance euclidienne. Avantageusement, cette approximation est réalisée en virgule fixe, dans le cas de processeurs comprenant de faibles capacités. L'UFA permet d'utiliser la sigmoïde, la tangente hyperbolique, la gaussienne, la RELU. Comme explicité précédemment, le choix des calculs qui sont effectués par le neurone est réalisé par l'utilisation d'un mot de commande nommé cmd comme cela est le cas d'une instruction d'un microprocesseur. Ainsi, ce circuit de neurone artificiel est paramétré par la réception d'un mot ou de plusieurs mots de commandes, en fonction de mode de réalisation. Un mot de commande est dans le cas présent un signal, comprenant un bit ou une suite de bits (par exemple un octet, permettant de disposer de 256 commandes possibles ou de deux fois 128 commandes) qui est transmis au circuit pour le paramétrer. Dans un mode de réalisation général, l'implémentation proposée d'un neurone permet de réaliser les réseaux « communs » tout comme les réseaux de neurones de dernière génération comme les ConvNet (réseau de neurones convolutifs). Cette architecture de calcul peut s'implémenter, de manière pratique, sous forme de librairie logicielle pour des processeurs standards ou bien sous forme d'implémentation matérielle pour des FPGA ou des ASICs.
Ainsi, un neurone configurable est composé d'un module de calcul de distance et/ou de produit scalaire qui dépend du type de neurone utilisé, et d'un module UFA.
Un neurone générique configurable, comme tout neurone, comprend des données d'entrées en virgule fixe ou flottante dont :
X constitue le vecteur de données d'entrée ;
W constitue le vecteur des poids synaptiques du neurone ;
et une donnée de sortie en virgule fixe ou flottante :
z le résultat scalaire en sortie du neurone.
Selon l'invention, en sus on dispose d'un paramètre, l, qui représente le paramètre de la sigmoïde, de la tangente hyperbolique, de la gaussienne ou bien de la RELU. Ce paramètre est identique pour tous les neurones d'une couche. Ce paramètre l est fourni au neurone avec le mot de commande, paramétrant la mise en œuvre du neurone. Ce paramètre peut être qualifié de paramètre d'approximation en ce sens qu'il est utilisé pour effectuer un calcul approchant de la valeur de la fonction à partir de l'une des méthodes d'approximation présentée ci-dessous.
Plus particulièrement, dans un mode de réalisation général, les quatre fonctions principales reproduites (et factorisées) par l'UFA sont :
la sigmoïde :
[Math
la tangente hyperbolique :
[Math 3] tan/i(/?x)
la fonction gaussienne ;
[Math
la fonction RE
max(0,x) ou bien {
Selon l'invention, les trois premières fonctions sont calculées de manière approchée. Cela signifie que le neurone configurable n'implémente pas un calcul précis de ces fonctions, mais implémente à la place une approximation du calcul de ces fonctions, ce qui permet de réduire la charge, le temps, et les ressources nécessaires à l'obtention du résultat.
On expose par la suite les quatre méthodes d'approximations de ces fonctions mathématiques utilisées ainsi que l'architecture d'un tel neurone configurable.
Première méthode :
La relation
[Math 5] /(x) = ~^rx ,
utilisée pour le calcul de la sigmoïde, est approchée par la formule suivante (Allipi) :
[Math 6] f x) = ¾+ ¾ 2 pour x £ 0
[Math
avec (x) qui est la partie entière de x
Deuxième méthode :
La fonction tanh(x ) est estimée de la façon suivante :
[Math 8] tanh(x) = 2xSig(2x)— 1
avec 1
[Math 9] Sig(x) = l+exp (-¾)
Ou plus généralement :
[Math 10] tarif i(/?c) = 2'xSig(2bx')— 1
avec
1
[Math 11] Sig(Àx ) l+exp (-Ax)
Avec l = 2b
Troisième méthode :
Pour approcher la gaussienne :
[Math
On met e œuvre la méthode suivante :
[Math 13] sig'(x) = Àsig(x)( 1— stp(x))
Avec
[Math
Quatrième méthode :
Il n'est pas nécessaire de passer par une approximation pour obtenir une valeur de la fonction la fonction RELU (« R
max(0,x) ou bien (
Les quatre méthodes qui précèdent constituent des approximations de calculs des fonctions d'origine (sigmoïdes, tangente hyperbolique et gaussienne). Les inventeurs ont cependant démontré (voir annexe) que les approximations réalisées à l'aide de la technique de l'invention fournissent des résultats similaires à ceux issus d'une expression exacte de la fonction.
[Fig 2] A la vue de ce qui précède, la figure 2 expose l'architecture générale du circuit de la fonction d'activation. Cette architecture fonctionnelle tient compte des approximations précédentes (méthodes 1 à 4) et des factorisations dans les fonctions de calcul.
Les avantages de la présente technique sont les suivants
une implémentation matérielle d'un réseau de neurones génériques avec une cellule neuronale paramétrable qui permet d'implémenter tout réseau de neurones dont les convnet. pour certains modes de réalisation, une approximation originale du calcul en virgule fixe ou virgule flottante, de la sigmoïde, de la tangente hyperbolique, de la gaussienne.
une implémentation de l'AFU sous la forme de librairie logicielle pour des processeurs standards ou bien pour des FPGA. une intégration de l'AFU sous la forme d'une architecture matérielle pour tous les processeurs standards ou bien pour les FPGAs ou pour les ASICs.
en fonction de modes de réalisation, une division entre 3 et 5 de la complexité des calculs par rapport aux librairies standards.
5.2. Description d'un mode de réalisation d'un neurone configurable
Dans ce mode de réalisation, on ne discute que de la mise en œuvre opérationnelle de l'AFU. L'AFU effectue le calcul quel que soit le mode de représentation des valeurs traitées virgule fixe ou virgule flottante. L'avantage et l'originalité de cette mise en œuvre réside dans la
mutualisation (factorisation) des blocs de calcul (blocs n°2 à 4) pour obtenir les différentes fonctions non linéaires, ce calcul est défini comme « l'opération de base » dans la suite, il correspond à une approximation du calcul de la sigmoïde de la valeur absolue de Àx:
[Math
Ainsi « l'opération de base » n'est plus une opération mathématique standard comme l'addition et la multiplication que l'on trouve dans tous les processeurs classiques, mais la fonction sigmoïde de la valeur absolue de Àx. Cette « opération de base », dans ce mode de réalisation, est commune à toutes les autres fonctions non linéaires. Dans ce mode de réalisation, on utilise une approximation de cette fonction. On se sert donc ici d'une approximation d'une fonction de haut niveau pour effectuer les calculs de fonctions de haut niveau sans utiliser des méthodes classiques de calculs de ces fonctions. Le résultat pour une valeur positive de x de la sigmoïde est déduit de cette opération de base en utilisant la symétrie de la fonction sigmoïde. La fonction tangente hyperbolique est obtenue en utilisant la relation de correspondance standard qui la lie à la fonction sigmoïde. La fonction gaussienne est obtenue en passant par la dérivée de la sigmoïde qui est une courbe approchée de la gaussienne, la dérivée de la sigmoïde est obtenue par un produit enter la fonction sigmoïde et sa symétrique. La fonction RELU qui est une fonction linéaire pour x positif n'utilise pas l'opération de base du calcul des fonctions non linéaires. La fonction leaky RELU qui utilise une fonction linéaire de proportionnalité pour x négatif n'utilise pas non plus l'opération de base du calcul des fonctions non linéaires.
Enfin, le choix de la fonction se fait à l'aide d'un mot de commande ( cmd ) comme le ferait une instruction de microprocesseur, le signe de la valeur d'entrée détermine la méthode de calcul à utiliser pour la fonction choisie. L'ensemble des paramètres des différentes fonctions utilisent le même paramètre l qui est un réel positif quel que soit le format de représentation. [Fig 3] La figure 3 illustre ce mode de réalisation plus en détail. Plus particulièrement en relation avec cette figure 3 :
Le bloc n°l multiplie la donnée d'entrée x par le paramètre l dont la signification dépend de la fonction d'activation utilisée : directement l lors de l'utilisation de la sigmoïde, b = lors de l'utilisation de la fonction tangente hyperbolique et s «— pour la gaussienne, le coefficient de proportionnalité « a » pour une valeur de x négative lors de l'utilisation de la fonction leakyRELU; ce calcul fournit donc la valeur xc pour les blocs n°2 et n°5. Ce bloc effectue une opération de multiplication quel que soit le format de représentation des réels. Toute méthode de
multiplication qui permet d'effectuer le calcul et de fournir le résultat, quel que soit le format de représentation de ces valeurs, identifie ce bloc. Dans le cas de la gaussienne, la division peut être incluse ou non dans l'AFU.
Les blocs n°2 à 4 effectuent le calcul de « l'opération de base » des fonctions non linéaires à l'exception des fonctions RELU et leakyRELU qui sont des fonctions linéaires avec des coefficients de proportionnalité différents suivant que x est négatif ou positif. Cette opération de base utilise une approximation par segments de droites de la fonction sigmoïde pour une valeur négative de la valeur absolue de x. Ces blocs peuvent groupés par deux ou trois suivant l'optimisation souhaitée. Chaque segment de droite est défini sur un intervalle se situant entre la partie entière de x est la partie entière plus un de x :
le bloc n°2, nommé séparateur, extrait la partie entière, en prend la valeur absolue, cela peut également se traduire par la valeur absolue de la partie entière par défaut de x :|Jx|J. Il fournit également la valeur absolue de la partie fractionnaire de x :|{x}|. La partie tronquée fournie par ce bloc donne le début du segment et la partie fractionnaire représente la droite définie sur ce segment. La séparation de la partie entière et de la partie fractionnaire peut s'obtenir de toutes les façons possibles et quel que soit le format de représentation de x.
le bloc n°3 calcule le numérateur yn de la fraction finale à partir de la partie
fractionnaire|{x}|fournie par le bloc n°2. Ce bloc fournit l'équation de la droite de la forme 2 - |{x}| indépendamment du segment déterminé avec la partie tronquée.
le bloc n°4 calcule la valeur commune à toutes les fonctions yi à partir du numérateur yn fourni par le bloc n°3 et de la partie entière fournie par le bloc n°2. Ce bloc calcule le
dénominateur commun aux éléments de l'équation de la droite qui permet de fournir une droite différente pour chaque segment avec une erreur minimum entre la courbe réelle et la valeur approchée obtenue avec la droite. Le fait d'utiliser une puissance de 2, simplifie le calcul de l'opération de base. Ce bloc utilise donc une addition et une soustraction qui reste une addition en termes de complexité algorithmique suivie d'une division par une puissance de 2.
Le bloc n°5 calcule le résultat de la fonction non linéaire qui dépend de la valeur du mot de commande cmd, de la valeur du signe de x et bien sûr du résultat yi du bloc n°4.
Pour une première valeur de cmd, il fournit la sigmoïde de paramètre 2qui est égale au résultat de l'opération de base pour x négatif ( z = yxpour x < 0) et égal à 1 moins le résultat de l'opération de base pour x positif (z = 1— yxpour x > 0) ; ce calcul utilise la symétrie de la fonction sigmoïde entre les valeurs positives et négatives de x. Ce calcule utilise uniquement une soustraction. Dans ce cas on obtient donc une sigmoïde avec dans le cas le plus défavorable une opération de soustraction supplémentaire.
Pour une deuxième valeur, il fournit la tangente hyperbolique de paramètre //qui correspond à deux fois l'opération de base moins un avec une valeur négative de x z = 2 y1— l(x < 0) et un moins deux fois l'opération de base pour une valeur positive de x ( z = 1 - 2yxpour x > 0). La division de la valeur de x par deux est intégrée par le coefficient 1/2 dans le paramètre l = 2/?ou bien effectuée à ce niveau avec l = b.
Pour une troisième valeur, il fournit la gaussienne z = 4yx(l - y1)quel que soit le signe de x. En effet l'approche de la gaussienne est réalisée en utilisant la dérivée de la sigmoïde. Avec cette méthode on obtient une courbe proche de la fonction gaussienne. De plus la dérivée de la sigmoïde se calcule simplement en multipliant le résultat de l'opération de base par son symétrique. Dans ce cas le paramètre l définit l'écart type de la gaussienne en divisant 1.7 par l. Cette opération de division peut être incluse ou non dans l'AFU. Enfin ce calcul utilise une multiplication à deux opérandes et par une puissance de deux.
Pour une quatrième valeur il fournit la fonction RELU qui donne la valeur de x pour x positifz = xpour x > 0 et 0 pour x négatifz = Opour x < 0. Dans ce cas on utilise directement la valeur de x sans utiliser l'opération de base.
Pour une dernière valeur une variante de la fonction relu (leakyRELU) qui donne la valeur de x pour x positif z = xpour x > 0 et une valeur proportionnelle à x pour x négatifz = xcpour x < 0. Le coefficient de proportionnalité est fourni par le paramètre À.
Ainsi, le bloc n°5 est un bloc qui contient les différents calculs finaux des fonctions non linéaires décrits précédemment, ainsi qu'un bloc de commutation qui effectue le choix de l'opération en fonction de la valeur du signal de commande et de la valeur du signe de x. 5.3. Description d'un mode de réalisation d'un composant dédié apte à mettre en œuyre une pluralité de réseaux de neurones différents, procédé de traitement de données.
Dans ce mode de réalisation illustratif, le composant comprenant un ensemble de 16384 neurones reconfigurables est positionné sur le processeur. Chacun de ces neurones
reconfigurables reçoit ses données directement depuis la mémoire de stockage temporaire, qui comprend au moins 16384 entrées (ou au moins 32768, selon les modes de réalisation), chaque valeur d'entrée correspondant à un octet. La taille de la mémoire de stockage temporaire est donc de 16ko (ou 32ko) (kilooctets). En fonction de la mise en œuvre opérationnelle, la taille de la mémoire de stockage temporaire peut être augmentée afin de faciliter les processus de réécriture des données de résultats. Le composant comprend également une mémoire de stockage de la configuration du réseau de neurones. Dans cet exemple on suppose que la mémoire de stockage de configuration est dimensionnée pour permettre la mise en œuvre de 20 couches, chacune de ces couches comprenant potentiellement un nombre de poids synaptiques correspondant au nombre total d'entrée possible soit 16384 poids synaptiques différents pour chacune des couches, chacun d'une taille d'un octet. Pour chaque couche, selon l'invention, on dispose également d'au moins deux mots de commandes, chacun d'une longueur d'un octet, soit au total 16386 octets par couche, et donc pour les 20 couches, un total minimal de 320 ko. Cette mémoire comprend également un ensemble de registres dédiés au stockage des données représentatives de la configuration du réseau : nombre de couches, nombre de neurones par couche, ordonnancement des résultats d'une couche, etc. L'ensemble du composant nécessite donc dans cette configuration, une taille de mémoire inférieure à 1 Mo.
5.4. Autres caractéristiques et avantages
[Fig 4] Le fonctionnement du réseau de neurones reconfigurables est présenté en relation avec la figure 4.
A l'initialisation (étape 0), un ensemble de données (EDAT), correspondant par exemple à un ensemble de données applicatives provenant d'une application matérielle ou logicielle donnée est chargée dans la mémoire de stockage temporaire (MEM). Un ensemble de données,
correspondant à l'ensemble des poids synaptiques et des configurations des couches (CONFDAT) est chargé dans la mémoire de stockage de configuration du réseau (MEMR).
Le réseau de neurones est ensuite exécuté (étape 1) par le processeur de l'invention, selon une mise en œuvre itérative (tant que la couche courante est inférieure au nombre de couches du réseau, i.e. nblyer), des étapes suivantes exécutées pour une couche donnée du réseau de neurones, de la première couche à la dernière couche, et comprenant pour une couche courante : transmission (10) du premier mot de commande à l'ensemble des neurones mis en œuvre, définissant la fonction de combinaison mises en œuvre (combinaison linéaire ou norme euclidienne) pour la couche courante ;
transmission (20) du deuxième mot de commande à l'ensemble des neurones mis en œuvre, définissant la fonction d'activation mises en œuvre pour la couche courante ;
chargement (30) des poids synaptiques de la couche ;
chargement (40) des données d'entrée dans la mémoire de stockage temporaire ;
- calcul (50) de la fonction de combinaison, pour chaque neurone et chaque vecteur d'entrée, en fonction du mot de commande, délivrant, pour chaque neurone utilisé, un scalaire
intermédiaire ;
calcul (60) de la fonction d'activation en fonction du scalaire intermédiaire, et du deuxième mot de commande, délivrant, pour chaque neurone utilisé, un résultat d'activation ;
- enregistrement (70) du résultat d'activation dans la mémoire de stockage temporaire.
On note que les étapes de transmission des mots de commande et de calcul des résultats des fonction de combinaison et d'activation ne constituent pas nécessairement des étapes physiquement séparées. Par ailleurs, comme explicité précédemment, un seul et même mot de commande peut être utilisé en lieu et place de deux mots de commande, et ce afin de spécifier à la fois la fonction de combinaison et la fonction d'activation utilisée.
Les résultats finaux (SDAT) sont alors retournés (étape 2) à l'application ou au composant appelant.

Claims

REVENDICATIONS
1. Processeur de traitement de données, ledit processeur comprenant au moins une mémoire de traitement (MEM) et une unité de calcul (CU), le dit processeur étant caractérisé en ce que l'unité de calcul (CU) comprend un ensemble d'unités de calculs configurables appelées neurones configurables, chaque neurone configurable (NC) de l'ensemble de neurones configurables (ENC) comprenant un module de calcul de fonctions de combinaison (MCFC) et un module de calcul de fonctions d'activation (MCFA), chaque module de calcul de fonctions d'activation (AFU) comprenant un registre de réception d'une commande de paramétrage, de sorte que ladite commande détermine une fonction d'activation à exécuter parmi au moins deux fonctions d'activation exécutables par le module de calcul de fonctions d'activation (AFU).
2. Processeur de traitement de données selon la revendication 1, caractérisé en ce que les au moins deux fonctions d'activation exécutables par le module de calcul de fonctions d'activation (AFU) appartiennent au groupe comprenant :
la fonction sigmoïde ;
la fonction tangente hyperbolique ;
la fonction gaussienne ;
la fonction RELU (« Rectified linear Unit »).
3. Processeur de traitement de données selon la revendication 1, caractérisé en ce que le module de calcul de fonctions d'activation (AFU) est configuré pour effectuer une approximation desdites au moins deux fonctions d'activation.
4. Processeur de traitement de données selon la revendication 3, caractérisé en ce que le module de calcul de fonctions d'activation (AFU) comprend un sous module de calcul d'une opération de base correspondant à une approximation du calcul de la sigmoïde de la valeur absolue
[Math 1
5. Processeur de traitement de données selon la revendication 3, caractérisé en ce que l'approximation desdites au moins deux fonctions d'activation est effectuée en fonction d'un paramètre d'approximation l.
6. Processeur de traitement de données selon la revendication 3, caractérisé en ce que l'approximation desdites au moins deux fonctions d'activation est effectuée en configurant le module de calcul de fonctions d'activation (AFU) pour que les calculs soient effectués en virgule fixe ou virgule flottante.
7. Processeur de traitement de données selon la revendication 5, caractérisé en ce que le nombre de bits associés aux calculs en virgule fixe ou virgule flottante est paramétré pour chaque couche du réseau.
8. Processeur de traitement de données selon la revendication 1, caractérisé en ce qu'il comprend une mémoire de stockage de configuration du réseau au sein de laquelle des paramètres (PS, cmd, l) d'exécution de réseau de neurones sont enregistrés.
9. Procédé de traitement de données, ledit procédé étant mis en œuvre par un processeur de traitement de données comprenant au moins une mémoire de traitement (MEM) et une unité de calcul (CU), l'unité de calcul (CU) comprend un ensemble d'unités de calculs configurables appelées neurones configurables, chaque neurone configurable (NC) de l'ensemble de neurones configurables (ENC) comprenant un module de calcul de fonctions de combinaison (MCFC) et un module de calcul de fonctions d'activation (AFU), le procédé comprenant :
une étape d'initialisation (0) comprenant le chargement dans la mémoire de traitement (MEM) d'un un ensemble de données applicatives (EDAT) et le chargement d'un ensemble de données, correspondant à l'ensemble des poids synaptiques et des configurations des couches (CONFDAT) dans la mémoire de stockage de configuration du réseau (MEMR) ;
l'exécution (1) du réseau de neurone, selon une mise en œuvre itérative, comprenant pour chaque couche, l'application d'une commande de paramétrage, de sorte que ladite commande détermine une fonction d'activation à exécuter parmi au moins deux fonctions d'activation exécutables par le module de calcul de fonctions d'activation (AFU), l'exécution délivrant des données traitées ;
la transmission des données traitées (SDAT) à une application appelante.
10. Procédé selon la revendication 9, caractérisé en ce que l'exécution (1) du réseau de neurone comprend au moins une itération des étapes suivantes, pour une couche courante du réseau de neurones :
transmission (10, 20) d'au moins un mot de commande, définissant la fonction de combinaison et/ou la fonction d'activation mise en œuvre pour la couche courante ;
chargement (30) des poids synaptiques de la couche courante ;
chargement (40) des données d'entrée en provenance de la mémoire de stockage temporaire ; calcul (50) de la fonction de combinaison, pour chaque neurone et chaque vecteur d'entrée, en fonction dudit au moins un mot de commande, délivrant, pour chaque neurone utilisé, un scalaire intermédiaire ;
calcul (60) de la fonction d'activation en fonction du scalaire intermédiaire, et dudit au moins un deuxième mot de commande, délivrant, pour chaque neurone utilisé, un résultat d'activation ; enregistrement (70) du résultat d'activation dans la mémoire de stockage temporaire.
11. Produit programme d'ordinateur téléchargeable depuis un réseau de communication et/ou stocké sur un support lisible par ordinateur et/ou exécutable par un microprocesseur, caractérisé en ce qu'il comprend des instructions de code de programme pour l'exécution d'un procédé selon la revendication 9, lorsqu'il est exécuté sur un ordinateur.
EP19813025.4A 2018-12-18 2019-12-05 Processeur de traitement de donnees, procede et programme d'ordinateur correspondant Withdrawn EP3899800A1 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1873141A FR3090163B1 (fr) 2018-12-18 2018-12-18 Processeur de traitement de données, procédé et programme d’ordinateur correspondant
PCT/EP2019/083891 WO2020126529A1 (fr) 2018-12-18 2019-12-05 Processeur de traitement de donnees, procede et programme d'ordinateur correspondant.

Publications (1)

Publication Number Publication Date
EP3899800A1 true EP3899800A1 (fr) 2021-10-27

Family

ID=66867241

Family Applications (1)

Application Number Title Priority Date Filing Date
EP19813025.4A Withdrawn EP3899800A1 (fr) 2018-12-18 2019-12-05 Processeur de traitement de donnees, procede et programme d'ordinateur correspondant

Country Status (5)

Country Link
US (1) US20220076103A1 (fr)
EP (1) EP3899800A1 (fr)
CN (1) CN113272826A (fr)
FR (1) FR3090163B1 (fr)
WO (1) WO2020126529A1 (fr)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11630990B2 (en) * 2019-03-19 2023-04-18 Cisco Technology, Inc. Systems and methods for auto machine learning and neural architecture search

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102016216944A1 (de) * 2016-09-07 2018-03-08 Robert Bosch Gmbh Verfahren zur Berechnung einer Neuronenschicht eines mehrschichtigen Perzeptronenmodells mit vereinfachter Aktivierungsfunktion

Also Published As

Publication number Publication date
CN113272826A (zh) 2021-08-17
US20220076103A1 (en) 2022-03-10
FR3090163A1 (fr) 2020-06-19
WO2020126529A1 (fr) 2020-06-25
FR3090163B1 (fr) 2021-04-30

Similar Documents

Publication Publication Date Title
EP3301617B1 (fr) Procédés d&#39;apprentissage sécurisé de paramètres d&#39;un réseau de neurones à convolution, et de classification sécurisée d&#39;une donnée d&#39;entrée
EP0322966B1 (fr) Circuit et structure de réseau de neurones
EP0552074B1 (fr) Système de traitement de données multiprocesseur
US20220058451A1 (en) Identifying a type of object in a digital image based on overlapping areas of sub-images
EP3663987B1 (fr) Procédé et dispositif de détermination de la taille mémoire globale d&#39;une zone mémoire globale allouée aux données d&#39;un réseau de neurones
EP3394797A1 (fr) Circuit neuronal optimise, architecture et procede pour l&#39;execution des reseaux de neurones
EP3449423B1 (fr) Dispositif et procede de calcul de convolution d&#39;un reseau de neurones convolutionnel
EP0521548A1 (fr) Procédé et dispositif avec un réseau neuronal pour classer des données
FR2685109A1 (fr) Processeur numerique neuronal operant avec une approximation d&#39;une fonction d&#39;activation non lineaire.
Zhang et al. Max-plus operators applied to filter selection and model pruning in neural networks
WO2020190546A1 (fr) Quantification de valeurs aberrantes pour l&#39;apprentissage et l&#39;inférence
EP0514986B1 (fr) Procédé d&#39;apprentissage d&#39;un réseau de neurones et dispositif de classification pour la mise en oeuvre de ce procédé
EP0372613B1 (fr) Procédé de rétropropagation d&#39;erreurs et structure de réseau de neurones
EP0875032B1 (fr) Procede d&#39;apprentissage generant des reseaux de neurones de petites tailles pour la classification de donnees
WO2015090885A1 (fr) Module de traitement du signal, notamment pour reseau de neurones et circuit neuronal.
EP3899800A1 (fr) Processeur de traitement de donnees, procede et programme d&#39;ordinateur correspondant
FR2690771A1 (fr) Processeur neuronal muni de moyens pour normaliser des données.
EP3712775A1 (fr) Procédé et dispositif de détermination de la taille mémoire globale d&#39;une zone mémoire globale allouée aux données d&#39;un réseau de neurones compte tenu de sa topologie
EP4202770A1 (fr) Reseau de neurones avec generation a la volee des parametres du reseau
EP3764286A1 (fr) Procédé et outil informatique de détermination de fonctions de transferts entre des paires de couches successives d&#39;un réseau de neurones
CA2731497A1 (fr) Circuit de traitement de donnees a processeur elementaire, ensemble de traitement de donnees comportant une grille de tels circuits, et capteur matriciel comportant un tel ensemble
FR2659817A1 (fr) Dispositif de reconnaissance de sequences dans un signal multidimensionnel.
EP0622749A1 (fr) Système à réseau neuronal pour le traitement de signaux, notamment pour l&#39;analyse et la synthèse d&#39;images
EP0378663B1 (fr) Dispositif de traitement de signal adaptatif et non lineaire
EP4303768A1 (fr) Procédé et appareil de traitement multitâche

Legal Events

Date Code Title Description
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: UNKNOWN

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE

PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE

17P Request for examination filed

Effective date: 20210521

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR

DAV Request for validation of the european patent (deleted)
DAX Request for extension of the european patent (deleted)
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20230701