Brevet FR3079329A1 — publié le 20190927

Procédés d'apprentissage de paramètres d'un réseau de neurones à convolution, et de classification d'une donnée d'entrée DOMAINE TECHNIQUE GENERAL La présente invention concerne le domaine de l'apprentissage supervisé, et en particulier des procédés d'apprentissage de paramètres d'un réseau de neurones à convolution, ou de classification d'une donnée d'entrée au moyen d'un réseau de neurones à convolution. ETAT DE L'ART Les réseaux de neurones sont massivement utilisés pour la classification de 15 données. Après une phase d'apprentissage automatique (généralement supervisé, c'est-à-dire sur une base de données de référence déjà classifiées), un réseau de neurones « apprend » et devient tout seul capable d'appliquer la même classification à des données inconnues. 20 Les réseaux de neurones à convolution, ou CNN (Convolutional Neural Networks) sont un type de réseau de neurones dans lequel le motif de connexion entre les neurones est inspiré par le cortex visuel des animaux. Ils sont ainsi particulièrement adaptés à un type particulier de classification qui est l'analyse d'image, ils permettent en effet avec efficacité la reconnaissance d'objets ou de 25 personnes dans des images ou des vidéos, en particulier dans des applications de sécurité (surveillance automatique, détection de menace, etc.). On connait tout particulièrement une utilisation des CNN dans le domaine policier et antiterroriste. Plus précisément, des forces de polices disposent de bases de données de photographies par exemple de visages d'individus impliqués 30 dans des affaires. Il est alors possible d'entraîner des CNN à reconnaitre des visages dans des données de vidéo-surveillance, en particulier pour détecter des individus recherchés. Similairement on peut imaginer que des gouvernements disposent de bases de données biométriques par exemple de empreintes digitales 2 de passeports. Il est alors possible d'entraîner des CNN à reconnaitre les empreintes d'individus en particulier. Aujourd'hui, une problématique qui se pose est que ces bases de données sont confidentielles, et restreintes (en particulier nationales). Or il serait 5 souhaitable par exemple que les forces de police de plusieurs états coopèrent et améliorent l'efficacité globale de la reconnaissance, sans pour autant que l'on puisse remonter aux données confidentielles. Cependant cela impliquerait dans tous les cas qu'une entité (par exemple les forces de police d'un état) fassent apprendre leurs CNN sur les bases de 10 données d'une autre entité (les forces de police d'un autre état), i.e. se transmettent en clair les bases de données de photographies ou d'autres traits biométriques, ce qui n'est pas envisageable aujourd'hui. Le problème d'apprentissage sur divers sets de données confidentielles a déjà été évoqué dans le document Nicolas Papemot, Martin Abadi, Ùlfar 15 Erlingsson, lan Goodfellow, Kunal Talwar: Semi-supervised Knowledge Trans fer for Deep Leaming from Private Training Data. ICLR 2017. Il est proposé de faire apprendre des « professeurs » sur chacun des sets de données confidentiels, de sorte à pouvoir entrainer conjointement un « étudiant » qui in fine disposera de la connaissance des divers sets de données 20 confidentielles. Plus précisément, les professeurs vont générer une base de données d'apprentissage pour l'étudiant en classifiant des données publiques brutes grâce à un système de « vote » des professeurs, le cas échéant bruité pour éviter de pouvoir remonter aux sets individuels de données confidentielles ayant servi à 25 l'apprentissage des professeurs. Cette technique apporte satisfaction, mais reste limitée à une classification binaire ou du moins limitée à quelques possibilités déterminées (le document mentionne un exemple médical dans lequel on prédit si des patients ont le diabète ou pas), qui seront les mêmes quel que soit le set de données confidentielles 30 d'entrée. Ainsi, elle ne marche pas dans le cas de l'identification/authentification d'individus, à cause de la non-existence d'un espace commun de représentation. Plus précisément, les différentes bases de données confidentielles portent sur des 3 personnes différentes : chaque professeur pourrait être entraîné, mais il serait impossible de les agréger puisque les individus d'autres bases de données leur sont mutuellement inconnus. Une première idée serait de réduire le problème 5 d'identification/authentification à la comparaison de paires ou de triplets. Par exemple, au lieu de demander au CNN s'il reconnait un visage donné dans une image de vidéo-surveillance, on lui demanderait s'il voit une concordance entre ce visage et une photographie par exemple d'identité d'un individu. Le CNN répond alors juste de façon binaire, et il est donc possible d'agréger un professeur sur 10 cette base (puisque tous les professeurs sauront proposer une réponse à cette question). On comprend d'une part qu'une telle situation devient rapidement ingérable si l'ensemble des bases de données regroupe des milliers de personnes (il faudrait faire toutes les comparaisons une à une). De plus on perd beaucoup en convergence par rapport à l'utilisation de fonctions de pertes (couches dites LOSS). Il serait par conséquent souhaitable de disposer d'une nouvelle solution universelle d'apprentissage sur base de données confidentielles des paramètres 20 d'un CNN pour classification de données au moyen du CNN. PRESENTATION DE L'INVENTION Selon un premier aspect, la présente invention concerne un procédé 25 d'apprentissage de paramètres d'un réseau de neurones à convolution, CNN, pour classification de données, le procédé comprenant la mise en oeuvre par des moyens de traitement de données d'au moins un serveur, d'étapes de : (ai) Apprentissage, à partir d'une base de données confidentielles d'apprentissage déjà classifiées, des paramètres d'un premier CNN ; 30 (a2) Apprentissage, à partir d'une base de données publiques d'apprentissage déjà classifiées, des paramètres d'une couche entièrement connectée finale d'un deuxième CNN correspondant au 4 premier CNN auquel on a rajouté ladite couche entièrement connectée. Selon d'autres caractéristiques avantageuses et non limitatives : 5 - lesdites données sont des données biométriques, en particulier des images de visages ; - l'étape (ai) est mise en oeuvre pour une pluralité de bases de données confidentielles d'apprentissage déjà classifiées de sorte à apprendre les paramètres d'une pluralité de premiers CNN, l'étape (a2) étant mise en oeuvre 10 pour chacun des premiers CNN en utilisant la même base de données publiques d'apprentissage déjà classifiées de sorte à apprendre les paramètres d'une pluralité de deuxièmes CNN ; - le procédé comprend une étape (a3) de classification de données d'une deuxième base de données publiques encore non classifiées, au moyen du ou 15 des deuxièmes CNN de substitution ; - l'étape (a3) comprend pour chaque donnée de ladite deuxième base de données publique, la classification de cette donnée indépendamment par chacun des deuxième CNN, et l'agrégation des résultats de classification ; - l'étape (a3) comprend l'introduction de bruit sur les résultats de classification avant agrégation ; - le procédé comprend une étape (a4) d'apprentissage, à partir de la deuxième base de données publiques d'apprentissage à présent classifiées, des paramètres d'un troisième CNN comprenant une couche entière connectée finale ; - le troisième CNN présente la même architecture que les deuxièmes CNN; - l'étape (a4) comprend la suppression de ladite couche entièrement connectée finale du troisième CNN. Selon un deuxième aspect, la présente invention concerne un procédé de classification d'une donnée d'entrée, caractérisé en ce qu'il comprend la mise en oeuvre d'étapes de : (a) Apprentissage d'un troisième CNN conformément au procédé selon le premier aspect de l'invention ; 5 (b) Classification par les moyens de traitement de données du terminal de ladite donnée d'entrée chiffrée, au moyen du troisième CNN. Selon un troisième et un quatrième aspect, l'invention propose un produit 5 programme d'ordinateur comprenant des instructions de code pour l'exécution d'un procédé selon le premier ou le deuxième aspect d'apprentissage de paramètres d'un réseau de neurones à convolution, CNN, ou de classification d'une donnée d'entrée ; et un moyen de stockage lisible par un équipement informatique sur lequel un produit programme d'ordinateur comprend des 10 instructions de code pour l'exécution d'un procédé selon le premier ou le deuxième aspect d'apprentissage de paramètres d'un réseau de neurones à convolution, CNN, ou de classification d'une donnée d'entrée. PRESENTATION DES FIGURES 15 D'autres caractéristiques et avantages de la présente invention apparaîtront à la lecture de la description qui va suivre d'un mode de réalisation préférentiel. Cette description sera donnée en référence aux dessins annexés dans lesquels : - la figure 1 est un schéma d'une architecture pour la mise en oeuvre des 20 procédés selon l'invention - la figure 2 représente schématiquement les étapes du procédé d'apprentissage selon l'invention DESCRIPTION DETAILLEE 25 Architecture Selon deux aspects complémentaires de l'invention, sont proposés : - un procédé d'apprentissage de paramètres d'un réseau de neurones 30 à convolution (CNN) pour classification de données ; et - un procédé de classification d'une donnée d'entrée utilisant un CNN appris grâce au premier procédé. 6 Ces deux types de procédés sont mis en oeuvre au sein d'une architecture telle que représentée par la figure 1, grâce à un ou plusieurs serveurs 1 a, 1, lc et un terminal 2. Le ou les serveurs 1 a, 1 b, 1 c sont l'équipement d'apprentissage (mettant en oeuvre du premier procédé) et le terminal 2 est un équipement de 5 classification (mettant en oeuvre le deuxième procédé), par exemple un équipement de traitement de données de vidéo-surveillance Dans tous les cas, chaque équipement 1 a, 1 b, 1 c, 2 est typiquement un équipement informatique distant relié à un réseau étendu 10 tel que le réseau 10 internet pour l'échange des données. Chacun comprend des moyens de traitement de données 11 a, 11 b, 11c, 21 de type processeur, et des moyens de stockage de données 12a, 12b, 12c, 22 telle qu'une mémoire informatique, par exemple un disque. Au moins un des serveurs 1 a, 1 b, 1 c stocke une base de données 15 confidentielles d'apprentissage, i.e. un ensemble de données déjà classifiées (par opposition aux données dites d'entrée que l'on cherche justement à classifier). De façon préférée, on a au moins deux bases de données confidentielles d'apprentissage déjà classifiées, stockées sur deux serveurs distincts (1 a et lb dans la figure 1), sans interactions : le serveur la n'a pas accès à la base du 20 serveur lb et vice-versa. Il s'agit par exemple de bases de données de forces de police nationales de deux états. En effet, les données d'entrée ou d'apprentissage sont avantageusement représentatives d'images (ladite classification étant une reconnaissance d'objet, 25 de visage, etc.) ou de toute autre données biométriques (reconnaissance d'empreintes digitales, de données d'iris, etc.), on comprendra que le visage est un exemple de donnée biométrique. De façon générale, les données biométriques sont des données « non quantifiables » (dans le sens où un visage ou une empreinte n'a pas de valeur 30 numérique), pour lesquelles il n'existe pas d'espace commun de représentation. Le serveur lc est un serveur optionnel qui ne dispose quant à lui pas de base de données d'apprentissage (ou du moins pas de base de données confidentielle, mais on verra qu'il peut disposer d'au moins une première base de 7 données publiques d'apprentissage). Le rôle de ce serveur lc peut tout à fait être accompli par l'un ou l'autre des serveurs I a, 1 b, mais de façon préférée c'est un serveur distinct (i.e. cloisonné) pour éviter tout risque de divulgation des bases de données confidentielles des serveurs I a, I b. 5 CNN Un CNN contient généralement quatre types de couches traitant successivement l'information : 10 - la couche de convolution qui traite des blocs de l'entrée les uns après les autres ; - la couche non linéaire qui permet d'ajouter de la non linéarité au réseau et donc d'avoir des fonctions de décision beaucoup plus complexes ; 15 - la couche de mise en commun (appelée « pooling ») qui permet de regrouper plusieurs neurones en un seul neurone ; - la couche entièrement connectée qui relie tous les neurones d'une couche à tous les neurones de la couche précédente. La fonction d'activation de couche non linéaire NL est typiquement la 20 fonction ReLU (Rectified Linear Unit, i.e. Unité de Rectification Linéaire) qui est égale à f(x) = max(0, x) et la couche de pooling (noté POOL) la plus utilisée est la fonction MaxPool2x2 qui correspond à un maximum entre quatre valeurs d'un carré (on met en commun quatre valeurs en une seule). La couche de convolution, notée CONV, et la couche entièrement 25 connectée, notée FC, correspondent généralement à un produit scalaire entre les neurones de la couche précédente et les poids du CNN. Les architectures typiques de CNN empilent quelques paires de couches CONV NL puis ajoutent une couche POOL et répètent ce schéma [(CONV NL) P -> POOL] jusqu'à obtenir un vecteur de sortie de taille suffisamment petite, 30 puis terminent par deux couches entièrement connectées FC. Voici une architecture CNN typique (dont un exemple est représenté par la figure 2a) . INPUT -> [[CONV NL] POOLF FC FC 8 Procédé d'apprentissage Selon un premier aspect, est proposé en référence à la figure 2 le procédé 5 d'apprentissage, mis en oeuvre par les moyens de traitement de données 11 a, llb d'au moins un serveur 1 a, 1 b, lc. De façon préférée, le procédé d'apprentissage commence par une partie « individuelle » correspondant au moins à une étape (ai) et le cas échéant une étape (a2), qui peut être fait indépendamment par chaque serveur 1 a, lb sur sa 10 base de données confidentielle. Dans l'étape (ai), à partir de ladite base de données confidentielles d'apprentissage déjà classifiées, le serveur 1a, 1 b apprend de façon connue les paramètres d'un premier CNN. S'il y a plusieurs serveurs 1 a, lb disposant de bases indépendantes de données confidentielles d'apprentissage déjà classifiées, 15 comme expliqué l'étape (ai) peut être mise en oeuvre pour chacun de sorte à apprendre les paramètres d'une pluralité de premiers CNN, i.e. un pour chaque base de données confidentielles. Tous les premiers CNN ont avantageusement la même architecture, et il s'agit préférentiellement de CNN d'extraction de « features » (i.e. caractéristiques, 20 c'est-à-dire des traits différentiant) en particulier biométriques, et non forcément de CNN de classification. Plus précisément, les premiers CNN ne sont pas forcément capables de renvoyer un résultat de classification d'une donnée de la base de données confidentielle sur laquelle il a appris, mais au moins de produire une représentation des « features » de cette donnée dans un espace de 25 représentation. On comprend qu'à l'issue de l'étape (ai), chaque premier CNN a un espace de représentation qui lui est propre. Dans une étape (a2), on va astucieusement transformer des premiers CNN en deuxièmes CNN qui eux possèdent un espace de représentation commun. 30 Pour arriver à cela, à partir d'une base cette fois publique de données d'apprentissage déjà classifiées (qu'on appellera première base de données publiques pour la distinguer d'une base de données publiques d'apprentissage cette fois encore non classifiées dont on parlera plus tard), le serveur 1 a, 1 b, 1 c 9 apprend des paramètres d'une couche entièrement connectée (FC) finale d'un deuxième CNN correspondant au premier CNN auquel on a rajouté ladite couche FC. Le cas échéant, l'étape (a2) est mise en oeuvre pour chacun des premiers 5 CNN en utilisant la même première base de données publiques d'apprentissage déjà classifiées de sorte à apprendre les paramètres d'une pluralité de deuxièmes CNN, i.e. on obtient un deuxième CNN par base de données confidentielles, tous les deuxièmes CNN ayant avantageusement à nouveau la même architecture. On comprend que les deuxièmes CNN correspondent aux premiers CNN 10 complétés chacun d'une couche FC. Plus précisément, on donne aux premiers CNN une capacité de classification commune (dans ladite première base de données publiques) à partir de leur capacité d'extraction de features. On obtient ainsi un espace commun de représentation des classifications. L'étape (a2) doit être comprise comme une étape d'apprentissage des 15 seuls paramètres manquants des deuxièmes CNN, i.e. on garde les paramètres déjà appris pour les premiers CNN et on les « ré-entraine » de sorte à apprendre la couche FC, et ce sur les mêmes données, ce qui force l'apparition de l'espace commun. L'homme du métier saura utiliser toute base de données publiques déjà 20 classifiées pour la mise en oeuvre de l'étape (a2), sachant que par « publiques » on entend que les données ne sont pas confidentielles et peuvent être partagées librement. La première base de données publique est différente de chacune des bases de données confidentielles. On peut soit constituer spécifiquement cette première base publique, soit utiliser une base disponible. Dans le cas où les 25 données sont des photographies de visages, on citera par exemple la base de données IMDB (Internet Movie DataBase), de laquelle il est possible d'extraire des images de N=2622 individus, avec jusqu'à 1000 image par individu, voir Omkar M. Parkhi, Andrea Vedaldi, Andrew Zisserman: Deep Face Recognition. BMVC 2015. L'étape (a2) pourra être mise en oeuvre par chacun des serveurs 1 a, lb à 30 condition qu'ils accèdent à ladite première base de données publique, ou alternativement c'est le serveur lc qui peut s'en charger de manière centralisée. A noter que la classification apprise peut, plutôt qu'une simple réponse binaire, graduer les réponses pour obtenir des nuances que l'on pourra exploiter 10 en sachant aussi quelles sont les classes les plus proches, voir le document Geoffrey Hinton, Orbi Vin yals, Jeff Dean: Distilling the Knowledge in a Neural Network. NIPS 2014. Cela signifie simplement que là où une classification classique détermine LA classe qu'il estime être celle d'une donnée d'entrée (par 5 exemple le nom de la personne en photo), la présente classification peut indiquer une ou plusieurs classes potentielles, éventuellement avec un pourcentage de confiance. Dans des étapes (a3) et (a4), par exemple mise en oeuvre par le serveur lc 10 commun, on procède avantageusement de façon similaire à ce qui est proposé dans le document Nicolas Papemot, Martin Abadi, Ùlfar Erlingsson, lan Goodfellow, Kunal Talwar: Semi-supervised Knowledge Trans fer for Deep Leaming from Private Training Data. ICLR 2017 évoqué au début. Plus précisément, les deuxièmes CNN constituent des professeurs qui vont 15 pouvoir entraîner un étudiant. L'étape (a3) comprend ainsi la classification de données d'une deuxième base de données publiques encore non classifiées, au moyen du ou des deuxièmes CNN de substitution, et l'étape (a4) comprend l'apprentissage, à partir de la deuxième base de données publiques d'apprentissage à présent classifiées, 20 des paramètres d'un troisième CNN comprenant une couche FC finale. Le troisième CNN présente préférentiellement une architecture similaire à celle des deuxièmes CNN. De façon connue, l'étape (a3) comprend préférentiellement pour chaque donnée de ladite deuxième base de données publique, la classification de cette 25 donnée indépendamment par chacun des deuxième CNN, et l'agrégation des résultats de classification, i.e. le vote des professeurs. Comme expliqué, l'étape (a3) peut comprendre l'introduction de bruit sur les résultats de classification avant agrégation, de sorte à éviter de pouvoir remonter aux bases de données confidentielles des professeurs. L'homme du métier saura mettre en oeuvre toute 30 autre caractéristique de la technique d'apprentissage décrite dans document évoqué ci-avant. On comprend que dans l'étape (a4), l'étudiant apprend en utilisant l'espace commun de représentation des classifications obtenu à l'étape (a2). En référeence 11 à la figure 2, la ligne horizontale en pointillés sépare les informations qui ne sont pas accessibles les bases de données confidentielles, les premiers et deuxièmes CNN) de celles qui sont accessibles (la classification de la deuxième base de données publique, le troisième CNN). 5 Finalement, lorsque le troisième CNN, i.e. l'étudiant, est obtenu, sa dernière couche FC peut être supprimée pour revenir à un CNN d'extraction de features. Procédé de classification 10 Selon un deuxième aspect, est proposé le procédé de classification d'une donnée d'entrée, mis en oeuvre par les moyens de traitement de données 21 du terminal 2. Le procédé de classification comprend deux étapes : dans une première étape (a) est mis en oeuvre l'apprentissage d'un troisième CNN tel que défini 15 précédemment, et dans une deuxième étape (b) les moyens de traitement de données 21 du terminal 2 classifient ladite donnée d'entrée, au moyen du troisième CNN. Ce procédé est mis en oeuvre de façon classique, on comprend juste comme expliqué que connaissant seulement le troisième CNN, il n'y a pas 20 possibilité de remonter aux bases de données confidentielles ayant permis l'apprentissage des premiers CNN. Produit programme d'ordinateur 25 Selon un troisième et un quatrième aspects, l'invention concerne un produit programme d'ordinateur comprenant des instructions de code pour l'exécution (en particulier sur les moyens de traitement de données 11a, 11 b, 11 c, 21 d'un ou plusieurs serveurs 1 a, 1 b, 1 c ou du terminal 2) d'un procédé selon le premier aspect de l'invention d'apprentissage de paramètres d'un CNN ou un procédé 30 selon le deuxième aspect de l'invention de classification d'une donnée d'entrée, ainsi que des moyens de stockage lisibles par un équipement informatique (une mémoire 12a, 12b, 12c, 22 d'un ou plusieurs serveurs 1 a, 1 b, lc ou du terminal 2) sur lequel on trouve ce produit programme d'ordinateur. REVENDICATIONS1. Procédé d'apprentissage de paramètres d'un réseau de neurones à convolution, CNN, pour classification de données, le procédé comprenant la mise en oeuvre par des moyens de traitement de données (11 a, 11b, 11c) d'au moins un serveur (1a, 1 b, 1c), d'étapes de : (al) Apprentissage, à partir d'une base de données confidentielles d'apprentissage déjà classifiées, des paramètres d'un premier CNN ; (a2) Apprentissage, à partir d'une base de données publiques d'apprentissage déjà classifiées, des paramètres d'une couche entièrement connectée (FC) finale d'un deuxième CNN correspondant au premier CNN auquel on a rajouté ladite couche entièrement connectée (FC). 2. Procédé selon la revendication 1, dans lequel lesdites données sont des données biométriques, en particulier des images de visages. 3. Procédé selon l'une des revendications 1 et 2, dans lequel l'étape (al) est mise en oeuvre pour une pluralité de bases de données confidentielles d'apprentissage déjà classifiées de sorte à apprendre les paramètres d'une pluralité de premiers CNN, l'étape (a2) étant mise en oeuvre pour chacun des premiers CNN en utilisant la même base de données publiques d'apprentissage déjà classifiées de sorte à apprendre les paramètres d'une pluralité de deuxièmes CNN. 4. Procédé selon l'une des revendications 1 à 3, comprenant une étape (a3) de classification de données d'une deuxième base de données publiques encore non classifiées, au moyen du ou des deuxièmes CNN. 5. Procédé selon les revendications 3 et 4 en combinaison, dans lequel l'étape (a3) comprend pour chaque donnée de ladite deuxième base de 2 données publique, la classification de cette donnée indépendamment par chacun des deuxième CNN, et l'agrégation des résultats de classification. 6. Procédé selon la revendication 5, dans lequel l'étape (a3) 5 comprend l'introduction de bruit sur les résultats de classification avant agrégation. 7. Procédé selon l'une des revendications 4 à 6, comprenant une étape (a4) d'apprentissage, à partir de la deuxième base de données publiques d'apprentissage à présent classifiées, des paramètres d'un troisième CNN 10 comprenant une couche entière connectée (FC) finale. 8. Procédé selon la revendication 7, dans lequel le troisième CNN présente la même architecture que les deuxièmes CNN. 15 9. Procédé selon l'une des revendications 7 et 8, dans lequel l'étape (a4) comprend la suppression de ladite couche entièrement connectée (FC) finale du troisième CNN. 10. Procédé de classification d'une donnée d'entrée, caractérisé 20 en ce qu'il comprend la mise en oeuvre d'étapes de : (a) Apprentissage d'un troisième CNN conformément au procédé selon l'une des revendications 7 à 9; (b) Classification par les moyens de traitement de données (21) du terminal (2) de ladite donnée d'entrée chiffrée, au moyen du troisième CNN. 25 11. Produit programme d'ordinateur comprenant des instructions de code pour l'exécution d'un procédé selon l'une des revendications 1 à 10 d'apprentissage de paramètres d'un réseau de neurones à convolution, CNN, ou de classification d'une donnée d'entrée lorsque ledit programme est exécuté par 30 un ordinateur. 12. Moyen de stockage lisible par un équipement informatique sur lequel un produit programme d'ordinateur comprend des instructions de code pour l'exécution d'un procédé selon l'une des revendications 1 à 10 d'apprentissage de 3 paramètres d'un réseau de neurones à convolution, CNN, ou de classification d'une donnée d'entrée.