Brevet FR3114180A1 — publié le 20220318

Système et procédé pour éviter un oubli catastrophique dans un réseau neuronal artificiel La présente description concerne un procédé d’apprentissage d’un réseau neuronal artificiel, le procédé comprenant : - faire initialement un apprentissage d’un premier réseau neuronal artificiel (Net_1) avec des premières données d’entrée (FIRST STIMULI) et des premières pseudo-données, les premières pseudo-données étant ou ayant été générées par un deuxième réseau neuronal artificiel (Net_2) dans un état vierge (State_0), ou par le premier réseau neuronal artificiel (Net_1) pendant un état vierge (State_0) ; - générer des deuxièmes pseudo-données en utilisant le premier réseau neuronal artificiel (Net_1), ou en utilisant le deuxième réseau neuronal artificiel à la suite d’un transfert au moins partiel de connaissance du premier réseau neuronal artificiel vers le deuxième réseau neuronal artificiel ; et - faire un apprentissage du premier réseau neuronal artificiel, ou d’un autre réseau neuronal artificiel, avec les deuxièmes pseudo-données et des deuxièmes données d’entrée (SECOND STIMULI). Figure pour l'abrégé : Fig. 3 Système et procédé pour éviter un oubli catastrophique dans un réseau neuronal artificiel La présente description concerne de façon générale le domaine des réseaux neuronaux artificiels, et en particulier un système et un procédé pour éviter un oubli catastrophique dans un réseau neuronal artificiel et/ou pour permettre un apprentissage incrémental. Les réseaux neuronaux artificiels (ANN) sont des architectures qui visent à imiter, dans une certaine mesure, le comportement d’un cerveau humain. De tels réseaux sont en général constitués de circuits de neurones, et d’interconnexions entre les circuits de neurones, connues sous le nom de synapses. Comme cela est connu de la personne du métier, les architectures ANN, comme les architectures de perceptrons multicouches, ou les réseaux neuronaux profonds, y compris les réseaux neuronaux à convolution, comprennent une couche d’entrée de circuits de neurones, une ou plusieurs couches cachées de circuits de neurones, et une couche de sortie de circuits de neurones. Chacun des circuits de neurones dans la ou les couches cachées applique une fonction d’activation, (par exemple une fonction sigmoïde) à des entrées reçues de la couche précédente afin de générer une valeur de sortie. Les entrées sont pondérées par des paramètres θ pouvant subir un apprentissage au niveau des entrées des neurones de la ou des couches cachées. Alors que la fonction d’activation est généralement choisie par le concepteur, les paramètres θ sont trouvés pendant l’apprentissage. Pour un problème donné, une fonction à approximer est par exemple une fonction qui génère, sur la base d’entrées X, des étiquettes de sortie vraies , où est une fonction inconnue qui mappe une observation (X) vers des catégories (Y). Le réseau entraîné subit un apprentissage pour générer une valeur qui est aussi proche que possible de la valeur vraie en minimisant une fonction de perte entre les sorties souhaitées ( et les sorties prédites ( . Les performances d’un ANN entraîné pour résoudre la tâche en cours d’apprentissage reposent sur son architecture, sur le nombre de paramètres , sur la mise en œuvre particulière et sur la façon dont l’ANN est entrainé (taux d’apprentissage et optimiseur). Bien que l’apprentissage profond ait donné des résultats remarquables dans une grande diversité d’applications, il peut peiner dans des scénarios réalistes lorsque la distribution de données d’apprentissage ne devient disponible qu’au cours de l’apprentissage. En effet, on souhaite en général qu’un ANN soit capable de s’adapter facilement pour apprendre de nouvelles informations, mais un inconvénient de cette plasticité est qu’il est souvent difficile de construire sur un modèle entraîné tout en conservant une fonction de mappage qui a déjà été apprise. La tendance des ANN à oublier complètement et brusquement des informations apprises précédemment lors de l’apprentissage de nouvelles informations est connue dans la technique sous le nom d’ oubli catastrophique . Bien qu’une solution puisse être de mémoriser la totalité, ou une partie, des données d’apprentissage historiques dans un tampon et de présenter à l’ANN un mélange constitué des données d’apprentissage historiques intercalées avec de nouvelles informations, une telle approche impliquerait l’utilisation d’une mémoire afin de stocker les données d’apprentissage historiques. Par conséquent, cela n’est pas une solution pratique pour des applications frugales en ressources. On a donc besoin d’un système et d’un procédé pour répondre au problème d’oubli catastrophique pendant l’apprentissage d’un ANN. Un but des modes de réalisation de la présente description est de répondre au moins partiellement à un ou plusieurs besoins de l’art antérieur. Selon un aspect, on prévoit un procédé d’apprentissage d’un réseau neuronal artificiel, le procédé comprenant : faire initialement un apprentissage d’un premier réseau neuronal artificiel avec des premières données d’entrée et des premières pseudo-données, les premières pseudo-données étant ou ayant été générées par un deuxième réseau neuronal artificiel dans un état vierge, ou par le premier réseau neuronal artificiel pendant un état vierge ; générer des deuxièmes pseudo-données en utilisant le premier réseau neuronal artificiel, ou en utilisant le deuxième réseau neuronal artificiel à la suite d’un transfert au moins partiel de connaissance du premier réseau neuronal artificiel vers le deuxième réseau neuronal artificiel ; et faire un apprentissage du premier réseau neuronal artificiel, ou d’un autre réseau neuronal artificiel, avec les deuxièmes pseudo-données et des deuxièmes données d’entrée. Selon un mode de réalisation, le procédé comprend en outre, avant de faire initialement l’apprentissage du premier réseau neuronal artificiel : générer les premières pseudo-données en utilisant le premier réseau neuronal artificiel pendant l’état vierge ; et mémoriser les premières pseudo-données dans une mémoire. Selon un mode de réalisation, les deuxièmes pseudo-données sont générées par le premier réseau neuronal artificiel et mémorisées dans la mémoire avant de faire l’apprentissage du premier réseau neuronal artificiel avec les deuxièmes pseudo-données et les deuxièmes données d’entrée. Selon un mode de réalisation, le procédé comprend en outre, avant de générer les deuxièmes pseudo-données, un transfert au moins partiel de la connaissance détenue par le premier réseau neuronal artificiel vers le deuxième réseau neuronal artificiel, les deuxièmes pseudo-données étant générées en utilisant le deuxième réseau neuronal artificiel, l’apprentissage du premier réseau neuronal artificiel avec les deuxièmes pseudo-données et les deuxièmes données d’entrée étant réalisé au moins partiellement en parallèle avec la génération de pseudo-données par le deuxième réseau neuronal artificiel. Selon un mode de réalisation, le procédé comprend en outre : détecter, en utilisant un détecteur de nouveauté, si un ou plusieurs troisièmes échantillons de données d’entrée correspondent à une classe qui est déjà connue du premier réseau neuronal artificiel ; et si lesdits un ou plusieurs troisièmes échantillons de données d’entrée ne correspondent pas à une classe qui est déjà connue, générer des troisièmes pseudo-données en utilisant le premier réseau neuronal artificiel, ou en utilisant le deuxième réseau neuronal artificiel à la suite d’un transfert au moins partiel de connaissance de nouveau à partir du premier réseau neuronal artificiel vers le deuxième réseau neuronal artificiel, et faire un apprentissage du premier réseau neuronal artificiel avec les troisièmes pseudo-données et les troisièmes échantillons de données d’entrée. Selon un mode de réalisation, le procédé comprend en outre : détecter, par un contrôleur, si un ou plusieurs troisièmes échantillons de données d’entrée correspondent à une nouvelle distribution pas encore apprise par le premier réseau neuronal artificiel ; et si lesdits un ou plusieurs troisièmes échantillons de données d’entrée correspondent à la nouvelle distribution, créer un nouveau système pour apprendre lesdits un ou plusieurs troisièmes échantillons de données d’entrée, le nouveau système comprenant au moins un autre premier réseau neuronal artificiel. Selon un mode de réalisation, la génération des premières pseudo-données comprend : a) injecter un premier échantillon aléatoire dans le premier ou le deuxième réseau neuronal artificiel, le premier ou le deuxième réseau neuronal artificiel étant agencé pour mettre en œuvre au moins une fonction auto-associative pour reproduire des échantillons d’entrée au niveau d’une ou plusieurs de ses sorties, au moins certains des échantillons d’entrée reproduits présents au niveau des sorties formant les premières pseudo-données. Selon un mode de réalisation, la génération des deuxièmes pseudo-données comprend : a) injecter un deuxième échantillon dans le premier ou le deuxième réseau neuronal artificiel, le premier ou le deuxième réseau neuronal artificiel étant agencé pour mettre en œuvre au moins une fonction auto-associative pour reproduire des échantillons d’entrée au niveau d’une ou plusieurs de ses sorties, au moins certains des échantillons d’entrée reproduits présents au niveau des sorties formant les deuxièmes pseudo-données, le premier échantillon étant un échantillon aléatoire ou un échantillon réel. Selon un mode de réalisation, la génération des premières et/ou des deuxièmes pseudo-données comprend en outre : b) réinjecter un pseudo-échantillon, généré sur la base de l’échantillon reproduit présent au niveau desdites une ou plusieurs sorties du premier ou du deuxième réseau neuronal artificiel, dans le premier ou le deuxième réseau neuronal artificiel afin de générer un nouvel échantillon reproduit au niveau desdites une ou plusieurs sorties ; et c) répéter b) une ou plusieurs fois pour générer une pluralité de pseudo-échantillons réinjectés ; dans lequel les premières et/ou deuxièmes pseudo-données comprennent au moins deux des pseudo-échantillons réinjectés issus du même premier ou deuxième échantillon et correspondant à des valeurs de sortie générées par le premier ou le deuxième réseau neuronal artificiel. Selon un mode de réalisation, la génération des premières et/ou des deuxièmes pseudo-données comprend en outre : b) réinjecter un pseudo-échantillon, généré sur la base de l’échantillon reproduit présent au niveau desdites une ou plusieurs sorties du premier ou du deuxième réseau neuronal artificiel, dans le premier ou le deuxième réseau neuronal artificiel afin de générer un nouvel échantillon reproduit au niveau desdites une ou plusieurs sorties ; et c) répéter b) une ou plusieurs fois pour générer une pluralité de pseudo-échantillons réinjectés ; dans lequel les premières et/ou deuxièmes pseudo-données comprennent au moins deux des pseudo-échantillons réinjectés issus du même premier ou deuxième échantillon et correspondant à des valeurs de sortie générées par le premier ou le deuxième réseau neuronal artificiel. Selon un mode de réalisation, le premier et/ou le deuxième réseau neuronal artificiel met en œuvre une fonction d’apprentissage, qui est par exemple une fonction de classification, et les valeurs de sortie correspondantes des premières pseudo-données comprennent des pseudos étiquettes générées par la fonction d’apprentissage sur la base des pseudo-échantillons réinjectés. Selon un autre aspect, on prévoit un système comprenant : un premier réseau neuronal artificiel ; soit un deuxième réseau neuronal artificiel dans un état vierge et agencé pour générer des premières pseudo-données, soit une mémoire mémorisant les premières pseudo-données générées par le premier réseau neuronal artificiel pendant un état vierge ; et un ou plusieurs circuits ou processeurs agencés pour générer d’anciens souvenirs pour les utiliser dans l’apprentissage du premier réseau neuronal artificiel : en faisant initialement un apprentissage du premier réseau neuronal artificiel avec des premières données d’entrée et avec les premières pseudo-données ; en générant des deuxièmes pseudo-données en utilisant le premier réseau neuronal artificiel, ou en utilisant le deuxième réseau neuronal artificiel à la suite d’un transfert au moins partiel de connaissance à partir du premier réseau neuronal artificiel vers le deuxième réseau neuronal artificiel ; et en faisant un apprentissage du premier réseau neuronal artificiel, ou d’un autre réseau neuronal artificiel, avec les deuxièmes pseudo-données et des deuxièmes données d’entrée. Selon un mode de réalisation, le système comprend en outre un détecteur de nouveauté agencé pour : détecter si un ou plusieurs troisièmes échantillons de données d’entrée correspondent à une classe qui est déjà connue du premier réseau neuronal artificiel ; dans lequel, si un ou plusieurs troisièmes échantillons de données d’entrée ne correspondent pas à une classe qui est déjà connue, lesdits un ou plusieurs circuits ou processeurs sont en outre agencés pour : générer des troisièmes pseudo-données en utilisant le premier réseau neuronal artificiel, ou en utilisant le deuxième réseau neuronal artificiel à la suite d’un transfert au moins partiel de connaissance de nouveau à partir du premier réseau neuronal artificiel vers le deuxième réseau neuronal artificiel ; et faire un apprentissage du premier réseau neuronal artificiel avec les troisièmes pseudo-données et les troisièmes échantillons de données d’entrée. Selon un mode de réalisation, le système comprend en outre un contrôleur agencé pour : détecter si un ou plusieurs troisièmes échantillons de données d’entrée correspondent à une nouvelle distribution qui n’est pas déjà apprise par le premier réseau neuronal artificiel ; et si lesdits un ou plusieurs troisièmes échantillons de données d’entrée correspondent à la nouvelle distribution, créer un nouveau système pour apprendre lesdits un ou plusieurs troisièmes échantillons de données d’entrée, le nouveau système comprenant au moins un autre premier réseau neuronal artificiel. Selon un mode de réalisation, lesdits un ou plusieurs circuits ou processeurs sont agencés pour générer les premières pseudo-données : a) en injectant un premier échantillon aléatoire dans le premier ou le deuxième réseau neuronal artificiel, le premier ou le deuxième réseau neuronal artificiel étant agencé pour mettre en œuvre au moins une fonction auto-associative pour reproduire des échantillons d’entrée au niveau d’une ou plusieurs de ses sorties, les échantillons d’entrée reproduits présents au niveau des sorties formant les premières pseudo-données. Selon un mode de réalisation, lesdits un ou plusieurs circuits ou processeurs sont agencés pour générer les deuxièmes pseudo-données : a) en injectant un deuxième échantillon dans le premier ou le deuxième réseau neuronal artificiel, le premier ou le deuxième réseau neuronal artificiel étant agencé pour mettre en œuvre au moins une fonction auto-associative pour reproduire des échantillons d’entrée au niveau d’une ou plusieurs de ses sorties, au moins certains des échantillons d’entrée reproduits présents au niveau des sorties formant les deuxièmes pseudo-données, le premier échantillon étant un échantillon aléatoire ou un échantillon réel. Selon un autre aspect, on prévoit un procédé de génération de données d’apprentissage pour transférer de la connaissance à partir d’un réseau neuronal artificiel entraîné vers un autre réseau neuronal artificiel, le procédé comprenant : a) injecter un premier échantillon dans le réseau neuronal artificiel entraîné, le réseau neuronal artificiel entraîné étant agencé pour mettre en œuvre au moins une fonction auto-associative pour reproduire des échantillons d’entrée au niveau d’une ou plusieurs de ses sorties, et le premier échantillon étant soit un échantillon aléatoire soit un échantillon réel ; b) réinjecter un pseudo-échantillon, généré sur la base de l’échantillon reproduit présent au niveau desdites une ou plusieurs sorties du réseau neuronal artificiel entraîné, dans le réseau neuronal artificiel entraîné afin de générer un nouvel échantillon reproduit au niveau desdites une ou plusieurs sorties ; et c) répéter b) une ou plusieurs fois pour générer une pluralité de pseudo-échantillons réinjectés ; dans lequel les données d’apprentissage pour l’apprentissage de l’autre réseau neuronal artificiel comprennent au moins deux des pseudo-échantillons réinjectés issus du même premier échantillon et des valeurs de sortie correspondantes générées par le réseau neuronal artificiel entraîné. Selon encore un autre aspect, on prévoit un système pour générer des données d’apprentissage pour transférer de la connaissance à partir d’un réseau neuronal artificiel entraîné vers un autre réseau neuronal artificiel, le système comprenant un générateur de données agencé pour : a) injecter un premier échantillon dans le réseau neuronal artificiel entraîné, le réseau neuronal artificiel entraîné étant agencé pour mettre en œuvre au moins une fonction auto-associative pour reproduire des échantillons d’entrée au niveau d’une ou plusieurs de ses sorties et le premier échantillon étant soit un échantillon aléatoire soit un échantillon réel ; b) réinjecter un pseudo-échantillon, généré sur la base de l’échantillon reproduit présent au niveau desdites une ou plusieurs sorties du réseau neuronal artificiel entraîné, dans le réseau neuronal artificiel entraîné afin de générer un nouvel échantillon reproduit au niveau desdites une ou plusieurs sorties ; et c) répéter b) une ou plusieurs fois pour générer une pluralité de pseudo-échantillons réinjectés ; dans lequel le générateur de données est en outre agencé pour générer les données d’apprentissage pour l’apprentissage de l’autre réseau neuronal artificiel de manière à comprendre au moins deux des pseudo-échantillons réinjectés issus du même premier échantillon et des valeurs de sortie correspondantes générées par le réseau neuronal artificiel entraîné. Ces caractéristiques et avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : la représente une architecture ANN de perceptron multicouche selon un exemple de réalisation ; la représente quatre graphiques représentant un exemple du problème d’oubli catastrophique ; la représente trois phases dans un procédé consistant à retenir des anciens souvenirs dans un ANN selon un exemple de réalisation de la présente description ; la représente quatre graphiques représentant l’apprentissage d’un ANN selon un exemple de réalisation de la présente description ; la est un schéma blocs représentant un système informatique mettant en œuvre le procédé de la selon un exemple de réalisation de la présente description ; la représente schématiquement une architecture d’ANN selon un exemple de réalisation de la présente description ; la représente schématiquement un système de transfert de connaissance selon un exemple de réalisation de la présente description ; la est un organigramme représentant des étapes dans un procédé de transfert de connaissance selon un exemple de réalisation de la présente description ; la représente un espace bidimensionnel donnant un exemple de modèle qui classe des éléments en trois classes, et un exemple de trajectoire de pseudo-échantillons dans cet espace ; la est un graphique illustrant des exemples de distributions aléatoires d’échantillons aléatoires selon un exemple de réalisation de la présente description ; la représente schématiquement un circuit de génération d’échantillons selon un exemple de réalisation de la présente description ; la représente schématiquement un système pour retenir des anciens souvenirs dans un ANN selon un exemple de réalisation de la présente description ; la représente schématiquement un système pour retenir des anciens souvenirs dans un ANN selon encore un autre exemple de réalisation de la présente description ; la représente un système matériel selon un exemple de réalisation de la présente description ; la représente schématiquement un système d’apprentissage artificiel pour un apprentissage incrémental selon un autre exemple de réalisation de la présente description ; et la représente schématiquement un système d’apprentissage artificiel mettant en œuvre une pluralité de modèles d’apprentissage. De mêmes éléments ont été désignés par de mêmes références dans les différentes figures. En particulier, les éléments structurels et/ou fonctionnels communs aux différents modes de réalisation peuvent présenter les mêmes références et peuvent disposer de propriétés structurelles, dimensionnelles et matérielles identiques. Par souci de clarté, seuls les étapes et éléments utiles à la compréhension des modes de réalisation décrits ont été représentés et sont détaillés. En particulier, les techniques pour l’apprentissage d’un réseau neuronal artificiel, basées par exemple sur la minimisation d’une fonction objective comme une fonction de coût, sont connues de la personne du métier, et ne seront pas décrites en détail. Sauf précision contraire, lorsque l'on fait référence à deux éléments connectés entre eux, cela signifie directement connectés sans éléments intermédiaires autres que des conducteurs, et lorsque l'on fait référence à deux éléments couplés entre eux, cela signifie que ces deux éléments peuvent être connectés ou être reliés par l'intermédiaire d'un ou plusieurs autres éléments. Dans la description qui suit, lorsque l'on fait référence à des qualificatifs de position absolue, tels que les termes "avant", "arrière", "haut", "bas", "gauche", "droite", etc., ou relative, tels que les termes "dessus", "dessous", "supérieur", "inférieur", etc., ou à des qualificatifs d'orientation, tels que les termes "horizontal", "vertical", etc., il est fait référence sauf précision contraire à l'orientation des figures. Sauf précision contraire, les expressions "environ", "approximativement", "sensiblement", et "de l'ordre de" signifient à 10 % près, de préférence à 5 % près. Bien que dans la description suivante des exemples de modes de réalisation soient basés sur une architecture ANN de perceptron multicouche, il sera clair pour l’homme de l’art que les principes peuvent être appliqués plus largement à tout ANN, complètement connecté ou non, comme un réseau neuronal à apprentissage profond (DNN), un réseau neuronal à convolution (CNN), ou tout autre type d’ANN. Dans la description qui suit, on supposera que les termes suivants ont les définitions suivantes : - "données d’entrée réelles" ou "échantillons de données d’entrée" : échantillons de données collectés et utilisés pour l’apprentissage d’un ANN non entraîné, ces données d’entrée étant désignées comme "réelles" puisqu’elles ne sont pas des données générées par ordinateur, et ne sont par conséquent pas synthétiques ; - "échantillon aléatoire" : échantillon synthétique généré par ordinateur sur la base de valeurs aléatoires ou pseudo-aléatoires ; - "donnée d’apprentissage" : toute donnée (réelle ou synthétique) pouvant être utilisée pour l’apprentissage d’un ou plusieurs réseaux neuronaux ; - "données synthétiques" ou "pseudo-données" : données synthétiques, par exemple générées par ordinateur, pouvant être utilisées comme données d’apprentissage, ces données comprenant par exemple au moins des pseudo-échantillons, et dans le cas de l’apprentissage d’un classificateur, des pseudo-étiquettes associées aux pseudo-échantillons ; - "pseudo-échantillon" : échantillon synthétique généré par ordinateur généré sur la base d’un procédé de génération de données guidé ou en utilisant un prétraitement ; - "pseudo-étiquette" : étiquette générée par un réseau neuronal entraîné en réponse à l’injection d’un pseudo-échantillon, la pseudo-étiquette correspondant à la vérité de terrain à viser pendant l’apprentissage d’un ANN en utilisant des données d’apprentissage ; et - "auto-associative" : la fonction consistant à reproduire des entrées, comme dans un auto-codeur. Toutefois, le terme auto-codeur est souvent associé à un ANN qui doit réaliser une certaine compression, par exemple impliquant une compression de l’espace latent signifiant que lesdites une ou plusieurs couches cachées contiennent moins de neurones que le nombre de neurones de l’espace d’entrée. En d’autres termes, l’espace d’entrée est incorporé dans un espace plus petit. Le terme "auto-associative" est utilisé ici pour désigner une fonction de réplication similaire à celle d’un auto-codeur, mais une fonction auto-associative est plus générale en ce qu’elle peut impliquer ou pas de la compression. La illustre une architecture ANN de perceptron multicouche 100 selon un exemple de réalisation. L’architecture ANN 100 selon l’exemple de la figure 1 comprend trois couches, en particulier une couche d’entrée (INPUT LAYER), une couche cachée (HIDDEN LAYER) et une couche de sortie (OUTPUT LAYER). Dans des variantes de réalisation, il pourrait y avoir plusieurs couches cachées. Chaque couche comprend par exemple un certain nombre de neurones. Par exemple, l’architecture ANN 100 définit un modèle dans un espace bidimensionnel, et il y a ainsi deux neurones visibles dans la couche d’entrée recevant les valeurs X1 et X2 correspondantes d’une entrée X. Le modèle comporte une couche cachée avec sept neurones de sortie cachés, et correspond ainsi à une matrice de dimensions . L’architecture ANN 100 de la correspond à un réseau de classification, et le nombre de neurones dans la couche de sortie correspond ainsi au nombre de classes, l’exemple de la comportant trois classes. Le mappage appliqué par l’architecture ANN 100 est une fonction d’agrégation, comprenant une fonction associative dans chaque couche, ces fonctions étant connectées en chaîne pour mapper . Il y a seulement deux fonctions de la sorte dans l’exemple simple de la , correspondant à celles de la couche cachée et de la couche de sortie. Chaque neurone de la couche cachée reçoit le signal provenant de chaque neurone d’entrée, un paramètre correspondant étant appliqué à chaque neurone j de la couche cachée à partir de chaque neurone d’entrée i de la couche d’entrée. La figure 1 illustre les paramètres à appliqués aux sorties d’un premier des neurones d’entrée vers chacun des sept neurones cachés. Le but du modèle neuronal défini par l’architecture 100 est d’approximer une certaine fonction en ajustant un ensemble de paramètres . Le modèle correspond à un mappage , les paramètres étant par exemple modifiés pendant l’apprentissage sur la base d’une fonction objective, comme une fonction de coût. Par exemple, la fonction objective est basée sur la différence entre une vérité de terrain et une valeur de sortie . Dans certains modes de réalisation, la fonction de mappage est basée sur une projection non linéaire , appelée en général fonction d’activation, de sorte que la fonction de mappage peut être définie comme étant , où sont les paramètres de , et est une valeur de vecteur. En général, on utilise une même fonction pour toutes les couches, mais il est aussi possible d’utiliser une fonction différente pour chaque couche. Dans certains cas, une fonction d’activation linéaire pourrait aussi être utilisée, le choix entre une fonction linéaire et non linéaire dépendant du modèle particulier et des données d’apprentissage. La valeur de vecteur est par exemple évaluée par la fonction non linéaire en tant qu’exemple d’agrégation. Par exemple, la valeur de vecteur est constituée de poids W, et chaque neurone k de la couche de sortie reçoit les sorties de chaque neurone j de la couche cachée pondérées par un poids correspondant parmi les poids . La valeur de vecteur peut par exemple être vue comme étant une autre couche cachée avec une fonction d’activation non linéaire et ses paramètres W. La figure 1 représente les poids à appliqués entre la sortie d’un neurone supérieur de la couche cachée et chacun des trois neurones de la couche de sortie. La projection non linéaire est par exemple sélectionnée manuellement, par exemple une fonction sigmoïde. Les paramètres de la fonction d’activation sont toutefois appris par apprentissage, par exemple sur la base de la règle de descente de gradient. D’autres caractéristiques de l’architecture ANN, comme la profondeur du modèle, le choix de l’optimiseur pour la descente de gradient et la fonction de coût, sont aussi par exemple sélectionnées manuellement. Il y a deux procédures qui peuvent être appliquées à un ANN comme l’ANN 100 de la figure 1, l’une étant une procédure d’apprentissage ou de propagation vers l’arrière afin d’apprendre les paramètres , et l’autre étant une procédure d’inférence ou de propagation vers l’avant, pendant laquelle des valeurs d’entrée X s’écoulent à travers la fonction, et sont multipliées par les calculs intermédiaires définissant la fonction de mappage , afin de générer une sortie . Comme cela a été expliqué dans la section d’art antérieure précédente, dans certains modes de réalisation, un ANN comme l’ANN 100 de la peut peiner dans des scénarios réalistes lorsque la distribution de données d’apprentissage ne devient disponible qu’au cours de l’apprentissage. En effet, on souhaite généralement qu’un ANN soit capable de s’adapter facilement pour apprendre de nouvelles informations, mais un inconvénient de cette plasticité est qu’il est souvent difficile de construire sur un modèle entraîné tout en conservant une fonction de mappage précédente. On va maintenant décrire le problème de l’oubli catastrophique plus en détail en faisant référence à la . La représente quatre graphiques A), B), C) et D) représentant un exemple du problème d’oubli catastrophique. L’exemple de la est basé sur un ANN, comme l’ANN 100 de la , apprenant quatre classes en deux étapes. Le graphique A) de la illustre un exemple d’espace bidimensionnel comprenant trois grappes CL0, CL1 et CL2 d’échantillons d’apprentissage ayant chacun une paire de valeurs X1 et X2, qui seront appelées ici caractéristiques, et qui doivent être utilisés pour l’apprentissage de l’ANN. Les trois grappes CL0, CL1, et CL2 correspondent respectivement à des échantillons tombant dans trois classes C0, C1 et C2, et l’ANN doit être entraîné pour apprendre ces trois classes en parallèle. Le graphique B) de la illustre le même espace bidimensionnel que le graphique A) après une première étape d’entraînement des trois classes C0, C1 et C2 sur la base des grappes CL0, CL1 et CL2 d’échantillons d’apprentissage. En particulier, le graphique B) illustre un exemple de frontières de classes 202, 204 et 206 qui ont été apprises par l’ANN, la frontière 202 séparant les classes C0 et C1, la frontière 204 séparant les classes C0 et C2, et la frontière 206 séparant les classes C1 et C2. Le graphique C) de la illustre le même espace bidimensionnel et les mêmes frontières de classe que le graphique B), et illustre en plus une autre grappe CL3 d’échantillons d’apprentissage à apprendre par l’ANN pendant une deuxième étape d’apprentissage, ces échantillons d’apprentissage tombant dans une quatrième classe C3. Le graphique D) de la illustre l’espace bidimensionnel après l’apprentissage de la nouvelle classe C3 pendant la deuxième étape d’apprentissage. Comme cela est illustré, une nouvelle frontière 208 a été apprise, frontière qui sépare la classe C3 des trois autres classes, mais les frontières de classes apprises précédemment entre les classes C0, C1 et C2 ont été perdues. Ainsi, l’ANN n’est plus capable de séparer les classes C0, C1 et C2. Une solution pour éviter un oubli catastrophique, sur la base de réseaux neuronaux à réverbération, est décrite dans la publication de B. Ans et S. Rousset intitulée “Avoiding catastrophic forgetting by coupling two reverberating neural networks”, C.R. Acad. Sci. Paris. Sciences de la vie/Life Sciences 1997. 320, 989-997. La représente trois phases dans un procédé consistant à retenir d’anciens souvenirs dans un ANN selon un exemple de réalisation de la présente description. Le procédé par exemple implique l’utilisation de deux ANN référencés Net_1 et Net_2. Chacun de ces ANN correspond par exemple à un ANN comme celui de la susmentionnée. Dans certains modes de réalisation, Net_1 et Net_2 ont, comme niveau minimum de similarité, le même nombre de neurones dans leurs couches d’entrée et le même nombre de neurones dans leurs couches de sortie. Dans certains modes de réalisation, ces ANN ont aussi chacun le même nombre de couches cachées et de neurones. Initialement, les ANN Net_1 et Net_2 ont des états initiaux identiques ou relativement similaires, appelés State_0 en figure 3. L’"état" d’un ANN correspond aux valeurs particulières des paramètres et des poids W mémorisés par l’ANN. Dans certains modes de réalisation, par exemple dans le cas où Net_1 et Net_2 ont la même architecture, l’état de l’un des ANN est initialisé dans un état aléatoire, comme un état initial référencé ici état "vierge". Par exemple, un tel état vierge implique que tous les paramètres et tous les poids W de l’ANN ont été mis à des valeurs aléatoires. Cet état est ensuite copié dans l’autre ANN, par exemple en copiant chacun des paramètres et des poids W. En variante, par exemple si les architectures de Net_1 et Net_2 sont différentes, l’état initial de l’un des ANN est par exemple appris par l’autre. Par exemple, l’ANN Net_2 est initialisé dans un état vierge aléatoire, puis cet état est transféré à l’ANN Net_1 pendant une opération de pré-homogénéisation (non représentée en ). Un tel transfert d’apprentissage sera décrit plus en détail ci-après. Dans une première phase (HOMOGENIZATION) 302 du procédé de la , Net_1 est agencé pour apprendre des premiers nouveaux stimuli (FIRST STIMULI), ainsi que pour apprendre l’état vierge State_0 à partir de Net_2 comme cela est représenté par une flèche (TRANSFER) allant de Net_2 vers Net_1. Les premiers nouveaux stimuli comprennent par exemple une ou plusieurs classes initiales à apprendre par Net_1. Net_2 est par exemple agencé pour générer des pseudo-données qui décrivent son état d’initialisation (vierge). Dans certains modes de réalisation, un échantillon réel, ou un échantillon constitué de bruit gaussien, est appliqué à Net_2, et une ou plusieurs réinjections sont effectuées, afin de générer les pseudo-données sur la base de trajectoires de pseudo-échantillons, comme on va le décrire plus en détail ci-après. On utilise par exemple des outils d’apprentissage profonds classiques pour permettre que les nouvelles données, et les pseudo-données provenant de Net_2, soient apprises par Net_1 pendant cette phase. À la fin de la première phase 302, l’état de Net_1 a été modifié à partir de l’état initial State_0 vers un nouvel état State_1. Dans une deuxième phase (SAVING) 304, l’état State_1 de Net_1 est par exemple transféré vers et mémorisé dans Net_2, comme cela est représenté par une flèche (TRANSFER) allant de Net_1 à Net_2. Dans le cas où Net_1 et Net_2 ont la même profondeur et la même largeur entre eux, les paramètres et les poids sont par exemple simplement copiés de Net_1 dans Net_2 afin de réaliser ce transfert. Sinon, on pourrait utiliser d’autres techniques connues pour le transfert de connaissance, ou la technique décrite ci-après en référence aux figures 6 à 11, et dans la demande de brevet français parallèle N° FR2003326 déposée le 2 avril 2020. Ainsi, après la deuxième phase 304, Net_2 est par exemple capable de donner des performances similaires à celles de Net_1 en ce qui concerne la reproduction d’entrée et la classification. Net_2 est ainsi capable de générer des anciens souvenirs qui ont été précédemment retenus par Net_1 pendant un apprentissage ultérieur de Net_1. Dans une troisième phase (CONSOLIDATION) 306, des deuxièmes nouveaux stimuli (SECOND STIMULI) sont appliqués à Net_1, et Net_1 est agencé pour apprendre ces deuxièmes nouveaux stimuli ainsi que pour réapprendre l’état State_1 mémorisé par Net_2, comme cela est représenté par une flèche (TRANSFER) allant de Net_2 à Net_1. Les deuxièmes nouveaux stimuli comprennent par exemple une ou plusieurs classes additionnelles à apprendre par Net_1. Net_2 est par exemple agencé pour générer des pseudo-données qui décrivent l’état mémorisé State_1. Dans certains modes de réalisation, du bruit gaussien est appliqué à Net_2, et une ou plusieurs réinjections sont effectuées, afin de générer les pseudo-données, comme on va le décrire plus en détail ci-après. On utilise par exemple des outils d’apprentissage profonds classiques pour permettre que de nouvelles données, et les pseudo-données provenant de l’ANN Net_2, soient apprises par Net_1 pendant cette phase. L’apprentissage de Net_1 pendant les phases 302 et 306 est par exemple réalisé sur la base d’un certain rapport entre les nouvelles données de stimuli et les pseudo-données. Par exemple, au moins un pseudo-échantillon de données est appliqué à Net_1 pour chaque nouvel échantillon de données de stimuli qui est appliqué, bien que les pseudo-échantillons de données et les nouveaux échantillons de stimuli puissent être groupés. Par exemple, il pourrait y avoir jusqu’à 1000 nouveaux échantillons de stimuli, suivi de jusqu’à 1000 ou plus pseudo-échantillons de données. Toutefois, l’influence sur Net_1 des nouveaux échantillons de données de stimuli est vraisemblablement supérieure à l’influence des pseudo-échantillons de données, et par conséquent, dans certains modes de réalisation il peut y avoir une plus grande proportion de pseudo-échantillons que de nouveaux échantillons de stimuli. Par exemple, dans certains modes de réalisation, le rapport R entre les nouveaux échantillons de données de stimuli et les pseudo-échantillons de données est d’au moins 1 à 10, et par exemple d’au moins 1 à 20. Un avantage de l’apprentissage, pendant la troisième phase 306, de Net_1 avec à la fois des nouveaux stimuli et des pseudo-données générées par Net_2 est que d’anciens souvenirs peuvent être appris en même temps que les nouveaux stimuli. En effet, des doses de pseudo-données provenant de Net_2 vont amener Net_1 à dériver le long de l’espace de paramètres en cherchant une solution qui satisfait à la fois les conditions des nouveaux stimuli et les conditions des pseudo-données. Ainsi, Net_1 va être entraîné pour adapter à la fois les anciens souvenirs et les nouvelles informations dans son modèle. Cela signifie, par exemple, qu’à la différence de l’exemple de la figure 2D, des frontières de classe qui ont été apprises pendant la phase 302 (comme les frontières de classe 202, 204, 206 des figures 2B et 2C) ne vont pas être perdues, mais vont être maintenues par les pseudo-échantillons de Net_2. La représente quatre graphiques représentant l’apprentissage d’un ANN sur la base du procédé de la . L’exemple est le même que celui de la . Toutefois, l’apprentissage des frontières 202, 204 et 206 du graphique B entre les classes C0, C1 et C2 se fait pendant la phase d’homogénéisation, et ainsi, alors que les frontières sont similaires à celles de la , elles sont apprises parallèlement avec l’état State_0 provenant de l’ANN Net_2. En outre, comme cela est représenté par le graphique D de la , pendant la phase d’apprentissage de la nouvelle classe correspondant à la grappe d’échantillons CL3, l’état State_1 de Net_2, qui contient les frontières 202, 204, 206 apprises précédemment continue à être utilisé pour générer des pseudo-échantillons. Le résultat est que les frontières 202 et 204 sont conservées partiellement pendant que de nouvelles frontières 400, 402 et 404 sont apprises entre la classe C3 et les classes C0, C1 et C2 respectivement. En faisant de nouveau référence à la , alors que dans la phase 304 la connaissance maintenue par Net_1 est au moins partiellement transférée à Net_2, il serait aussi possible à la place de transférer au moins partiellement cette connaissance vers un autre ANN différent de Net_2, et d’utiliser cet autre ANN pour générer les pseudo-échantillons de données. Toutefois, un avantage de l’utilisation du même ANN à la fois pour la génération de pseudo-échantillons de données pendant la phase d’homogénéisation 302, et la génération de pseudo-échantillons de données correspondant à d’anciens souvenirs pendant la phase de consolidation 306, est que moins d’ANN sont nécessaires par rapport au cas où on utiliserait des ANN différents. Chacun des ANN Net_1 et Net_2 de la peut être mis en œuvre par un circuit matériel dédié, et une interface matérielle pourrait être prévue afin de mettre en œuvre les transferts entre les ANN. Dans un tel cas, pendant les phases d’homogénéisation et de consolidation, il est possible de réaliser, au moins partiellement en parallèle la génération de pseudo-données par le réseau neuronal Net_2, et l’apprentissage des nouveaux stimuli et des pseudo-données par le réseau neuronal Net_1. En variante, seul le premier réseau neuronal artificiel Net_1 est présent et un tampon, par exemple mis en œuvre par une mémoire volatile ou non volatile, est utilisé pour mémoriser les pseudo-échantillons générés à l’avance. Par exemple, Net_1 est initialement dans l’état vierge, et est utilisé pour générer des pseudo-échantillons de données, qui sont mémorisés dans le tampon. Net_1 est alors entraîné en utilisant les premiers stimuli et les pseudo-échantillons de données provenant du tampon. Dans un tel cas, l’opération de sauvegarde peut être omise, mais avant la phase de consolidation, Net_1 est utilisé de nouveau pour générer de nouveaux pseudo-échantillons, qui sont de nouveau mémorisés dans le tampon. Net_1 est ensuite entraîné en utilisant les deuxièmes stimuli et les nouveaux pseudo-échantillons de données provenant du tampon. Encore en variante, les premier et deuxième réseaux neuronaux artificiels peuvent être mis en œuvre par un même circuit de réseau neuronal. En effet, dans le cas d’un seul ANN Net_1 tel que décrit dans le paragraphe précédent, l’état vierge et chaque état suivant atteint par Net_1 avant une phase d’apprentissage, est perdu pendant la phase d’apprentissage suivante, et par conséquent il n’est plus possible de générer davantage de pseudo-échantillons plus tard. La génération de davantage de pseudo-échantillons serait toutefois possible si l’état de l’ANN était aussi mémorisé avant chaque nouvelle phase d’apprentissage, de sorte qu’au moins l’état t-1 puisse être rechargé. Par exemple, le tampon est en outre utilisé pour mémoriser des ensembles de données de configuration associés aux réseaux neuronaux afin que le même circuit de réseau neuronal puisse réaliser, en série, les rôles des deux réseaux neuronaux Net_1 et Net_2. Les données de configuration comprennent par exemple les paramètres, les poids et les fonctions d’activation du réseau neuronal. Par exemple, le circuit de réseau neuronal est agencé pour jouer le rôle du réseau neuronal Net_1 en chargeant, à partir du tampon dans le circuit de réseau neuronal, un premier ensemble de données de configuration associé au réseau neuronal Net_1. Avant ce chargement, si le circuit de réseau neuronal a joué le rôle de Net_2, l’ensemble de données de configuration associé à Net_2 peut d’abord être mémorisé à partir du circuit de réseau neuronal dans le tampon. Le circuit de réseau neuronal est par exemple agencé pour jouer le rôle du réseau neuronal Net_2 en chargeant, à partir du tampon dans le circuit de réseau neuronal, un deuxième ensemble de données de configuration associé au réseau neuronal Net_2. Avant ce chargement, si le circuit de réseau neuronal a joué le rôle de Net_1, l’ensemble de données de configuration associé à Net_1 va d’abord être mémorisé à partir du circuit de réseau neuronal dans le tampon. Ainsi, les pseudo-données à utiliser pendant la phase d’homogénéisation 302 sont par exemple générées en premier par Net_2 et stockées en mémoire, puis elles sont ensuite utilisées pendant l’apprentissage de Net_1 en plus des premiers stimuli. Similairement, les pseudo-données à utiliser pendant la phase de consolidation 306 sont par exemple générées en premier par Net_2 et stockées en mémoire, et sont ensuite utilisées pendant l’apprentissage de Net_1 en plus des deuxièmes stimuli. En variante, Net_1 et Net_2 pourraient être émulés par du logiciel exécuté dans un système informatique, comme on va le décrire maintenant plus en détail en faisant référence à la . La est un schéma blocs représentant un système informatique 500 agencé pour mettre en œuvre le procédé de la . Par exemple, le système informatique 500 comprend un dispositif de traitement (P) 502 comprenant un ou plusieurs CPU (unités de traitement central) sous le contrôle d’instructions mémorisées dans une mémoire d’instructions (INSTR MEM) 504. En variante, plutôt que des CPU, le système informatique pourrait comprendre un ou plusieurs NPU (unités de traitement neuronal), ou GPU (unités de traitement graphique), sous le contrôle d’instructions mémorisées dans la mémoire d’instructions 504. Une autre mémoire (MEMORY) 506, qui peut être mise en œuvre dans le même dispositif mémoire que la mémoire 504, ou dans un dispositif mémoire séparé, mémorise par exemple les ANN Net_1 et Net_2 dans des emplacements mémoire respectifs 508, 510, de sorte qu’une émulation informatique de ces ANN est possible. Par exemple, les ANN sont complètement définis dans la mémoire 506, y compris leurs couches d’entrée et de sortie et leurs couches cachées, leurs paramètres et leurs poids, et les fonctions d’activation appliquées par leurs circuits de neurones. De cette manière, les ANN Net_1 et Net_2 peuvent être entraînés et actionnés dans l’environnement informatique du système informatique 500. Dans certains modes de réalisation, le système informatique 500 comprend aussi une interface d’entrée/sortie (I/O INTERFACE) 512 via laquelle de nouveaux stimuli sont par exemple reçus, et à partir de laquelle des données de résultats peuvent être fournies en sorties à partir des ANN. On va maintenant décrire un exemple de technique pour le transfert de connaissance d’un ANN vers un autre, en faisant référence aux figures 6 à 11. La illustre schématiquement une architecture ANN 600 selon un exemple de réalisation, cette architecture étant par exemple utilisée pour mettre en œuvre au moins Net_2 de la , et dans certains cas aussi Net_1. L’ANN 600 de la figure 6 est similaire à l’ANN 100 de la figure 1, mais il comprend en plus une partie auto-associative capable de reproduire les données d’entrée en utilisant des neurones de la couche de sortie. Ainsi, ce modèle réalise une incorporation à partir de , où n sont les caractéristiques, et c les classes. Comme dans l’exemple de la , dans l’ANN 600 de la , chaque échantillon d’entrée comporte deux valeurs, correspondant à un espace d’entrée bidimensionnel, et il y a ainsi aussi deux neurones de sortie additionnels correspondants (FEATURES) pour générer un pseudo-échantillon de sortie (X’) reproduisant l’échantillon d’entrée. Par exemple, chaque échantillon d’entrée X est formé par une paire de valeurs X1, X2, et l’ANN 600 classe ces échantillons comme étant soit une classe C0, C1 ou C2 correspondant à l’étiquette (LABELS) formant la valeur de sortie Y. La partie auto-associative de l’ANN 600 se comporte de manière similaire à un auto-codeur. Les auto-codeurs sont un type d’ANN connu de la personne du métier dans lequel, plutôt que d’être entraînés pour réaliser une classification, ils sont entraînés pour reproduire leurs entrées au niveau de leurs sorties. Comme indiqué précédemment, le terme "auto-associative" est utilisé ici pour désigner une fonctionnalité similaire à celle d’un auto-codeur, excepté que l’espace latent n’est pas nécessairement comprimé. En outre, comme pour l’apprentissage d’un auto-codeur, l’apprentissage de la partie auto-associative de l’ANN peut être réalisé avec certaines contraintes afin d’éviter que l’ANN converge rapidement vers la fonction identité, comme cela est bien connu de la personne du métier. L’ANN 600 est par exemple mis en œuvre par du matériel dédié, comme un ASIC (circuit intégré spécifique d’application), ou par une émulation logicielle exécutée sur un dispositif informatique tel que décrit précédemment en relation avec la , ou par une combinaison de matériel dédié et de logiciel. Dans l’exemple de la , le réseau est commun pour la partie auto-associative et pour la partie de classification, excepté dans la couche de sortie. En outre, il y a une connexion entre chacun des neurones de la couche cachée et les neurones X1’ et X2’ de la couche de sortie. Toutefois, dans des variantes de réalisation, il pourrait y avoir une plus faible quantité de chevauchement, ou pas de chevauchement du tout, entre la partie auto-associative et la partie de classification de l’ANN 600. En effet, dans certains modes de réalisation, les fonctions auto-associative et hétéro-associative pourraient être mises en œuvre par des réseaux neuronaux séparés. Dans certains modes de réalisation, en plus des neurones communs dans la couche d’entrée, il y a au moins un autre neurone commun dans les couches cachées entre la partie auto-associative et la partie de classification de l’ANN 600. Un neurone commun implique que ce neurone fournit sa sortie directement, ou indirectement, c’est-à-dire par l’intermédiaire d’un ou plusieurs neurones ou d’autres couches, à au moins l’un des neurones de sortie de la partie auto-associative et au moins l’un des neurones de sortie de la partie de classification. Comme cela est illustré en , une réinjection (REINJECTION) est réalisée à partir des sorties auto-associatives pour revenir vers les entrées de l’ANN. Une telle réinjection est réalisée afin de générer des données d’apprentissage synthétiques, c’est-à-dire des pseudo-données, et comme on va le décrire plus en détail ci-après, la réinjection est par exemple réalisée par un générateur de données (décrit en relation avec la ci-après) qui est couplé à l’ANN. Ainsi, la partie auto-associative du modèle d’ANN est utilisée comme fonction récursive, en ce que ses sorties sont utilisées en tant que ses entrées. Cela entraîne une trajectoire des sorties, dans laquelle, après chaque réinjection, les échantillons générés se rapprochent des échantillons bruts réels dans des régions d’intérêt de la fonction de transfert à apprendre. Avantageusement, selon les modes de réalisation décrits ici, pour chaque germe injecté dans l’ANN, on utilise par exemple au moins deux points se trouvant sur cette trajectoire pour former des pseudo-données pour l’apprentissage d’un autre ANN. On va maintenant décrire la génération de données d’apprentissage pour le transfert de connaissance sur la base de l’ANN 600 plus en détail en faisant référence aux figures 7 à 9. La illustre schématiquement un système 700 de transfert de connaissance selon un exemple de réalisation de la présente description. Le système 700 comprend les ANN Net_1 et Net_2. Net_2 est par exemple mis en œuvre de manière similaire à l’ANN de la , et comprend, en particulier, au moins une partie auto-associative. Net_1 à entraîner peut correspondre à une architecture classique qui est agencée pour réaliser seulement une classification, par exemple du type décrit en relation avec la susmentionnée. En variante, Net_1 pourrait comporter des parties auto-associatives ou auto-codeuses en plus de la fonction de classification, cet ANN étant par exemple du type représenté en . Le système 700 comprend aussi un générateur de données (DATA GENERATOR) 704 agencé pour faire usage de la fonction auto-associative de Net_2 afin de générer des pseudo-données (PSEUDO DATA) pour l’apprentissage de Net_1. Le générateur de données 704 reçoit par exemple une valeur de germe (SEED) générée par un générateur de germe (SEED GEN) 708. Le générateur de germe 708 est par exemple mis en œuvre par un générateur pseudo-aléatoire ou similaire, et génère des valeurs sur la base d’une distribution aléatoire donnée, comme on va le décrire plus en détail ci-après. En variante, le générateur de germe 708 pourrait générer les valeurs de germe sur la base d’échantillons de données réelles, au moins dans le cas de la génération de pseudo-données pendant la phase de consolidation 306 de la . Par exemple, le générateur de germe 708 comprend une mémoire mémorisant un nombre limité d’échantillons de données réelles, qui sont sélectionnés, par exemple aléatoirement, à partir de l’ensemble de données réelles, ou correspondent à des échantillons reçus pendant une période de temps limitée. Cette mémoire peut par conséquent être relativement petite. Chaque valeur de germe est par exemple tirée, dans certains cas par sélection aléatoire, parmi ces les échantillons de données réelles, avec ou sans addition de bruit. Par exemple, dans le cas où du bruit est ajouté, la quantité de bruit est choisie de telle sorte que la partie de bruit représente entre 1 % et 30 % de l’amplitude de la valeur de germe, et dans certains cas entre 5 % et 20 % de l’amplitude de la valeur de germe. Une telle technique est par exemple applicable dans tout procédé de génération de données d’apprentissage pour transférer de la connaissance à partir d’un réseau neuronal artificiel entraîné vers un autre réseau neuronal artificiel, et n’est pas limitée à être utilisée pendant le procédé de génération d’anciens souvenirs comme décrit ici. Le générateur de données 704 génère par exemple des valeurs d’entrée (INPUTS) fournies à Net_2, reçoit des valeurs de sortie (OUTPUTS) de Net_2, et génère des pseudo-données (PSEUDO DATA) comprenant des pseudo-échantillons et des pseudo-étiquettes résultantes, comme on va le décrire plus en détail ci-après. Les pseudo-données sont par exemple utilisées au vol pour entraîner Net_1, ou sont mémorisées dans un ou plusieurs fichiers, qui sont par exemple mémorisés par une mémoire, comme un dispositif mémoire non transitoire. Par exemple, les pseudo-données sont mémorisées dans un seul fichier. Dans certains modes de réalisation, les fonctionnalités du générateur de données 704 sont mises en œuvre par un dispositif de traitement (P) 710, qui par exemple exécute des instructions de logiciel mémorisées par une mémoire (M) 712. En variante, le générateur de données 704 pourrait être mis en œuvre par du matériel dédié, comme par un ASIC. La est un organigramme illustrant des étapes dans un procédé de transfert de connaissance selon un exemple de réalisation de la présente description. Ce procédé est par exemple mis en œuvre par le système 700 la . Dans une étape 801, une variable s est initialisée, par exemple à 0, et une première valeur de germe est générée par le générateur de germe 708. Dans une étape 802, la première valeur de germe est par exemple appliquée par le générateur de données 704 en entrée de Net_2. Ainsi, Net_2 propage le germe X0 à travers ses couches et génère, au niveau de sa couche de sortie, des étiquettes Y0 correspondant à la classification du germe, et des caractéristiques X0’ correspondant au germe modifié sur la base de la partie auto-associative entraînée de l’ANN. Dans un but de classification, il est en général souhaité que les pseudo-étiquettes générées d’un ANN soient formatées, par exemple en utilisant un codage du type 1 parmi n, pour indiquer la classe déterminée. Toutefois, en réalité, l’ANN va générer des sorties non normalisées qui représentent la probabilité relative que l’échantillon d’entrée tombe dans chaque classe, en d’autres termes la probabilité relative pour affecter une probabilité de toutes les classes, au lieu d’une classe discrète. Avantageusement, les pseudo-données comprennent des pseudo-étiquettes sous la forme des données de sortie non normalisées, fournissant ainsi de plus grandes informations pour l’apprentissage de Net_2, et en particulier comprenant les informations qui sont fournies pour toutes les classes, et pas seulement la classe qui est sélectionnée. Par exemple, on peut utiliser des procédés de logits ou de distillation pour l’apprentissage d’un modèle utilisant des pseudo-étiquettes, comme cela est connu de la personne du métier. Cela utilise par exemple l’entropie croisée binaire. La distillation est par exemple décrite plus en détail dans la publication de Geoffrey Hinton et al. intitulée “Distilling the Knowledge in a Neural Network” (arXiv.1503.02531v1, 9 March 2015), et dans la demande de brevet américain publiée sous la référence US2015/0356461. Dans le cas d’échantillons synthétiques qui peuvent ne pas appartenir nettement à une classe particulière, on utilise par exemple un procédé de logit/distillation, comme cela est connu de la personne du métier, ce procédé étant par exemple utilisé pour affecter des probabilités de toutes les classes au lieu d’une classe discrète. Les probabilités relatives indiquent comment un modèle tend à se généraliser et aident à transférer la capacité de généralisation d’un modèle entraîné vers un nouveau modèle. Plutôt qu’une distillation, d’autres procédés d’optimisation peuvent en plus ou à la place être utilisés afin d’améliorer l’efficacité de l’apprentissage incrémental, par exemple une tâche de classification, ou d’autres tâches de calcul adressées par des réseaux neuronaux. Dans une étape 803, on détermine si la variable s a atteint une valeur S, qui est par exemple une condition d’arrêt pour le nombre de réinjections en fonction de chaque germe. Dans un exemple, la valeur S est égale à 6, mais plus généralement elle pourrait être comprise entre 2 et 20, et par exemple entre 4 et 10, en fonction de la taille de l’espace d’entrée, et en fonction de la qualité de l’auto-association entraînée. En effet, lorsque l’auto-association est bien entraînée, en d’autres termes de telle sorte qu’il y a une erreur relativement faible entre les entrées dans les reproductions du réseau, on peut par exemple utiliser relativement peu de réinjections, par exemple moins de 10, pour assurer un bon échantillonnage de l’espace d’entrée. Sinon, on peut utiliser un nombre de réinjections relativement élevé, par exemple compris entre 10 et 20, pour trouver les régions d’intérêt. Dans des variantes de réalisation, plutôt que la condition d’arrêt dans l’étape 803 soit un nombre fixe de réinjections, elle pourrait à la place être basée sur la variation entre les reproductions, comme par exemple basée sur une mesure de la distance euclidienne, ou d’un autre type quelconque de distance, entre les deux dernières projections. Par exemple, si la distance euclidienne est descendue en dessous d’un seuil donné, la condition d’arrêt est satisfaite. En effet, plus les reproductions se rapprochent les unes des autres, plus les pseudo-échantillons se rapprochent de la distribution d’échantillons vraie sous-jacente. Initialement la variable s est mise à 0, et ainsi n’est pas égale à S. Par conséquent, l’étape suivante est une étape 804, dans laquelle le pseudo-échantillon à la sortie de Net_2 est réinjecté dans Net_2. Ensuite, dans une étape 805, le pseudo-échantillon réinjecté dans Net_2 dans l’étape 804, et la pseudo-étiquette de sortie correspondante provenant de Net_2, sont par exemple mémorisés pour former des données d’apprentissage, comme on va le décrire maintenant plus en détail en faisant référence à la . La représente un exemple basé sur une fonction de classification. Toutefois les techniques décrites s’appliquent également à tout type de fonction d’apprentissage. La illustre en particulier un espace bidimensionnel donnant un exemple de modèle qui classe des éléments en trois classes C, D et E, où des échantillons d’entrée sont définis comme étant des points représentés par des paires de caractéristiques d’entrée X1 et X2. La illustre aussi un exemple de pseudo-échantillons dans cet espace qui suivent une trajectoire de pseudo-échantillons à partir d’un germe aléatoire jusqu’à un pseudo-échantillon final. À titre d’exemple, , où X1 est une caractéristique de poids, X2 est une caractéristique de hauteur correspondante, et la fonction mappe les échantillons de hauteur et de poids en une classification de chat (C), chien (D) ou éléphant (E). En d’autres termes, l’ANN est entraîné pour définir une frontière non linéaire entre chats, chiens et éléphants sur la base d’une caractéristique de poids et d’une caractéristique de hauteur d’un animal, chaque échantillon décrit par ces caractéristiques tombant dans l’une des trois classes. L’espace défini par la valeur X1 dans l’axe y et X2 dans l’axe x est divisé en trois régions 902, 904 et 906 correspondant respectivement aux classes C, D et E. Dans la région 902, tous les échantillons ont une probabilité supérieure de tomber dans la classe C plutôt que dans l’une ou l’autre des classes D et E, et similairement pour les régions 904 et 906. Une frontière 908 entre les classes C et D, et une frontière 910 entre les classes D et E, représente l’incertitude du modèle, c’est-à-dire que, le long de ces frontières, les échantillons ont une probabilité égale d’appartenir à chacune des deux classes séparées par la frontière. Des contours en représentent les distributions d’échantillons dans la région associée à chaque classe, les zones centrales référencées C, D et E correspondant à la densité d’échantillons la plus élevée. Un contour extérieur dans chaque région 902, 904, 906 indique la limite des échantillons, la région à l’extérieur du contour extérieur dans chaque région 902, 904, 906 correspondant par exemple à des échantillons en dehors du jeu. Un exemple du germe est représenté par une étoile 912 en , et une trajectoire de pseudo-échantillons 914, 916, 918, 920, 922 et 924 générée en commençant à ce germe est aussi représentée. Chacun de ces pseudo-échantillons résulte par exemple d’une réinjection du pseudo-échantillon précédent. Après un certain nombre de réinjections, égal à six réinjections dans l’exemple de la , la réinjection est par exemple stoppée avec un pseudo-échantillon final représenté par une étoile 924 en . Comme cela est représenté par l’étape 805 de la , des valeurs d’entrée et de sortie correspondant à chaque point sur la trajectoire sont par exemple mémorisées pour former les pseudo-données. En variante, on utilise seulement un sous-ensemble des points pour former les pseudo-données. Par exemple, on utilise au moins deux points sur la trajectoire. En faisant de nouveau référence à la , dans une étape 806, la variable s est incrémentée, puis le procédé revient à l’étape 803. Cette boucle est répétée jusqu’à ce que, dans l’étape 803, la variable s soit égale à la limite S. L’étape suivante est une étape 807. Dans l’étape 807, on détermine si un autre critère d’arrêt a été satisfait. Par exemple, cet autre critère d’arrêt pourrait être basé sur le fait qu’un nombre total de pseudo-échantillons a été généré, le procédé se terminant par exemple lorsque le nombre de pseudo-échantillons est considéré comme suffisamment élevé pour permettre l’apprentissage de Net_1. Cela peut dépendre par exemple de la précision du modèle entraîné. Si, dans l’étape 807, le critère d’arrêt n’a pas été satisfait, le procédé revient à l’étape 801, afin qu’un nouveau germe soit généré, et qu’un nouvel ensemble de pseudo-échantillons soit généré pour ce nouveau germe. Lorsque, dans l’étape 807, le critère d’arrêt a été satisfait, dans une étape 808, Net_1 est par exemple entraîné sur la base des données d’apprentissage générées. En effet, les pseudo-données recueillies contiennent une représentation partielle de la fonction interne (fonction de mappage) du modèle, et sont par exemple stockées dans un seul fichier qui caractérise le modèle entraîné. Net_1 est ensuite capable d’apprendre la fonction capturée du modèle en utilisant les données d’apprentissage du pseudo-jeu de données en utilisant des outils d’apprentissage profond connus qui sont bien connus de la personne du métier. En variante, plutôt que de générer un fichier contenant la totalité des données d’apprentissage générées, l’apprentissage de Net_1 pourrait être réalisé au vol pendant la génération des pseudo-données comme on va le décrire plus en détail ci-après en faisant référence à la . On notera que, dans l’exemple de la figure 8, le premier pseudo-échantillon à être mémorisé est par exemple celui résultant de la première réinjection. Ainsi, le germe lui-même n’est pas utilisé comme valeur d’entrée d’un pseudo-échantillon. En effet, un nombre fini d’échantillons aléatoires bruts n’est pas considéré comme caractérisant efficacement la fonction qui doit être transférée. En outre, comme cela a été indiqué précédemment, il est aussi possible de choisir seulement certains des points sur la trajectoire des pseudo-échantillons pour former une partie des données d’apprentissage. Par exemple, dans certains modes de réalisation, on sélectionne des points qui se trouvent près d’une frontière de classe. Par exemple, en faisant référence à la , dans le cas de la trajectoire allant de 912 à 924, au moins les points 918 et 920 sont par exemple choisis pour faire partie des données d’apprentissage, puisque ces points sont particulièrement pertinents pour la définition de la frontière 908. L’étape 805 de la peut par conséquent impliquer de détecter si la pseudo-étiquette générée par l’échantillon réinjecté dans l’étape 804 est différente de la pseudo-étiquette générée par l’échantillon réinjecté précédent immédiatement, et si oui, ces deux pseudo-échantillons consécutifs sont par exemple sélectionnés pour faire partie des données d’apprentissage. La est un graphique illustrant des exemples de distributions aléatoires d’échantillons aléatoires générés par le générateur de germe 708 de la selon un exemple de réalisation de la présente description. Une courbe 1002 représente un exemple dans lequel la distribution est une distribution gaussienne qui a la forme , bien que plus généralement on puisse utiliser toute distribution normale. Une courbe 1004 représente un autre exemple dans lequel la distribution est une distribution uniforme ajustée qui a la forme , bien que plus généralement on puisse utiliser une distribution uniforme ajustée de la forme , pour . Quelle que soit la distribution aléatoire choisie, on utilise par exemple la même distribution pour générer indépendamment tous les germes qui seront utilisés comme point de départ pour les trajectoires de pseudo-échantillons. Par exemple on échantillonne autant de valeurs aléatoires que de neurones dans la couche d’entrée, à partir de la distribution sélectionnée afin de générer chaque vecteur d’entrée. Ce vecteur d’entrée a ainsi la même longueur que la couche d’entrée du modèle, et appartient à l’espace d’entrée des échantillons vrais. Toutefois, comme cela a été décrit précédemment, plutôt que d’utiliser un germe aléatoire, il serait aussi possible de sélectionner un échantillon réel à utiliser comme germe, avec ou sans l’addition de bruit. Pendant la génération de pseudo-échantillons à la phase 302, 304 et/ou 306 de la , plutôt que de réinjecter les valeurs de sortie auto-associatives de l’ANN en tant qu’échantillon d’entrée suivant de l’ANN, il est aussi possible de modifier d’abord les valeurs de sortie, comme on va le décrire maintenant plus en détail en faisant référence à la . La représente schématiquement un circuit de génération d’échantillons 1100 selon un exemple de réalisation de la présente description. Ce circuit 1100 est par exemple partiellement mis en œuvre par le générateur de données 704 de la , et partiellement par l’ANN 600 formant l’ANN Net_2 de la . Le générateur de données 704 fournit des échantillons d’entrée Xm à l’ANN 600. La partie de classification de l’ANN 600 génère ainsi des pseudo-étiquettes correspondantes Ym, et la partie auto-associative génère ainsi des pseudo-échantillons Xm’ correspondants. Les pseudo-échantillons Xm’ sont fournis à un module d’injection de bruit (NOISE INJECTION) 1102, qui par exemple ajoute un certain degré de bruit aléatoire au pseudo-échantillon afin de générer le pseudo-échantillon suivant X(m+1) à fournir à l’ANN 600. Par exemple, dans certains modes de réalisation, le bruit aléatoire est choisi dans une distribution gaussienne, comme dans la distribution gaussienne (0,I), et est par exemple pondéré par un coefficient Z. Par exemple, le coefficient Z est choisi de telle sorte que, après l’injection, la partie de bruit représente entre 1 % et 30 % de l’amplitude du pseudo-échantillon, et dans certains cas entre 5 % et 20 % de l’amplitude du pseudo-échantillon. Par exemple, un multiplexeur 1104 reçoit au niveau de l’une de ses entrées un échantillon aléatoire initial X0, et au niveau de l’autre de ses entrées les pseudo-échantillons X(m+1). Le multiplexeur sélectionne par exemple l’échantillon initial sur une première itération correspondant à l’étape 802 de la , et sélectionne l’échantillon X(m+1) sur des itérations suivantes, correspondant à l’étape 804 de la , jusqu’à ce que le nombre S de réinjections soit atteint. La représente schématiquement un système 1200 pour retenir d’anciens souvenirs dans un ANN selon un exemple de réalisation de la présente description. En particulier, la représente un système pour mettre en œuvre les phases d’apprentissage 302 et 306 de la au vol, dans lequel Net_2 est mis en œuvre par un ANN similaire à l’ANN 600 de la , et Net_1 est aussi mis en œuvre par un ANN similaire à celui de la , mais sans le chemin de réinjection. Dans l’exemple de la , la génération de pseudo-données (MEMORIES) par Net_2, et l’apprentissage de Net_1 sur la base de ces pseudo-données (MEMORIES FROM Net_2) et sur la base des nouveaux stimuli (NEW STIMULI), a lieu par exemple au moins partiellement en parallèle. Pendant la phase 304 de la , le transfert de Net_1 vers Net_2 pourrait par exemple être réalisé en utilisant la même approche que celle représentée en , mais dans laquelle Net_1 et Net_2 sont inversés, et c’est Net_1 qui réalise la réinjection. En variante, il serait aussi possible que ce transfert soit mis en œuvre d’autres façons, par exemple en copiant simplement les paramètres appris et les poids appris de Net_1 vers Net_2 sur des ANN qui ont les mêmes paramètres. Le procédé de la correspond par exemple à une phase d’apprentissage de l’ANN pendant laquelle l’ANN est entraîné, par exemple par un apprentissage supervisé. Après la phase 306 de la , il peut être souhaitable de mettre en œuvre une nouvelle opération d’apprentissage impliquant de nouveaux stimuli. Toutefois, faire cela peut de nouveau risquer de provoquer la perte par Net_1 d’informations apprises précédemment. Par conséquent, le processus des phases 304 et 306 de la consistant à mémoriser l’état de Net_1 dans Net_2, et à réaliser le nouvel apprentissage parallèlement avec l’apprentissage basé sur d’anciens souvenirs, peut être répété lorsque de nouveaux stimuli doivent être soumis à un apprentissage. En outre, après l’apprentissage et pendant la phase d’inférence de l’ANN, il peut être souhaitable de permettre un apprentissage incrémental, de sorte que de nouvelles classes d’échantillons de données peuvent continuer à être apprises et gérées par le système. On va maintenant décrire plus en détail des solutions permettant de nouvelles phases d’apprentissage et/ou un apprentissage incrémental, en faisant référence aux figures 13 à 16. La illustre schématiquement un système 1300 pour retenir d’anciens souvenirs dans un ANN selon encore un autre exemple de réalisation de la présente description. On suppose que Net_1 a un état State(t), qui est par exemple l’état State_2, ou un état ultérieur de l’ANN, et Net_2 est supposé avoir un état State_(t-1), qui est un état précédemment mémorisé de Net_1, qui est par exemple l’état State_1, ou un état postérieur. Le système 1300 comprend aussi un détecteur de nouveauté (NOV. DET.) 1302. De nouvelles données de stimuli (NEW STIMULI) sont par exemple reçues par le détecteur de nouveauté 1302, avant d’être appliquées à Net_1. Le détecteur de nouveauté 1302 est par exemple mis en œuvre par du matériel et/ou par du logiciel exécuté par un système de traitement, comme le système informatique 500 de la . Le détecteur de nouveauté 1302 est par exemple agencé pour détecter le moment où un échantillon de données d’entrée est suffisamment distant d’échantillons de données passés pour qu’on puisse considérer qu’il correspond à une nouvelle classe à apprendre par l’ANN. Des exemples de détecteurs de nouveauté ont été proposés dans l’art antérieur, et sont bien connus de la personne du métier. Par exemple, un détecteur de nouveauté peut être basé sur le calcul d’une distance euclidienne. Des détecteurs de nouveauté sont décrits plus en détail dans la publication de Marco A.F. Pimentel et al. intitulée “A review of novelty detection”, Signal Processing 99 (2014) 215-249. En fonctionnement, lorsque le système 1300 reçoit de nouveaux stimuli, le détecteur de nouveauté 1302 est agencé pour détecter si les stimuli tombent dans les classes qui sont déjà connues du système. Si oui, le nouvel échantillon est par exemple passé à Net_1 afin qu’une étiquette d’entrée soit prédite, comme cela est représenté en par une sortie de prédiction (PREDICTION) de Net_1. En variante, si les nouvelles données de stimuli sont détectées comme étant un nouvel échantillon provenant d’une nouvelle classe pas encore connue du système, le détecteur de nouveauté 1302 alerte par exemple le système, ce qui provoque la mémorisation de l’état State_(t) de Net_1 dans Net_2, puis les nouveaux stimuli sont appris par Net_1 tout en prenant aussi en compte des pseudo-échantillons générés par Net_2. Un tel procédé de détection de nouveauté pourrait aussi être appliqué à des réseaux neuronaux récurrents (RNN) pour traiter des données dynamiques, par exemple des données qui varient dans le temps, comme des données audio ou vidéo. La illustre un système matériel 1400 selon un exemple de réalisation de la présente description. Le système 1400 comprend par exemple un ou plusieurs capteurs (SENSORS) 1402, qui comprennent par exemple un ou plusieurs capteurs d’image, capteurs de profondeur, capteurs thermiques, microphones, ou tout autre type de capteur. Lesdits un ou plusieurs capteurs 1402 fournissent de nouveaux échantillons de données de stimuli à un détecteur de nouveauté (NOV. DET.) 1302, qui est par exemple le même que celui de la . Ce détecteur de nouveauté 1302 fournit par exemple les échantillons de données à un module d’apprentissage incrémental (INC. LEARNING) 1404 ou à un module d’inférence (INFERENCE) 1406. Dans certains modes de réalisation, les modules 1404 et 1406, et aussi dans certains cas le détecteur de nouveauté 1302, sont mis en œuvre par un CPU 1408 sous le contrôle d’instructions mémorisées dans une mémoire d’instructions (non illustrée en ). Plutôt qu’un CPU, le système 1400 pourrait à la place ou en plus comprendre un GPU ou un NPU. Par exemple, dans le cas où le détecteur de nouveauté 1302 détecte que l’échantillon de données provient d’une classe qui est déjà connue du système, il le fournit au module d’inférence 1406, où il est seulement traité par Net_1, par exemple afin de réaliser une classification. Dans ce cas, une sortie de Net_1 correspondant à une étiquette prédite est par exemple fournie à un ou plusieurs actionneurs (ACTUATORS), qui sont par exemple contrôlés sur la base de l’étiquette prédite. Par exemple, les actionneurs pourraient inclure un robot, comme un bras robotisé entraîné pour arracher des mauvaises herbes, ou pour cueillir des fruits mûrs sur un arbre, ou pourrait inclure des systèmes de direction ou de freinage automatiques dans un véhicule, ou des opérations de circuit, comme la sortie ou l’entrée dans un mode de veille. En variante, si le détecteur de nouveauté 1302 détecte que l’échantillon de données ne provient pas ou ne fait pas partie d’une classe connue, l’échantillon est par exemple traité par le module d’apprentissage incrémental 1404, qui par exemple réalise le transfert de connaissance de Net_1 vers Net_2, puis apprend le nouvel échantillon pendant une phase de consolidation comme la phase 306 de la . Dans certains modes de réalisation, l’échantillon peut ensuite être traité par le module d’inférence 1406. L’apprentissage incrémental est un procédé d’apprentissage automatique, connu de la personne du métier, par lequel des données d’entrée sont utilisées en continu pour étendre la connaissance des modèles. Par exemple, un apprentissage incrémental est décrit dans la publication de Rebuffi, Sylvestre-Alvise, et al. intitulée “icarl: Incremental classifier and representation learning.”, Proceedings of the IEEE conference on Computer Vision and Pattern Recognition, 2017, et dans la publication de Parisi, German I., et al. intitulée “Continual lifelong learning with neural networks: A review.”, Neural Networks 113 (2019)54-71. La représente schématiquement un système d’apprentissage artificiel 1500 pour un apprentissage incrémental selon un autre exemple de réalisation de la présente description. Le système 1500 est similaire au système déjà décrit précédemment, et est agencé pour apprendre de nouvelles entrées (INPUT) en utilisant l’ANN Net_1, ces entrées correspondant à une certaine distribution globale. L’ANN Net_1 reçoit aussi des pseudo-échantillons provenant de l’ANN Net_2, et génère des sorties (OUTPUT). Par exemple, comme cela est représenté par une flèche 1502, dans certains cas les pseudo-échantillons sont des échantillons hétéro-associatifs comprenant une pseudo-étiquette générée à la sortie (OUTPUT) de l’ANN Net_2. En plus ou à la place, comme cela est représenté par une flèche 1504, les pseudo-échantillons peuvent-être des échantillons auto-associatifs et dans ce cas Net_1 reçoit par exemple les entrées allant vers Net_2 après réinjection et les sorties correspondantes de Net_2. Un module d’apprentissage incrémental (INCR. LEARNING) 1506 est par exemple agencé pour contrôler l’ANN Net_1 pour apprendre des nouveaux échantillons d’entrée de la distribution globale de manière incrémentale comme cela est connu de la personne du métier. Ainsi, le système de la est un système à double modèle basé sur les deux ANN Net_1 et Net_2. Si l’on détecte qu’un nouvel échantillon d’entrée provient d’une nouvelle distribution à l’extérieur de la distribution globale déjà apprise par le système 1500, le système à double modèle peut être discrétisé, comme on va le décrire maintenant plus en détail en faisant référence à la . La représente schématiquement un système d’apprentissage artificiel 1600 mettant en œuvre une pluralité de modèles d’apprentissage. Le système 1600 est par exemple mis en œuvre sous forme de matériel et/ou de logiciel comme cela a été expliqué en référence à la . Le système 1600 comprend un contrôleur (CONTROLLER) 1602 et une pluralité de systèmes SYSTEM 1 à SYSTEM N, chacun correspondant à un système similaire au système 1500 de la . Le nombre N de systèmes augmente au fur et à mesure que de nouveaux échantillons provenant de nouvelles distributions sont présentés au système 1600, et peut par exemple atteindre toute limite définie par les ressources matérielles disponibles. Le contrôleur 1602 est par exemple agencé pour recevoir les nouveaux échantillons d’entrée (INPUT), et détecter si l’échantillon appartient à une distribution connue, ou à une nouvelle distribution. Par exemple, cela implique de détecter si l’échantillon appartient à une nouvelle classe, ou à une classe existante connue. Des exemples de techniques qu’on peut utiliser pour détecter si un échantillon appartient à une nouvelle distribution ou une nouvelle classe sont décrits plus en détail dans la publication de Mandelbaum, Amit, et Daphna Weinshall intitulée “Distance-based confidence score for neural network classifiers.”, arXiv preprint arXiv:1709.09844 (2017). Si l’échantillon appartient à une distribution qui a déjà été apprise, le contrôleur 1602 est par exemple agencé pour fournir le nouvel échantillon au système correspondant à cette distribution apprise, où elle est apprise par ce système comme décrit précédemment en référence à la . En particulier, le nouvel échantillon est par exemple appris de manière incrémentale sans oublier des échantillons précédents provenant de la même distribution. En variante, si l’échantillon appartient à une nouvelle distribution qui n’a pas été apprise précédemment, un nouveau système à double modèle, en d’autres termes un nouveau système similaire à celui de la , est créé par le contrôleur 1602, et forme un nouveau système de l’ensemble de systèmes SYSTEM 1 à SYSTEM N. Le nouvel échantillon est fourni au nouveau système, et appris de manière traditionnelle. Dans certains modes de réalisation, chaque classification différente peut être traitée comme une distribution différente, de sorte que chacun des systèmes SYSTEM 1 à SYSTEM N ne prend en charge qu’une seule classe. Dans un tel cas, les systèmes peuvent n’avoir aucune fonction de classification, puisqu’il n’y a plus de frontière de classe à apprendre dans chaque système SYSTEM 1 à SYSTEM N. Un avantage des modes de réalisation décrits ici est que l’oubli catastrophique dans un ANN peut être au moins partiellement atténué. En outre, un avantage de la phase d’homogénéisation 302 de la est que les présents inventeurs ont trouvé que cela a pour effet de stabiliser le processus d’apprentissage. Puisque dans cette étape d’homogénéisation il n’y a pas de fonction ou de frontière de classe à apprendre à partir de Net_2, ce résultat peut apparaître contre-intuitif. En effet, Net_2 ne génère pas de résultats interprétables. En outre, les sorties ressemblent à du bruit gaussien et ne contiennent aucune structure compréhensible particulière. Toutefois, une telle caractérisation non structurée contient des informations concernant la structure de l’état vierge State_0 de Net_2, comme on va le décrire maintenant plus en détail. On peut examiner la particularité de cet événement en considérant les changements de paramètres internes entre deux états différents. Nous allons d’abord considérer le cas où Net_1 apprend juste les premiers nouveaux stimuli sans l’état vierge de Net_2. En apprenant les nouveaux stimuli, Net_1 va optimiser tous les paramètres pour concorder avec les données entrantes. Puisque le problème que Net_1 doit résoudre, qui est d’apprendre les frontières de classes pour une ou plusieurs classes, est simple, Net_1 va probablement converger à un niveau proche d’un minimum global. C’est-à-dire que les paramètres vont beaucoup changer entre l’état vierge de Net_1 et le point optimal qui résout le problème. Ensuite, pendant l’étape de consolidation, Net_1 devra apprendre une nouvelle classe parallèlement avec son état précédent provenant de Net_2. L’optimisation afin d’apprendre les données entrantes (souvenirs et nouvelles classes) conduit à des changements relativement grands des paramètres. En d’autres termes, le point de creux, dans lequel se trouvait Net_1, est loin du point de creux qu’il devrait atteindre. En outre, la dérive le long de l’espace de solutions interne est nettement plus compliquée puisque les souvenirs agissent comme un ressort. Lorsque Net_1 est proche d’un minimum global, la seule chose qui retient Net_1 d’atteindre une nouvelle solution optimale ce sont les souvenirs provenant de Net_2. Même si Net_1 peine à satisfaire la solution, tôt ou tard il va trouver une combinaison de paramètres valide. Toutefois, l’effort risque de conduire à une perte de stabilité. D’autre part, lorsque Net_1 apprend les premiers nouveaux stimuli parallèlement avec la caractérisation de l’état vierge provenant de Net_2, le système double devient stable pour un apprentissage incrémental. On considère ici que l’état vierge d’un ANN est l’état le plus stable en raison de sa haute entropie interne. En d’autres termes, les paramètres sont initialisés aléatoirement et indépendamment et ne concorde avec aucune fonction cachée. Net_1, lorsqu’il apprend les pseudo-données à partir de Net_2 et des nouveaux stimuli, trouve ensuite une solution optimale qui est la solution la plus proche de l’état vierge. Ainsi, les paramètres n’évoluent pas trop lors de la construction de la frontière de classe. En fait, en apprenant l’état vierge, Net_1 recherche une combinaison de paramètres qui lui permet de rester dans son état vierge stable tout en satisfaisant les conditions. C’est-à-dire que Net_1 va changer les paramètres de la quantité minimale pour faire concorder la fonction. En même temps, l’apprentissage de la caractérisation de l’état vierge empêche Net_1 de trouver un minimum global à proximité pour les données entrantes. Ce dernier point suggère que l’état vierge agit comme une régularisation qui facilite une généralisation par Net_1 en équilibrant les changements de paramètres. Puisque le nouvel état de Net_1 après l’étape d’homogénéisation est transféré vers Net_2, l’état vierge appris va aussi être transféré. En d’autres termes, l’état vierge va être maintenu et reproduit tout au long de la vie d’apprentissage du système double, et puisque le modèle reproduit et classe des entrées, il est capable de régénérer l’état vierge. Ensuite, pour chaque nouvelle phase d’apprentissage de Net_1, Net_2 non seulement génère les frontières de classe des classes apprises mais aussi la caractérisation de l’état vierge. Divers modes de réalisation et variantes ont été décrits. La personne du métier comprendra que certaines caractéristiques de ces divers modes de réalisation et variantes pourraient être combinées, et d’autres variantes apparaitront à la personne du métier. Par exemple, bien qu’on ait décrit des exemples d’une fonction de classification, il sera clair pour la personne du métier que, dans des variantes de réalisation, les principes décrits ici pourraient être appliqués à d’autres types de fonctions d’apprentissage qui ne sont pas nécessairement des fonctions de classification. Enfin, la mise en œuvre pratique des modes de réalisation et variantes décrits est à la portée de la personne du métier à partir des indications fonctionnelles données ci-dessus. Par exemple, bien qu’on ait décrit des exemples basés sur des architectures ANN de perceptron multicouche, la description du procédé proposé pour résoudre l’oubli catastrophique s’applique plus généralement à tout réseau neuronal à apprentissage profond (DNN) et à des réseaux neuronaux à convolution (CNN). Par exemple, une partie dense d’un DNN ou d’un CNN est constituée d’un MLP comme présenté ci-avant. En outre, les principes décrits ici pourraient aussi être appliqués à d’autres familles de réseaux neuronaux comprenant, mais sans limitation à cela, des réseaux neuronaux récurrents, des réseaux à apprentissage de renforcement, etc. Les modes de réalisation décrits s’appliquent aussi à des architectures neuronales matérielles, comme des modules de traitement neuronaux, des modules de traitement tensoriels, des Memristors, etc. Procédé d’apprentissage d’un réseau neuronal artificiel, le procédé comprenant : - faire initialement un apprentissage d’un premier réseau neuronal artificiel (Net_1) avec des premières données d’entrée (FIRST STIMULI) et des premières pseudo-données, les premières pseudo-données étant ou ayant été générées par un deuxième réseau neuronal artificiel (Net_2) dans un état vierge (State_0), ou par le premier réseau neuronal artificiel (Net_1) pendant un état vierge (State_0) ; - générer des deuxièmes pseudo-données en utilisant le premier réseau neuronal artificiel (Net_1), ou en utilisant le deuxième réseau neuronal artificiel à la suite d’un transfert au moins partiel de connaissance du premier réseau neuronal artificiel vers le deuxième réseau neuronal artificiel ; et - faire un apprentissage du premier réseau neuronal artificiel, ou d’un autre réseau neuronal artificiel, avec les deuxièmes pseudo-données et des deuxièmes données d’entrée (SECOND STIMULI). Procédé selon la revendication 1, comprenant en outre, avant de faire initialement l’apprentissage du premier réseau neuronal artificiel (Net_1) : - générer les premières pseudo-données en utilisant le premier réseau neuronal artificiel pendant l’état vierge (State_0) ; et - mémoriser les premières pseudo-données dans une mémoire. Procédé selon la revendication 2, dans lequel les deuxièmes pseudo-données sont générées par le premier réseau neuronal artificiel (Net_1) et mémorisées dans la mémoire avant de faire l’apprentissage du premier réseau neuronal artificiel avec les deuxièmes pseudo-données et les deuxièmes données d’entrée. Procédé selon la revendication 1, comprenant en outre, avant de générer les deuxièmes pseudo-données, un transfert au moins partiel de la connaissance détenue par le premier réseau neuronal artificiel (Net_1) vers le deuxième réseau neuronal artificiel (Net_2), les deuxièmes pseudo-données étant générées en utilisant le deuxième réseau neuronal artificiel (Net_1), l’apprentissage du premier réseau neuronal artificiel (Net_1) avec les deuxièmes pseudo-données et les deuxièmes données d’entrée (SECOND STIMULI) étant réalisé au moins partiellement en parallèle avec la génération de pseudo-données par le deuxième réseau neuronal artificiel (Net_2). Procédé selon l’une quelconque des revendications 1 à 4, comprenant en outre : - détecter, en utilisant un détecteur de nouveauté (1302), si un ou plusieurs troisièmes échantillons de données d’entrée (NEW STIMULI) correspondent à une classe qui est déjà connue du premier réseau neuronal artificiel (Net_1) ; et - si lesdits un ou plusieurs troisièmes échantillons de données d’entrée ne correspondent pas à une classe qui est déjà connue, générer des troisièmes pseudo-données en utilisant le premier réseau neuronal artificiel, ou en utilisant le deuxième réseau neuronal artificiel (Net_2) à la suite d’un transfert au moins partiel de connaissance de nouveau à partir du premier réseau neuronal artificiel vers le deuxième réseau neuronal artificiel, et faire un apprentissage du premier réseau neuronal artificiel avec les troisièmes pseudo-données et les troisièmes échantillons de données d’entrée (NEW STIMULI). Procédé selon l’une quelconque des revendications 1 à 4, comprenant en outre : - détecter, par un contrôleur (1602), si un ou plusieurs troisièmes échantillons de données d’entrée (NEW STIMULI) correspondent à une nouvelle distribution pas encore apprise par le premier réseau neuronal artificiel (Net_1) ; et - si lesdits un ou plusieurs troisièmes échantillons de données d’entrée correspondent à la nouvelle distribution, créer un nouveau système pour apprendre lesdits un ou plusieurs troisièmes échantillons de données d’entrée, le nouveau système comprenant au moins un autre premier réseau neuronal artificiel. Procédé selon l’une quelconque des revendications 1 à 6, dans lequel la génération des premières pseudo-données comprend : a) injecter un premier échantillon aléatoire (SEED) dans le premier ou le deuxième réseau neuronal artificiel (Net_1, Net_2), le premier ou le deuxième réseau neuronal artificiel étant agencé pour mettre en œuvre au moins une fonction auto-associative pour reproduire des échantillons d’entrée au niveau d’une ou plusieurs de ses sorties, au moins certains des échantillons d’entrée reproduits présents au niveau des sorties formant les premières pseudo-données. Procédé selon l’une quelconque des revendications 1 à 7, dans lequel la génération des deuxièmes pseudo-données comprend : a) injecter un deuxième échantillon (SEED) dans le premier ou le deuxième réseau neuronal artificiel (Net_1, Net_2), le premier ou le deuxième réseau neuronal artificiel étant agencé pour mettre en œuvre au moins une fonction auto-associative pour reproduire des échantillons d’entrée au niveau d’une ou plusieurs de ses sorties, au moins certains des échantillons d’entrée reproduits présents au niveau des sorties formant les deuxièmes pseudo-données, le premier échantillon étant un échantillon aléatoire ou un échantillon réel. Procédé selon la revendication 7 ou 8, dans lequel la génération des premières et/ou des deuxièmes pseudo-données comprend en outre : b) réinjecter un pseudo-échantillon (Xm), généré sur la base de l’échantillon reproduit présent au niveau desdites une ou plusieurs sorties du premier ou du deuxième réseau neuronal artificiel (Net_1, Net_2), dans le premier ou le deuxième réseau neuronal artificiel afin de générer un nouvel échantillon reproduit (Xm’) au niveau desdites une ou plusieurs sorties ; et c) répéter b) une ou plusieurs fois pour générer une pluralité de pseudo-échantillons réinjectés (Xm, X(m+1),…) ; dans lequel les premières et/ou deuxièmes pseudo-données comprennent au moins deux des pseudo-échantillons réinjectés (Xm, X(m+1),…) issus du même premier ou deuxième échantillon (SEED) et correspondant à des valeurs de sortie (Ym, Y(m+1),…, Xm’, X(m+1)’,…) générées par le premier ou le deuxième réseau neuronal artificiel. Procédé selon la revendication 9, dans lequel le premier et/ou le deuxième réseau neuronal artificiel (Net_1, Net_2) met en œuvre une fonction d’apprentissage, qui est par exemple une fonction de classification, et dans lequel les valeurs de sortie correspondantes des premières pseudo-données comprennent des pseudos étiquettes (Ym, Y(m+1),...) générées par la fonction d’apprentissage sur la base des pseudo-échantillons réinjectés. Système comprenant : un premier réseau neuronal artificiel (Net_1) ; soit un deuxième réseau neuronal artificiel (Net_2) dans un état vierge (State_0) et agencé pour générer des premières pseudo-données, soit une mémoire mémorisant les premières pseudo-données générées par le premier réseau neuronal artificiel (Net_1) pendant un état vierge (State_0) ; et un ou plusieurs circuits ou processeurs (402, 704) agencés pour générer d’anciens souvenirs pour les utiliser dans l’apprentissage du premier réseau neuronal artificiel : - en faisant initialement un apprentissage du premier réseau neuronal artificiel (Net_1) avec des premières données d’entrée (FIRST STIMULI) et avec les premières pseudo-données ; - en générant des deuxièmes pseudo-données en utilisant le premier réseau neuronal artificiel (Net_1), ou en utilisant le deuxième réseau neuronal artificiel à la suite d’un transfert au moins partiel de connaissance à partir du premier réseau neuronal artificiel vers le deuxième réseau neuronal artificiel ; et - en faisant un apprentissage du premier réseau neuronal artificiel, ou d’un autre réseau neuronal artificiel, avec les deuxièmes pseudo-données et des deuxièmes données d’entrée (SECOND STIMULI). Système selon la revendication 11, comprenant en outre un détecteur de nouveauté (1302) agencé pour : - détecter si un ou plusieurs troisièmes échantillons de données d’entrée (NEW STIMULI) correspondent à une classe qui est déjà connue du premier réseau neuronal artificiel (Net_1) ; dans lequel, si un ou plusieurs troisièmes échantillons de données d’entrée ne correspondent pas à une classe qui est déjà connue, lesdits un ou plusieurs circuits ou processeurs (402, 704) sont en outre agencés pour : - générer des troisièmes pseudo-données en utilisant le premier réseau neuronal artificiel, ou en utilisant le deuxième réseau neuronal artificiel à la suite d’un transfert au moins partiel de connaissance de nouveau à partir du premier réseau neuronal artificiel vers le deuxième réseau neuronal artificiel ; et - faire un apprentissage du premier réseau neuronal artificiel avec les troisièmes pseudo-données et les troisièmes échantillons de données d’entrée (NEW STIMULI). Système selon la revendication 11, comprenant en outre un contrôleur (1602) agencé pour : - détecter si un ou plusieurs troisièmes échantillons de données d’entrée (NEW STIMULI) correspondent à une nouvelle distribution qui n’est pas déjà apprise par le premier réseau neuronal artificiel (Net_1) ; et - si lesdits un ou plusieurs troisièmes échantillons de données d’entrée correspondent à la nouvelle distribution, créer un nouveau système pour apprendre lesdits un ou plusieurs troisièmes échantillons de données d’entrée, le nouveau système comprenant au moins un autre premier réseau neuronal artificiel. Système selon l’une quelconque des revendications 11 à 13, dans lequel lesdits un ou plusieurs circuits ou processeurs (402, 704) sont agencés pour générer les premières pseudo-données : a) en injectant un premier échantillon aléatoire (SEED) dans le premier ou le deuxième réseau neuronal artificiel (Net_2), le premier ou le deuxième réseau neuronal artificiel étant agencé pour mettre en œuvre au moins une fonction auto-associative pour reproduire des échantillons d’entrée au niveau d’une ou plusieurs de ses sorties, les échantillons d’entrée reproduits présents au niveau des sorties formant les premières pseudo-données. Système selon l’une quelconque des revendications 11 à 14, dans lequel lesdits un ou plusieurs circuits ou processeurs (402, 704) sont agencés pour générer les deuxièmes pseudo-données : a) en injectant un deuxième échantillon (SEED) dans le premier ou le deuxième réseau neuronal artificiel (Net_1, Net_2), le premier ou le deuxième réseau neuronal artificiel étant agencé pour mettre en œuvre au moins une fonction auto-associative pour reproduire des échantillons d’entrée au niveau d’une ou plusieurs de ses sorties, au moins certains des échantillons d’entrée reproduits présents au niveau des sorties formant les deuxièmes pseudo-données, le premier échantillon étant un échantillon aléatoire ou un échantillon réel.