Brevet FR3087560A1 — publié le 20200424

Rétro-propagation d'erreurs sous forme impulsionnelle dans un réseau de neurones impulsionnels L'invention concerne le domaine des réseaux de neurones artificiels et 5 plus précisément celui des réseaux de neurones impulsionnels. Les réseaux de neurones artificiels sont composés essentiellement de neurones interconnectés entre eux par des synapses, qui sont classiquement implémentées par des mémoires numériques, mais qui peuvent être également implémentées par des composants résistifs dont la conductance lo varie en fonction de la tension appliquée à leurs bornes. Les réseaux de neurones impulsionnels sont en général optimisés par la mise en oeuvre de méthodes d'apprentissage supervisé ou non supervisé. Ces méthodes comprennent une première phase de propagation de données, produites en entrée du réseau de neurones, vers la couche de 15 sortie du réseau de neurones, puis une seconde phase de rétro-propagation d'erreurs depuis la couche de sortie vers la couche d'entrée. Lors de la seconde phase de rétro-propagation, les synapses sont mises à jour à partir d'erreurs calculées localement par chaque neurone en fonction d'erreurs rétro-propagées depuis la couche précédente du réseau de neurones. 20 L'invention porte sur un neurone impulsionnel et un réseau de neurones impulsionnels, conçus pour implémenter un algorithme de rétro-propagation d'erreurs sous forme d'impulsions signées ou non signées ou de données binaires ou ternaires. 25 Les réseaux de neurones impulsionnels présentent l'avantage de permettre une implémentation sur des calculateurs à ressources contraintes car les traitements mis en oeuvre pendant la phase de propagation de l'apprentissage ou pendant une phase de classification ne nécessitent pas de multiplications de nombres flottants. En effet, au sein d'un réseau de 30 neurones impulsionnels, les données sont codées sous forme d'impulsions (signées ou non) et les traitements exécutés par chaque neurone peuvent, 2 de ce fait, être implémentés uniquement à l'aide d'accumulateurs et de comparateurs. Ainsi, le recours à des opérateurs de multiplication de nombres flottants est évité, ce qui présente un avantage certain pour une implémentation numérique ou analogique sur des dispositifs à ressources limitées. Cependant, l'algorithme de rétro-propagation utilisé pour mettre à jour les valeurs des synapses lors d'une phase d'apprentissage nécessite, quand à lui, l'utilisation de multiplications de nombres flottants pour calculer les erreurs locales à chaque neurone. Par ailleurs, il nécessite également la propagation synchrone de ces erreurs sous la forme de nombres flottants entre chaque couche de neurones du réseau de neurones. Or les réseaux de neurones impulsionnels sont basés sur une logique de propagation des données asynchrones, sous forme d'impulsions. Ainsi, l'algorithme de rétro-propagation n'est généralement pas mis en oeuvre, au sein d'un réseau de neurones impulsionnel, de manière à prendre en compte les contraintes matérielles d'un tel réseau. Du fait de l'incompatibilité de mise en oeuvre d'un algorithme de rétro- propagation pour un réseau de neurones impulsionnel, l'apprentissage au sein d'un tel réseau est généralement réalisé en utilisant un algorithme inspiré de règles biologiques du type « Spike-Timing Dependent Plasticity » ou STDP. Ce type de règle d'apprentissage est cependant moins performant qu'un apprentissage basé sur un algorithme de rétro-propagation. La publication scientifique [1] décrit une mise en oeuvre possible d'un algorithme de rétro-propagation pour un réseau de neurones impulsionnels. Cependant, il s'agit d'une implémentation couteuse car elle nécessite des multiplications de nombres flottants et n'est pas adaptée à des dispositifs à faible consommation et ressources contraintes. La publication scientifique [2] décrit la possibilité de quantifier sur trois valeurs les erreurs rétro-propagées par l'algorithme de rétro-propagation. 3 Cependant ce document concerne les réseaux de neurones formels et non pas les réseaux de neurones impulsionnels. Il ne prend pas en compte les contraintes de traitement asynchrone de ces réseaux. 5 L'invention propose une nouvelle implémentation d'un algorithme de rétro-propagation d'erreurs qui soit adaptée aux contraintes matérielles d'un dispositif implémentant un réseau de neurones impulsionnels. L'invention utilise, notamment, un codage binaire ou ternaire des erreurs calculées lors de la phase de rétro-propagation pour adapter sa mise 10 en oeuvre aux contraintes du réseau et ainsi éviter le recours à des opérateurs de multiplication de nombres flottants. Plus généralement l'invention propose une adaptation globale de l'algorithme de rétro-propagation aux contraintes spécifiques d'un réseau de neurones impulsionnel. En particulier, l'invention permet d'utiliser la même 15 infrastructure de propagation pour la propagation des données et pour la rétro-propagation des erreurs lors de la phase d'apprentissage. L'invention propose une implémentation générique d'un neurone impulsionnel qui convient à la mise en oeuvre de tout type de réseaux de neurones impulsionnels, en particulier les réseaux convolutionnels. 20 Dans un premier mode de réalisation, l'invention a pour objet un neurone artificiel impulsionnel appartenant à une couche intermédiaire de plusieurs neurones, la couche intermédiaire appartenant à un réseau de neurones comprenant plusieurs couches successives, le réseau de neurones 25 étant configuré pour exécuter un mécanisme d'apprentissage comprenant une première phase de propagation de données d'une couche d'entrée vers une couche de sortie, et une seconde phase de rétro-propagation d'erreurs depuis la couche de sortie vers la couche d'entrée, le neurone artificiel impulsionnel comprenant, pour l'exécution de la seconde phase de rétro- 30 propagation: 4 Une première interface d'entrée/sortie apte à recevoir des signaux d'erreur binaires ou ternaires pondérés par des coefficients synaptiques, Un module de calcul d'erreur configuré pour calculer un signal 5 d'erreur locale binaire ou ternaire à partir d'un signal intermédiaire binaire ou ternaire généré par le neurone en réponse aux signaux d'erreur reçus et d'une estimée de la dérivée d'une fonction d'activation équivalente mise en oeuvre par le neurone pendant la première phase de propagation de données, 10 Une seconde interface d'entrée/sortie apte à propager le signal d'erreur locale binaire ou ternaire vers plusieurs synapses sous forme d'impulsions. Selon un aspect particulier du premier mode de réalisation de l'invention, la première interface d'entrée/sortie est apte à émettre des 15 signaux binaires ou ternaires vers plusieurs synapses sous forme d'impulsions pendant la première phase de propagation de données et la seconde interface d'entrée/sortie est apte à recevoir des signaux binaires ou ternaires pondérés par des coefficients synaptiques pendant la première phase de propagation de données. 20 Selon une variante particulière du premier mode de réalisation de l'invention, le neurone artificiel impulsionnel comprend : Un module d'intégration desdits signaux d'erreur pour calculer une erreur cumulée, Au moins un comparateur pour comparer l'erreur cumulée à au 25 moins un seuil d'activation parmi un seuil d'activation positif et un seuil d'activation négatif, Un module d'activation configuré pour générer le signal intermédiaire binaire ou ternaire en fonction du résultat de l'au moins un comparateur. 30 Dans un second mode de réalisation, l'invention a aussi pour objet un neurone artificiel impulsionnel appartenant à une couche intermédiaire de 5 plusieurs neurones, la couche intermédiaire appartenant à un réseau de neurones comprenant plusieurs couches successives, le réseau de neurones étant configuré pour exécuter un mécanisme d'apprentissage comprenant une première phase de propagation de données d'une couche d'entrée vers 5 une couche de sortie, et une seconde phase de rétro-propagation d'erreurs depuis la couche de sortie vers la couche d'entrée, le neurone artificiel impulsionnel comprenant, pour l'exécution de la seconde phase de rétro-propagation: Une première interface d'entrée/sortie apte à recevoir des signaux lo d'erreur binaires ou ternaires, Un module de calcul d'erreur configuré pour calculer un signal d'erreur locale binaire ou ternaire à partir d'un signal intermédiaire binaire ou ternaire généré par le neurone en réponse aux signaux d'erreur reçus et d'une estimée de la dérivée d'une fonction 15 d'activation équivalente mise en oeuvre par le neurone pendant la première phase de propagation de données, Une seconde interface d'entrée/sortie apte à propager le signal d'erreur locale binaire ou ternaire vers les neurones de la couche suivante. 20 Selon un aspect particulier du second mode de réalisation de l'invention, la première interface d'entrée/sortie est apte à émettre des signaux binaires ou ternaires vers les neurones de la couche suivante pendant la première phase de propagation de données et la seconde interface d'entrée/sortie est apte à recevoir des signaux binaires ou ternaires 25 pendant la première phase de propagation de données. Selon une variante particulière du second mode de réalisation de l'invention, le neurone artificiel impulsionnel comprend : Un module d'intégration desdits signaux d'erreur binaires ou ternaires pour calculer une erreur cumulée et pondérée par des 30 coefficients synaptiques, 6 - Au moins un comparateur pour comparer l'erreur cumulée à au moins un seuil d'activation parmi un seuil d'activation positif et un seuil d'activation négatif, Un module d'activation configuré pour générer le signal 5 intermédiaire binaire ou ternaire en fonction du résultat de l'au moins un comparateur. Selon un aspect particulier de l'invention, le module d'activation est configuré pour générer un signal intermédiaire positif lorsque l'erreur cumulée est supérieure au seuil d'activation positif et un signal intermédiaire 10 négatif lorsque l'erreur cumulée est inférieure au seuil d'activation négatif. Selon une variante particulière, le neurone artificiel impulsionnel selon l'un quelconque des modes de réalisation de l'invention comprend en outre un soustracteur pour soustraire de l'erreur cumulée la valeur du seuil d'activation positif lorsqu'un signal intermédiaire positif est généré et 15 soustraire de l'erreur cumulée la valeur du seuil d'activation négatif lorsqu'un signal intermédiaire négatif est généré. Selon une variante particulière, le neurone artificiel impulsionnel selon l'un quelconque des modes de réalisation de l'invention comprend en outre un module de calcul d'une mise à jour de coefficients synaptiques à partir de 20 l'erreur locale et d'un résultat de la fonction d'activation équivalente. Selon un aspect particulier de l'invention, le résultat de la fonction d'activation équivalente est calculé pendant la phase de propagation de données d'un neurone. Selon un aspect particulier de l'invention, le module de calcul d'une 25 mise à jour de coefficients synaptiques est activé après la propagation de l'erreur locale. Selon un aspect particulier de l'invention, le module de calcul d'un signal d'erreur locale est configuré pour calculer un produit entre le signal intermédiaire et l'estimée de la dérivée de la fonction d'activation 30 équivalente. 7 Selon un aspect particulier de l'invention, la fonction d'activation équivalente est une fonction d'intégration des impulsions générées par le neurone et pondérée par un paramètre de taux d'apprentissage du réseau de neurones. 5 Selon une variante particulière, le neurone artificiel impulsionnel selon l'un quelconque des modes de réalisation de l'invention comprend un module de calcul de dérivée configuré pour calculer l'estimée de la dérivée de la fonction d'activation équivalente à partir d'un résultat de la fonction d'activation équivalente mise en oeuvre par le neurone pendant la première 10 phase de propagation de données et d'une variable d'intégration du neurone pendant la première phase de propagation de données. Selon un aspect particulier de l'invention, l'estimée de la dérivée de la fonction d'activation équivalente est égale à 1 lorsque le résultat de ladite fonction est strictement positif ou la variable d'intégration est strictement 15 positive, et est égale à 0 sinon. Selon un aspect particulier de l'invention, le module de calcul de dérivée est activé pendant la phase de propagation de données du neurone ou pendant la phase de rétro-propagation d'erreurs du neurone. L'invention a encore pour objet un réseau de neurones artificiels 20 impulsionnels configuré pour exécuter un mécanisme d'apprentissage comprenant une première phase de propagation de données d'une couche d'entrée vers une couche de sortie, et une seconde phase de rétro-propagation d'erreurs depuis la couche de sortie vers la couche d'entrée, le réseau de neurones comprenant plusieurs couches de neurones artificiels 25 impulsionnels selon l'un quelconque des modes de réalisation de l'invention, chaque neurone étant connecté au moins à un neurone d'une couche suivante ou à un neurone d'une couche précédente par l'intermédiaire d'une synapse. Selon un aspect particulier de l'invention, le réseau comprend une 30 couche d'entrée et une couche de sortie, les neurones de la couche d'entrée étant configurés pour recevoir des données à propager sous forme binaire ou 8 ternaire et les neurones de la couche de sortie étant configurés pour calculer, à partir des données propagées pendant la première phase de propagation de données, une erreur entre un résultat obtenu et un résultat cible. Selon un aspect particulier de l'invention, chaque neurone de la 5 couche de sortie comprend un codeur configuré pour coder l'erreur en un ensemble d'au moins un signal binaire ou ternaire. Selon un aspect particulier de l'invention, le codeur est configuré pour quantifier l'erreur sur deux ou trois niveaux de quantification de manière à générer un signal binaire ou ternaire. 10 Selon un aspect particulier de l'invention, le codeur est configuré pour coder l'erreur par un groupe de signaux binaires successifs ou un groupe de signaux ternaires successifs. L'invention a encore pour objet un réseau de neurones artificiels configuré pour exécuter un mécanisme d'apprentissage comprenant une 15 première phase de propagation de données d'une couche d'entrée vers une couche de sortie, et une seconde phase de rétro-propagation d'erreurs depuis la couche de sortie vers la couche d'entrée, le réseau de neurones comprenant plusieurs couches de neurones artificiels impulsionnels selon le second mode de réalisation de l'invention, chaque neurone étant connecté 20 au moins à un neurone d'une couche suivante ou à un neurone d'une couche précédente par l'intermédiaire d'une synapse ayant un poids synaptique, les synapses étant implémentées sous forme de mémoires numériques, de dispositifs memristifs ou de circuits analogiques. Selon un aspect particulier de l'invention, chaque synapse est 25 configurée pour mettre à jour son poids synaptique en réponse à un signal d'erreur binaire ou ternaire reçu depuis un neurone d'une couche suivante et à un signal représentatif du résultat de la fonction d'activation équivalente reçu depuis un neurone d'une couche précédente. 9 D'autres caractéristiques et avantages de la présente invention apparaîtront mieux à la lecture de la description qui suit en relation aux dessins annexés qui représentent : La figure 1, un schéma général d'un réseau de neurones artificiels 5 impulsionnels, - La figure 2, un schéma d'un neurone artificiel impulsionnel, selon un premier mode de réalisation de l'invention, exécutant une première phase de propagation de données d'un mécanisme d'apprentissage, La figure 3, un schéma d'un neurone artificiel impulsionnel, selon un lo second mode de réalisation de l'invention, exécutant une première phase de propagation de données d'un mécanisme d'apprentissage, - La figure 4, un schéma d'un neurone artificiel impulsionnel de la couche de sortie du réseau de neurones, - La figure 5, un schéma d'un neurone artificiel impulsionnel, selon le 15 premier mode de réalisation de l'invention, exécutant une seconde phase de rétro-propagation d'erreurs d'un mécanisme d'apprentissage, La figure 5bis, un schéma d'une variante du premier mode de réalisation, 20 La figure 6, un schéma d'un neurone artificiel impulsionnel, selon le second mode de réalisation de l'invention, exécutant une seconde phase de rétro-propagation d'erreurs d'un mécanisme d'apprentissage. 25 La figure 1 représente un schéma général d'un réseau de neurones artificiels impulsionnels. Un réseau de neurones est classiquement composé de plusieurs couches Ce,CI,Cki,Cs de neurones impulsionnels interconnectés. Le réseau comporte au moins une couche d'entrée Ce et une couche de sortie Cs et au moins une couche intermédiaire CI,Cki. Les 30 neurones Ni., de la couche d'entrée Ce reçoivent chacun en entrée une donnée d'entrée 101. Les données d'entrée peuvent être de natures 10 différentes selon l'application visée. Par exemple, il peut s'agir de pixels d'une image ou de données audio ou textuelles ou plus généralement n'importe quel type de données pouvant être codées sous forme d'impulsions. Les applications d'un réseau de neurones comprennent 5 notamment la classification et la détection d'objets dans une image ou dans une vidéo pour des dispositifs embarqués dans des véhicules autonomes ou des dispositifs de vidéo surveillance associés à des caméras de vidéo-surveillance. Un réseau de neurones est, par exemple, utilisé dans le domaine de la classification d'image ou de la reconnaissance d'image ou 10 plus généralement la reconnaissance de caractéristiques qui peuvent être visuelles, audio ou les deux à la fois. Chaque neurone d'une couche est connecté, par son entrée et/ou sa sortie, à tous les neurones de la couche précédente ou suivante. Plus généralement un neurone peut n'être connecté qu'à une partie des neurones d'une autre couche, notamment dans le cas 15 d'un réseau convolutionnel. Les connexions 102,103,104 entre deux neurones Ni.e, N11 se font à travers des synapses artificielles Si,S2,S3 qui peuvent être réalisées, notamment, par des mémoires numériques ou par des dispositifs memristifs. Les coefficients des synapses peuvent être optimisés grâce à un mécanisme d'apprentissage du réseau de neurones. 20 Ce mécanisme comporte deux phases distinctes, une première phase de propagation de données de la couche d'entrée vers la couche de sortie et une seconde phase de rétro-propagation d'erreurs de la couche de sortie vers la couche d'entrée avec, pour chaque couche, une mise à jour des poids des synapses. 25 Lors de la première phase de propagation de données, des données d'apprentissage, par exemple des images ou séquences d'images, sont fournies en entrée des neurones de la couche d'entrée et propagées dans le réseau. Pour un réseau de neurones impulsionnels, les données sont codées sous forme d'impulsions asynchrones. Les impulsions correspondent à des 30 signaux binaires ou ternaires, autrement dit il peut s'agir d'impulsions signées ou non. 11 Chaque neurone met en oeuvre, pendant cette première phase, une fonction d'intégration des impulsions qu'il reçoit des neurones de la couche précédente (ou des impulsions codées depuis les données d'entrée pour les neurones de la couche d'entrée). La fonction d'intégration consiste 5 essentiellement en une accumulation des impulsions pondérées par les poids des synapses artificielles. Chaque neurone met aussi en oeuvre une fonction d'activation qui consiste, à partir d'une comparaison de la variable d'intégration à un ou deux seuil(s) d'activation, à générer et propager une impulsion vers les neurones de la couche suivante. Selon les modèles de -Io neurones choisis, la fonction d'intégration et la fonction d'activation peuvent varier. En particulier, un courant de fuite peut être implémenté par le neurone pour atténuer la variable d'intégration au cours du temps lorsqu'aucune impulsion n'est reçue par le neurone. Les neurones 1\1;,, de la couche de sortie Cs exécutent un traitement supplémentaire en ce qu'ils calculent une 15 erreur entre un résultat d'intégration des impulsions reçues par le neurone 1\11,8 et une valeur attendue ou une valeur cible qui correspond à l'état final du neurone de la couche de sortie que l'on souhaite obtenir en relation avec les données d'entrée d'apprentissage. Lors de la seconde phase de rétro-propagation d'erreurs, les 20 neurones de la couche de sortie C5 transmettent les erreurs calculées aux neurones de la couche précédente 0,1 qui calculent une erreur locale à partir de l'erreur rétro-propagée de la couche précédente et transmettent à leur tour cette erreur locale à la couche précédente CI. En parallèle, chaque neurone calcule, à partir de l'erreur locale, une valeur de mise à jour des 25 poids des synapses auxquelles il est connecté et met à jour les synapses. Le processus se poursuit pour chaque couche de neurones jusqu'à l'avant dernière couche qui est chargée de mettre à jour les poids des synapses qui la relient à la couche d'entrée Ce. Un objectif de l'invention est de proposer une mise en oeuvre 30 particulière de la phase de rétro-propagation d'erreurs, qui soit adaptée aux 12 contraintes d'implémentation ou contraintes matérielles des neurones impulsionnels. La figure 2 décrit un exemple de neurone impulsionnel selon un 5 premier mode de réalisation de l'invention et son fonctionnement lors de la phase de propagation de données. Sur la figure 2 est représenté un neurone Nu appartenant à une couche intermédiaire CI. Le neurone Nu est connecté en aval aux neurones d'une couche suivante 0,1 par l'intermédiaire de synapses W1,1-4, 10 W2,1+1,-,WK,1-1. Selon le premier mode de réalisation de l'invention, les synapses sont réalisées par des dispositifs memristifs ou memristors ou tout circuit analogique équivalent. De la même façon, le neurone Nu est connecté en amont aux neurones d'une couche précédente C11 par l'intermédiaire de synapses vu -1,1, W2.1.. 15 Lors de la phase de propagation de données, le neurone Nu reçoit, via une première interface d'entrée/sortie E/52, des impulsions émises par les neurones de la couche précédente et pondérées par les poids des synapses W1,1, W2,1...,WK,I. Les synapses, réalisées par des dispositifs memristifs, reçoivent une impulsion signée ou non signée d'amplitude constante émise 20 par un neurone et émettent à leur sortie, une impulsion amplifiée par une valeur représentative du poids de la synapse. Les signaux reçus par le neurone Nu correspondent à des signaux binaires ou ternaires pondérés par les poids des synapses. Les signaux reçus sont intégrés par un module d'intégration INT qui réalise une fonction d'intégration qui dépend de la 25 nature du neurone. Selon un exemple de réalisation, la fonction d'intégration consiste à sommer ou intégrer, dans le temps, les signaux reçus. Dans un autre exemple de réalisation, la fonction d'intégration comprend une fonction d'atténuation ou de fuite pour faire décroitre la variable d'intégration au cours du temps lorsqu'aucun signal n'est reçu par le neurone. La variable 30 d'intégration Vu obtenue en sortie du module d'intégration INT est ensuite comparée à un ou plusieurs seuils d'activation via un comparateur COMP. 13 Selon un premier exemple de réalisation, un seul seuil d'activation positif Off est utilisé. Lorsque la variable d'intégration V,i dépasse le seuil d'activation positif Off, un module d'activation ACT génère une impulsion positive et la variable d'intégration Vu est diminuée de la valeur du seuil eff. Selon un 5 second exemple de réalisation, en plus du seuil positif Off, un seuil négatif -eff est utilisé. Lorsque la variable d'intégration Vu diminue en dessous du seuil d'activation négatif -Off, un module d'activation ACT génère une impulsion négative et la variable d'intégration Vu est diminuée de la valeur du seuil -Off (ou augmentée de la valeur Off). Les valeurs absolues des deux seuils 10 peuvent être égales ou différentes. Les impulsions générées par le module d'activation ACT sont transmises à une interface d'entrée/sortie E/S, pour être propagées vers les synapses W1,i+1, W2.1+1,---,WK.1+1 connectées entre le neurone Nu et les neurones de la couche suivante Ci+1. La variable d'intégration Vu calculée par le module d'intégration INT 15 au cours du temps peut être représentée par la relation suivante : Vt,/ (t) = (t - At) - Of f. si,1(t - At) -H E j wity. sj, (t) (1) su(t) représente l'impulsion générée par le neurone dont la valeur est donnée par la relation suivante dans le cas d'un signal ternaire: 1 si Vi,f(t) > Off 20 = Si,i(Vu(0) = -1 si V11(t) G -Off (2) 0 sinon Dans le cas d'un signal binaire, la relation (2) est remplacée par : si,f(t) = st,f(Vi,f(t)) = [1 si VH(t) > Orr (2') La variable d'intégration V,i peut être initialisée à une valeur différente 25 de 0 au début de la phase de propagation de données. Les traitements décrits ci-dessus et mis en oeuvre par le neurone Nu ne sont basés que sur des accumulations ou des comparaisons et ne nécessitent aucune multiplication de nombres flottants. 0 sinon 14 Le neurone exécute en outre deux fonctions de calcul supplémentaires pour calculer des variables qui seront utilisées pendant la phase de rétro-propagation d'erreurs. Un deuxième module d'intégration FAE est utilisé pour accumuler les 5 impulsions su générées par le neurone au cours du temps, l'accumulation étant pondérée par un taux d'apprentissage ni qui est un paramètre du réseau de neurones. Ce taux d'apprentissage ni peut être différent pour chaque couche du réseau. La variable xu obtenue en sortie de ce deuxième module d'intégration 10 est représentée par la relation suivante : x11(t)= ut. su(t) + - At) (3) Cette variable peut aussi être représentée par les relations suivantes, où ai., correspond à l'accumulation au cours du temps des impulsions générées par le neurone et est appelée fonction d'activation équivalente du 15 neurone. La variable xu (t) correspond à la fonction d'activation équivalente pondérée par un paramètre de taux d'apprentissage ri 1. = au(t) (1/41(0 = su(t) + - At) 20 Le calcul de la variable xi,, ne nécessite pas non plus de multiplication car les impulsions su prennent les valeurs 1,0 ou -1. Le calcul de la variable xi., consiste en une accumulation de la valeur ni. Un module de dérivation DER est aussi utilisé pour calculer une estimée a'y de la fonction d'activation équivalente au du neurone. Cette 25 estimée est utilisée lors de la phase de rétro-propagation d'erreurs. L'estimée a'y est égale à 1 si la variable d'intégration V;,, est supérieure à 0 ou que la variable xy est supérieure à 0 et vaut 0 sinon. a'0(0 = {1 si Vi,i(t) > 0 ou xj,i(t) > 0 (4) 0 sinon 15 Sans sortir du cadre de l'invention, d'autres estimées de la fonction d'activation équivalente peuvent être déterminées de sorte à produire une variable binaire {0 ;1} ou ternaire {-1 ;0 ;1}. Une caractéristique de l'invention est que l'estimée a'u est une variable binaire ou ternaire de sorte à éviter les 5 calculs impliquant des multiplications de nombres flottants. Les valeurs de Vo(t) et xu(t) utilisées pour calculer a' sont les dernières valeurs à jour calculées par le neurone lors de la phase de propagation de données pour une séquence d'apprentissage présentée en lo entrée du réseau de neurones. Le calcul de l'estimée a'11 de la fonction d'activation équivalente au du neurone peut être réalisé pendant la phase de propagation de données auquel cas la valeur de aï, est sauvegardée dans une mémoire pour être utilisée lors de la phase de rétro-propagation d'erreurs. Le calcul de l'estimée 15 a'ij peut aussi être réalisé pendant la phase de rétro-propagation d'erreurs, à partir des dernières valeurs sauvegardées par le neurone de Vo(t) et xu(t). Dans une variante de réalisation, la fonction d'activation mise en oeuvre par le neurone peut être modifiée de la façon suivante : 1 si Vi,j(t) > Off 20 st,t(t) = si,/(Vitt(t)) = -1 si Viii(t) 0 (5) 0 sinon Selon cette variante, la somme des impulsions générées par le neurone, représentée par la variable au(t) est toujours supérieure à O. La figure 3 représente un second mode de réalisation du neurone 25 impulsionnel selon l'invention. Dans ce second mode de réalisation, le neurone est implémenté par un dispositif numérique. Les signaux impulsionnels binaires ou ternaires sont codés par des signaux numériques binaires ou ternaires et sont transmis entre les neurones via une infrastructure de communication numérique. Les synapses ne sont plus 16 réalisées par des dispositifs actifs positionnés sur les connexions entre deux neurones. Selon cette implémentation numérique, les poids des synapses sont stockés dans une mémoire numérique MEM_W. Les signaux reçus par l'interface d'entrée E/S2 sont des signaux binaires ou ternaires (selon le 5 modèle de neurone choisi). Le module d'intégration INT est modifié pour calculer la somme des signaux reçus pondérés par les poids des synapses qui sont lus dans la mémoire MEM_W. Autrement dit, la pondération des signaux par les poids des synapses est réalisée par le neurone et non par les synapses comme dans le premier mode de réalisation. 10 Lorsque les données produites en entrée du réseau de neurones, autrement dit en entrée de la couche d'entrée Ce du réseau sont propagées jusqu'à la couche de sortie Cs du réseau, la phase de propagation des données est terminée. Chaque neurone de la couche de sortie est configuré 15 pour calculer une variable et une valeur cible souhaitée pour cette variable. Selon le modèle de neurone de sortie choisi, la variable utilisée peut être la variable d'intégration Vis calculée par le module d'intégration INT ou les impulsions si,, générées par le module d'activation ACT ou le résultat de la fonction d'activation équivalente ais ou toute combinaison d'une ou plusieurs 20 de ces variables ou d'autres variables calculées par le neurone de sortie. La valeur cible est choisie selon l'application. Par exemple si le réseau de neurone est utilisé dans le cadre d'une classification d'objets, la valeur cible correspond à l'objet que chaque neurone de sortie est censé détecter. Autrement dit, chaque neurone de sortie peut calculer une fonction de 25 cout dépendante d'une ou plusieurs des variables calculées ou d'une combinaison d'une ou plusieurs de ces variables et d'une valeur cible ou valeur souhaitée. L'erreur calculée par le neurone de sortie est alors égale à la dérivée de la fonction de cout par rapport à chaque variable utilisée. Par exemple, la fonction de cout utilisée peut dépendre uniquement de la 30 fonction d'activation équivalente ai,s(t) et l'erreur calculée sera dépendante de la dérivée de cette fonction d'activation équivalente. On note Si,s l'erreur 17 calculée par le neurone de sortie Ni,s. Cette erreur est ensuite codée, à l'aide d'un codeur que comporte le neurone de sortie, sous forme d'impulsions ou de données numériques. Différents types de codage sont possibles. Les impulsions peuvent être codées sur trois niveaux en tant que signaux 5 ternaires. Selon une première variante, l'erreur ôi,s, qui est un nombre flottant, est quantifiée sur trois niveaux -1,0,1 et transmise aux neurones de la couche précédente via un signal numérique ou une impulsion ternaire. Selon une seconde variante, l'erreur 5;,s est décomposée en une somme des valeurs -1,0 et 1 et est codée par un groupe de données numériques ou 10 d'impulsions ternaires. Par exemple, la valeur 5,3 peut être codée par cinq impulsions positives successives, la valeur -3,2 peut être codée par trois impulsions négatives successives. Les impulsions peuvent être aussi codées sur deux niveaux en tant que signaux binaires selon les deux variantes de codage présentées ci-dessus. 15 La figure 4 représente un exemple d'implémentation d'un neurone de sortie N1,5. Il comprend principalement une interface d'entrée/sortie E/S2, un module d'intégration INT, un module de calcul d'erreur CALC_ER et un codeur COD pour coder l'erreur calculée en impulsions qui sont ensuite rétro-propagées vers la couche précédente via l'interface d'entrée/sortie 20 E/S2. Le neurone de sortie 1\11,5 peut aussi comprendre un comparateur COMP et un module d'activation ACT lorsque ceux-ci sont nécessaires pour le calcul de variables utilisées pour le calcul de l'erreur. La figure 5 décrit, selon le premier mode de réalisation de l'invention, 25 le fonctionnement d'un neurone impulsionnel Nu d'une couche intermédiaire Ci durant la phase de rétro-propagation des erreurs calculées par les neurones de la couche de sortie. Dans ce premier mode de réalisation, les synapses sont réalisées par des dispositifs memristifs, memristors ou tout circuit analogique équivalent 30 comme explicité dans le paragraphe relatif à la figure 2. Sur la figure 5, on a représenté uniquement les modules de calcul et opérateurs du neurone qui 18 interviennent pendant la phase de rétro-propagation. Dans une implémentation réelle du neurone, celui-ci comprend à la fois les modules et opérateurs décrits à la figure 5 qui sont activés pendant la phase de rétro-propagation et les modules et opérateurs décrits à la figure 2 qui sont activés 5 pendant la phase de propagation de données. Les synapses Wth-i, W2,1+1,...,WK,i,s reçoivent les erreurs calculées par les neurones de la couche précédente CrEi (dans le sens de la rétro-propagation) sous forme d'impulsions binaires ou ternaires. Chaque synapse émet en réponse un signal correspondant à l'impulsion reçue pondérée par 10 le poids de la synapse. Ces signaux d'erreur pondérés sont reçus par l'interface d'entrée/sortie E/S, puis traités par un module d'intégration INTER qui réalise une accumulation des signaux reçus. Le module d'intégration INT_ER activé pendant la phase de rétro-propagation réalise la même fonction que le module d'intégration INT activé pendant la phase de 15 propagation des données. Ils peuvent être réalisés par deux modules distincts ou par le même module. La variable d'intégration U1,1 obtenue en sortie du module d'intégration INT_ER est ensuite comparée à un ou deux seuils d'activation. Par exemple, lorsque les signaux reçus sont des signaux ternaires, un seuil d'activation positif ebp et un seuil d'activation négatif -ebp 20 sont utilisés, via un comparateur COMP_ER qui peut être réalisé par le même composant que le comparateur COMP décrit à la figure 2. Lorsque la variable d'intégration th dépasse le seuil d'activation positif ebp, un module d'activation ACT_ER génère une impulsion positive et la variable d'intégration Liu est diminuée de la valeur du seuil ebp. Lorsque la variable 25 d'intégration U1,1 diminue en dessous du seuil d'activation négatif -9bp, un module d'activation ACT_ER génère une impulsion négative et la variable d'intégration U1,1 est diminuée de la valeur du seuil -ebp. Le module d'activation ACT_ER peut être réalisé par le même composant que le module d'activation ACT décrit à la figure 2. 30 La variable d'intégration du neurone pendant la phase de rétro- propagation d'erreurs est donnée par la relation suivante : 19 Uu(0 = - - Obp. ZiJ(( - At) + Ek i,k,i+1. SM-n(0 Le signal généré par le module d'activation ACT_ER est un signal impulsionnel intermédiaire .II peut être représenté par la relation suivante : 5 f1 si U 41(t) > Obp zu - (t) = -1 si Uti(t) Obp zi,/ (t) = -1 si Ut,/ (t) Obp Zid (t) = UH(t) Obp 0 sinon Lorsque la variable d'intégration U,,, dépasse le seuil d'activation ebp, le module d'activation ACT_ER génère une impulsion positive et la variable d'intégration U1,1 est diminuée de la valeur du seuil ebp. 15 Lors d'une seconde phase, l'algorithme de rétro-propagation est exécuté par le réseau de neurones en considérant un signal impulsionnel intermédiaire zu binaire représenté par la relation suivante, avec -Obp un seuil d'activation négatif : (-1 si Ut,t(t) >, S. Yin et al, 2017 IEEE 5 Biomedical Circuits and Systems, [2] "Hardware efficient on line learning through pipeiined truncated error back-propagation in binary state networks", H. Mostafa et al, Frontiers in Neuroscience, REVENDICATIONS1. Neurone artificiel impulsionnel (N1,1) appartenant à une couche intermédiaire (CI) de plusieurs neurones, la couche intermédiaire (Ci) appartenant à un réseau de neurones comprenant plusieurs couches successives (CH, CI, C1±1), le réseau de neurones étant configuré pour exécuter un mécanisme d'apprentissage comprenant une première phase de propagation de données d'une couche d'entrée vers une couche de sortie, et une seconde phase de rétro-propagation d'erreurs depuis la couche de sortie vers la couche d'entrée, le neurone artificiel impulsionnel (NL1) comprenant, pour l'exécution de la seconde phase de rétro-propagation: - Une première interface d'entrée/sortie (E/Si) apte à recevoir des signaux d'erreur binaires ou ternaires pondérés par des coefficients synaptiques, - Un module de calcul d'erreur (ER_LOC) configuré pour calculer un signal d'erreur locale binaire ou ternaire (51,1) à partir d'un signal intermédiaire binaire ou ternaire (41) généré par le neurone en réponse aux signaux d'erreur reçus et d'une estimée (a'1,1) de la dérivée d'une fonction d'activation équivalente (FAE) mise en oeuvre par le neurone (Nu) pendant la première phase de propagation de données, - Une seconde interface d'entrée/sortie (E/S2) apte à propager le signal d'erreur locale binaire ou ternaire (6i,l) vers plusieurs synapses sous forme d'impulsions. 2. Neurone artificiel impulsionnel (Nu) selon la revendication 1 dans lequel la première interface d'entrée/sortie (E/S1) est apte à émettre des signaux binaires ou ternaires vers plusieurs synapses sous forme d'impulsions pendant la première phase de propagation de données et la seconde 28 interface d'entrée/sortie (E/S2) est apte à recevoir des signaux binaires ou ternaires pondérés par des coefficients synaptiques pendant la première phase de propagation de données. 5 3. Neurone artificiel impulsionnel selon l'une des revendications 1 ou 2 comprenant : Un module d'intégration (INT_ER) desdits signaux d'erreur pour calculer une erreur cumulée (Uu), Au moins un comparateur (COMP_ER) pour comparer l'erreur lo cumulée (Vu) à au moins un seuil d'activation parmi un seuil d'activation positif et un seuil d'activation négatif, Un module d'activation (ACT_ER) configuré pour générer le signal intermédiaire binaire ou ternaire (4.1) en fonction du résultat de l'au moins un comparateur. 15 4. Neurone artificiel impulsionnel (NLI) appartenant à une couche intermédiaire (Ci) de plusieurs neurones, la couche intermédiaire (Ci) appartenant à un réseau de neurones comprenant plusieurs couches successives (CH, CI, 0,1), le réseau de neurones étant configuré pour 20 exécuter un mécanisme d'apprentissage comprenant une première phase de propagation de données d'une couche d'entrée vers une couche de sortie, et une seconde phase de rétro-propagation d'erreurs depuis la couche de sortie vers la couche d'entrée, le neurone artificiel impulsionnel (Nu) comprenant, pour l'exécution de la seconde phase de rétro- 25 propagation: Une première interface d'entrée/sortie (E/S1) apte à recevoir des signaux d'erreur binaires ou ternaires, Un module de calcul d'erreur (ER LOC) configuré pour calculer un signal d'erreur locale binaire ou ternaire (51,i) à partir d'un signal 30 intermédiaire binaire ou ternaire (41) généré par le neurone en réponse aux signaux d'erreur reçus et d'une estimée (a'1,1) de la 29 dérivée d'une fonction d'activation équivalente (FAE) mise en oeuvre par le neurone (N1,1) pendant la première phase de propagation de données, Une seconde interface d'entrée/sortie (E/S2) apte à propager le 5 signal d'erreur locale binaire ou ternaire (6,.,) vers les neurones de la couche suivante (Cm). 5. Neurone artificiel impulsionnel (N,1) selon la revendication 4 dans lequel la première interface d'entrée/sortie (E/S1) est apte à émettre des signaux 10 binaires ou ternaires vers les neurones de la couche suivante (Ci+1) pendant la première phase de propagation de données et la seconde interface d'entrée/sortie (E/S2) est apte à recevoir des signaux binaires ou ternaires pendant la première phase de propagation de données. 15 6. Neurone artificiel impulsionnel selon l'une des revendications 4 ou 5 comprenant : Un module d'intégration (INT_ER) desdits signaux d'erreur binaires ou ternaires pour calculer une erreur cumulée et pondérée par des coefficients synaptiques (U1,1), 20 Au moins un comparateur (COMP_ER) pour comparer l'erreur cumulée (U,.1) à au moins un seuil d'activation parmi un seuil d'activation positif et un seuil d'activation négatif, Un module d'activation (ACT_ER) configuré pour générer le signal intermédiaire binaire ou ternaire (z,.1) en fonction du résultat de l'au 25 moins un comparateur. 7. Neurone artificiel impulsionnel (No) selon l'une des revendications 3 ou 6 dans lequel le module d'activation (ACT_ER) est configuré pour générer un signal intermédiaire positif lorsque l'erreur cumulée est supérieure au 30 seuil d'activation positif et un signal intermédiaire négatif lorsque l'erreur cumulée est inférieure au seuil d'activation négatif. 30 8. Neurone artificiel impulsionnel (Nu) selon la revendication 7 comprenant en outre un soustracteur pour soustraire de l'erreur cumulée (UA) la valeur du seuil d'activation positif lorsqu'un signal intermédiaire positif est 5 généré et soustraire de l'erreur cumulée (Uu) la valeur du seuil d'activation négatif lorsqu'un signal intermédiaire négatif est généré. 9. Neurone artificiel impulsionnel (No) selon l'une des revendications précédentes comprenant en outre un module de calcul (MAJ) d'une mise 10 à jour de coefficients synaptiques à partir de l'erreur locale (.5u) et d'un résultat (x01) de la fonction d'activation équivalente (FAE). 10. Neurone artificiel impulsionnel (No) selon la revendication 9 dans lequel le résultat (xi 1_1) de la fonction d'activation équivalente (FAE) est calculé 15 pendant la phase de propagation de données d'un neurone. 11. Neurone artificiel impulsionnel (No) selon l'une des revendications 9 ou 10 dans lequel le module de calcul (MAJ) d'une mise à jour de coefficients synaptiques est activé après la propagation de l'erreur locale. 20 12. Neurone artificiel impulsionnel (NILI) selon l'une des revendications précédentes dans lequel le module de calcul (ER_LOC) d'un signal d'erreur locale est configuré pour calculer un produit entre le signal 25 intermédiaire (zu) et l'estimée (a'u) de la dérivée de la fonction d'activation équivalente (FAE). 13. Neurone artificiel impulsionnel (N11) selon l'une des revendications précédentes dans lequel la fonction d'activation équivalente (FAE) est 30 une fonction d'intégration des impulsions (su) générées par le neurone et pondérée par un paramètre de taux d'apprentissage (r1) du réseau de neurones. 31 14. Neurone artificiel impulsionnel (Ni), selon l'une des revendications précédentes comprenant un module de calcul de dérivée (DER) configuré pour calculer l'estimée (a'i,1) de la dérivée de la fonction d'activation équivalente (FAE) à partir d'un résultat de la fonction d'activation 5 équivalente (FAE) (xi,l) mise en oeuvre par le neurone (N1,1) pendant la première phase de propagation de données et d'une variable d'intégration (V11) du neurone pendant la première phase de propagation de données. 15. Neurone artificiel impulsionnel (Nu) selon la revendication 14 dans lequel 10 l'estimée (a'i,i) de la dérivée de la fonction d'activation équivalente (FAE) est égale à 1 lorsque le résultat (xi,i) de ladite fonction est strictement positif ou la variable d'intégration (Vi,1) est strictement positive, et est égale à 0 sinon. 15 16. Neurone artificiel impulsionnel (Nu) selon l'une des revendications précédentes dans lequel le module de calcul de dérivée (DER) est activé pendant la phase de propagation de données du neurone ou pendant la phase de rétro-propagation d'erreurs du neurone. 20 17. Réseau de neurones artificiels impulsionnels configuré pour exécuter un mécanisme d'apprentissage comprenant une première phase de propagation de données d'une couche d'entrée vers une couche de sortie, et une seconde phase de rétro-propagation d'erreurs depuis la couche de sortie vers la couche d'entrée, le réseau de neurones 25 comprenant plusieurs couches de neurones artificiels impulsionnels selon l'une des revendications précédentes, chaque neurone étant connecté au moins à un neurone d'une couche suivante ou à un neurone d'une couche précédente par l'intermédiaire d'une synapse. 30 18. Réseau de neurones artificiels impulsionnels selon la revendication 17, le réseau comprenant une couche d'entrée et une couche de sortie, les neurones de la couche d'entrée étant configurés pour recevoir des données à propager sous forme binaire ou ternaire et les neurones de la 32 couche de sortie étant configurés pour calculer, à partir des données propagées pendant la première phase de propagation de données, une erreur entre un résultat obtenu et un résultat cible. 5 19. Réseau de neurones artificiels impulsionnels selon la revendication 18 dans lequel chaque neurone de la couche de sortie comprend un codeur (COD) configuré pour coder l'erreur en un ensemble d'au moins un signal binaire ou ternaire. 10 20. Réseau de neurones artificiels impulsionnels selon la revendication 19 dans lequel le codeur (COD) est configuré pour quantifier l'erreur sur deux ou trois niveaux de quantification de manière à générer un signal binaire ou ternaire. 15 21. Réseau de neurones artificiels impulsionnels selon la revendication 19 dans lequel le codeur (COD) est configuré pour coder l'erreur par un groupe de signaux binaires successifs ou un groupe de signaux ternaires successifs. 20 22. Réseau de neurones artificiels impulsionnels configuré pour exécuter un mécanisme d'apprentissage comprenant une première phase de propagation de données d'une couche d'entrée vers une couche de sortie, et une seconde phase de rétro-propagation d'erreurs depuis la couche de sortie vers la couche d'entrée, le réseau de neurones 25 comprenant plusieurs couches de neurones artificiels impulsionnels selon l'une quelconque des revendications 4 à 6, chaque neurone étant connecté au moins à un neurone d'une couche suivante ou à un neurone d'une couche précédente par l'intermédiaire d'une synapse ayant un poids synaptique, les synapses (W1,1,...WK,I.1) étant implémentées sous 30 forme de mémoires numériques, de dispositifs memristifs ou de circuits analogiques. 33 23. Réseau de neurones artificiels impulsionnels selon la revendication 22 dans lequel chaque synapse est configurée pour mettre à jour son poids synaptique en réponse à un signal d'erreur binaire ou ternaire (5i.1) reçu depuis un neurone d'une couche suivante (Ci) et à un signal représentatif 5 du résultat (xj,11) de la fonction d'activation équivalente (FAE) reçu depuis un neurone d'une couche précédente (Cm). 10