FR 3076935 A1 20190719 FR 1850304 A 20180115 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.). Ils sont de plus en plus souvent déployés directement sur des ordinateurs personnels voire des terminaux mobiles. 30 Aujourd'hui, les CNN donnent pleinement satisfaction, mais au vu de leurs applications orientées sécurité il serait souhaitable de les sécuriser. Plus précisément, un CNN est défini à la fois par des paramètres obtenus à l'issue d'une phase d'apprentissage et des hyperparamètres prédéterminés (dans 2 les deux cas des poids et des biais). Les paramètres et surtout les hyperparamètres constituent des données sensibles qui devraient être traités au même titre que les paramètres dits secrets d'une fonction cryptographique. Dans la suite de la description on désignera par commodité comme paramètres d'un 5 CNN aussi bien les paramètres que les hyperparamètres. De façon générale, une fonction est considérée comme une « boîte noire » lorsqu'on ne peut pas accéder à son fonctionnement interne, i.e. qu'on peut connaître ses entrées et ses sorties mais pas ses paramètres secrets ou ses états intermédiaire. 10 L'hypothèse de boite noire impose une contrainte forte sur le stockage et la manipulation de ces paramètres. Cependant des outils ont été récemment publiés pour permettre l'automatisation d'attaques sur implémentation matérielle, attaques dites par canaux auxiliaires ou par fautes. Aujourd'hui, pour de nombreux cas d'usages incluant l'implémentation sur des terminaux mobiles, il est nécessaire de déployer des algorithmes cryptographiques en faisant le moins d'hypothèses possibles sur la sécurité du matériel cible. Le stockage et la manipulation sécurisés des paramètres secrets doivent alors être assurés au niveau applicatif. Le même travail doit être fait pour les CNN de sorte à éviter que les paramètres puissent être extraits et utilisés à mauvais escient si les équipements sur lesquels ils sont déployés présentent des vulnérabilités. La cryptographie dite boite blanche vise à répondre à ce défi pour les algorithmes cryptographiques en proposant des implémentations qui sont sensés rendre l'extraction des secrets impossible, même en cas d'attaque permettant à l'attaquant un accès complet à l'implémentation logicielle de l'algorithme. Plus précisément, une fonction est considérée comme une « boîte blanche » lorsque ses mécanismes sont visibles et permettent d'en comprendre le fonctionnement. En d'autres termes, on fait directement l'hypothèse que l'attaquant a accès à tout ce qu'il souhaite (le binaire est complètement visible et modifiable par l'attaquant et celui-ci a le plein contrôle de la plateforme d'exécution). Par conséquent, l'implémentation elle-même est la seule ligne de défense. On parle alors « d'implémentation blanchie » d'un calcul élémentaire de l'algorithme lorsqu'on 3 arrive à représenter ce calcul sous une forme sécurisée évitant d'avoir les clés utilisées en clair, par exemple en représentant le calcul par une table stockée en mémoire. Cependant, ces techniques d'implémentation blanchie ne sont en l'état pas 5 utilisables sur les CNN. En particulier, les tailles des tables requises sont colossales, et inadaptées aux équipements tels que les terminaux mobiles sur lesquels l'implémentation blanchie est souhaitable, ces équipements ayant généralement des ressources moindres. 10 Il serait par conséquent souhaitable de disposer d'une nouvelle solution d'apprentissage des paramètres d'un CNN / classification de données au moyen du CNN qui soit pleinement compatible avec une implémentation blanchie et ne limite pas la taille du CNN ou son efficacité. 15 PRESENTATION DE L'INVENTION Selon un premier aspect, la présente invention concerne un 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 20 moyens de traitement de données d'un serveur, d'étapes de : (ai) Apprentissage, à partir d'une base de données d'apprentissage déjà classifiées, des paramètres d'un CNN, dit quantifié, tel que lesdits paramètres sont à valeur dans un espace discret ; (a2) Génération d'une implémentation blanchie d'au moins une couche 25 dudit CNN quantifié, ladite implémentation blanchie étant prédéterminée en fonction d'au moins un des dits paramètres appris. Selon d'autres caractéristiques avantageuses et non limitatives : 30 - les paramètres du CNN quantifié sont à valeur dans l'espace f0; Ir avec n POOL] jusqu'à obtenir un vecteur de sortie de taille suffisamment petite, puis terminent par deux couches entièrement connectées FC. 20 Voici une architecture CNN typique (dont un exemple est représenté par la figure 2a) : INPUT -> [[CONV NL] POOLIP FC FC Dans le cadre de la présente invention, des architectures spécifiques de 25 CNN facilement « blanchis » vont être à présent décrites. Procédé d'apprentissage Selon un premier aspect, est proposé le procédé d'apprentissage, mis en 30 oeuvre par les moyens de traitement de données 11 du serveur 1. Dans une étape (ai), à partir de ladite base de données d'apprentissage déjà classifiées, le premier serveur apprend les paramètres d'un CNN spécifique dit quantifié. Un CNN quantifié est tel que lesdits paramètres sont à valeur dans 8 un espace discret, en d'autres termes peuvent prendre un nombre limité de valeurs. Cela s'oppose aux CNN classiques dans lequel les paramètres sont des réels, par exemple entre 0 et 1. De façon préférée, les paramètres sont à valeur dans un espace {0; 1}n 5 qu'on notera IF, avec n poNv NLF POOL] M CONV DxDx1 CONV1x1xMxN 20 De façon particulièrement préférée, on peut diminuer encore le nombre de poids et leur taille en utilisant des « convolutions séparables » telles que présentées dans le document Andrew G. Howard, Menglong Zhu, Bo Chen, Dmitry Kalenichenko, Weijun Wang, Tobias Weyand, Marco Andreetto, Hartwig Adam : MobileNets: Efficient Con volutional Neural Networks for Mobile Vision 25 Applications. L'idée est de remplacer chaque convolution Dx D x MxN par une succession d'une première convolution Dx DxM dite « depthwise » (appliquant un unique filtre à chaque feature map d'entrée) et d'une deuxième convolution 1 x 1 x Mx N dite « pointwise » (combinant les sorties de la première convolution). 30 Une couche NL peut être ajoutée entre les deux convolutions. En pratique, une telle séparation des convolutions peut encore permettre de diviser le nombre de paramètres d'un facteur sept. 11 La figure 2c représente un exemple d'un CNN à convolutions séparables préféré d'architecture : INPUT -> [[CONV DxDxM NL CONV 1x1xMxN NL]P -> POOL" M CONV DxDx1 CONV 1x1xMxN. A noter que les valeurs D, M, et N varient selon la couche. 5 Dans une étape (a2), les moyens de traitement de données 21 génèrent une implémentation blanchie d'au moins une couche dudit CNN quantifié, ladite implémentation blanchie étant prédéterminée en fonction d'au moins un des dits paramètres appris. 10 On rappelle que par implémentation blanchie, ou « white box implementation », d'une opération, on entend une représentation de l'opération qui ne permette pas de remonter aux états internes ou aux paramètres lorsque l'opération est exécutée (par application de l'implémentation blanchie aux données d'entrée), en particulier une table (on parle de représentation tabulée). 15 Cela signifie que l'opération associée à ladite couche blanchie est représentée par une table prédéfinie à l'intérieur de laquelle le ou les paramètres (ceux appris et les hyperparamètres) sont « enfouis ». Les propriétés attendues du blanchiment d'application font que l'observation de l'exécution de l'implémentation blanchie ne doit pas permettre de retrouver les 20 valeurs des paramètres enfouies dans le calcul. De façon préféré, au moins la ou les couches de convolution font l'objet d'une implémentation blanchie, puis la ou les couches de pooling, et enfin la ou les couches non linéaires. A noter qu'un ensemble de couches, voire tout le CNN peut faire l'objet d'une unique représentation blanchie, mais pour réduire la taille 25 des tables, les entrées d'une couche peuvent être découpées. De façon préférée, au moins deux couches consécutives font l'objet d'une implémentation blanchie. Ainsi, des couches artificielles qui n'ont aucun effet peuvent être ajoutées lorsque cela est possible à l'entrée et à la sortie de tables ; par exemple, si Tl et T2 sont les tables représentant deux couches successives, 30 Tl 0 T2 est remplacé par (Tl o P) o (P-1- 0 T2) où P est un encodage interne bijectif tiré au hasard. Cela permet de « masquer » les états internes du CNN, car seules les valeurs Tl o P (x) et 13-1 0 T2(y) n'apportent aucune information sur les paramètres enfouis dans les tables Tl et T2. 12 L'homme du métier pourra consulter au sujet des implémentations blanchies les documents : - Stanley Chow, Philip A. Eisen, Harold Johnson, Paul C. van Oorschot: A White-Box DES Implementation for DRM Applications. 5 Digital Rights Management Workshop 2002 - Stanley Chow, Philip A. Eisen, Harold Johnson, Paul C. van Oorschot: White-Box Cryptography and an AES Implementation. Selected Areas in Cryptography 2002 - Brecht Wyseur, "White-Box Cryptography", PhD thesis, Katholieke 10 Universiteit Leuven, 2009 Ces documents concernent des fonctions cryptographiques mais l'homme du métier saura transposer leur enseignement à des couches de CNNs. Procédé de classification 15 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 trois grandes étapes : dans une 20 première étape (a) est mis en oeuvre l'apprentissage d'un CNN quantifié tel que défini précédemment, dans une deuxième étape (b) l'implémentation blanchie générée pour ce CNN est stockée sur les moyens de stockage de données 22 du terminal 2, et dans une troisième étape (c) les moyens de traitement de données 21 du terminal 2 classifient ladite donnée d'entrée, au moyen du CNN quantifié, en 25 appliquant ladite implémentation blanchie. Il est ainsi possible d'utiliser le CNN, sans que les paramètres et les hyperparamètres enfouis dans l'implémentation blanchie soient accessibles. Produit programme d'ordinateur 30 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 21, 22 du serveur 1 ou du 13 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é 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 du serveur 1 ou du terminal 1) sur 5 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) d'un serveur (1), d'étapes de : (al) Apprentissage, à partir d'une base de données d'apprentissage déjà classifiées, des paramètres d'un CNN, dit quantifié, tel que lesdits paramètres sont à valeur dans un espace discret ; (a2) Génération d'une implémentation blanchie d'au moins une couche dudit CNN quantifié, ladite implémentation blanchie étant prédéterminée en fonction d'au moins un des dits paramètres appris. 2. Procédé selon la revendication 1, dans lequel les paramètres du CNN quantifié sont à valeur dans l'espace (0; 1In avec n 3. Procédé selon la revendication 2, dans lequel n vaut 1, 2 ou4. 4. Procédé selon l'une des revendications 1 à 3, dans lequel le CNN quantifié ne comprend pas de couche complètement connectée. 5. Procédé selon l'une des revendications 1 à 4, dans lequel le CNN quantifié comprend au moins une couche de convolution, ladite 25 implémentation blanchie est une implémentation blanchie d'au moins une couche de convolution. 6. Procédé selon la revendications 5, dans lequel le CNN comprend en outre une couche non linéaire après la couche de convolution, ladite 30 implémentation blanchie est une implémentation blanchie d'au moins une couche de convolution et une couche non linéaire. 2 7. Procédé selon l'une des revendications 5 et 6, dans lequel le CNN est dit à convolutions séparables, et comprend des premières couches de convolution mettant en oeuvre un unique filtre par canal d'entrée, et des deuxièmes couches de convolution chacune combinant les sorties d'une première 5 couche de convolution. 8. 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 : (b) Stockage sur des moyens de stockage de données (22) d'un terminal (2) 10 d'une implémentation blanchie d'au moins une couche d'un réseau de neurones à convolution, CNN, dit quantifié, ayant des paramètres à valeur dans un espace discret, ladite implémentation blanchie étant prédéterminée en fonction d'au moins un desdits paramètres ; (c) Classification par les moyens de traitement de données (21) du terminal (2) 15 de ladite donnée d'entrée chiffrée, au moyen du CNN quantifié, en appliquant ladite implémentation blanchie. 9. Procédé de classification selon la revendication 8, comprenant une étape (a) préalable d'apprentissage dudit CNN quantifié conformément au 20 procédé selon l'une des revendication 1 à 7. 10. Produit programme d'ordinateur comprenant des instructions de code pour l'exécution d'un procédé selon l'une des revendications 1 à 9 d'apprentissage de paramètres d'un réseau de neurones à convolution, CNN, ou 25 de classification d'une donnée d'entrée, lorsque ledit programme est exécuté sur un ordinateur. 11. Moyen de stockage lisible par un équipement informatique sur lequel un produit programme d'ordinateur comprend des instructions de code pour 30 l'exécution d'un procédé selon l'une des revendications 1 à 9 d'apprentissage de paramètres d'un réseau de neurones à convolution, CNN, ou de classification d'une donnée d'entrée.