Que faire quand les données manquent ?

Que faire quand les données manquent ?
Publications

Que faire quand les données manquent ?

Appliquer les travaux d’intelligence artificielle à l’industrie, tout le monde veut le faire, mais l’immense majorité rencontre des obstacles sérieux dans cette démarche. Tout acteur du domaine a connu cette frustration à observer des résultats impressionnants issus du monde scientifique,résultats très dégradés dès lors qu’on veut les appliquer à un problème «réel». De nombreuses raisons existent, entre la jeunesse théorique du Deep Learning et les difficultés à identifier les axes de robustesse d’un modèle pour industrialisation. Mais s’il existe bien une constante dans ces obstacles, c’est le manque de donnée qui tôt ou tard met un coup d’arrêt aux projets. Nous travaillons depuis longtemps sur ces limites d’application et pouvons aujourd’hui proposer une méthodologie saine, efficace et permettant d’itérer sur une solution Deep Learning tant pour les entraînements que pour les tests de modèle. Nous proposons de vous présenter les approches basées sur la donnée synthétique, et au-delà sur une méthodologie qui permette de travailler sereinement.

1 Il n’y a jamais assez de donnée

Tout amateur ayant fréquenté le sujet est au courant, nous avons besoin en IA d’une quantité démesurée de donnée. «Toujours plus» est un axiome qui devient vite fatiguant. Dans le monde académique, les très grands acteurs comme Google et son JFT Dataset ont accumulé des dizaines de millions d’images différentes pour entraîner leurs réseaux. Une telle quantité est souvent hors de portée pour un acteur industriel. Rappelons aussi qu’une donnée pour être utilisable doit être annotée par un acteur humain. Quand bien même nous pouvons accélérer fortement cette annotation (une autre de nos offres), ces annotations doivent être contrôlées avec rigueur par des experts, car elles serviront autant à entraîner (créer) nos modèles Deep Learning qu’à qualifier leur qualité de prédiction. Dans le deuxième cas, une donnée annotée trop vite conduira à un modèle qui a l’illusion d’un bon fonctionnement, jusqu’au jour fatidique de l’industrialisation où alors le modèle s’écroulera… Mais attention ! Nous ne voulons pas juste «beaucoup de donnée». Nous voulons que cette donnée soit suffisamment variée pour reproduire la distribution du problème que nous désirons adresser. La donnée doit donc reproduire suffisamment de cas de figure variés, avec un certain équilibre. Hors, quel que soit le sujet industriel, les cas où nous manquons de données sont ceux typiquement où une acquisition est plus complexe ou coûteuse : les cas rares, les cas liés au fonctionnement d’un processus industriel coûteux à interrompre, etc.

La tâche semble vite impossible, et peut conduire à chercher d’autres moyens d’améliorer un modèle IA, par exemple en travaillant une nouvelle architecture Deep Learning (un nouveau Backbone en détection, par exemple), ou en fouillant les hyper-paramètres (par exemple via une approche Bayes+HyperBand, ou en Tensor V Programs). Ces axes d’amélioration sont réels, mais d’expérience, ils donnent en général des améliorations beaucoup moins intéressantes qu’une donnée plus riche et mieux contrôlée.

2 Une solution évidente : générer de la donnée

Une solution, apparue depuis quelques années dans le monde scientifique et tentée avec plus ou moins de succès dans le monde industriel, est de générer de la donnée pour augmenter les datasets.

Cette approche est devenue un canon en recherche, notamment depuis les travaux d’OpenAI de «domain randomization» dans lesquels les chercheurs ont entraîné un agent robotique en environnement totalement simulé pour appliquer ensuite au monde réel ( Domain Randomization for Transferring Deep Neural Networks from Simulation to the Real World, Tobin et al, https://arxiv.org/abs/1703.06907 )

Plus récemment, OpenAI et Berkeley ont utilisé ces approches pour entraîner un quadripède à apprendre à se déplacer dans un environnement ouvert (Coupling Vision and Proprioception for Navigation of Legged Robots, Fu et al, https://arxiv.org/abs/2112.02094), schéma ci-dessous.

Si la robotique s’est saisie de cette approche, les problématiques de détection et localisation d’éléments, ou encore de détection d’anomalie, peuvent aussi bénéficier de ces méthodologies. On pourrait même argumenter qu’on se rapproche du paradigme du Self Supervised Learning qui, lui, vise à entraîner un modèle sur une donnée plus générale pour apprendre des représentations bas niveau, pour ensuite le spécialiser sur un sujet.

Cette approche permettrait notamment de pouvoir tester plus largement un modèle, d’une part en visant dans la donnée générer des variances contrôlées et en observant les résultats du modèle, et d’autre part en maximisant la quantité de donnée réelle utilisée en test, ce qui robustifie statistiquement les métriques de résultat.

Alors, suffit-il pour un problème industriel de générer de la donnée synthétique pour surmonter les problèmes? Hélas, et sans surprise, non.

3 Les approches naïves sont vouées à l’échec

Nous l’avons déjà observé. Une donnée, par exemple une image photo réaliste, est générée avec ses annotations. Un modèle IA est entraîné sur cette donne de synthèse et semble donner de bon scores.

Mais en application sur la donnée réelle, les résultats s’effondrent dramatiquement. Nous retrouvons le démon du Distribution Drift spécifique au Deep Learning…

Un élément fort de solution vient d’un travail important réalisé en 2021 par Baradad et al (Learning to See by Looking at Noise, https://arxiv.org/abs/2106.05963). Dans cette publication, les auteurs illustrent l’intuition issue du Representation Learning sur l’apprentissage de représentations hiérarchiques de l’information. Ils illustrent que l’on peut pré-entraîner un modèle sur des images très peu liées au problème cible (ici, des images de bruit, ou des générations hors sujets), pour peu que ces images d’entraînement puissent accompagner la création au sein du réseau de neurones de représentations fondamentales utiles. L’idée fondatrice est la suivante : nous ne voulons pas une donnée synthétique qui simule le problème cible. Nous voulons une hiérarchie de données synthétiques dans laquelle on pourra noyer le problème cible, qui deviendra alors un cas particulier de notre génération. Via une méthodologie solide, nous pourrons itérer sur des améliorations concrètes du modèle.

4 Une méthodologie indispensable

Comment mettons nous en œuvre un tel projet ? La méthodologie est, sans surprise, le nerf de la guerre, si nous voulons garantir une amélioration correcte du modèle à nos clients.

1.Comprendre la distribution

Un dataset est fondamentalement un échantillonnage qui représente une distribution plus large, celle du problème que nous voulons adresser. Une distribution s’analyse, se mesure, se cartographie via la donnée disponible. Une analyse initiale de cette distribution, depuis la donnée, confrontée à une expertise métier du problème visé, est évidemment indispensable à toute action ultérieure.

2.Noyer la distribution

Partons d’un constat d’échec : nous ne pourrons pas créer une donnée totalement indissociable de la  donnée manquante, inutile donc de brûler des mois sur une recherche de perfection vouée à l’échec.

Car même si vous ne voyez pas de différence visuellement entre votre donnée synthétique et votre donnée réelle, un modèle Deep Learning pourra parfaitement utiliser des différences «invisibles» liées à un modèle de capteur, une forme de bruit lié à l’optique, etc. Mieux vaut donc chercher à noyer la distribution sur une approche hiérarchique correctement cadrée, dans la lignée des travaux de Baradad et al

3.Contrôler la génération

Une génération qui ne peut pas être finement contrôlée a un intérêt plus que limité. Tôt ou tard, nous voudrons générer des cas précis correspondant aux « trous » présents dans la donnée.

Hors, nous ne découvrirons ces cas particuliers qu’en testant le modèle contre de la donnée réelle ou synthétique et en identifiant les variances où le modèle est en défaut. Laissons donc de côtés les Generative Adversarial Networks ou VQ-Variational Autoencoders, au moins au début, pour préférer un système déterministique parfaitement maîtrisé. Il sera toujours possible, dans un second temps, d’utiliser ces outils avec parcimonie, par exemple pour faire du transfert de domaine, ou sur de la génération conditionnée à l’image des récents modèles de diffusion

4.Avoir une boussole

Probablement le plus important. Personne ne veut attendre pendant des mois une donnée synthétique pour ensuite observer qu’elle ne fait absolument pas progresser le modèle. Nous cherchons avec nos clients à déterminer une « boussole », autrement dit, un modèle simple à entraîner lié à la donnée cible sur lequel on peut observer une amélioration. Cela permet d’agir par itérations et de vérifier la bonne direction des travaux de synthèse.

5.Adapter les entraînements

La donnée synthétique a un double but : pré-entraîner un modèle, et compléter l’apprentissage sur des cas particuliers. L’entraînement du modèle doit donc être pondéré entre les différentes données selon l’architecture de réseau de neurones et l’objectif visé, afin d’optimiser la qualité finale du modèle.