Brevet FR3094118A1 — publié le 20200925

Description Titre de l'invention : Procédé d'analyse d'un jeu de paramètres d'un réseau de neurones en vue d'un ajustement de zones allouées auxdits paramètres. [00ol] Des modes de mise en oeuvre et de réalisation de l'invention concernent les réseaux de neurones plus particulièrement les réseaux de neurones profonds et notamment l'apprentissage approfondi (en anglais « deep learning »). [0002] Les réseaux de neurones sont massivement utilisés pour résoudre divers problèmes statistiques notamment le problème de la classification de données. [0003] Après une phase d'apprentissage automatique généralement supervisée, c'est-à-dire sur une base de données de référence déjà classifiées, un réseau de neurones « apprend » et devient tout seul capable d'appliquer la même classification à des données inconnues. [0004] On peut citer les réseaux de neurones à convolution, ou CNN (« Convolutional Neural Networks » en anglais) qui représentent un type de réseau de neurones dans lequel le motif de connexion entre les neurones est inspiré par le cortex visuel des animaux. Ils permettent avec efficacité la reconnaissance d'objets ou de personnes dans des images ou des vidéos. [0005] L'architecture d'un réseau de neurones comprend généralement une succession de couches dont chacune prend ses entrées sur les sorties de la couche précédente. [0006] Les données de sortie (« features » en anglais) sont stockées dans des zones mémoires ayant une taille préalablement définie [0007] Les données d'entrée sont multipliées par au moins un poids d'une valeur donnée pour chaque couche. [0008] Par « poids », qui est un terme dont la signification dans le domaine des réseaux de neurones est bien connue de l'homme du métier, on entend des paramètres de neurones configurables pour obtenir de bonnes données de sortie. [0009] Ce poids est déterminé en entraînant le réseau de neurones sur une base de données d'entraînement. Plus précisément, le réseau de neurones traite par exemple une image extraite de ladite base de données et en sortie il fait une prédiction, c'est-à-dire à quelle classe l'image pourrait appartenir sachant que la classe de l'image est préalablement connue. [0010] En fonction de la véracité de ce résultat, on met à jour tous les poids du réseau de neurones selon un algorithme qui s'appelle la rétropropaeation du gracient. [0011] Généralement, les données de sortie et les poids de chaque couche sont représentés en virgule flottante par exemple sur 32 bits, ce qui permet d'avoir un réseau de 2 neurones avec de meilleures performances quant aux prédictions. [0012] Les données de sortie et les poids de chaque couche peuvent également être re- présentés en virgule fixe par exemple sur 16 ou 8 bits. [0013] Par « virgule flottante » on entend une représentation d'un nombre par un signe, une mantisse et un exposant. [0014] Par « virgule fixe », on entend une représentation d'un nombre avec un nombre fixe de chiffres après la virgule. [0015] Une représentation en virgule fixe comprend une partie entière c'est-à-dire les bits à gauche de la virgule, et une partie fractionnaire correspondant au nombre de bits à droite de la virgule. [0016] Les zones mémoires allouées pour les représentations en virgule fixe sont géné- ralement plus petites que celles allouées pour les représentations en virgule flottante. [0017] Cette réduction de mémoire permet au système mettant en oeuvre le réseau de neurones d'être plus rapide. En effet, ledit système est généralement optimisé pour des représentations en 8 ou 16 bits cc qui correspond à des représentations en virgule fixe. [0018] Or, ce gain en rapidité conduit souvent à des pertes d'information étant donné que les zones mémoires allouées sont réduites. [0019] Dans une représentation en virgule fixe par exemple 8 bits comprenant le bit de signe, réduire la taille de la zone mémoire allouée à la partie entière par exemple 3 bits pour augmenter la taille de la zone mémoire allouée à la partie fractionnaire par exemple 4 bits peut conduire à un risque de saturation pour les grands nombres, et réduire la taille de la zone mémoire allouée à la partie fi-actionnaire par exemple 3 bits pour augmenter la taille de la zone mémoire allouée à la partie entière par exemple 4 bits peut conduire à une perte de précision pour les petits nombres. [0020] 11 existe donc un besoin de trouver un bon compromis, dans la mesure du possible, entre les risques liés à la saturation et à la perte de précision. [0021] Une approche consiste à essayer toutes les représentations possibles des données de sortie et des poids sur 8 bits et cela pour chaque couche. Cela implique la mise en oeuvre pour chaque couche d'un jeu de données de test 8 à 16 fois. [0022] Le traitement couche par couche est très fastidieux et lent. [0023] 11 existe donc un besoin de mettre en place une solution permettant de trouver le bon compromis et cela dans un temps plus court. [0024] Selon un aspect, il est proposé un procédé comprenant une analyse d'un jeu de pa- ramètres initiaux définissant un réseau de neurones multicouches initial. [0025] Ladite analyse comporte une réduction de la taille d'au moins un paramètre initial de chaque couche de façon à obtenir pour chaque couche un jeu de nouveaux paramètres définissant un nouveau réseau de neurones. [0026] Chaque nouveau paramètre a ses données représentées en deux parties, une partie 3 entière et une partie fractionnaire. [0027] Ladite analyse comporte également une mise en oeuvre dudit nouveau réseau de neurones en utilisant un jeu de données d'entrée de test appliqué une seule fois à chaque couche. [0028] Ladite analyse comporte également une élaboration pour chaque couche d'une fonction de répartition ou d'une fonction de densité résultant du jeu desdits nouveaux paramètres. [0029] Ladite analyse comporte également une utilisation de la fonction de répartition ou de la fonction de densité pour décider : [0030] - soit d'une augmentation de la taille de la zone mémoire allouée à la partie frac- tionnaire et d'une diminution de la taille de la zone mémoire allouée à la partie entière, [0031] - soit d'une diminution de la taille de la zone mémoire allouée à la partie frac- tionnaire et d'une augmentation de la taille de la zone mémoire allouée à la partie entière de chaque nouveau paramètre associé à ladite couche. [0032] Par « paramètre initial » on entend un paramètre relatif à la configuration du réseau de neurones, par exemple les poids de chaque couche et la taille de la zone mémoire à allouer pour les données de sortie de chaque couche. [0033] Chaque paramètre ayant une taille mémoire définie, un jeu de nouveaux paramètres est un jeu où la taille mémoire d'au moins un paramètre initial ou de certains ou de tous a été modifiée par exemple en réduisant ladite taille mémoire. [0034] La réduction de la taille mémoire comprend avantageusement un passage des pa- ramètres représentés en virgule flottante à une représentation en virgule fixe. [0035] Ceci implique par conséquent un ajustement du nombre de bits de la partie frac- tionnaire et de la partie entière d'au moins un paramètre initial ou de certains ou de tous. [0036] Pour ajuster la taille relative à la partie fractionnaire et à la partie entière, on met à l'entrée du nouveau réseau de neurones c'est-à-dire avec un nouveau jeu de paramètres, un jeu de données d'entrée de test. Ce jeu de données sert à évaluer la performance du réseau de neurones. [0037] Ce jeu de données n'est exécuté qu'une seule fois par couche. Cela permet d'augmenter la rapidité du traitement du réseau de neurones. [0038] Cette mise en oeuvre permet de délivrer une matrice de données de sortie de la couche qui permet par la suite d'élaborer une fonction de répartition ou de densité. [0039] On peut également récupérer les données relatives aux poids de la couche. [0040] Ladite fonction de densité ou de répartition permet de déterminer comment l'ajustement doit être réalisé au niveau de la taille de la zone mémoire allouée à la partie entière et de la taille de la zone mémoire allouée à la partie fractionnaire pour trouver un bon compromis entre les risques de saturation et de perte de précision. [0041] Selon un mode de mise en oeuvre, ledit jeu de données d'entrée de test comprend une pluralité de vecteurs de données, et on délivre pour chaque couche des vecteurs successivement un à un ou par groupe successif de vecteurs et on génère un résultat représentatif des nouveaux paramètres associés à ladite couche. [0042] Lorsque le réseau de neurones est exécuté dans un processeur graphique ou GPU (pour « Graphics Processing Unit » en anglais), il est avantageux de délivrer pour chaque couche un groupe successif de vecteurs pour tirer profit du parallélisme dudit processeur. [0043] Selon un mode de mise en oeuvre, l'élaboration de la fonction de répartition ou de la fonction de densité comprend le calcul d'une densité de probabilité des valeurs des nouveaux paramètres associés à chaque couche, obtenus par la mise en oeuvre dudit nouveau réseau pour chaque couche. [0044] Chaque vecteur ou groupe de vecteurs délivré permet d'obtenir en sortie de nouvelles valeurs correspondant aux nouveaux paramètres. [0045] Il est avantageux de calculer une densité de probabilité de ces nouvelles valeurs pour ladite couche. [0046] Selon un mode de mise en oeuvre, l'élaboration de la fonction de répartition ou de la fonction de densité pour chaque couche comprend une répartition sur N valeurs des valeurs possibles discrétisécs des nouveaux paramètres délivrés par la couche, un calcul de la densité de probabilité de chaque valeur parmi les N valeurs, et un stockage de chaque densité de probabilité calculée associée à chacune des N valeurs. [0047] Dans le but de ne pas ralentir lesdits calculs et l'élaboration de la fonction de densité ou de répartition, il est souhaitable de stocker N valeurs possibles, par exemple 32 valeurs. [0048] Selon un mode de mise en oeuvre, les N valeurs sont sous forme de puissance de 2. [0049] La mise sous la forme de puissance de 2 est avantageuse pour réaliser des opérations arithmétiques du type complément à deux connues de l'homme du métier. [0050] Selon un mode de mise en oeuvre, l'utilisation de la fonction de répartition ou de la fonction de densité comprend une première sélection d'une première valeur correspondant à la valeur maximale des N valeurs réparties et une deuxième sélection d'une deuxième valeur correspondant à l'une des N valeurs réparties associée à une première valeur seuil, un calcul de la différence entre la première valeur et la deuxième valeur et une comparaison de la différence avec une deuxième valeur seuil. [0051] Par exemple la première valeur seuil est 0.2, ce qui veut dire que pour choisir la valeur N associée à ladite première valeur seuil, on se positionne idéalement sur l'axe des abscisses correspondant à la valeur N à partir de laquelle la fonction de répartition ou de densité a sa concentration cumulée supérieure ou égale à 80%. [0052] Généralement, on se positionne entre deux valeurs N de l'axe des abscisses. Il est souhaitable, dans cc cas, pour avoir une valeur précise, d'effectuer une interpolation linéaire. [0053] La comparaison avec la deuxième valeur seuil permet de déterminer le bon compromis à faire entre la partie fractionnaire et la partie entière. [0054] La deuxième valeur seuil peut être comprise par exemple entre 1 et5. [0055] Selon un mode de mise en oeuvre, si la différence est inférieure ou égale à la deuxième valeur seuil, on augmente la taille de la zone mémoire allouée à la partie entière et on diminue la taille de la zone mémoire allouée à la partie fractionnaire et si la différence est strictement supérieure à la deuxième valeur seuil, on augmente la taille de la zone mémoire allouée à la partie fractionnaire et on diminue la taille de la zone mémoire allouée à la partie entière. [0056] Si la différence est inférieure ou égale à la deuxième valeur seuil, cela veut dire qu'il y a un haut risque de saturation au niveau de la couche. Par conséquent, il est avantageux d'ajuster la répartition des bits de la partie entière et fractionnaire en augmentant la taille de la zone mémoire allouée à la partie entière et en diminuant la taille de la zone mémoire allouée à la partie fractionnaire. [0057] Si la différence est strictement supérieure à la deuxième valeur seuil, cela veut dire qu'il n'y a pas de grands risques de saturation mais un risque de perte de précision. Il est donc préférable d'ajuster la répartition des bits de la partie entière et fractionnaire en diminuant la taille de la zone mémoire allouée à la partie entière et en augmentant la taille de la zone mémoire allouée à la partie fractionnaire. [0058] Selon un autre aspect, il est également proposé un système comprenant une unité de calcul, par exemple un processeur, couplée à un ensemble de mémoires, l'unité de calcul comportant des moyens d'analyse configurés pour effectuer une analyse d'un jeu de paramètres initiaux définissant un réseau de neurones multicouches initial. [0059] Les moyens d'analyse sont configurés pour réduire la taille d'au moins un paramètre initial de chaque couche de façon à obtenir pour chaque couche un jeu de nouveaux paramètres définissant un nouveau réseau de neurones, chaque nouveau paramètre ayant ses données représentées en deux parties, une partie entière et une partie fractionnaire, mettre en oeuvre le nouveau réseau de neurones en utilisant un jeu de données d'entrée de test appliqué une seule fois à chaque couche, élaborer pour chaque couche une fonction de répartition ou une fonction de densité résultant du jeu (lesdits nouveaux paramètres et utiliser la fonction de répartition ou la fonction de de densité pour décider soit d'augmenter la taille de la zone mémoire allouée à la partie fractionnaire et de diminuer la taille de la zone mémoire allouée à la partie entière soit de diminuer la taille de la zone mémoire allouée à la partie fractionnaire et d'augmenter la taille de la zone mémoire allouée à la partie entière de chaque nouveau paramètre associé à ladite couche. 6 [0060] Selon un mode de réalisation, ledit jeu de données d'entrée de test comprend une pluralité de vecteurs de données, et les moyens d'analyse sont configurés pour délivrer pour chaque couche des vecteurs successivement un à un ou par groupe successif de vecteurs, et générer un résultat représentatif des nouveaux paramètres associés à ladite couche. [0061] Selon un mode de réalisation, pour élaborer la fonction de répartition ou la fonction de densité, les moyens d'analyse sont configurés pour calculer une densité de probabilité de vecteurs des nouveaux paramètres associés à chaque couche, obtenus par la mise en oeuvre dudit nouveau réseau pour chaque couche. [0062] Selon un mode de réalisation, pour élaborer la fonction de répartition ou la fonction de densité pour chaque couche, les moyens d'analyse sont configurés pour répartir sur N valeurs les valeurs discrétisécs possibles des nouveaux paramètres délivrés par la couche, calculer la densité de probabilité de chaque valeur parmi les N valeurs et stocker chaque densité de probabilité calculée associée à chacune des N valeurs. [0063] Selon un mode de réalisation, les N valeurs sont sous forme de puissance de 2. [0064] Selon un mode de réalisation, les moyens d'analyse sont configurés pour utiliser la fonction de répartition ou la fonction de densité, et pour effectuer une première sélection d'une première valeur correspondant à la valeur maximale des N valeurs réparties, effectuer une deuxième sélection d'une deuxième valeur correspondant à l'une des N valeurs réparties associée à une première valeur seuil, calculer la différence entre la première valeur et la deuxième valeur et comparer la différence avec une deuxième valeur seuil. [0065] Selon un mode de réalisation, si la différence est inférieure à la deuxième valeur seuil, les moyens d'analyse sont configurés pour augmenter la taille de la zone mémoire allouée à la partie entière et diminuer la taille de la zone mémoire allouée à la partie fractionnaire et si la différence est strictement supérieure à la deuxième valeur seuil, les moyens d'analyse sont configurés pour augmenter la taille de la zone mémoire allouée à la partie fractionnaire et pour diminuer la taille de la zone mémoire allouée à la partie entière. [0066] Selon un autre aspect, il est également proposé un microcontrôleur comprenant ledit système tel que défini ci-avant. [0067] D'autres avantages et caractéristiques de l'invention apparaîtront à la lecture de la description détaillée de modes de mise en oeuvre et de réalisation, nullement limitatifs, et des dessins annexés sur lesquels : [0068] [fig. Il illustre schématiquement un mode de réalisation de l'invention ; [0069] [fig.2] illustre schématiquement un mode de mise en oeuvre de l'invention ; 7 [0070] [fig.3] illustre schématiquement un mode de mise en oeuvre de l'invention ; [0071] [fig.4] illustre schématiquement un mode de mise en oeuvre de l'invention ; [0072] [fig.5] illustre schématiquement un mode de mise en oeuvre de l'invention. [0073] Sur la figure 1, la référence UC désigne un objet électronique par exemple un micro- contrôleur, un générateur de code ou tout autre objet pouvant contenir une architecture logicielle embarquée ou matérielle. [0074] L'objet UC comprend un système SYS par exemple un module configure pour implanter un réseau de neurones initial RN, et comprenant un ensemble de mémoires MEM, une unité de calcul (ici un processeur) PROC et une interface utilisateur INT. [0075] L'ensemble des mémoires MEM est couplé au processeur PROC et comprend une mémoire non-volatile MNV par exemple une mémoire ROM (« Read-Only Memory » en anglais). Ladite mémoire non-volatile est configurée pour stocker la configuration du réseau de neurones RN par exemple les différentes couches le caractérisant et ses poids PW. [0076] L'ensemble des mémoires MEM comprend également une mémoire volatile MV par exemple une mémoire RAM (pour « Random Access Memory » en anglais). La mémoire volatile MV comporte des zones mémoires initiales ZM destinés à contenir les données de sortie de chaque couche du réseau de neurones initial RN. [0077] Les poids PW et la taille des zones mémoires initiales ZM représentent un jeu de pa- ramètres initiaux du réseau de neurones RN. [0078] L'ensemble de mémoires MEM comprend également une mémoire MEM3 configurée pour stocker les données relatives à un nouveau jeu de paramètres d'un nouveau réseau de neurones RNM qui représente le réseau de neurones RN modifié. [0079] Le processeur PROC est configuré également pour stocker le nouveau jeu de pa- ramètres du réseau de neurones RNM à la place du jeu de paramètres initiaux du réseau de neurones initial RN. [0080] L'ensemble des mémoires MEM comprend également une mémoire MEM2 par exemple une mémoire non-volatile ROM configurée pour stocker un jeu de données d'entrée de test DT. [0081] Le jeu de données d'entrée de test DT est configuré pour évaluer la performance du réseau de neurones initial RN ou la performance du réseau de neurones modifié RNM. [0082] Le processeur PROC comprend également des moyens d'analyse MT, réalisés par exemple sous forme logicielle ou matérielle, configurés pour effectuer une analyse du jeu de paramètres initiaux définissant ledit réseau de neurones, réduire la taille d'au moins un paramètre initial par exemple tailles des zones mémoires initiales ZM ou les 8 deux paramètres initiaux des couches dudit réseau RN et ainsi obtenir un nouveau jeu de paramètres définissant le nouveau réseau de neurones RNM. [0083] En modifiant ainsi le jeu de paramètres initiaux du réseau de neurones RN, on obtient un nouveau de jeu de paramètres. [0084] Les nouveaux paramètres ainsi réduits ont leurs données représentées en virgule fixe. [0085] Par « virgule fixe » on entend une représentation d'un nombre avec un nombre fixe de chiffres après la virgule. [0086] Une représentation en virgule fixe comprend une partie entière c'est-à-dire des bits à gauche de la virgule, et une partie fractionnaire correspondant au nombre de bits à droite de la virgule. [0087] Cette réduction de mémoire permet au système mettant en oeuvre le réseau de neurones d'être plus rapide. [0088] Les moyens d'analyse MT sont configurés pour appliquer ledit jeu de données d'entrée de test DT une seule fois à chaque couche cc qui permet d'augmenter la rapidité du traitement du nouveau réseau de neurones RNM. [0089] Les moyens d'analyse MT sont par la suite configurés pour élaborer une fonction de répartition ou de densité à partir des données résultant de la mise en oeuvre du jeu de données d'entrée de test et ajuster la taille de la zone mémoire allouée à la partie fractionnaire et entière en fonction des données extraites de ladite fonction. [0090] On peut par exemple discrétiscr les données résultantes sur 32 valeurs à stocker. Cela petmet d'éviter de ralentir l'élaboration de la fonction de densité ou de répartition. [0091] Le processeur PROC est couplé à l'interface utilisateur INT configurée pour permettre à l'utilisateur de choisir le nombre de valeurs à stocker dans la mémoire MEM3. [0092] Ce nombre peut être également choisi par défaut. [0093] L'interface utilisateur INT est également configurée pour permettre à l'utilisateur de donner des valeurs à des paramètres intervenant dans la décision relative audit ajustement. [0094] Ces paramètres sont stockés dans une mémoire volatile par exemple la mémoire MEM3. [0095] La figure 2 représente un algorithme d'analyse du jeu de données de paramètres initiaux définissant le réseau de neurones RN. [0096] Dans l'étape Si, le processeur PROC extrait le jeu de paramètres initiaux du réseau de neurones RN par exemple les poids PW de toutes les couches ou les tailles des zones mémoires initiales ZM de chaque couche ou bien les deux paramètres. [0097] Dans l'étape S2, les moyens d'analyse MT effectuent une réduction de la taille mémoire initiale d'au moins un paramètre initial du réseau de neurones RN par exemple une réduction des poids PW ou des tailles des zones mémoires initiales ZM 9 ou bien une réduction de la taille mémoire initiale des deux paramètres. [0098] A titre d'exemple, si ladite taille mémoire initiale dudit au moins un paramètre est de 32 bits, les moyens d'analyse MT réduisent la taille initiale de 24 bits. Ledit au moins un paramètre a donc une nouvelle taille mémoire de 8 bits. [0099] Une représentation dudit au moins un paramètre sur 8 bits par exemple est une repré- sentation en virgule fixe. [0100] On obtient ainsi dans l'étape S3 un jeu de nouveaux paramètres. [0101] Dans l'étape S4, le processeur PROC met en oeuvre le nouveau réseau de neurones RNM en appliquant le jeu de données d'entrée de test DT à chaque couche dudit nouveau réseau. [0102] Les données résultantes de la mise en oeuvre du jeu de données d'entrée de test DT permettent d'élaborer pour chaque couche une fonction de répartition ou de densité connue de l'homme du métier dans l'étape Si [0103] L'élaboration de la fonction de répartition ou de densité permet dans l'étape S6 de déterminer si la réduction de la taille dudit au moins un paramètre conduit à un risque de saturation ou de perte de précision à partir des données extraites de ladite fonction. [0104] Par « risque de saturation » on entend qu'une majorité des données résultantes de la mise en oeuvre du jeu de données d'entrée de test DT sont de grands nombres. Il faut donc prévoir assez de bits dans la partie entière pour pouvoir les représenter. [0105] Par « risque de perte de précision » on entend qu'une majorité des données ré- sultantes de la mise en oeuvre du jeu de données d'entrée de test DT sont de petits nombres. Il faut donc prévoir assez de bits dans la partie fractionnaire pour pouvoir les représenter et ainsi diminuer la perte de la précision. [0106] En d'autres termes, l'élaboration de la fonction de répartition ou de densité permet de déterminer comment l'ajustement doit être réalisé au niveau de la taille de la partie entière et de la taille de la partie fractionnaire pour trouver un bon compromis entre les risques de saturation et de perte de précision. [0107] S'il y a un risque de saturation, on passe à l'étape S71 dans laquelle les moyens d'analyse MT augmentent la taille de la zone mémoire allouée à la partie entière et diminuent la taille de la zone mémoire allouée à la partie fractionnaire. [0108] S'il y a un risque de perte de précision, on passe à l'étape S72 dans laquelle les moyens d'analyse MT augmentent la taille de la zone allouée à la partie fractionnaire et diminuent la taille de la zone mémoire allouée à la partie entière. [0109] Les moyens d'analyse MT vérifient ensuite s'il y a une couche restante à traiter dans l'étape S8. [0110] Si oui, on réitère les étapes S4, S5, S6 et S71 ou S72 pour ajuster la taille de zone mémoire allouée à la partie fractionnaire et à la partie entière pour ladite couche. [0111] S'il n'y a pas de couches restantes, cela veut dire que ledit ajustement a été réalisé pour toutes les couches du réseau de neurones RNM. On passe donc à l'étape S9 qui marque la fin de l'exécution de l'algorithme. [0112] La figure 3 représente les sous-étapes de l'étape S4 correspondant à l'application du jeu de données d'entrée de test DT à chaque couche du réseau de neurones RNM. [0113] Le jeu de données d'entrée de test DT comprend une pluralité de vecteurs de données. [0114] Lorsque le réseau de neurones RNM est exécuté dans un processeur PROC graphique GPU (pour «Graphies Processing Unit » en anglais), il est avantageux de délivrer pour chaque couche un groupe successif de vecteurs pour tirer profit du parallélisme dudit processeur PROC. [0115] Les moyens d'analyse MT vérifient par conséquent si le processeur PROC est un processeur graphique à l'étape S40. Si oui, on passe à l'étape S41 dans laquelle les moyens d'analyse MT délivrent un premier groupe successif de vecteurs dudit jeu de données d'entrée de test DT. [0116] Le premier groupe de vecteur délivré pour chaque couche à l'étape S43 permet de produire, après passage par les poids de la couche et dont la taille été réduite, une matrice de données de sortie de la couche. [0117] Par « matrice » on entend une suite de données de sortie dont la taille a été réduite, par exemple une suite de valeurs 32, 16, 2. [0118] La taille de la zone mémoire ZNI étant réduite, certaines valeurs ne seront pas cor- rectement représentées. Cela veut dire que si en sortie de la couche, la zone mémoire allouée aux données de sortie, dont la taille a été réduite, contient une majorité de grandes valeurs, il se peut qu'on ait un risque de saturation sur les plus grandes valeurs. [0119] Dans le cas contraire, si en sortie de la couche, la zone mémoire allouée aux données de sortie, dont la taille a été réduite, contient une majorité de petites valeurs, il se peut qu'on ait un risque de perte de précision sur les plus petites valeurs. [0120] En d'autres termes, étant donné que la réduction de la taille de la zone mémoire initiale ZM a une conséquence directe sur la représentation des données de sortie, il est avantageux d'utiliser ces valeurs dans l'élaboration d'une fonction de répartition ou de densité permettant par la suite d'effectuer ledit ajustement sur la taille de la zone mémoire allouée aux données de sortie qui représente un des nouveaux paramètres du nouveau réseau de neurones RNM. [0121] Aussi, sachant que les valeurs des données de sortie dépendent des valeurs desdits poids qui représentent l'un des nouveaux paramètres du nouveau réseau de neurones RNM, la réduction de la taille des poids PW conduit soit à une saturation au niveau des poids ou à une perte de précision, ce qui a comme conséquence une délivrance de données de sorties avec des valeurs imprécises. 11 [0122] Il est donc avantageux d'utiliser également les valeurs desdits poids dans l'élaboration d'une fonction de répartition ou de densité permettant par la suite d'effectuer ledit ajustement sur la taille des poids pour chaque couche. [0123] Pour chaque couche, les données de sortie de la matrice ou les valeurs des poids sont discrétisées sur N valeurs sur l'axe des abscisses de la fonction de répartition ou de densité. [0124] Il est avantageux de stocker N valeurs englobant les données de sortie discrétisécs délivrées par la couche ou les N valeurs des poids ou une combinaison des deux pour éviter de ralentir par la suite les différents calculs liés à l'élaboration de la fonction de densité ou de répartition. N peut par exemple être égal à 32. [0125] L'utilisateur peut paramétrer N via l'interface utilisateur INT en fonction de la complexité de son réseau et de la mémoire disponible. [0126] Dans l'étape 544, les N valeurs seront mémorisées par exemple dans la mémoire volatile MV. [0127] Ensuite, dans l'étape 545, on incrémente un index i correspondant au nombre de groupes de vecteurs du jeu de données d'entrée de test DT et s'il reste, dans l'étape 546, des groupes de vecteurs à mettre en oeuvre pour ladite couche, on remonte à l'étape S41 pour délivrer le groupe de vecteurs suivant et réitérer par conséquent les étapes 543, S44, S45 et 546. [0128] Si dans l'étape S46, il n'y a plus de groupes de vecteurs à délivrer à ladite couche, on passe à l'étape S47 où les moyens d'analyse MT calculent pour chaque valeur parmi les N valeurs mémorisées à l'étape S44, une moyenne associée à chaque valeur. [0129] Cette moyenne correspond à la densité de probabilité de chaque valeur dans le jeu des N valeurs. [0130] Les moyens d'analyse MT calculent N moyennes qui permettent donc de tracer la fonction de densité ou de répartition dans l'étape Si [0131] Dans le cas où le processeur PROC n'est pas un processeur graphique, on passe de l'étape S40 à l'étape S42 dans laquelle les moyens d'analyse MT délivrent des vecteurs un à un à ladite couche. Les étapes suivantes sont les mêmes que les étapes S43, S44, S45. En revanche, après avoir incrémenté l'index i, on passe à l'étape S460, dans laquelle les moyens d'analyse MT vérifient s'il reste des vecteurs à mettre en oeuvre pour ladite couche. [0132] Si oui, les moyens d'analyse MT remontent à l'étape S42 pour délivrer le vecteur suivant. Si non, les moyens d'analyse MT passent à l'étape S47. [0133] La figure 4 illustre un graphique FD représentant une fonction de répartition élaborée par les moyens d'analyse MT et la figure 5 représente les différentes sous-étapes conduisant à la détermination du risque lié à la réduction de la taille dudit au moins un paramètre initial. 12 [0134] Sur l'axe des abscisses, les N valeurs stockées et moyennées sont représentées ici allant de 0 à 10. [0135] Lesdites N valeurs peuvent également être représentées sous forme de puissance de 2 ce qui permet avantageusement de réaliser des opérations arithmétiques du type complément à deux. [0136] Sur l'axe des ordonnées, les valeurs allant de 0 à 1 représentent des probabilités cumulées. [0137] Pour déterminer s'il y a un risque de saturation ou de perte de précision suite à la réduction de la taille mémoire dudit au moins un paramètre, les moyens d'analyse MT commencent par faire une première sélection dans l'étape S51 d'une première valeur max correspondant à la valeur maximale des N valeurs réparties sur l'axe des abscisses de ladite fonction de répartition, ici la valeur max 10. [0138] Les moyens d'analyse MT effectuent ensuite dans l'étape S52 une deuxième sélection d'une deuxième valeur mg correspondant à l'une des N valeurs réparties associée à une première valeur seuil par exemple 0.2 ou toute valeur seuil permettant de déterminer la zone dans laquelle la densité est importante. [0139] Pour une meilleure précision de la deuxième valeur mg, les moyens d'analyse MT réalisent une interpolation linéaire. [0140] La première valeur seuil peut être choisie par l'utilisateur via l'interface INT et s'utilise selon la formule suivante : [0141] cdf(N) >=1 - la première valeur seuil dans laquelle : [0142] cdf désigne la fonction de répartition selon la variable aléatoire N. [0143] Ici on a cdf(N) >, 1 - 0.2 et donc cdf(N) >, 0.8 ce qui veut dire que sur l'axe des abscisses, on sélectionne la valeur à partir de laquelle on a une densité de probabilité cumulée de 80%. [0144] La valeur mg associée à ladite première valeur seuil est ici 4. [0145] Par la suite, les moyens d'analyse MT calculent une différence bin dans l'étape S53 entre la première valeur max et la deuxième valeur mg, ce qui donne ici 10-4. La différence est égale ici à 6. [0146] Les moyens d'analyse MT réalisent ensuite une comparaison dans l'étape S54 entre la différence bin calculée c'est-à-dire 6 et une deuxième valeur seuil que l'utilisateur peut également sélectionner via l'interface INT. [0147] Le résultat de la comparaison permet de déterminer dans l'étape S6 s'il y a un risque de saturation ou de perte de précision. [0148] Par exemple, si la deuxième valeur seuil est égale à 3, le résultat de la différence bin étant égal à 6, le résultat est donc supérieur à la deuxième valeur seuil. Cela veut (1h-e qu'il y a un risque de perte de précision. [0149] Les moyens d'analyse MT réalisent par conséquent ledit ajustement dans l'étape S72 13 décrite dans la figure 2 et cela scion la formule : [0150] index = max - round(1 + tanh((K"bin - deuxième valeur seuil)/M)) dans laquelle : [0151] round est une fonction qui permet d'arrondir les nombres à un niveau de précision spécifié. [0152] Tanh est une tangente hyperbolique. On peut remplacer la tangente par toute fonction croissante entre Oct 1 qui sature. [0153] K et M sont des paramètres ajustables qui permettent de mieux ajuster. K peut par exemple être égal à 2 et M par exemple à 16. [0154] Le résultat du calcul est la valeur index correspondant au décalage à effectuer en bits donc un décalage de la virgule. [0155] En d'autres termes, il s'agit de déterminer s'il faut accorder plus de bits à la zone allouée à la partie fractionnaire ou à la zone allouée à la partie entière. Ici, dans le cas du risque de la perte de précision, il faut faire un décalage de la virgule vers la gauche. [0156] Dans le cas où le résultat de la différence bin est inférieur ou égal à la deuxième valeur seuil, les moyens d'analyse MT réalisent par conséquent ledit ajustement dans l'étape S71 décrite dans la figure 2 et cela selon la formule : [0157] index = max + round(deuxième valeur seuil - bin) dans laquelle : [0158] La valeur index correspond ici également au décalage à effectuer en bits donc un décalage de la virgule c'est-à-dire déterminer s'il faut accorder plus de bits à la partie fractionnaire ou à la partie entière. Ici, dans le cas du risque de saturation, il faut faire un décalage de la virgule vers la droite. [0159] Bien entendu, toutes les étapes décrites sont aussi applicables à une fonction de densité. 14 [Revendication I] [Revendication 2] [Revendication 3] [Revendication 4] REVENDICATIONSProcédé comprenant une analyse d'un jeu de paramètres initiaux (PW, ZM) définissant un réseau de neurones multicouches initial (RN), dans lequel ladite analyse comporte une réduction (S2) dc la taille d'au moins un paramètre initial (PW. ZM) de chaque couche de façon à obtenir pour chaque couche un jeu dc nouveaux paramètres définissant un nouveau réseau de neurones (RNM), chaque nouveau paramètre ayant ses données représentées en deux parties, une partie entière et une partie fractionnaire, une mise en oeuvre (S4) dudit nouveau réseau de neurones (RNM) en utilisant un jeu de données d'entrée de test appliqué (DT) une seule fois à chaque couche, une élaboration (S5) pour chaque couche d'une fonction de répartition ou d'une fonction de densité (FD) résultant du jeu desdits nouveaux paramètres, et une utilisation de la fonction de répartition ou de la fonction de densité (FD) pour décider (S6) soit d'une augmentation de la taille de la zone mémoire allouée à la partie fractionnaire et une diminution de la taille de la zone mémoire allouée à la partie entière (S72) soit d'une diminution de la taille de la zone mémoire allouée à la partie fractionnaire et une augmentation de la taille de la zone mémoire allouée à la partie entière (S71) de chaque nouveau paramètre associé à ladite couche. Procédé selon la revendication 1, dans lequel ledit jeu de données d'entrée de test (DT) comprend une pluralité de vecteurs de données, et dans lequel on délivre pour chaque couche des vecteurs successivement un à un (S42) ou par groupe successif de vecteurs (541) et on génère un résultat (543) représentatif des nouveaux paramètres associés à ladite couche. Procédé selon la revendication 2, dans lequel l'élaboration de la fonction de répartition ou de la fonction de densité (FD) comprend le calcul d'une densité de probabilité (547) des valeurs des nouveaux paramètres associés à chaque couche, obtenus par la mise en oeuvre dudit nouveau réseau (RNM) pour chaque couche. Procédé selon la revendication 3, dans lequel l'élaboration de la fonction de répartition ou de la fonction de densité (FD) pour chaque couche comprend une répartition sur N valeurs des valeurs possibles discrétisées des nouveaux paramètres délivrés par la couche, un calcul de la densité de probabilité de chaque valeur parmi les N valeurs, et un stockage de chaque densité de probabilité calculée (S47) associée à 15 chacune des N valeurs. [Revendication 5] Procédé selon la revendication 4, dans lequel les N valeurs sont sous forme de puissance de 2. [Revendication 6] Procédé selon la revendication 4 ou 5, dans lequel l'utilisation de la fonction de répartition ou de la fonction de densité (FD) comprend une première sélection (S51) d'une première valeur (max) correspondant à la valeur maximale des N valeurs réparties et une deuxième sélection (S52) d'une deuxième valeur (mg) correspondant à l'une des N valeurs réparties associée à une première valeur seuil, un calcul (553) de la différence (bin) entre la première valeur et la deuxième valeur et une comparaison (S6) de la différence avec une deuxième valeur seuil. [Revendication 7] Procédé selon la revendication 6, dans lequel si la différence (bin) est inférieure ou égale à la deuxième valeur seuil, on augmente la taille de la zone mémoire allouée à la partie entière et on diminue la taille de la zone mémoire allouée à la partie fractionnaire (S71) et si la différence (bin) est strictement supérieure à la deuxième valeur seuil, on augmente la taille de la zone mémoire allouée à la partie fractionnaire et on diminue la taille de la zone mémoire allouée à la partie entière (S72). [Revendication 8] Système (SYS) comprenant une unité de calcul (PROC), par exemple un processeur, couplée à un ensemble de mémoires (MEM), l'unité de calcul (PROC) comportant des moyens d'analyse (MT) configurés pour effectuer une analyse d'un jeu de paramètres initiaux (PW, ZM) définissant un réseau de neurones multicouches initial (RN), et dans lequel les moyens d'analyse (MT) sont configurés pour réduire (S2) la taille d'au moins un paramètre initial (PW, ZM) de chaque couche de façon à obtenir pour chaque couche un jeu de nouveaux paramètres définissant un nouveau réseau de neurones (RNM), chaque nouveau paramètre ayant ses données représentées en deux parties, une partie entière et une partie fractionnaire, mettre en oeuvre (S4) le nouveau réseau de neurones (RNM) en utilisant un jeu de données d'entrée de test (DT) appliqué une seule fois à chaque couche, élaborer (S5) pour chaque couche une fonction de répartition ou une fonction de densité (FD) résultant du jeu desdits nouveaux paramètres et utiliser la fonction de répartition ou la fonction de de densité (FD) pour décider (S6) soit d'augmenter la taille de la zone mémoire allouée à la partie fractionnaire et de diminuer la taille de la zone mémoire allouée à la partie entière (S72) soit de diminuer la taille de la zone mémoire allouée à la partie fractionnaire et d'augmenter la taille de la zone mémoire allouée à la partie entière 16 [Revendication 9] [Revendication 10] [Revendication 11] [Revendication 12] [Revendication 13] [Revendication 14] (S71) de chaque nouveau paramètre associé à ladite couche. Système selon la revendication 8, dans lequel ledit jeu de données d'entrée de test (DT) comprend une pluralité de vecteurs de données, et dans lequel les moyens d'analyse (MT) sont configurés pour délivrer pour chaque couche des vecteurs successivement un à un (S42) ou par groupe successif de vecteurs (S41), et générer un résultat (S43) représentatif des nouveaux paramètres associés à ladite couche. Système selon la revendication 9, dans lequel pour élaborer la fonction de répartition ou la fonction de densité (FD), les moyens d'analyse (MT) sont configurés pour calculer une densité de probabilité (S47) de vecteurs des nouveaux paramètres associés à chaque couche, obtenus par la mise en oeuvre dudit nouveau réseau (RNM) pour chaque couche par lesdits moyens d'analyse. Système selon la revendication 10, dans lequel pour élaborer la fonction de répartition ou la fonction de densité (FD) pour chaque couche, les moyens d'analyse (MT) sont configurés pour répartir sur N valeurs des valeurs possibles discrétisécs des nouveaux paramètres délivrés par la couche, calculer la densité de probabilité de chaque valeur parmi les N valeurs et stocker chaque densité de probabilité calculée (S47) associée à chacune des N valeurs. Système selon la revendication 11, dans lequel les N valeurs sont sous forme de puissance de 2. Système selon la revendication 11 ou 12, dans lequel les moyens d'analyse configurés pour utiliser la fonction de répartition ou la fonction de densité (FD), sont également configurés pour effectuer une première sélection (S51) d'une première valeur (max) correspondant à la valeur maximale des N valeurs réparties, effectuer une deuxième sélection (S52) d'une deuxième valeur (mg) correspondant à l'une des N valeurs réparties associée à une première valeur seuil, calculer (S53) la différence (bin) entre la première valeur et la deuxième valeur et comparer (S6) la différence avec une deuxième valeur seuil. Système selon la revendication 13, dans lequel si la différence (bin) est inférieure à la deuxième valeur seuil, les moyens d'analyse sont configurés pour augmenter la taille de la zone mémoire allouée à la partie entière et diminuer la taille de la zone mémoire allouée à la partie fractionnaire (S71) et si la différence est strictement supérieure à la deuxième valeur seuil, les moyens d'analyse sont configurés pour augmenter la taille de la zone mémoire allouée à la partie fractionnaire 17 et pour diminuer la taille de la zone mémoire allouée à la partie entière (S72). [Revendication 15] Dispositif tel qu'un microcontrôleur (UC) comprenant un système (SYS) selon les revendications 8 à 14.