Brevet FR3131413A1 — publié le 20230630

Réseau de neurones avec génération à la volée des paramètres du réseau La présente description concerne un circuit comprenant : - un générateur de nombres (205) configuré pour générer une séquence de vecteurs (207, 219) de taille ; - une mémoire (211) configurée pour stocker un ensemble de premiers paramètres ( ) d’un réseau de neurones auxiliaire (204) ; - un dispositif de traitement configuré pour générer un ensemble de deuxièmes paramètres d’une couche (201) d’un réseau de neurones principal en appliquant plusieurs fois une première opération ( ), par le réseau de neurones auxiliaire, réalisant une opération de génération à partir de chaque vecteur généré par le générateur de nombres, chaque génération délivrant un vecteur de deuxième paramètres, l’ensemble des vecteurs de deuxièmes paramètres constituant ledit ensemble de deuxièmes paramètres ; et dans lequel le nombre de deuxièmes paramètres est supérieur au nombre de premiers paramètres. Figure pour l'abrégé : Fig. 2 Réseau de neurones avec génération à la volée des paramètres du réseau La présente description concerne de façon générale les réseaux de neurones artificiels et plus particulièrement la génération de paramètres d’un réseau de neurones profond par un circuit dédié à cette tâche. Les réseaux de neurones artificiels (ANNs) sont des architectures informatiques développées pour imiter, dans une certaine mesure, le fonctionnement du cerveau humain. Parmi les réseaux de neurones artificiels, les réseaux de neurones profonds (DNNs) sont formés d’une pluralité de couches dites cachées comprenant une pluralité de neurones artificiels. Chaque neurone artificiel d’une couche cachée est connecté aux neurones de la couche cachée précédente ou d’un sous-ensemble des couches précédentes par le biais de synapses généralement représentées par une matrice dont les coefficients représentent des poids synaptiques. Chaque neurone d’une couche cachée reçoit, en données d’entrées, des données de sortie générées par des neurones artificiels de la ou des couches précédentes et génère à son tour une donnée de sortie dépendant, entre autres, des poids connectant le neurone aux neurones de la ou des couches précédentes. Les réseaux de neurones profonds sont des outils puissants et efficaces, en particulier lorsque leur nombre de couches cachées et de neurones artificiels est élevé. Cependant, l’utilisation de tels réseaux est limitée par la taille des mémoires et la puissance des dispositifs électroniques sur lesquels les réseaux sont implémentés. En effet, le dispositif électronique mettant en œuvre un tel réseau doit être capable de contenir les poids et paramètres, ainsi qu’avoir une puissance de calcul suffisante, selon le fonctionnement du réseau. Il existe un besoin de réduire les besoins en ressources (mémoire, puissance, etc.) d’un réseau de neurones profond implémenté dans un dispositif électronique. Un mode de réalisation pallie tout ou partie des inconvénients des mise en œuvre matérielle des réseaux de neurones profonds connus. Un mode de réalisation prévoit un circuit comprenant : - un générateur de nombres configuré pour générer une séquence de vecteurs de taille ; - une mémoire configurée pour stocker un ensemble de premiers paramètres d’un réseau de neurones auxiliaire ; - un dispositif de traitement configuré pour générer un ensemble de deuxièmes paramètres d’une couche d’un réseau de neurones principal en appliquant plusieurs fois une première opération, par le réseau de neurones auxiliaire, réalisant une opération de génération à partir de chaque vecteur généré par le générateur de nombres, chaque génération délivrant un vecteur de deuxième paramètres, l’ensemble des vecteurs de deuxièmes paramètres constituant ledit ensemble de deuxièmes paramètres ; et dans lequel le nombre de deuxièmes paramètres est supérieur au nombre de premiers paramètres. Selon un mode de réalisation, la première opération est non-linéaire. Selon un mode de réalisation, le générateur de nombres est configuré pour stocker le premier vecteur dans une mémoire type registre et pour générer un deuxième vecteur, dans lequel le deuxième vecteur est stocké dans la mémoire entrainant la suppression du premier vecteur. Selon un mode de réalisation, le dispositif de traitement est en outre configuré pour réaliser une opération d’inférence à travers ladite couche du réseau de neurone principal en appliquant au moins une deuxième fonction à partir des deuxièmes paramètres et d’un vecteur d’entrée de ladite couche, l’opération d’inférence à travers la couche de neurones délivrant un vecteur de sortie, et dans lequel la taille du vecteur de sortie est supérieure à la taille d’un vecteur généré par le générateur de nombres aléatoires. Selon un mode de réalisation, la couche du réseau de neurones principal génère, coordonnée par coordonnée, un vecteur de sortie en appliquant au moins une deuxième fonction aux deuxièmes paramètres et au vecteur d’entrée. Selon un mode de réalisation, le vecteur d’entrée est une image. Selon un mode de réalisation, la couche du réseau de neurones principal est une couche dense. Selon un mode de réalisation, la couche du réseau de neurones principal est une couche de convolution. Selon un mode de réalisation, le générateur de nombres est une automate cellulaire. Selon un mode de réalisation, le générateur de nombre est un générateur de nombres pseudo-aléatoires. Selon un mode de réalisation, le générateur de nombre est un registre à décalage à rétroaction linéaire. Un mode de réalisation prévoit un compilateur mis en œuvre par ordinateur par un outil de conception de circuit comme ci-dessus, le compilateur recevant une description topologique d’un circuit, la description topologique précisant la première et deuxième fonction ainsi que la configuration du générateur de nombres, le compilateur étant configuré pour déterminer si la première opération est linéaire ou non-linéaire, et si la première opération est non-linéaire, le compilateur étant configuré pour générer un fichier de conception d’un circuit comme ci-dessus. Selon un mode de réalisation, le compilateur est configuré pour effectuer, dans le cas où la première opérations est linéaire, la conception d’un circuit de sorte que le circuit mette en œuvre une décomposition d’opérations en appliquant séquentiellement une troisième opération et une quatrième opération équivalente à la combinaison de la première opération et la deuxième opérations, la troisième opération prenant comme variables d’entrée le vecteur d’entrée et les premiers paramètres et la quatrième opération prenant en entrée la séquence de vecteurs générés par le générateur de nombres et la sortie de la troisième opération et délivrant ledit vecteur de sortie. Un mode de réalisation prévoit un procédé de conception par ordinateur d’un circuit ci-dessus, comprenant, préalablement à la mise en œuvre d’un compilateur comme ci-dessus, la mise en œuvre d’un procédé de recherche de topologie optimale de réseaux de neurones principal et/ou génératif, et délivrant lesdites données de description topologique audit compilateur. 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 illustre un exemple d’une couche d’un réseau de neurones profond ; la illustre un exemple d’implémentation d’une couche dense d’un réseau de neurones profond selon un mode de réalisation de la présente description ; la illustre un autre exemple d’implémentation d’une couche dense d’un réseau de neurones profond selon un mode de réalisation de la présente description ; la illustre un exemple de modèle d’un réseau de neurones profond comportant des couches denses comme illustrées en ou 3 ; la illustre un exemple d’implémentation d’une couche de convolution d’un réseau de neurones profond selon un mode de réalisation de la présente description ; la illustre un autre exemple d’implémentation d’une couche de convolution d’un réseau de neurones profond selon un mode de réalisation de la présente description ; la est un exemple de modèle d’un réseau de neurones profond comportant des couches de convolution comme illustrées en ou 6 ; la est un schéma par bloc illustrant une implémentation d’un compilateur configuré pour générer une conception de circuit ; la est un schéma par bloc illustrant une implémentation d’un outil de recherche automatique d'architecture neuronale selon un mode de réalisation de la présente description ; et la illustre un système matériel selon un exemple de mode de réalisation de la présente description. Circuit comprenant : - un générateur de nombres (205) configuré pour générer une séquence de vecteurs ( , , 207, 219,507, 513) de taille ; - une mémoire (211) configurée pour stocker un ensemble de premiers paramètres ( ) d’un réseau de neurones auxiliaire (204,505) ; - un dispositif de traitement configuré pour générer un ensemble de deuxièmes paramètres ( ) d’une couche (201, 501) d’un réseau de neurones principal en appliquant plusieurs fois une première opération ( , F, D), par le réseau de neurones auxiliaire, réalisant une opération de génération à partir de chaque vecteur généré ( ) par le générateur de nombres, chaque génération délivrant un vecteur de deuxième paramètres ( ), l’ensemble des vecteurs de deuxièmes paramètres constituant ledit ensemble de deuxièmes paramètres ; et dans lequel le nombre de deuxièmes paramètres est supérieur au nombre de premiers paramètres. Circuit selon la revendication 1, dans lequel la première opération est non-linéaire. Circuit selon la revendication 1 ou 2, dans lequel le générateur de nombres (205) est configuré pour stocker le premier vecteur ( ) dans une mémoire type registre (209) et pour générer un deuxième vecteur ( ), dans lequel le deuxième vecteur est stocké dans la mémoire entrainant la suppression du premier vecteur. Circuit selon la revendication 3, dans lequel le dispositif de traitement est en outre configuré pour réaliser une opération d’inférence à travers ladite couche du réseau de neurone principal en appliquant au moins une deuxième fonction ( ) à partir des deuxièmes paramètres ( ) et d’un vecteur d’entrée ( ) de ladite couche, l’opération d’inférence à travers la couche de neurones délivrant un vecteur de sortie ( , Y ), et dans lequel la taille du vecteur de sortie est supérieure à la taille d’un vecteur généré par le générateur de nombres aléatoires. Circuit selon la revendication 4, dans lequel la couche (201, 501) du réseau de neurones principal génère, coordonnée par coordonnée, un vecteur de sortie ( , Y ) en appliquant au moins une deuxième fonction ( ) aux deuxièmes paramètres ( ) et au vecteur d’entrée ( ). Circuit selon la revendication 5, dans lequel le vecteur d’entrée (x) est une image. Circuit selon l’une quelconque des revendications 1 à 6, dans lequel la couche (201) du réseau de neurones principal est une couche dense. Circuit selon l’une quelconque des revendications 1 à 6, dans lequel la couche (501) du réseau de neurones principal est une couche de convolution. Circuit selon l’une quelconque des revendications 1 à 8, dans lequel le générateur de nombres (205) est une automate cellulaire. Circuit selon l’une quelconque des revendications 1 à 8, dans lequel le générateur de nombre (205) est un générateur de nombres pseudo-aléatoires. Circuit selon l’une quelconque des revendications 1 à 8, dans lequel le générateur de nombre (205) est un registre à décalage à rétroaction linéaire. Compilateur (800) mis en œuvre par ordinateur par un outil de conception de circuit, le compilateur recevant une description topologique d’un circuit tel que revendiqué en revendication 4, la description topologique précisant la première ( ) et deuxième ( ) fonction ainsi que la configuration du générateur de nombres (ANG), le compilateur étant configuré pour déterminer si la première opération ( ) est linéaire ou non-linéaire, et si la première opération est non-linéaire, le compilateur étant configuré pour générer un fichier de conception d’un circuit selon l’une quelconque des revendications 1 à 11. Compilateur selon la revendication 12, configuré pour effectuer, dans le cas où la première opérations est linéaire, la conception d’un circuit de sorte que le circuit mette en œuvre une décomposition d’opérations en appliquant séquentiellement une troisième opération ( ) et une quatrième opération ( ) équivalente à la combinaison de la première opération et la deuxième opérations , la troisième opération prenant comme variables d’entrée le vecteur d’entrée ( ) et les premiers paramètres ( ) et la quatrième opération prenant en entrée la séquence de vecteurs ( ) générés par le générateur de nombres (205) et la sortie de la troisième opération ( ) et délivrant ledit vecteur de sortie ( ). Procédé de conception par ordinateur d’un circuit selon l’une quelconque des revendications 1 à 11, comprenant, préalablement à la mise en œuvre d’un compilateur selon la revendication 12, la mise en œuvre d’un procédé de recherche de topologie optimale de réseaux de neurones principal et/ou génératif, et délivrant lesdites données de description topologique audit compilateur.