DESCRIPTION DESCRIPTION
TITRE : Processeur de traitement de données, procédé et programme d'ordinateur TITLE: Data processing processor, method and computer program
correspondant. corresponding.
1. Domaine Technique 1. Technical area
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. The invention relates to the materialization of neural networks. More particularly, the invention relates to the physical implementation of adaptable and configurable neural networks. More specifically still, the invention relates to the implementation of a generic neural network whose configuration and operation can be adapted as required.
2. Art antérieur 2. Prior art
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 In the field of computerized data processing, a neural network is a digital system whose design was originally inspired by the functioning of biological neurons. A neural network is more generally modeled in the form of a system comprising a processing algorithm and statistical data (notably comprising weights). The processing algorithm makes it possible to process input data, which is combined with statistical data to obtain output results. The processing algorithm consists in defining the calculations which are carried out on the input data in combination with the statistical data of the network to provide output results. At the same time, computer neural networks are divided into layers. They generally have an entry layer, one or more intermediate layers and an exit layer. The general functioning of the computerized neural network, and therefore the general processing applied to the input data consists in implementing a process
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. iterative processing algorithm, in which the input data is processed by the input layer, which produces output data, this output data becoming input data of the next layer and so on, as many times that there are layers, until you get the final output data, which is delivered by the output layer.
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. As the initial purpose of the artificial neural network was to mimic the functioning of a biological neural network, the algorithm used to combine the input data and the statistical data of a layer of the network includes processing which attempts to '' imitate the functioning of a biological neuron. It is thus considered, in an artificial neural network (simply called neural network in the following), that a neuron generally comprises on the one hand a combination function and an activation function. This combination function and this activation function are implemented in a computerized manner by the use of an algorithm associated with the neuron or with a set of neurons located in the same layer.
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 : The combine function is used to combine the input data with the statistical data (synaptic weights). The input data is materialized in the form of a vector, each point of the vector representing a given value. Statistical values (i.e. synaptic weights) are also represented by a vector. The combination function is therefore formalized as being a vector-to-scalar function, as follows:
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 ; in neural networks of the MLP type (multilayer perceptron), a calculation of a linear combination of the inputs is carried out, that is to say that the combination function returns the scalar product between the vector of the inputs and the vector of the synaptic weights;
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. in neural networks of the RBF type ("radial basis function"), a calculation of the distance between the inputs is carried out, that is to say that the combination function returns the Euclidean norm of the vector resulting from the vector difference between the input vector and the vector corresponding to the synaptic weights.
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 ; The activation function, for its part, is used to effect a break in linearity in the functioning of the neuron. The thresholding functions generally have three intervals below the threshold, the neuron is non-active (often in this case, its output is worth 0 or -1); around the threshold, a transition phase;
au-dessus du seuil, le neurone est actif (souvent dans ce cas, sa sortie vaut 1). above the threshold, the neuron is active (often in this case, its output is worth 1).
Parmi les fonctions d'activation classiques, on retrouve par exemple : Among the classic activation functions, we find for example:
La fonction sigmoïde ; The sigmoid function;
La fonction tangente hyperbolique ; The hyperbolic tangent function;
La fonction de Heaviside. The function of 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. Countless publications have focused on neural networks. In general, these publications relate to theoretical aspects of neural networks (such as the search for new activation functions, or even to layer management, or even to feedback or even to learning or more precisely on gradient descent in subjects relating to "machine learning"). Other publications relate to the practical use of systems implementing computerized neural networks to respond to this or that problem. Less frequently, there are also publications related to the implementation, on a specific component, of particular neural networks. This is for example the case of the publication "FPGA Implementation of Convolutional Neural Networks with Fixed-Point Calculations" by Roman A. Solovye and Al (2018), in which it is proposed to locate the calculations performed within a network of neurons on a hardware component.
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. The hardware implementation proposed in this document is however limited in terms of scope. Indeed, it is limited to the implementation of a convolutional neural network in which many reductions are made. However, it provides an implementation of fixed-point or floating-point calculations. The article "Implementation of Fixed-point Neuron Models with Threshold, Ramp and Sigmoid Activation Functions" by Lei Zhang (2017) also deals with the implementation of a neural network including the implementation of fixed point calculations for a particular neuron and three specific activation functions, unitarily implemented.
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. However, the solutions described in these articles do not make it possible to solve the problems of hardware implementation of generic neural networks, namely neural networks implementing general neurons, which can implement a multiplicity of types of neural networks, including mixed neural networks comprising several activation functions and / or several combination functions.
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 There is therefore a need to provide a device which makes it possible to implement a neural network, implementing neurons in a reliable and efficient manner, which is furthermore
reconfigurable et qui puisse prendre place sur une surface de processeur réduite. reconfigurable and which can take place on a reduced processor surface.
3. Résumé de l'invention 3. Summary of the 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. The invention does not pose at least one of the problems of the prior art. More particularly, the invention relates to a data processing processor, said processor comprising at least one processing memory and a calculation unit, said processor being characterized in that the calculation unit comprises a set of units of configurable calculations called configurable neurons, each configurable neuron of the set of configurable neurons comprising a combination function calculation module and an activation function calculation module, each activation function calculation module comprising a register of reception of a configuration command, so that said command determines an activation function to be executed from at least two activation functions executable by the module for calculating activation functions. Thus, the invention makes it possible to configure, at execution, a set of reconfigurable neurons, so that they execute a predetermined function according to the command word supplied to the neurons during execution. The command word, received in a memory space, which can be dedicated, of the reconfigurable neuron, can be different for each layer of a particular neural network, and thus be part of the parameters of the neural network to be executed (implemented) on the processor in 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 : According to a particular embodiment, characterized in that the at least two activation functions executable by the module for calculating activation functions belong to the group comprising:
la fonction sigmoïde ; sigmoid function;
la fonction tangente hyperbolique ; the hyperbolic tangent function;
la fonction gaussienne ; the Gaussian function;
la fonction RELU (« Rectified linear Unit »). the RELU (Rectified linear Unit) function.
Ainsi, un neurone reconfigurable est en mesure de mettre en œuvre les principales fonctions d'activation utilisées pour l'industrie. Thus, a reconfigurable neuron is able to implement the main activation functions used for industry.
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. According to a particular embodiment, the module for calculating activation functions is configured to approximate said at least two activation functions.
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
Thus, the computational capacity of the neural processor carrying a set of reconfigurable neurons can be reduced, resulting in a reduction in size, consumption and therefore the energy necessary for the implementation of the proposed technique compared to
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 : According to a particular characteristic, the module for calculating activation functions comprises a sub-module for calculating a basic operation corresponding to an approximation of the calculation of the sigmoid of the absolute value of λ:
[Math
[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. Thus, using a basic operation, it is possible to approach, by a series of simple calculations, the result of a particular activation function, defined by a command word. According to a particular embodiment, the approximation of said at least two activation functions is performed as a function of an approximation parameter 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. The approximation parameter l can thus be used, together with the control word, to define the behavior of the calculation unit of the basic operation for calculating a detailed approximation of the activation function of the control word. In others terms, the command word routes the calculation (performs a routing of the calculation) to be performed in the calculation unit of the activation function while the approximation parameter l conditions (parameter) this calculation.
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. According to a particular characteristic, the approximation of said at least two activation functions is carried out by configuring the module for calculating activation functions so that the calculations are carried out in fixed point or floating point.
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. When done in fixed point, this advantageously makes it possible to further reduce the resources necessary for the implementation of the proposed technique, and therefore to further reduce the energy consumption. Such an implementation is advantageous for devices with low capacity / low consumption such as connected objects.
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 According to a particular characteristic, the number of bits associated with the fixed-point or floating-point calculations is configured for each layer of the network. So a parameter
complémentaire peut être enregistré dans les ensembles de paramètres de couches du réseau de neurones. complementary can be stored in the parameter sets of layers of the neural network.
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. According to a particular embodiment, the data processing processor comprises a memory for configuring the network within which parameters (PS, cmd, l) of neural network execution are recorded.
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 : According to another implementation, the invention also relates to a data processing method, said method being implemented by a data processing processor comprising at least one processing memory and a calculation unit, the calculation unit comprises a set of configurable calculation units called configurable neurons, each configurable neuron of the set of configurable neurons comprising a combination function calculation module and an activation function calculation module, the method comprising:
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 ; an initialization step comprising the loading into the processing memory of a set of application data and the loading of a set of data, corresponding to all the synaptic weights and the configurations of the layers in the storage memory of network configuration;
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 ; the execution of the neuron network, according to an iterative implementation, comprising for each layer, the application of a configuration command, so that said command determines an activation function to be executed from at least two activation executable by the module for calculating activation functions, the execution delivering processed data;
la transmission des données traitées à une application appelante. the transmission of the processed data to a calling application.
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. The advantages provided by such a method are similar to those previously stated. The method can however be implemented on any type of processor.
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 : According to a particular embodiment, the execution of the neural network comprises at least one iteration of the following steps, for a current layer of the neural network:
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 ; transmission of at least one control word, defining the combination function and / or the activation function implemented for the current layer;
chargement des poids synaptiques de la couche courante ; loading of the synaptic weights of the current layer;
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 ; loading the input data from the temporary storage memory; calculation of the combination function, for each neuron and each input vector, as a function of said at least one control word, delivering, for each neuron used, an intermediate scalar;
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. calculation of the activation function as a function of the intermediate scalar, and of said at least one second control word, delivering, for each neuron used, an activation result; recording of the activation result in the temporary storage memory.
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. Thus, the invention makes it possible, within a dedicated processor (or else within a specific processing method) to carry out optimizations of the calculations of the nonlinear functions by carrying out factorizations of calculations and approximations which make it possible to reduce the load of calculation of the operations, in particular at the level of the activation function.
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. It is understood, in the context of the description of the present technique according to the invention, that a step of transmitting information and / or a message from a first device to a second device, corresponds at least partially , for this second device at a step of receiving the information and / or the message transmitted, whether this reception and this transmission is direct or whether it is carried out by means of other transport, gateway or intermediation, including the devices described herein according to the 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é. According to a general implementation, the different steps of the methods according to the invention are implemented by one or more software or computer programs, comprising software instructions intended to be executed by a data processor of an execution device according to the invention and being designed to control the execution of the different steps methods, implemented at the level of the communication terminal, of the electronic execution device and / or of the remote server, within the framework of a distribution of the treatments to be performed and determined by scripted source code.
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. Consequently, the invention also relates to programs, capable of being executed by a computer or by a data processor, these programs comprising instructions for controlling the execution of the steps of the methods as mentioned above.
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. A program can use any programming language, and be in the form of source code, object code, or intermediate code between source code and object code, such as in a partially compiled form, or in any other desirable form.
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. The invention also relates to an information medium readable by a data processor, and comprising instructions of a program as mentioned above.
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 The information medium can be any entity or device capable of storing the program. For example, the support may include a storage means, such as a ROM, for example a CD ROM or a microelectronic circuit ROM, or else a means
d'enregistrement magnétique, par exemple un support mobile (carte mémoire) ou un disque dur ou un SSD. magnetic recording, for example a mobile medium (memory card) or a hard disk or an 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. On the other hand, the information medium can be a transmissible medium such as an electrical or optical signal, which can be routed via an electrical or optical cable, by radio or by other means. The program according to the invention can in particular be downloaded from a network of the Internet type.
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. Alternatively, the information medium can be an integrated circuit in which the program is incorporated, the circuit being adapted to execute or to be used in the execution of the process in 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. According to one embodiment, the invention is implemented by means of software and / or hardware components. In this perspective, the term "module" can correspond in this document as well to a software component, as to a hardware component or to a set of hardware and software components.
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.). A software component corresponds to one or more computer programs, one or more subroutines of a program, or more generally to any element of a program or of software capable of implementing a function or a set of functions, as described below for the module concerned. Such a software component is executed by a data processor of a physical entity (terminal, server, gateway, set-top-box, router, etc.) and is likely to access the material resources of this physical entity (memories, recording media, communication bus, electronic input / output cards, user interfaces, 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. In the same way, a hardware component corresponds to any element of a hardware assembly (or hardware) capable of implementing a function or a set of functions, according to what is described below for the module concerned. It can be a programmable hardware component or with an integrated processor for the execution of software, for example an integrated circuit, a smart card, a memory card, an electronic card for the execution of firmware ( firmware), etc.
Chaque composante du système précédemment décrit met bien entendu en œuvre ses propres modules logiciels. Each component of the system described above naturally implements its own software modules.
Les différents modes de réalisation mentionnés ci-dessus sont combinables entre eux pour la mise en œuvre de l'invention. The various embodiments mentioned above can be combined with one another for implementing the invention.
4. Présentation des dessins 4. Presentation of the drawings
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 : Other characteristics and advantages of the invention will appear more clearly on reading the following description of a preferred embodiment, given by way of simple illustrative and nonlimiting example, and of the appended drawings, among which:
[fig 1] décrit un processeur dans lequel l'invention est mise en œuvre ; [fig 1] describes a processor in which the invention is implemented;
[fig 2] illustre le découpage de la fonction d'activation d'un neurone configurable selon l'invention ; [fig 2] illustrates the division of the activation function of a configurable neuron according to the 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 3] describes the sequence of blocks in a particular embodiment, for the calculation of a value approaching the activation function;
[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. [fig 4] describes an embodiment of a data processing method within a neural network according to the invention.
5. Description détaillée 5. Detailed description
5.1. Exposé du principe technique 5.1. Statement of the technical principle
5.1.1. Généralités 5.1.1. General
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 Confronted with the problem of implementing an adaptable and configurable neural network, the inventors looked into the materialization of the calculations to be implemented in different configurations. As explained above, it turns out that neural networks are differentiated mainly by the calculations performed. More
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 in particular, the layers that make up a neural network implement unit neurons which perform both combination and activation functions which may be different from one network to another. However, on a given electronic device, such as a smartphone, a tablet or a personal computer, many different neural networks can be implemented, each of these neural networks being used by different applications or processes. Therefore, for the sake of efficient hardware implementation of such neural networks, it is not possible to have a dedicated hardware component for each type of neural network to be implemented. It is for this reason that, for the most part, current neural networks are implemented in a purely software manner and not in hardware (that is to say directly using instructions from processors). On the basis of this observation, as explained previously, the inventors have developed and perfected a specific neuron which can be physically reconfigurable. With a control word, such a neuron can take the proper form in a running neural network. More particularly, in at least one embodiment, the invention takes the form of a generic processor. The calculations performed by this generic processor can, depending on embodiments, be performed in fixed point or in floating point. When performed in fixed point, calculations can
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 advantageously be implemented on platforms having few computing and processing resources, such as small devices of the connected object type. The processor operates with offline learning. It includes a memory comprising in particular: the synaptic weights of the different layers; the choice of the activation function of each layer; as well as configuration and execution parameters of the neurons of each layer. The number of neurons and hidden layers depends on the implementation
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. operational and economic and practical considerations. More particularly, the memory of the processor is sized as a function of the maximum capacity which it is desired to offer to the neural network. A structure for memorizing the results of a layer, also present within the processor, makes it possible to reuse the same neurons for several consecutive hidden layers. This storage structure is, for the sake of simplification, called temporary storage memory. Thus, the reconfigurable number of neurons of the component (processor) is also selected according to the maximum number of neurons that it is desired to authorize for a given layer of the neural network.
[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 [Fig 1] Figure 1 briefly illustrates the general principle of the invention. A processor includes a plurality of configurable neurons (sixteen neurons are shown in the figure). Each neuron is composed of two distinct units: a unit for calculating the combination function and a unit for calculating the activation function (AFU). Each of these two units is configurable by a command word (cmd). Neurons are addressed by connection buses (CBUS) and connection routes (CROUT). The input data are represented in the form of a vector (X t ) which contains a certain number of input values (eight values in the example). The values are routed in the network to produce eight scalar results (z 0 , ..., z 7 ). Synaptic weights, controls, and adjustment parameter l are described below. Thus, the invention relates to a data processing processor, said processor comprising at least one processing memory (MEM) and one calculation unit (CU), said processor being characterized in that the calculation unit ( CU) comprises a set of configurable calculation units called configurable neurons, each configurable neuron (NC) of the set of configurable neurons (ENC) comprising a combination function calculation module (MCFC) and a function calculation module activation (MCFA), each activation function calculation module (AFU) comprising a register for receiving a configuration command, so that said command determines an activation function to be executed from at least two functions d activation activated by the activation function calculation module (AFU). The processor also includes a memory for storing
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). network configuration (MEMR) within which parameters (PS, cmd, l) of neural network execution are recorded. This memory can be the same as the processing memory (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. Various characteristics of the processor which is the subject of the invention are explained below, and more particularly the structure and functions of a reconfigurable neuron.
5.1.2. Neurone configurable 5.1.2. Configurable neuron
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. A configurable neuron of the configurable neural network object of the invention comprises two calculation modules (units) which are configurable: one in charge of the calculation of the combination function and one in charge of the calculation of the activation function. However, according to the invention, in order to make the implementation of the network efficient and effective, the inventors have in a way simplified and factored (pooled) the calculations, so that a maximum of common calculations can be carried out by these modules. . More particularly, the activation function calculation module (also called AFU) optimizes the calculations common to all the activation functions, by simplifying and approximating these calculations. An illustrative implementation is detailed below. Pictured, the activation function calculation module performs calculations so as to reproduce a result close to that of the chosen activation function, by pooling the calculation parts which are used to reproduce an approximation of the activation function.
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. The artificial neuron, in this embodiment, is broken down into two configurable elements (modules). The first configurable element (module) calculates either the scalar product (most networks) or the Euclidean distance. The second element (module) called UFA (for Activation Function Unit, AFU in tabs) implements the activation functions. The first module implements an approximation of the calculation of the square root for the calculation of the Euclidean distance. Advantageously, this approximation is made in fixed point, in the case of processors comprising low capacities. The UFA allows the use of the sigmoid, the hyperbolic tangent, the Gaussian, the RELU. As explained above, the choice of the calculations which are carried out by the neuron is carried out by the use of a control word named cmd as that is the case of an instruction of a microprocessor. Thus, this artificial neuron circuit is parameterized by the reception of a word or of several command words, depending on the embodiment. A control word is in the present case a signal, comprising a bit or a series of bits (for example a byte, making it possible to have 256 possible commands or twice 128 commands) which is transmitted to the circuit to configure it. In a general embodiment, the proposed implementation of a neuron makes it possible to create “common” networks just like the latest generation neural networks like ConvNet (convolutional neural network). This computing architecture can be implemented, in a practical way, in the form of a software library for standard processors or in the form of hardware implementation for FPGAs or 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. Thus, a configurable neuron is composed of a distance calculation module and / or scalar product which depends on the type of neuron used, and a UFA module.
Un neurone générique configurable, comme tout neurone, comprend des données d'entrées en virgule fixe ou flottante dont : A configurable generic neuron, like any neuron, includes fixed or floating point input data including:
X constitue le vecteur de données d'entrée ; X is the input data vector;
W constitue le vecteur des poids synaptiques du neurone ; W is the vector of the synaptic weights of the neuron;
et une donnée de sortie en virgule fixe ou flottante : and fixed or floating point output data:
z le résultat scalaire en sortie du neurone. z the scalar result at the output of the neuron.
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. According to the invention, in addition there is a parameter, l, which represents the parameter of the sigmoid, the hyperbolic tangent, the Gaussian or else the RELU. This parameter is identical for all neurons in a layer. This parameter l is supplied to the neuron with the command word, setting the implementation of the neuron. This parameter can be qualified as an approximation parameter in the sense that it is used to carry out an approximation calculation of the value of the function from one of the approximation methods presented below.
Plus particulièrement, dans un mode de réalisation général, les quatre fonctions principales reproduites (et factorisées) par l'UFA sont : More particularly, in a general embodiment, the four main functions reproduced (and factored) by the UFA are:
la sigmoïde : the sigmoid:
[Math
[Math
la tangente hyperbolique : the hyperbolic tangent:
[Math 3] tan/i(/?x) [Math 3] tan / i (/? X)
la fonction gaussienne ; the Gaussian function;
[Math
[Math
la fonction RE the RE function
max(0,x) ou bien {max (0, x) or {
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. According to the invention, the first three functions are calculated approximately. This means that the configurable neuron does not implement a precise calculation of these functions, but instead implements an approximation of the calculation of these functions, which makes it possible to reduce the load, the time, and the resources necessary to obtain the result.
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. The four methods of approximations of these mathematical functions used are explained below, as well as the architecture of such a configurable neuron.
Première méthode : First method:
La relation The relationship
[Math 5] /(x) = ~^rx , [Math 5] / (x) = ~ ^ r x ,
utilisée pour le calcul de la sigmoïde, est approchée par la formule suivante (Allipi) : used for the calculation of the sigmoid, is approximated by the following formula (Allipi):
[Math 6] f x) = ¾+ ¾ 2 pour x £ 0 [Math 6] fx) = ¾ + ¾ 2 for x £ 0
[Math
[Math
avec (x) qui est la partie entière de x with (x) which is the integer part of x
Deuxième méthode : Second method:
La fonction tanh(x ) est estimée de la façon suivante : The function tanh (x) is estimated as follows:
[Math 8] tanh(x) = 2xSig(2x)— 1 [Math 8] tanh (x) = 2xSig (2x) - 1
avec
1 with 1
[Math 9] Sig(x) = l+exp (-¾) [Math 9] Sig (x) = l + exp (-¾)
Ou plus généralement : Or more generally:
[Math 10] tarif i(/?c) = 2'xSig(2bx')— 1 [Math 10] tariff i (/? C) = 2'xSig (2bx ') - 1
avec with
1 1
[Math 11] Sig(Àx ) l+exp (-Ax) [Math 11] Sig (Àx) l + exp (-Ax)
Avec l = 2b With l = 2b
Troisième méthode : Third method:
Pour approcher la gaussienne : To approach the Gaussian:
[Math
[Math
On met e œuvre la méthode suivante : We implement the following method:
[Math 13] sig'(x) = Àsig(x)( 1— stp(x)) [Math 13] sig '(x) = Àsig (x) (1— stp (x))
Avec With
[Math
[Math
Quatrième méthode : Fourth method:
Il n'est pas nécessaire de passer par une approximation pour obtenir une valeur de la fonction la fonction RELU (« R It is not necessary to go through an approximation to obtain a value of the function RELU function ("R
max(0,x) ou bien (max (0, x) or else (
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. The four preceding methods constitute approximations of calculations of the original functions (sigmoid, hyperbolic tangent and Gaussian). The inventors have however demonstrated (see appendix) that the approximations carried out using the technique of the invention provide results similar to those resulting from an exact expression of the function.
[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. [Fig 2] In view of the above, Figure 2 shows the general architecture of the activation function circuit. This functional architecture takes into account the previous approximations (methods 1 to 4) and factorizations in the calculation functions.
Les avantages de la présente technique sont les suivants The advantages of the present technique are as follows:
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. a hardware implementation of a generic neural network with a configurable neural cell which makes it possible to implement any neural network including the convnet. for certain embodiments, an original approximation of the calculation in fixed point or floating point, of the sigmoid, of the hyperbolic tangent, of the gaussian.
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. an implementation of the AFU in the form of software library for standard processors or for FPGAs. AFU integration in the form of a hardware architecture for all standard processors or for FPGAs or ASICs.
en fonction de modes de réalisation, une division entre 3 et 5 de la complexité des calculs par rapport aux librairies standards. depending on embodiments, a division between 3 and 5 of the complexity of the calculations compared to standard libraries.
5.2. Description d'un mode de réalisation d'un neurone configurable 5.2. Description of an embodiment of a configurable neuron
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 In this embodiment, only the operational implementation of the AFU is discussed. The AFU performs the calculation regardless of the mode of representation of the values processed fixed point or floating point. The advantage and the originality of this implementation lies in the
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: mutualisation (factorization) of the calculation blocks (blocks n ° 2 to 4) to obtain the different non-linear functions, this calculation is defined as "the basic operation" in the following, it corresponds to an approximation of the calculation of the sigmoid of the absolute value of Àx:
[Math
[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. So the “basic operation” is no longer a standard mathematical operation like the addition and multiplication found in all conventional processors, but the sigmoid function of the absolute value of Àx. This “basic operation”, in this embodiment, is common to all the other non-linear functions. In this embodiment, an approximation of this function is used. We therefore use here an approximation of a high-level function to perform the calculations of high-level functions without using conventional methods of calculating these functions. The result for a positive value of x of the sigmoid is deduced from this basic operation using the symmetry of the sigmoid function. The hyperbolic tangent function is obtained by using the standard correspondence relation which links it to the sigmoid function. The Gaussian function is obtained by passing through the derivative of the sigmoid which is an approximate curve of the Gaussian, the derivative of the sigmoid is obtained by a product between the sigmoid function and its symmetric. The RELU function which is a linear function for positive x does not use the basic operation of the computation of nonlinear functions. The leaky RELU function which uses a linear proportionality function for negative x does not use the basic operation of calculating non-linear functions either.
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 : Finally, the choice of the function is done using a command word (cmd) as would a microprocessor instruction, the sign of the input value determines the calculation method to be used for the chosen function. All the parameters of the different functions use the same parameter l which is a positive real whatever the representation format. [Fig 3] The Figure 3 illustrates this embodiment in more detail. More particularly in relation to this 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 Block n ° l multiplies the input data x by the parameter l, the meaning of which depends on the activation function used: directly l when using the sigmoid, b = when using the hyperbolic tangent function and s "- for the Gaussian, the proportionality coefficient" a "for a negative value of x when using the leakyRELU function; this calculation therefore provides the value x c for blocks 2 and 5. This block performs a multiplication operation whatever the format of representation of the reals. Any method of
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. multiplication which makes it possible to carry out the computation and to provide the result, whatever the format of representation of these values, identifies this block. In the case of the Gaussian, the division may or may not be included in the 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 : The blocks n ° 2 to 4 carry out the calculation of the “basic operation” of the nonlinear functions with the exception of the RELU and leakyRELU functions which are linear functions with different coefficients of proportionality depending on whether x is negative or positive. This basic operation uses a line segment approximation of the sigmoid function for a negative value of the absolute value of x. These blocks can be grouped by two or three depending on the desired optimization. Each line segment is defined on an interval lying between the integer part of x is the integer part plus one of 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. block n ° 2, named separator, extracts the integer part, takes the absolute value, this can also result in the absolute value of the integer part by default of x: | Jx | J. It also provides the absolute value of the fractional part of x: | {x} |. The truncated part provided by this block gives the start of the segment and the fractional part represents the line defined on this segment. The separation of the whole part and the fractional part can be obtained in any possible way and whatever the representation format of x.
le bloc n°3 calcule le numérateur yn de la fraction finale à partir de la partie block n ° 3 calculates the numerator y n of the final fraction from the part
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. fractional | {x} | provided by block n ° 2. This block provides the equation of the line of the form 2 - | {x} | regardless of the segment determined with the truncated part.
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 block n ° 4 calculates the value common to all the functions yi from the numerator y n supplied by block n ° 3 and the integer part supplied by block n ° 2. This block calculates the
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. common denominator for the elements of the line equation which makes it possible to provide a different line for each segment with a minimum error between the real curve and the approximate value obtained with the line. Using a power of 2 simplifies the calculation of the basic operation. This block therefore uses an addition and a subtraction which remains an addition in terms of algorithmic complexity followed by a division by a power of 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. Block n ° 5 calculates the result of the nonlinear function which depends on the value of the command word cmd, on the value of the sign of x and of course on the result yi of block 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. For a first value of cmd, it provides the sigmoid of parameter 2 which is equal to the result of the basic operation for x negative (z = y x for x <0) and equal to 1 minus the result of the basic operation for x positive (z = 1— y x for x>0); this calculation uses the symmetry of the sigmoid function between the positive and negative values of x. This calculation uses only a subtraction. In this case, therefore, a sigmoid is obtained with, in the most unfavorable case, an additional subtraction operation.
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. For a second value, it provides the hyperbolic tangent of parameter // which corresponds to twice the basic operation minus one with a negative value of xz = 2 y 1 - l (x <0) and one minus twice the basic operation for a positive value of x (z = 1 - 2y x for x> 0). The division of the value of x by two is integrated by the coefficient 1/2 in the parameter l = 2 /? Or carried out at this level with 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. For a third value, it provides the Gaussian z = 4y x (l - y 1 ) whatever the sign of x. Indeed the approach of the Gaussian is carried out using the derivative of the sigmoid. With this method we obtain a curve close to the Gaussian function. In addition, the derivative of the sigmoid is calculated simply by multiplying the result of the basic operation by its symmetric. In this case the parameter l defines the standard deviation of the Gaussian by dividing 1.7 by l. This division operation may or may not be included in the AFU. Finally this calculation uses a multiplication with two operands and by a power of two.
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. For a fourth value it provides the RELU function which gives the value of x for x positivez = xfor x> 0 and 0 for x negativez = Opour x <0. In this case we use the value of x directly without using the operation of based.
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 À. For a last value a variant of the re-read function (leakyRELU) which gives the value of x for x positive z = x for x> 0 and a value proportional to x for x negativez = x c for x <0. The proportionality coefficient is provided by the To parameter.
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. Thus, block n ° 5 is a block which contains the various final calculations of the nonlinear functions described above, as well as a switching block which performs the choice of operation according to the value of the control signal and the value of the sign of x. 5.3. Description of an embodiment of a dedicated component capable of implementing a plurality of different neural networks, data processing method.
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 In this illustrative embodiment, the component comprising a set of 16384 reconfigurable neurons is positioned on the processor. Each of these neurons
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. reconfigurables receives its data directly from the temporary storage memory, which comprises at least 16,384 entries (or at least 32,768, depending on the embodiments), each entry value corresponding to one byte. The size of the temporary storage memory is therefore 16KB (or 32KB) (kilobytes). Depending on the operational implementation, the size of the temporary storage memory can be increased to facilitate the process of rewriting the result data. The component also includes a memory for storing the configuration of the neural network. In this example, it is assumed that the configuration storage memory is dimensioned to allow the implementation of 20 layers, each of these layers potentially comprising a number of synaptic weights corresponding to the total number of possible entries, ie 16384 different synaptic weights for each. layers, each one byte in size. For each layer, according to the invention, there are also at least two command words, each of a length of one byte, or a total of 16,386 bytes per layer, and therefore for the 20 layers, a minimum total of 320 kb. This memory also includes a set of registers dedicated to the storage of data representative of the configuration of the network: number of layers, number of neurons per layer, ordering of the results of a layer, etc. The entire component therefore requires in this configuration, a memory size of less than 1 MB.
5.4. Autres caractéristiques et avantages 5.4. Other features and benefits
[Fig 4] Le fonctionnement du réseau de neurones reconfigurables est présenté en relation avec la figure 4. [Fig 4] The functioning of the reconfigurable neural network is presented in relation to 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, On initialization (step 0), a set of data (EDAT), corresponding for example to a set of application data coming from a given hardware or software application is loaded into the temporary storage memory (MEM). A set of data,
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). corresponding to all of the synaptic weights and layer configurations (CONFDAT) is loaded into the network configuration storage memory (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 ; The neural network is then executed (step 1) by the processor of the invention, according to an iterative implementation (as long as the current layer is less than the number of layers of the network, ie nblyer), of the following steps executed for a given layer of the neural network, from the first layer to the last layer, and comprising for a current layer: transmission (10) of the first command word to all of the neurons implemented, defining the combination function implemented (linear combination or Euclidean standard) for the current layer;
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 ; transmission (20) of the second control word to all of the neurons used, defining the activation function used for the current layer;
chargement (30) des poids synaptiques de la couche ; loading (30) synaptic weights of the layer;
chargement (40) des données d'entrée dans la mémoire de stockage temporaire ; loading (40) the input data into the temporary storage memory;
- 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 - calculation (50) of the combination function, for each neuron and each input vector, as a function of the control word, delivering, for each neuron used, a scalar
intermédiaire ; intermediate;
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 ; calculation (60) of the activation function as a function of the intermediate scalar, and of the second control word, delivering, for each neuron used, an activation result;
- enregistrement (70) du résultat d'activation dans la mémoire de stockage temporaire. - recording (70) of the activation result in the temporary storage memory.
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. It should be noted that the steps of transmitting the control words and of calculating the results of the combination and activation functions do not necessarily constitute physically separate steps. Furthermore, as explained above, a single control word can be used in place of two control words, in order to specify both the combination function and the activation function used.
Les résultats finaux (SDAT) sont alors retournés (étape 2) à l'application ou au composant appelant.
The final results (SDAT) are then returned (step 2) to the application or to the calling component.