FR 3144361 A1 20240628 FR 2214553 A 20221227 Procédé amélioré d’apprentissage sensible à la quantification pour un réseau de neurones Procédé d’apprentissage (700) pour un réseau de neurones, le procédé d’apprentissage s’appuyant sur une technique sensible à la quantification, la technique sensible à la quantification mettant en œuvre au moins une fonction de quantification, la fonction de quantification permettant de quantifier au moins une variable d’une couche de neurones, la fonction de quantification se caractérisant par une précision de quantification ( ), la précision de quantification étant définie comme le nombre de paliers de la fonction de quantification, le procédé d’apprentissage étant caractérisé en ce que la précision de quantification de la fonction de quantification est modifiée (770) progressivement au cours des époques du procédé d’apprentissage, pour passer d’une précision de quantification initiale (2 b+2 ) à une précision de quantification cible (2 b ), les précisions de quantification initiale et cible étant prédéfinies, la précision de quantification initiale étant strictement supérieure à la précision de quantification cible. Figure pour l'abrégé : figure 5 Procédé amélioré d’apprentissage sensible à la quantification pour un réseau de neurones La présente invention concerne le domaine des réseaux de neurones, et, plus particulièrement, celui des procédés de quantification des réseaux de neurones. Un réseau de neurones est un type particulier de modèle d’intelligence artificielle, dont le but est d’effectuer des tâches, telles que la reconnaissance d’images, la traduction de texte, la génération d’images... Un réseau de neurones est un modèle prenant en entrée une instance sur laquelle effectuer la tâche requise, et délivre en sortie une prédiction sur cette instance. Un réseau de neurones se décompose en une ou plusieurs couches de neurones. Une couche de neurones comprend classiquement une couche d’opération suivie d’une couche d’activation. La couche d’opération peut être par exemple une couche de convolution ou une couche « totalement connectée » (« fully connected » en anglais). Elle réalise une combinaison linéaire de valeurs d’entrée. Une couche d’activation réalise une fonction généralement non linéaire prenant en entrée la valeur de résultat de la couche d’opérations et délivrant en sortie une ou plusieurs valeurs dites valeurs d’activation. Les valeurs d’activation, qui constituent les valeurs de sortie d’une couche de neurones, constituent également les valeurs d’entrée de la couche de neurones suivante. D’autres couches peuvent être présentes dans une couche de neurones comme une couche de normalisation (« batch normalization » en anglais), ou de moyennage (« pooling » en anglais). L’organisation de ces différentes couches dans une couche de neurones et des différentes couches de neurones entre elles définit l’architecture du réseau de neurones. De très nombreuses architectures de réseaux de neurones sont connues. Certaines des opérations élémentaires effectuées par une couche sont paramétriques, au sens où elles dépendent d’un ou plusieurs paramètres, qui constituent les paramètres du réseau de neurones et qui sont les paramètres à apprendre. Par exemple, l’opération élémentaire réalisée par une couche de convolution utilise des paramètres de poids. Un réseau de neurones doit donc être entraîné de manière à apprendre les valeurs optimales de ces différents paramètres afin de réaliser efficacement la tâche qui lui a été assignée. L’entrainement s’effectue généralement avec les données d’une base d’entrainement. Celle-ci peut par exemple comporter des instances labellisées. Une instance labellisée est une instance qui est associée avec une prédiction attendue. La comparaison entre la prédiction calculée par le réseau de neurones sur une instance et la prédiction attendue associée à cette instance permet, par l’intermédiaire de la fonction de coût (« Loss » en anglais), d’ajuster les valeurs des paramètres du réseau de neurones. L’entraînement consiste généralement à réaliser plusieurs époques successives comprenant chacune une phase d’inférence (« Forward pass » en anglais) et une phase de rétropropagation (« backward pass » en anglais). Le résultat de l’entrainement est donc un réseau de neurones entrainé (aussi dénommé « modèle entrainé » ou « modèle d’inférence »), c’est-à-dire dont les différents paramètres sont gelés à leurs valeurs optimales. Le réseau de neurones entrainé peut ensuite être utilisé pour réaliser la tâche assignée sur de nouvelles instances de données d’entrée. Cependant, par exemple pour des applications embarquées, le réseau de neurones entrainé doit pouvoir fonctionner sur un circuit de calcul dont les ressources mémoires et/ou calculatoires sont réduites, ou tout au moins comptées. Il y a donc un besoin pour des réseaux de neurones entrainés qui ont un usage restreint des ressources du circuit de calcul sur lequel ils sont implémentés. Dans ce but, la quantification d’un réseau de neurones est le problème consistant à réduire le nombre de bits sur lequel sont codées les variables du réseau de neurones, que ce soit les paramètres du modèle entrainé, que les valeurs qui circulent à travers le modèle entrainé (notamment les valeurs d’activation). La quantification permet par exemple de passer de variables codées en précision flottante (c’est-à-dire codées sur 32 bits), à des variables codées en précision réduite (c’est-à-dire codées sur 8, 4, 2 voire 1 bit(s)). Puisqu’un réseau de neurones comporte plusieurs dizaines de milliers de variables, réduire le nombre de bits sur lequel chaque paramètre ou chaque valeur d’activation est codé permet de réduire l’espace mémoire nécessaire pour stocker le réseau de neurones entrainé, ainsi que les données de calcul intermédiaires (comme les valeurs d’activations) lors de l’exécution du réseau de neurones entrainé. En outre, cela permet de réduire l’usage du processeur, qui utilisera son module d’arithmétique sur des nombres entiers, plutôt que son module d’arithmétique sur des nombres flottants. En particulier, une précision de codage sur des mots de 1 bit correspond à des calculs en logique binaire, qui sont particulièrement simples à réaliser pour un processeur. L’enjeu de la quantification est alors de conserver une performance proche de la performance optimale, tout en réduisant le coût mémoire et calculatoire du réseau de neurones, sachant que la performance optimale est obtenue pour ce même réseau de neurones mais avec des variables codées en précision flottante entrainé pour la tâche demandée. Il existe deux grandes familles de techniques de quantification : - Les techniques de quantification post-entrainement (ou « post-training » en anglais) : on considère un réseau de neurones en précision flottante déjà entrainé sur la tâche à réaliser et on quantifie ses paramètres à la précision cible souhaitée. Éventuellement, une fois que la précision des paramètres a été réduite, on réalise une phase de réentrainement du réseau de neurones en précision réduite, mais avec une base d’entrainement de taille réduite par rapport à celle utilisée pour l’entrainement du réseau de neurones en précision flottante. - Les techniques d’entrainement sensible à la quantification - QAT (« Quantization-Aware Training ») : le réseau de neurones est entrainé directement dans le but d’être quantifié. En particulier, les phases d’inférence de l’entrainement s’effectuent avec des variables quantifiées tandis que les opérations de rétropropagation s’effectuent généralement avec des gradients en précision flottante souvent avec une précision bien supérieure à la précision de quantification utilisée pour l’inférence. Alternativement, lors des phases de rétropropagation, il est également possible d’utiliser des gradients quantifiés avec une précision similaire ou différente à celle utilisée pour les phases d’inférence. Ainsi, une erreur de quantification est accumulée dans la fonction coût du réseau de neurones. L’entrainement du réseau de neurones permet alors de trouver les paramètres quantifiés du réseau minimisant la fonction coût. En résumé, les techniques d’entrainement sensibles à la quantification utilisent des paramètres et des valeurs d’activation quantifiés pendant l’entrainement. L’entrainement s’effectue généralement à l’aide de l’intégralité des données de la base d’entrainement. Ces techniques sont moins contraintes (accès aux données, temps d’entrainement illimité), mais sont généralement plus difficiles et beaucoup plus longues à exécuter et à faire converger. Parmi les techniques QAT les plus récentes, on peut citer : - la technique d’entrainement à échelle ajustée - SAT (« scale-adjusted training »), présentée par exemple dans l’article de Qing Jin et al, « Towards Efficient Training for Neural Network Quantization », arXiv:1912.10207 ; - la technique de quantification à taille de marche apprise - LSQ (« learned step size quantization »), présentée par exemple dans l’article de Steven K. Esser et al, « Learned Step Size Quantization », arXiv:1902.08153 ; et, - la technique de quantification non-uniforme à uniforme - N2UQ (« Nonuniform-to-Uniform Quantization»), présentée par exemple dans l’article de Zechun Liu et al, « Nonuniform-to-Uniform Quantization: Towards Accurate Quantization via Generalized Straight-Through Estimation », arXiv:2111.14826. Le but de la présente invention est de proposer une amélioration aux techniques d’entrainement sensible à la quantification - QAT. Pour cela l’invention a pour objet un procédé d’apprentissage pour un réseau de neurones, le procédé d’apprentissage s’appuyant sur une technique sensible à la quantification, la technique sensible à la quantification mettant en œuvre au moins une fonction de quantification, la fonction de quantification permettant de quantifier au moins une variable d’une couche de neurones, la fonction de quantification se caractérisant par une précision de quantification, la précision de quantification étant définie comme le nombre de paliers de la fonction de quantification, le procédé d’apprentissage étant caractérisé en ce que la précision de quantification de la fonction de quantification est modifiée progressivement au cours des époques du procédé d’apprentissage, pour passer d’une précision de quantification initiale à une précision de quantification cible, les précisions de quantification initiale et cible étant prédéfinies, la précision de quantification initiale étant strictement supérieure à la précision de quantification cible. Suivant des modes particuliers de réalisation, le procédé comporte une ou plusieurs des caractéristiques suivantes, prises isolément ou suivant toutes les combinaisons techniquement possibles : - la variable de la couche de neurones est un paramètre de la couche de neurones ou une valeur d’activation de la couche de neurones. - la précision de quantification est modifiée pour passer de la précision de quantification initiale à la précision de quantification cible en passant par au moins une précision de quantification intermédiaire, la précision de quantification initiale étant strictement supérieure à la précision de quantification intermédiaire, qui elle-même est strictement supérieure à la précision de quantification cible. - la modification de la précision de quantification au cours des époques du procédé d’apprentissage met en œuvre une fonction de modification de la précision de quantification de la forme : où est la précision de quantification à l’époque de rang k, est la précision de quantification initiale utilisée à l’époque de rang 1, est un facteur de décroissance inférieur strictement à l’unité, et est la fonction arrondi. - la précision de quantification cible étant choisie égale à , la précision de quantification initiale est choisie égale à , avec ∆ entier supérieur ou égal à 1. - le procédé comporte les étapes de : choix de l’architecture du réseau de neurones et d’une technique sensible à la quantification particulière ; et, choix d’une précision de quantification cible, d’une précision de quantification initiale, et d’une fonction de modification de la précision de quantification permettant de modifier la précision de quantification d’une époque à l’autre du procédé d’apprentissage, puis, pour l’époque de rang k, k étant un nombre entier supérieur à l’unité : réalisation d’une phase d’inférence et d’une phase de rétropropagation à une précision de quantification courante ; vérification d’un critère de fin du procédé d’apprentissage ; et, si la vérification est négative, comparaison de la précision de quantification courante avec la précision de quantification cible ; et, si la précision de quantification courante est supérieure à la précision de quantification cible, modification de la précision de quantification courante pour une époque suivante de rang k+1 en utilisant la fonction de modification de la précision de quantification. - la technique sensible à la quantification est une technique scalaire, définie comme une technique selon laquelle chaque variable est quantifiée indépendamment des autres variables. - la technique sensible à la quantification est choisie parmi : la technique d’entrainement à échelle ajustée – SAT ; la technique de quantification à taille de marche apprise – LSQ ; et la technique de quantification non-uniforme à uniforme – N2UQ. - dans une première partie, la précision de quantification du ou des variables des couches de neurones les plus basses du réseau de neurones est progressivement modifiée en conservant une précision de quantification plus élevée pour la ou les variables des couches de neurones les plus hautes du réseau de neurones, puis, dans une seconde partie, la précision de quantification du ou des variables des couches de neurones les plus hautes est à son tour progressivement modifiée. - le réseau de neurones est du type ResNet. - lorsque les paliers de la fonction de quantification ne suivent pas une répartition uniforme, une position de chacun des paliers constitue un paramètre du réseau de neurones. L’invention a également pour objet un procédé de configuration d’un circuit de calcul cible avec un réseau de neurones entrainé, comportant les étapes de : fournir un circuit de calcul cible, dont les opérandes sont codées avec une précision de codage prédéfinie ; mettre en œuvre un procédé d’apprentissage conforme au procédé précédent en choisissant une précision cible égale à la précision de codage, pour obtenir un réseau de neurones entrainé dont les paramètres sont codés à la précision de codage ; et, transférer le réseau de neurones entrainé sur le circuit de calcul cible. L’invention a également pour objet un programme d’ordinateur comportant des instructions logicielles qui, lorsqu’elles sont exécutées par un ordinateur, mettent en œuvre un procédé d’apprentissage conforme au procédé précédent, afin d’obtenir un réseau de neurones entrainé dont au moins une variable est quantifiée à une précision de quantification cible. L’invention a également pour objet un système de contrôle adapté pour mettre en œuvre un procédé d’apprentissage conforme au procédé précédent afin d’obtenir un réseau de neurones entrainé dont au moins une variable est quantifiée à une précision de quantification cible. De préférence, le système de contrôle comprend : un circuit de calcul implémentant un réseau de neurones et comprenant des moyens de mémorisation, le réseau de neurones calculant une valeur de prédiction à partir d’une valeur d’instance ; au moins un capteur configuré pour capturer en entrée des données physiques et délivrer en sortie des valeurs d’instance audit réseau de neurones ; au moins un dispositif recevant les valeurs de prédiction calculées par le réseau de neurones, caractérisé en ce que le réseau de neurones est un réseau de neurones entrainé résultant de la mise en œuvre d’un procédé d’apprentissage conforme au procédé précédent, les paramètres du réseau de neurones appris à la suite de la mise en œuvre du procédé d’apprentissage étant mémorisés dans lesdits moyens de mémorisation. L’invention a également pour objet un produit programme d’ordinateur pour la mise en œuvre du présent procédé. L’invention et ses avantages seront mieux compris à la lecture de la description détaillée qui va suivre d’un mode de réalisation particulier, donné uniquement à titre d’exemple non limitatif, cette description étant faite en se référant aux dessins annexés sur lesquels : La est une représentation schématique d’un réseau de neurones ResNet et des couches qui composent un étage de ce réseau ; La est une représentation schématique d’une couche de convolution en mettant en œuvre une technique d’entrainement sensible à la quantification ; La est une représentation schématique de la mise en œuvre de l’entrainement de la couche de convolution de la ; La est une représentation schématique d’une couche d’activation en mettant en œuvre une technique d’entrainement sensible à la quantification du type SAT; La est une représentation sous forme de bloc d’un mode de réalisation procédé d’entrainement selon l’invention ; La est une représentation schématique de la mise en œuvre de l’entrainement d’une couche d’activation en mettant en œuvre une technique d’entrainement sensible à la quantification du type N2UQ ; et, La est une représentation schématique d’un système informatique, comme un calculateur d’entrainement pour l’entrainement d’un RN conformément au procédé selon l’invention ou un calculateur cible pour l’exécution du RN entrainé. Un réseau de neurones - RN (ou modèle) est entrainé sur un calculateur d’entrainement, de manière à obtenir un réseau de neurones entrainé (ou modèle entrainé). Le RN entrainé est ensuite téléchargé sur un calculateur cible pour son utilisation. Le calculateur d’entrainement n’est en général pas ou peu limité dans ses capacités de calcul et de mémorisation, au contraire du calculateur cible (comme par exemple un calculateur embarqué à bord d’un véhicule, notamment d’un aéronef), destiné à exécuter le RN entrainé. Un calculateur, comme le calculateur d’entrainement ou le calculateur cible, peut être un ordinateur comportant des moyens de calcul, tels qu’un processeur, et des moyens de mémorisation, tels qu’une mémoire. La mémoire stocke notamment les instructions de programmes d’ordinateur. Néanmoins, l’invention présente tout son intérêt lorsque le RN entraîné est mis en œuvre par une calculateur cible qui correspond à un coprocesseur ou à un circuit de calcul, notamment optimisé pour le calcul neuronal, comme une unité arithmétique et logique – ALU (« arithmetic logic unit », un circuit logique programmable - FPGA (« field-programmable gate array »), ou l’équivalent. De tels circuits de calcul présentent des capacités de mémorisation et de calcul minimalistes. Un exemple de mode de mise en œuvre du procédé d’apprentissage selon la présente invention consiste en l’exécution d’un programme par le calculateur d’entrainement, le programme étant par exemple stocké dans une mémoire du calculateur. Alternativement, il est possible de mettre en œuvre le procédé d’apprentissage selon la présente invention en utilisant un circuit dédié au calcul neuronal, tel qu’un accélérateur neuronal, qui permet de faire de l’apprentissage sans passer forcément par l’exécution d’un programme d’ordinateur pour l’ensemble des opérations du procédé d’apprentissage. En effet, il est possible que toutes ou certaines opérations du procédé d’apprentissage soient réalisées par du matériel dédié, type calculateur ou un circuit logique implémentant une machine à états finis. Le procédé d’apprentissage selon l’invention vise à entrainer un réseau de neurones - RN. Dans la présente description, le RN 1 à entrainer relève par exemple de l’architecture ResNet. L’architecture ResNet est connue en tant que telle. Elle est par exemple décrite dans l’article Kaiming He et al, « Deep Residual Learning for Image Recognition », arXiv:1512.03385. Le RN 1 est par exemple adapté pour une tâche de classification d’image. Ainsi, l’instance appliquée en entrée du RN 1 est une image, qui a par exemple une résolution de trois canaux (Rouge, Vert et Bleu). La prédiction délivrée en sortie du RN 1 est alors une probabilité d’appartenance à une classe parmi une pluralité de classes, chaque classe correspondant à un motif que l’on cherche à reconnaître dans les images analysées. Le RN 1 est constitué d’une pluralité d’étages. Il comporte un étage d’entrée 10, un étage de sortie 60, et une succession d’étages intermédiaires 20, 30, 40 et 50. L’étage d’entrée comporte par exemple un bloc 11 et l’étage de sortie comporte par exemple un bloc 61. Les étages intermédiaires sont constitués d’une pluralité de blocs. En passant d'un étage à l’autre, le nombre de canaux est doublé. Les blocs d’un même étage présentent le même nombre de canaux. Ainsi, sur l’exemple de la : le bloc 20 comporte les étages 21, 22 et 23, ayant par exemple 64 canaux ; le bloc 30 comporte les étages 31, 32, 33 et 34 ayant par exemple 128 canaux ; le bloc 40 comporte les étages 41, 42, 43, 44, 45, et 46, ayant par exemple 256 canaux ; et le bloc 50 comporte les étages 51, 52 et 53, ayant par exemple 512 canaux. Les blocs des étages intermédiaires présentent une structure identique. Cette structure est détaillée sur la partie droite de la par exemple pour le bloc 33. La valeur d’entrée du bloc est notée et la valeur de sortie du bloc est notée . Un bloc comporte deux couches de neurones successives, respectivement 33_1 et 33_2. La valeur d’entrée de la première couche de neurones 33_1 est la valeur d’entrée du bloc. La première couche de neurones 33_1 comporte une première couche d’opération 100, qui, à partir de la valeur d’entrée de la première couche de neurones, , permet d’obtenir une valeur intermédiaire de la première couche de neurones, . La première couche de neurones 33_1 comporte ensuite une première couche d’activation 200, qui, à partir de la valeur intermédiaire de la première couche de neurones, , permet d’obtenir une valeur de sortie de la première couche de neurones, ou valeur d’activation ou activation, . La valeur d’ entrée de la seconde couche de neurones 33_2 est notée . Elle est égale à la valeur d’activation la première couche de neurones . La seconde couche de neurones 33_2 comporte une seconde couche d’opération 300, qui, à partir de la valeur d’entrée de la seconde couche de neurones, permet d’obtenir une valeur intermédiaire de la seconde couche de neurones, . La seconde couche de neurones 33_2 comporte ensuite une couche de sommation 400 effectuant la somme de la valeur intermédiaire de la seconde couche de neurones et de la valeur d’entrée du bloc, pour obtenir une valeur de sortie de sommation, . Enfin, La seconde couche de neurones 33_2 comporte une seconde couche d’activation 500, qui, à partir de la valeur de sortie de sommation, , permet d’obtenir une valeur de sortie de la seconde couche de neurones, ou valeur d’activation ou activation, . La valeur d’activation de la seconde couche de neurones, , est la valeur de sortie du bloc. La permet d’expliquer le principe d’une technique d’entrainement sensible à la quantification – QAT (« Quantification – Aware Training » - QAT), pour le cas d’une couche d’opération, comme la couche d’opération 100 d’un bloc intermédiaire du RN 1. La couche d’opération 100 comporte un bloc de convolution 105 et un bloc de quantification des poids 110. A l’époque de rang k de l’entrainement (k nombre entier entre 1 et K), pour la phase d’inférence, le bloc de convolution 105 effectue l’opération élémentaire de convolution sur la valeur entrée pour calculer la valeur intermédiaire , opération élémentaire pouvant par exemple prendre la forme générique : où les sont les poids de la convolution à l’époque k. Ce sont les paramètres de la couche de convolution. Les poids sont des poids quantifiés. Ils sont déterminés au début de la phase d’inférence de l’époque k, à partir de poids non quantifiés . C’est le bloc de quantification des poids 110 qui effectue cette opération de quantification des poids en appliquant une fonction de quantification des poids, . La fonction de quantification des poids, , est une fonction en escalier, sur un intervalle, de préférence symétrique autour de la valeur nulle et borné par une valeur de poids maximale. Le nombre de paliers est la précision de la fonction de quantification des poids, aussi dénommée précision de quantification. L’espacement entre deux paliers successifs (ou pas de quantification) est de préférence uniforme mais pourrait ne pas l’être. Notamment, les paliers peuvent ne pas être uniformément répartis dans l’intervalle si une fonction de changement d’échelle permet de passer d’une répartition uniforme des paliers à une répartition non uniforme des paliers. Autrement dit, la fonction de quantification utilisée dans le procédé d’apprentissage selon la présente invention doit pouvoir être paramétrable pour fixer le nombre de paliers et éventuellement la position de ces paliers, afin de pouvoir faire varier ces deux paramètres au fur et à mesure des étapes du procédé d’apprentissage (d’une époque à l’autre) comme cela sera décrit en détail ci-après en relation avec la . Il est à noter que lorsque les paliers de la fonction de quantification ne suivent pas une répartition uniforme, une position de chacun des paliers constitue un paramètre du réseau de neurones, qui est appris soit en tant que telle, soit par ajustement des autres paramètres du réseau de neurones, la fonction permettant de passer d’une répartition non uniforme à une répartition uniforme étant absorbée par ajustement des paramètres des autres couches. Le bloc 110 effectue une quantification avec une précision de quantification des poids . C’est-à-dire que les valeurs possibles d’un poids quantifié sont au nombre de . La fonction de quantification appliquée par le bloc 110 peut éventuellement être paramétrée par un ou plusieurs paramètres de quantification des poids . Il s’agit de paramètres appris au cours de l’entrainement au même titre que les autres paramètres du RN 1, notamment les paramètres de poids non quantifiés . Plus précisément, dans le cas par exemple de la technique d’entrainement à échelle ajustée - SAT, le bloc de quantification 110 effectue d’abord une première opération de calage (« clamping ») pour contraindre la valeur des poids non-quantifiés dans un intervalle entre 0 et 1. Cette opération de « projection » des poids non-quantifiés permet d’obtenir des poids normalisés . Cette opération consiste à effectuer par exemple le calcul suivant : Le bloc de quantification 110 effectue ensuite la quantification proprement dite pour déterminer les poids quantifiés. Dans le cas de la technique SAT, cette opération consiste à effectuer par exemple le calcul suivant : Où la fonction est définie par : Dans laquelle la variable est le pas de quantification, c’est-à-dire l‘inverse du nombre de paliers de quantification moins 1 ( ), et est la fonction arrondi. Cette opération de quantification est illustrée schématiquement sur la partie supérieure de la figure 3 représentant le processus d’apprentissage 600. L’application de la fonction de quantification sur une matrice 2x2 de poids non quantifiés permet d’obtenir une matrice 2x2 de poids quantifiés . On constate que la technique SAT est particulièrement simple puisqu’elle n’utilise pas de paramètre de quantification pour les poids . Les poids quantifiés sont calculés au début de chaque époque. Ce calcul est suivi de la phase d’inférence de la k ième époque de l’apprentissage (étape 610 sur la figure 3), les instances labellisées d’un échantillon (« batch ») extrait de la base d’apprentissage (« dataset ») sont successivement appliquées en entrée du RN 1 afin de calculer les prédictions correspondantes par le RN 1 (qui utilise la valeur des paramètres à l’itération k, comme les poids ou les paramètres de quantification ). À la fin de la phase d’inférence, l’époque k du processus d’apprentissage 600 se poursuit par une phase de rétropropagation (« backward pass ») 620. Une fonction de perte L (« loss ») est évaluée à partir de la prédiction attendue et de la prédiction obtenue. La technique de rétropropagation (« backpropagation ») du gradient de la fonction de perte est mise en œuvre pour calculer une mise à jour de chacun des paramètres du RN 1, y compris les paramètres de quantification du RN (lorsqu’il y en a). Le gradient de la fonction de perte L par rapport à une variable est notée : . La propriété de chainage des dérivées permet de calculer le gradient de la fonction de perte par rapport à la variable à partir des gradients de la fonction de perte par rapport aux variables intermédiaires entre la sortie du RN et le paramètre considéré. Ainsi, le gradient est rétropropagé depuis les couches les plus hautes du RN, vers les couches la plus basses du RN. Plus particulièrement, pour la couche d’opération 100, comme illustré sur la figure 2, la rétropropagation depuis les couches supérieures du RN 1 permet de déterminer le gradient de la fonction de perte par rapport à la valeur intermédiaire : . La rétropropagation de ce gradient à travers le bloc 105 par rapport à la valeur d’entrée (en tenant compte de la variation ) permet de remonter au gradient de la fonction de perte par rapport à la valeur d’entrée : . La rétropropagation de ce gradient à travers le bloc 105 par rapport à chacun des poids quantifiés (en tenant compte de la variation ) permet de remonter aux gradients de la fonction de perte par rapport aux poids quantifiés : . La rétropropagation du gradient à travers le bloc 110 par rapport aux poids non quantifiés permet de remonter au gradient de la fonction de perte par rapport à aux poids non quantifiés : . Enfin, la rétropropagation du gradient à travers le bloc 110 par rapport à d’éventuels paramètres de quantification permet de remonter au gradient de la fonction de perte par rapport à chaque paramètre de quantification des poids : . La rétropropagation à travers le bloc de quantification des poids 110 est altérée puisque la fonction de quantification des poids n’est pas continue-dérivable. Selon la technique d’estimateur de passage direct - STE (« Straight Through Estimator »), un estimateur STE résultant du lissage de la fonction de quantification des poids est utilisé. Par exemple, dans la technique SAT, on considère que la dérivée de la fonction utilisée dans la définition de la fonction de quantification des poids vaut 1 : Une fois effectué le calcul du gradient de la fonction de perte vis-à-vis de tel ou tel paramètre, il est utilisé pour mettre à jour ce paramètre. Comme illustré par l’étape 630 sur la figure 3, à la fin de l’époque k et de la phase de rétropropagation du gradient, la valeur de chaque poids non quantifié est mise à jour avec le gradient calculé . Cette nouvelle valeur des poids non quantifiés sera celle utilisée pour l’époque k+1 suivante. Ce processus d’entrainement avec des phases d’inférences et de rétropropagation est itéré pour chaque époque. L’entrainement se termine lorsqu’un critère est vérifié. Il peut s’agir d’un critère sur le nombre d’époques. Par exemple, on considère généralement qu’une centaine d’époques (K=100) permet d’assurer une convergence des paramètres d’un ResNet. Bien évidemment, la vitesse de convergence dépend de la tâche, de la base d’entrainement et de la complexité du modèle. Il peut s’agir d’un critère sur la valeur de la fonction de perte et/ou de son gradient, comme par exemple une valeur au-dessous d’une valeur seuil. La permet d’expliquer le principe d’une technique - QAT pour le cas d’une couche d’activation, comme la couche 200 d’un étage intermédiaire du RN 1. La couche d’activation 200 comporte un bloc d’activation 205 et un bloc de quantification des activations 210. A l’époque de rang k de l’entrainement (k nombre entier entre 1 et K), pour une phase d’inférence, le bloc d’activation 205 effectue l’opération élémentaire d’activation sur valeur intermédiaire pour calculer la valeur d’activation non quantifiée . Cette opération élémentaire consiste à mettre en œuvre une fonction d’activation, comme par exemple une fonction non linéaire, comme la fonction ReLu. Puis, le bloc de quantification des activations 210 effectue la quantification proprement dite permettant d’obtenir la valeur d’activation quantifiée à partir de la valeur d’activation non quantifiée . Le bloc de quantification des activations 210 met en œuvre une fonction de quantification d’activation, . Cette fonction de quantification se caractérise par une précision de quantification, , c’est-à-dire le nombre de pas de quantification utilisés dans la fonction de quantification. L’opération de quantification effectuée par le bloc 210 peut éventuellement être paramétrée par un ou plusieurs paramètres de quantification d’activation . Il s’agit de paramètres appris au cours de l’entrainement au même titre que les autres paramètres du RN. Plus précisément, dans le cas par exemple de la technique SAT, le bloc 210 effectue d’abord une première opération de calage (« clamping ») pour contraindre la valeur de la valeur d’activation non quantifiée dans un intervalle entre et . L’intervalle peut être asymétrique, mais il est de préférence choisi symétrique avec : . Cette opération de « projection » des activations non quantifiées permet d’obtenir une sortie normalisée : Le bloc 210 effectue la quantification proprement dite pour déterminer les valeurs d’activation quantifiées . Le calcul suivant est par exemple effectué : Où la fonction de la variable est par exemple la même que celle utilisée par le bloc 100. On constate que la technique SAT utilise un paramètre de quantification d’activation, , en l’occurrence le paramètre α. Pour la phase d’inférence du processus d’apprentissage, les instances labellisées d’un échantillon (« batch ») extrait de la base d’apprentissage (« dataset ») sont successivement appliquées en entrée du RN 1 afin de calculer la sortie correspondante (le bloc 210 utilise la valeur des paramètres à l’itération k, comme le paramètre ). Lorsque toutes les données de l’échantillon ont été utilisées, une étape de rétropropagation est réalisée. Un écart est calculé entre la prédiction calculée par le RN 1 et la prédiction attendue pour chaque instance de l’échantillon. Une fonction de perte L (« loss ») est évaluée à partir des différents écarts calculés pour chaque instance de l’échantillon. La technique de rétropropagation du gradient de la fonction de perte est mise en œuvre pour calculer une mise à jour de chacun des paramètres du RN 1. Plus particulièrement, pour la couche d’activation 200, comme illustré sur la figure 4, la rétropropagation depuis les couches supérieures du RN 1 permet de déterminer le gradient de la fonction de perte par rapport à la valeur : . Par rétropropagation du gradient à travers le bloc 210, on calcule le gradient de la fonction de perte par rapport à la variable : , puis par rétropropagation de ce dernier gradient à travers le bloc 205, on calcule le gradient de la fonction de perte par rapport à la valeur : . La rétropropagation du gradient à travers le bloc 210 par rapport aux paramètres de quantification d’activation permet de remonter au gradient de la fonction de perte par rapport à chaque paramètre de quantification d’activation : . La rétropropagation à travers le bloc de quantification 210 doit être altérée puisque la fonction de quantification d’activation n’est pas continue-dérivable. Selon la technique d’estimateur de passage direct - STE (« Straight Through Estimator »), un estimateur résultant du lissage de la fonction de quantification d’activation est utilisé. Par exemple, dans la technique SAT, on considère que la dérivée par rapport à la variable de la fonction vaut 1 : et que la dérivée de la fonction par rapport au paramètre de quantification vaut : Ce lissage de la fonction de quantification permet de propager la variation de la fonction de perte non seulement à la valeur d’entrée de ce bloc 210, mais également aux paramètres de quantification d’activation. A la fin de l’époque k et de la procédure de rétropropagation du gradient, la valeur de chaque paramètre de quantification d’activation est mise à jour avec le gradient calculé. Cette nouvelle valeur sera celle utilisée pour l’époque k+1 suivante. Ce processus de phases d’inférence et de rétropropagation est itéré pour chaque époque, conduisant à l’apprentissage de la valeur optimale des paramètres de quantification d’activation, le paramètre pour le cas particulier de la technique SAT. L’apport spécifique de la présente l’invention va maintenant être présenté en relation avec le procédé d’apprentissage représenté sur la . Cette figure présente, sous forme de blocs, un mode de réalisation préféré du procédé selon l’invention. De manière générale, le procédé selon l’invention consiste à modifier la précision de quantification ( pour une couche d’opération et pour une couche d’activation par exemple) des fonctions de quantification, de manière à ce qu’au cours de l’apprentissage et de l’itération des époques, la précision soit progressivement ramenée, d’une précision de quantification initiale plus élevée vers une précision de quantification cible plus basse. Il faut souligner qu’il s’agit bien de la modification de la précision de quantification (c’est-à-dire le nombre de paliers des fonctions de quantification). Cette précision de quantification est un nombre entier. Il peut être modifié d’une unité ou plus d’une époque à une autre. Il ne s’agit pas d’une précision de codage des variables, c’est-à-dire de nombre de bits sur lequel une variable (paramètre ou valeur) est codée. D’ailleurs, pendant l’apprentissage, il est préférable de coder les variables en précision flottante (32 bits). Cependant, le but de la quantification étant malgré tout d’obtenir un RN entrainé dont les variables sont codées sur un nombre réduit de bit, par exemple b bits, la précision de quantification cible sera de préférence prise égale à la précision de codage recherchée, en l’occurrence 2 b . Ainsi dans une étape 710 du procédé 700, le programmeur fait un choix de l’architecture du réseau de neurones à quantifier et définit une technique de quantification - QAT particulière. Dans une étape 720, le programmeur fait un choix sur une précision de quantification cible. Si par exemple le nombre de bits sur lequel le programmeur souhaite coder les variables du modèle appris est b, la précision de quantification cible est choisie égale à 2 b . Le programmeur choisit également la précision initiale . Elle doit être plus élevée que la précision cible. La précision initiale peut par exemple être définie comme égale à 2 b + ∆ , avec ∆ entier supérieur ou égal à 1, de préférence égal à 2. Enfin, le programmeur définit une fonction d’évolution définissant la précision de quantification à l’époque k. Par exemple la fonction d’évolution est telle que : (1) où est la fonction d’arrondi, C est un facteur de décroissance inférieur à l’unité, de préférence proche de l’unité, pour une diminution lente de la précision de quantification d’une époque à l’autre. C est par exemple choisi égal à 0,97. Dans l’étape 730, l’indice k de l’époque est initialisé à la valeur unité. Pour chaque époque k, le procédé 700 prévoit les étapes 740 classiques d’un apprentissage avec mise en œuvre d’une technique de quantification QAT. Les phases d’inférence et de rétropropagation de l’époque k sont réalisées à la précision de quantification courante . Dit autrement, la précision des fonctions de quantification mises en œuvre à l’époque k aussi bien par une couche de convolution comme la couche 100 ou par une couche d’activation comme la couche 200, est égale à . À la fin de l’époque k, l’étape 750 permet de vérifier si le critère de fin d’apprentissage est rempli. Dans l’affirmative, le procédé 700 est terminé et les valeurs des valeurs du RN de la dernière époque sont les valeurs optimales qui définissent le RN entrainé. Dans la négative, le procédé 700 se poursuit par une étape 760 consistant à comparer la précision de quantification courante avec la précision de quantification cible, dans notre exemple . Si la précision de quantification courante n’a pas encore atteint la précision de quantification cible, dans l’étape 770, la précision de quantification pour l’époque suivante est calculée en utilisant l’équation (1) ci-dessus. Il est à noter que la fonction d’arrondi ne conduit pas systématiquement à une modification de la précision de quantification. Celle-ci peut rester constante sur un certain nombre d’époques successives avant d’être réduite d’une unité. La précision peut par conséquent ne pas être modifiée si la fonction d’arrondi ramène sur la valeur de précision précédente. Par itérations successives, la précision des fonctions de quantification diminue progressivement au cours de l’entraînement. L’entrainement se poursuit en réduisant la précision jusqu’à ce que la précision de quantification soit égale à la précision de quantification cible. C’est-à-dire jusqu’à l’époque K 0 telle que la précision soit égale à 2 b . Au-delà de cette époque, l’entraînement se poursuit, mais en maintenant la précision de quantification constante à la valeur de la précision de quantification cible (l’étape 770 n’est donc plus réalisée). Ainsi, le procédé d’entrainement est réalisé avec la précision initiale 2 b+ ∆ durant la première époque k=1, puis est progressivement diminuée, jusqu’à atteindre la précision cible en passant par différentes précisions de quantification intermédiaires. Une fois la précision de quantification cible atteinte, la précision des fonctions de quantification reste égale à la précision cible, jusqu’à la fin de l’entrainement. Ce procédé d’entraînement permet d’obtenir un RN entrainé dont les variables sont quantifiées sur 2 b paliers. Ils peuvent donc être codés sur b bits. Par exemple, afin de configurer un circuit de calcul cible avec un réseau de neurones entrainé, on réalise les étapes suivantes : fournir un circuit de calcul cible, dont les opérandes sont codées avec une précision de codage prédéfinie ; mettre en œuvre le procédé d’apprentissage précédent en choisissant une précision cible égale à la précision de codage, pour obtenir un réseau de neurones entrainé dont les paramètres sont codés à la précision de codage ; et transférer le réseau de neurones entrainé sur le circuit de calcul cible. La est une représentation schématique de la mise en œuvre d’un procédé d’entrainement 700, par exemple sur une couche de convolution, en mettant en œuvre une technique d’entrainement sensible à la quantification du type N2UQ. La difficulté avec la technique N2UQ réside dans le fait que la longueur de chaque palier de la fonction de quantification des poids est un paramètre de quantification . Or, si l’on modifie la précision de la fonction de quantification au cours de l’entrainement, il sera difficile d’apprendre en même temps la valeur optimale de la longueur des paliers. Pour la mise en œuvre de la présente invention, deux fonctions de quantification sont utilisées : une fonction à la précision cible et une fonction à la précision courante de l’époque k ( ). Pour phase de rétropropagation 720, l’estimateur STE utilisé à l’étape 725 résulte du lissage de la fonction à la précision cible . L’estimateur STE est obtenu en construisant une courbe continue, constituée de segments de pente constante, dont les extrémités reposent sur deux paliers consécutifs de la fonction . Cela permet de calculer le gradient de la fonction de perte pour les poids non quantifiés et effectuer la mise à jour des poids non quantifiés (étape 730). Cela permet également de calculer le gradient de la fonction de perte par rapport aux paramètres de quantification et effectuer la mise à jour des paramètres de quantification (étape 740), notamment la longueur des paliers de la fonction de quantification des poids à la précision cible . Au début de la phase d’inférence 710, la fonction de quantification des poids à la précision est dérivée de la fonction de poids à la précision cible (étape 745). Il s’agit essentiellement de passer d’un nombre de paliers fixe (par exemple quatre pour la fonction ) à un autre nombre de paliers supérieur ou égal (par exemple dix pour la fonction à l’époque k), avec la contrainte d’avoir des paliers espacés verticalement du même pas a. Puis la fonction de poids à la précision est utilisée pour déterminer (à l’étape 705) les poids quantifiés à partir des poids non quantifiés . De cette manière, on sépare l’apprentissage des paramètres de quantification, de la modification progressive de la précision de quantification, ce qui permet au procédé d’apprentissage de converger. On notera qu’avec les fonctions de quantification représentées sur la , les poids quantifiés et non quantifiés sont dans l’intervalle entre 0 et 2. L’opération de « clamping » est intégrée à la fonction de quantification des poids. La est une représentation schématique d’un système de contrôle 800 selon un exemple de réalisation de la présente invention. Le système de contrôle 800 met en œuvre le réseau de neurones 1 dans sa version non entrainée (et le système de contrôle agit alors en tant que calculateur d’entrainement) et/ou dans sa version entrainée (et le système de contrôle agit alors en tant que calculateur cible). La version apprise du réseau de neurones 1 résulte de la mise en œuvre d’un procédé d’apprentissage conforme à la présente invention. Des données d’entrée physiques, qui peuvent inclure des valeurs x, y et z, sont capturées par au moins un capteur 801. Le capteur 801 est configuré pour délivrer les valeurs capturées en tant qu’instances appliquées en entrée du réseau de neurones 1. Le réseau de neurones 1 est par exemple implémenté sous forme matérielle (« hardware ») et/ou sous forme logicielle (« software ») par un circuit de calcul 802, tel qu’un processeur central - CPU (« Central Processing Unit ») ou un processeur graphique - GPU (« Graphics Processing Unit »). Lorsque c’est la version apprise du RN 1 qui est exécutée, le circuit de calcul 802 s’appuie notamment sur des moyens de mémorisation 803 du système de contrôle 800, qui stockent l’ensemble des paramètres appris du RN 1. Chacun de ces paramètres est quantifié à la précision de quantification cible définie lors de la mise en œuvre du procédé d’apprentissage selon la présente invention. Les moyens de mémorisation 803 présentent alors une capacité de mémoriser des opérandes définies un nombre de bits égal à la précision cible, par exemple 2 b , avec b entier entre 1 et 16. Lorsque c’est la version non apprise du RN 1 qui est exécutée, le circuit de calcul 802 exécute le procédé d’apprentissage selon l’invention. Dans ce cas, il n’y a pas de contrainte sur la taille des opérantes des moyens de mémorisation 803, si ce n’est qu’elle doit être supérieure ou égale à la précision cible de manière à stocker la valeur des paramètres du réseau de neurones au cours de leur évaluation. L’exécution du RN 1 permet d’obtenir une prédiction. Lorsque c’est la version apprise du RN 1 qui est exécutée, cette prédiction est transmise à un dispositif 804. Selon un ou plusieurs modes de réalisation, le capteur 801 est un capteur optique. Par exemple, le capteur 801 est un capteur optique ayant un vecteur unidimensionnel ou bidimensionnel de pixels. Le capteur optique est par exemple un capteur de lumière visible, un capteur infrarouge, un capteur ultrasonore, un capteur de profondeur d’image, tel qu’un LIDAR (« LIght Detection And Ranging »). Les données d’entrée physiques sont alors une ou plusieurs images capturées par le capteur optique, et le RN 1 a pour tâche de classifier la ou chaque image capturée en effectuant une analyse d’image. Une telle analyse peut permettre par exemple de déterminer une ou plusieurs actions à effectuer par le dispositif 804. Alternativement ou en combinaison, le capteur 801 est un capteur de profondeur, un capteur de température, un microphone, ou n’importe quel type de capteur. Par exemple, le capteur 801 est un capteur de mesure de la température intérieure et/ou extérieure d’un système de chauffage/climatisation d’un bâtiment, comprenant par exemple une pompe à chaleur en tant que source principale d’énergie. Dans ces cas, le dispositif 804 est par exemple un circuit d’activation qui active/désactive le système de chauffage/climatisation. Alternativement ou en combinaison, l’au moins un dispositif 804 est un écran d’affichage, un système robotique comme un bras robotisé adapté à arracher des mauvaises herbes ou à cueillir des fruits mûrs sur un arbre, un système automatique de direction ou de freinage d'un véhicule, ou un actionneur, notamment électronique, par exemple configuré pour contrôler le fonctionnement d'un ou de plusieurs circuits, comme réveiller un circuit à partir d'un mode veille, faire entrer un circuit dans un mode veille, faire en sorte qu'un circuit génère une sortie de texte, effectue une opération de codage ou de décodage de données, etc. Il est à noter que l’on peut envisager un système de contrôle 800 mettant en œuvre une version entrainée du réseau de neurones à une précision basse (par exemple dans un mode de fonctionnement à faible consommation d’énergie) et une version entrainée du même réseau de neurones à une précision haute (par exemple dans un mode de fonctionnement à consommation d’énergie plus élevée). Variantes de réalisation La présente invention peut s’appliquer à toute architecture de RN. La description précédente a montré la faisabilité sur des couches de convolution et des couches d’activation. Or, ces couches constituent la majeure partie des RNs, quelle que soit leur architecture. Si la modification progressive de la précision des fonctions de quantification a été plus particulièrement présentée sur le cas de la technique SAT, on peut montrer mathématiquement qu’elle s’applique à tous types de technique de quantification QAT, à condition que celle-ci soit scalaire. Par scalaire, on entend une technique selon laquelle chaque variable du RN est quantifiée indépendamment des autres variables. Par uniforme, on entend une technique selon laquelle les fonctions de quantification subdivisent l’intervalle des valeurs quantifiées en pas identiques. Eventuellement, comme indiqué précédemment, une métrique pourrait être appliquée pour modifier la taille des pas de quantification, mais cette métrique doit être prédéfinie et ne résulte pas par exemple d’une statistique sur les valeurs des paramètres à quantifier. On parlera d’une technique pseudo-uniforme. En variante, au lieu d’utiliser des précisions de quantification initiale et finale en puissance de deux, d’autres valeurs de ces précisions de quantification sont envisageables. La seule contrainte est que la précision initiale soit choisie plus grande que la précision cible pour contraindre progressivement le modèle. La fonction d’évolution de la précision de quantification permettant de modifier la précision de quantification d’une époque à l’autre peut être toute fonction amenant progressivement de la précision initiale à la précision cible. Notamment, la fonction d’évolution pourrait être telle que, durant un petit nombre d’époques intermédiaires, la précision augmente d’une époque à l’autre, afin d’aider par exemple à la convergence des paramètres et/ou des variables d’activation du RN. De préférence, la modification progressive de la précision de quantification est mise en œuvre pour l’ensemble des fonctions de quantification de toutes les couches du RN simultanément. En variantes, seules certaines des fonctions de quantification pourraient faire l’objet d’une modification progressive de leur précision de quantification. Eventuellement, la précision de quantification cible d’une fonction de quantification pourrait être différente de celle d’une autre fonction de quantification du RN. Cela permettrait par exemple d’obtenir un RN entrainé avec des variables codées sur différentes longueurs. D’ailleurs, pour la première couche d’un réseau de neurones comme ResNet, il est préférable de conserver une précision de codage supérieure ou égale à 8 bits, même si la précision de codage des autres couches du RN est plus réduite, afin de rester sensible aux données des images d’entrée. Dans une variante de réalisation avantageuse du procédé d’apprentissage selon l’invention, au cours des premières époques, seule la précision des fonctions de quantification des couches les plus basses du RN est modifiée. La précision de quantification pour les couches les plus hautes du RN n’est pas modifiée pour permettre une adaptation des variables (paramètres et valeurs d’activation) de ces couches les plus hautes à la réduction de la précision sur les variables des couches les plus basse. Puis, au fur et à mesure de l’avancement de l’entrainement, on en vient à réduire également la précision des fonctions de quantification des couches les plus hautes. A la fin de l’entrainement, on obtient un RN entrainé dont tous les variables sont quantifiées avec la même précision cible. Dans une autre variante de réalisation avantageuse du procédé d’apprentissage selon l’invention, le technique de quantification en précision mixte compatible avec le matériel – HMQ (« Hardware Friendly Mixed Precision Quantization»), présentée par exemple dans l’article de Hai Victor Habi et al, « HMQ: Hardware Friendly Mixed Precision Quantization Block for CNNs », arXiv:2007.09952, est mise en œuvre afin de déterminer la précision optimale de chacune des couches du RN. Puis, le procédé d’apprentissage selon l’invention est mis en œuvre afin de déterminer les paramètres quantifiés, pour une ou plusieurs, voire chacune, des couches du RN à la précision optimale cible correspondante. A la fin de l’entrainement, on obtient un RN entrainé dont tous les paramètres sont quantifiés avec la précision optimale relative à la couche à laquelle les paramètres appartiennent. Pour ce faire, pour la couche c du RN, le programmeur peut choisir la précision initiale = 2 b c + ∆ , avec b c la précision cible propre à la couche c , déterminée par le HMQ, et ∆ commun à toutes les couches du RN. A titre de variante, la valeur ∆ peut être différente pour différentes couches du réseau de neurones. Procédé d’apprentissage (700) pour un réseau de neurones (1), le procédé d’apprentissage s’appuyant sur une technique sensible à la quantification, la technique sensible à la quantification mettant en œuvre au moins une fonction de quantification ( , ), la fonction de quantification permettant de quantifier au moins une variable d’une couche de neurones, la fonction de quantification se caractérisant par une précision de quantification ( , ), la précision de quantification étant définie comme le nombre de paliers de la fonction de quantification, le procédé d’apprentissage étant caractérisé en ce que la précision de quantification de la fonction de quantification est modifiée (770) progressivement au cours des époques du procédé d’apprentissage, pour passer d’une précision de quantification initiale à une précision de quantification cible, les précisions de quantification initiale et cible étant prédéfinies, la précision de quantification initiale étant strictement supérieure à la précision de quantification cible. Procédé selon la revendication 1, dans lequel la variable de la couche de neurones est un paramètre de la couche de neurones ou une valeur d’activation de la couche de neurones. Procédé selon la revendication 1 ou la revendication 2, dans lequel la précision de quantification est modifiée pour passer de la précision de quantification initiale à la précision de quantification cible en passant par au moins une précision de quantification intermédiaire, la précision de quantification initiale étant strictement supérieure à la précision de quantification intermédiaire, qui elle-même est strictement supérieure à la précision de quantification cible. Procédé selon l’une des revendications précédentes, dans lequel la modification de la précision de quantification au cours des époques du procédé d’apprentissage met en œuvre une fonction de modification de la précision de quantification de la forme : où est la précision de quantification à l’époque de rang k, est la précision de quantification initiale utilisée à l’époque de rang 1, est un facteur de décroissance inférieur strictement à l’unité, et est la fonction arrondi. Procédé selon l’une des revendications précédentes, dans lequel, la précision de quantification cible étant choisie égale à , la précision de quantification initiale est choisie égale à , avec ∆ entier supérieur ou égal à 1. Procédé selon l’une des revendications précédentes, comportant les étapes de : - choix (710) de l’architecture du réseau de neurones et d’une technique sensible à la quantification particulière ; et, - choix (720) d’une précision de quantification cible, d’une précision de quantification initiale, et d’une fonction de modification de la précision de quantification permettant de modifier la précision de quantification d’une époque à l’autre du procédé d’apprentissage, puis, pour l’époque de rang k, k étant un nombre entier supérieur à l’unité : - réalisation d’une phase d’inférence et d’une phase de rétropropagation à une précision de quantification courante ( ) ; - vérification (750) d’un critère de fin du procédé d’apprentissage ; et, si la vérification est négative, - comparaison (760) de la précision de quantification courante avec la précision cible ; et, si la précision de quantification courante est supérieure à la précision de quantification cible, - modification de la précision de quantification courante pour une époque suivante de rang k+1 en utilisant la fonction de modification de la précision de quantification. Procédé selon l’une quelconque des revendications précédentes, dans lequel la technique sensible à la quantification est une technique scalaire, définie comme une technique selon laquelle chaque variable est quantifiée indépendamment des autres variables. Procédé selon la revendication 7, dans lequel la technique sensible à la quantification est choisie parmi : - la technique d’entrainement à échelle ajustée – SAT ; - la technique de quantification à taille de marche apprise – LSQ ; et, - la technique de quantification non-uniforme à uniforme – N2UQ. Procédé selon l’une quelconque des revendications précédentes, dans lequel, dans une première partie, la précision de quantification du ou des variables des couches de neurones les plus basses du réseau de neurones est progressivement modifiée en conservant une précision de quantification plus élevée pour la ou les variables des couches de neurones les plus hautes du réseau de neurones, puis, dans une seconde partie, la précision de quantification du ou des variables des couches de neurones les plus hautes est à son tour progressivement modifiée. Le procédé selon l’une quelconque des revendications précédentes, dans lequel le réseau de neurones est du type ResNet. Le procédé selon l’une quelconque des revendications précédentes, dans lequel, lorsque les paliers de la fonction de quantification ne suivent pas une répartition uniforme, une position de chacun des paliers constitue un paramètre du réseau de neurones. Procédé de configuration d’un circuit de calcul cible avec un réseau de neurones entrainé, comportant les étapes de : - fournir un circuit de calcul cible, dont les opérandes sont codées avec une précision de codage prédéfinie ; - mettre en œuvre un procédé d’apprentissage (700) conforme à l’une quelconque des revendications 1 à 10 en choisissant une précision cible égale à la précision de codage, pour obtenir un réseau de neurones (1) entrainé dont les paramètres sont codés à la précision de codage ; et, - transférer le réseau de neurones (1) entrainé sur le circuit de calcul cible. Programme d’ordinateur comportant des instructions logicielles qui, lorsqu’elles sont exécutées par un ordinateur, mettent en œuvre un procédé selon l’une quelconque des revendications 1 à 10 afin d’obtenir un réseau de neurones entrainé dont au moins une variable est quantifiée à une précision de quantification cible. Système de contrôle (800) adapté pour mettre en œuvre un procédé selon l’une quelconque des revendications 1 à 10 afin d’obtenir un réseau de neurones entrainé dont au moins une variable est quantifiée à une précision de quantification cible. Système de contrôle (800) comprenant : - un circuit de calcul (802) implémentant un réseau de neurones et comprenant des moyens de mémorisation (803), le réseau de neurones calculant une valeur de prédiction à partir d’une valeur d’instance ; - au moins un capteur (801) configuré pour capturer en entrée des données physiques et délivrer en sortie des valeurs d’instance audit réseau de neurones ; - au moins un dispositif (804) recevant les valeurs de prédiction calculées par le réseau de neurones, caractérisé en ce que le réseau de neurones est un réseau de neurones entrainé résultant de la mise en œuvre d’un procédé d’apprentissage selon l’une quelconque des revendications 1 à 10, les paramètres du réseau de neurones appris à la suite de la mise en œuvre du procédé d’apprentissage étant mémorisés dans lesdits moyens de mémorisation (803).