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

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

Info

Publication number
WO2020126529A1
WO2020126529A1 PCT/EP2019/083891 EP2019083891W WO2020126529A1 WO 2020126529 A1 WO2020126529 A1 WO 2020126529A1 EP 2019083891 W EP2019083891 W EP 2019083891W WO 2020126529 A1 WO2020126529 A1 WO 2020126529A1
Authority
WO
WIPO (PCT)
Prior art keywords
function
activation
calculation
configurable
neuron
Prior art date
Application number
PCT/EP2019/083891
Other languages
English (en)
Inventor
Michel Doussot
Michel Paindavoine
Original Assignee
Universite De Bourgogne
Universite De Technologie De Troyes
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 Bourgogne, Universite De Technologie De Troyes filed Critical Universite De Bourgogne
Priority to US17/414,628 priority Critical patent/US20220076103A1/en
Priority to EP19813025.4A priority patent/EP3899800A1/fr
Priority to CN201980084061.1A priority patent/CN113272826A/zh
Publication of WO2020126529A1 publication Critical patent/WO2020126529A1/fr

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

Definitions

  • TITLE Data processing processor, method and computer program
  • 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.
  • 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.
  • 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
  • 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.
  • 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
  • the combination function is therefore formalized as being a vector-to-scalar function, as follows:
  • 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;
  • 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;
  • the neuron is active (often in this case, its output is worth 1).
  • 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.
  • 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.
  • 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
  • the at least two activation functions executable by the module for calculating activation functions belong to the group comprising:
  • a reconfigurable neuron is able to implement the main activation functions used for industry.
  • the module for calculating activation functions is configured to approximate said at least two activation functions.
  • 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
  • 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 ⁇ :
  • the approximation of said at least two activation functions is performed as a function of an approximation parameter l.
  • 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.
  • 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.
  • 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.
  • the number of bits associated with the fixed-point or floating-point calculations is configured for each layer of the network. So a parameter
  • the data processing processor comprises a memory for configuring the network within which parameters (PS, cmd, l) of neural network execution are recorded.
  • 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:
  • 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;
  • the execution of the neuron network 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;
  • the execution of the neural network comprises at least one iteration of the following steps, for a current layer of the neural network:
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • the invention also relates to an information medium readable by a data processor, and comprising instructions of a program as mentioned above.
  • the information medium can be any entity or device capable of storing the program.
  • 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
  • magnetic recording for example a mobile medium (memory card) or a hard disk or an SSD.
  • 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.
  • 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.
  • the invention is implemented by means of software and / or hardware components.
  • 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.
  • 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.).
  • 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.
  • fig 1 describes a processor in which the invention is implemented
  • FIG. 1 illustrates the division of the activation function of a configurable neuron according to the invention
  • FIG. 3 describes the sequence of blocks in a particular embodiment, for the calculation of a value approaching the activation function
  • FIG. 4 describes an embodiment of a data processing method within a neural network according to the invention.
  • 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.
  • 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).
  • the inventors have developed and perfected a specific neuron which can be physically reconfigurable.
  • 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
  • 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
  • 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.
  • 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 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.
  • 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
  • MEMR network configuration
  • PS parameters
  • cmd, l parameters of neural network execution are recorded.
  • This memory can be the same as the processing memory (MEM).
  • 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.
  • the activation function calculation module also called AFU
  • the activation function calculation module 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.
  • the artificial neuron in this embodiment, is broken down into two configurable elements (modules).
  • the first configurable element calculates either the scalar product (most networks) or the Euclidean distance.
  • the second element module (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.
  • 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.
  • 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.
  • 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.
  • 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.
  • a configurable generic neuron like any neuron, includes fixed or floating point input data including:
  • X is the input data vector
  • W is the vector of the synaptic weights of the neuron
  • 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.
  • the four main functions reproduced (and factored) by the UFA are:
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • This block performs a multiplication operation whatever the format of representation of the reals. Any method of
  • the division may or may not be included in the AFU.
  • 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:
  • 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:
  • 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.
  • 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
  • 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.
  • the Gaussian z 4y x (l - y 1 ) whatever the sign of x.
  • 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.
  • the derivative of the sigmoid is calculated simply by multiplying the result of the basic operation by its symmetric.
  • 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.
  • this calculation uses a multiplication with two operands and by a power of two.
  • 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.
  • the component comprising a set of 16384 reconfigurable neurons is positioned on the processor.
  • Each of these neurons is positioned on the processor.
  • the 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.
  • each layer 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.
  • 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).
  • EDAT a set of data
  • MEM temporary storage memory
  • 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;
  • SDAT final results

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Advance Control (AREA)

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
Figure imgf000006_0001
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
Figure imgf000006_0002
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
Figure imgf000014_0001
la tangente hyperbolique :
[Math 3] tan/i(/?x)
la fonction gaussienne ;
[Math
Figure imgf000014_0002
la fonction RE
max(0,x) ou bien {
Figure imgf000014_0003
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
Figure imgf000014_0004
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
Figure imgf000015_0001
On met e œuvre la méthode suivante :
[Math 13] sig'(x) = Àsig(x)( 1— stp(x))
Avec
[Math
Figure imgf000015_0002
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 (
Figure imgf000015_0003
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
Figure imgf000016_0001
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 =
Figure imgf000017_0001
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
Figure imgf000021_0001
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.
PCT/EP2019/083891 2018-12-18 2019-12-05 Processeur de traitement de donnees, procede et programme d'ordinateur correspondant. WO2020126529A1 (fr)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US17/414,628 US20220076103A1 (en) 2018-12-18 2019-12-05 Data Processing Processor, Corresponding Method and Computer Program.
EP19813025.4A EP3899800A1 (fr) 2018-12-18 2019-12-05 Processeur de traitement de donnees, procede et programme d'ordinateur correspondant
CN201980084061.1A CN113272826A (zh) 2018-12-18 2019-12-05 数据处理处理器、对应的方法和计算机程序

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1873141 2018-12-18
FR1873141A FR3090163B1 (fr) 2018-12-18 2018-12-18 Processeur de traitement de données, procédé et programme d’ordinateur correspondant

Publications (1)

Publication Number Publication Date
WO2020126529A1 true WO2020126529A1 (fr) 2020-06-25

Family

ID=66867241

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2019/083891 WO2020126529A1 (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

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018046415A1 (fr) * 2016-09-07 2018-03-15 Robert Bosch Gmbh Procédé pour calculer une couche neuronale d'un modèle de perceptron multicouche au moyen d'une fonction d'activation simplifiée

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018046415A1 (fr) * 2016-09-07 2018-03-15 Robert Bosch Gmbh Procédé pour calculer une couche neuronale d'un modèle de perceptron multicouche au moyen d'une fonction d'activation simplifiée

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
ALIPPI C ET AL: "SIMPLE APPROXIMATION OF SIGMOIDAL FUNCTIONS: REALISTIC DESIGN OF DIGITAL NEURAL NETWORKS CAPABLE OF LEARNING", SIGNAL IMAGE AND VIDEO PROCESSING. SINGAPORE, JUNE 11 -14, 1991; [PROCEEDINGS OF THE INTERNATIONAL SYMPOSIUM ON CIRCUITS AND SYSTEMS], IEEE, NEW YORK, NY, vol. 3 OF 05, 11 July 1991 (1991-07-11), pages 1505 - 1508, XP000370893, ISBN: 978-0-7803-0050-7, DOI: 10.1109/ISCAS.1991.176661 *
ARMATO A ET AL: "Low-error digital hardware implementation of artificial neuron activation functions and their derivative", MICROPROCESSORS AND MICROSYSTEMS, vol. 35, no. 6, 31 August 2011 (2011-08-31), pages 557 - 567, XP028255706, ISSN: 0141-9331, [retrieved on 20110530], DOI: 10.1016/J.MICPRO.2011.05.007 *
GOMAR SHAGHAYEGH ET AL: "Precise digital implementations of hyperbolic tanh and sigmoid function", 2016 50TH ASILOMAR CONFERENCE ON SIGNALS, SYSTEMS AND COMPUTERS, IEEE, 6 November 2016 (2016-11-06), pages 1586 - 1589, XP033072819, DOI: 10.1109/ACSSC.2016.7869646 *
SHANNON R. BOWLING ET AL: "A logistic approximation to the cumulative normal distribution", JOURNAL OF INDUSTRIAL ENGINEERING AND MANAGEMENT, vol. 2, no. 1, 1 January 2009 (2009-01-01), pages 114 - 127, XP055633582, DOI: 10.3926/jiem.2009.v2n1.p114-127 *
VALERIU BEIU ET AL: "Close Approximations of Sigmoid Functions by Sum of Steps for VLSI Implementation of Neural Networks x", 1 January 1994 (1994-01-01), XP055633576, Retrieved from the Internet <URL:http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.29.5332&rep=rep1&type=pdf> *

Also Published As

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

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
US12039769B2 (en) Identifying a type of object in a digital image based on overlapping areas of sub-images
EP3449423B1 (fr) Dispositif et procede de calcul de convolution d&#39;un reseau de neurones convolutionnel
EP3394797A1 (fr) Circuit neuronal optimise, architecture et procede pour l&#39;execution des reseaux de neurones
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
EP0521548A1 (fr) Procédé et dispositif avec un réseau neuronal pour classer des données
Zhang et al. Max-plus operators applied to filter selection and model pruning in neural networks
EP0546624A1 (fr) Système de traitement de données opérant avec une fonction non linéaire par morceaux
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é
EP3924895A1 (fr) Quantification de valeurs aberrantes pour l&#39;apprentissage et l&#39;inférence
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.
WO2020126529A1 (fr) Processeur de traitement de donnees, procede et programme d&#39;ordinateur correspondant.
EP0568146B1 (fr) Processeur neuronal muni de moyens pour normaliser des données
EP4162409A1 (fr) Procédé de génération d&#39;un système d&#39;aide à la décision et systèmes associés
WO2018197693A1 (fr) Procédé et dispositif automatisés aptes à assurer l&#39;invariance perceptive d&#39;un évènement spatio-temporel dynamiquement en vue d&#39;en extraire des représentations sémantiques unifié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
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
EP0378663B1 (fr) Dispositif de traitement de signal adaptatif et non lineaire
EP0401926B1 (fr) Procédé de traitement, stucture de réseau de neurones mettant en oeuvre le procédé et ordinateur pour simuler ladite structure de réseau de neurones
WO2023237498A1 (fr) Dispositif de traitement de donnees par voie d&#39;apprentissage, procede, programme et systeme correspondant
EP0619558B1 (fr) Procédé et appareil de classification de configurations de signaux

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 19813025

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2019813025

Country of ref document: EP

Effective date: 20210719