Comme tout logiciel, un programme d’apprentissage automatique peut avoir des failles, ce qui entraîne des résultats non qualifiés aux conséquences potentiellement catastrophiques. Pour éviter cela, les équipes de développement de programmes d’apprentissage automatique devraient avoir à leur disposition des techniques efficaces de détection des failles. Actuellement, les chercheurs à Polytechnique Montréal travaillent pour aider les développeurs qui ne sont pas des experts en apprentissage automatique à trouver les problèmes de conception et les failles dans leurs programmes.
Nous utilisons tous les jours des systèmes logiciels d’apprentissage automatique : systèmes de recommandation, reconnaissance vocale, détection des visages, services bancaires personnels et conduite autonome. Ces systèmes prennent automatiquement des décisions intelligentes fondées sur des modèles, des associations et des connaissances tirés des données. Les problèmes de conception et les failles ont une incidence directe sur la qualité des systèmes logiciels d’apprentissage automatique. Étant donné que des décisions erronées ou médiocres peuvent entraîner le dysfonctionnement d’autres systèmes, il est nécessaire d’assurer la qualité des systèmes logiciels d’apprentissage automatique. Dans les systèmes essentiels pour la sécurité, les décisions non qualifiées peuvent entraîner, par exemple, des pertes financières importantes ou même mettre en danger la vie humaine. Un profil de qualité peut être défini de sorte à inclure un ensemble de mesures liées à la qualité ainsi qu’un ensemble d’indicateurs d’assurance de la qualité qui déterminent quand les problèmes de qualité doivent être soulevés et ensuite réglés pendant le cycle de vie du système logiciel d’apprentissage automatique.
Mes recherches portent actuellement sur la détection de failles et de modèles mal conçus dans les programmes d’apprentissage profond (AP) et sur l’assurance de leur qualité. L’apprentissage profond est un domaine actif de l’apprentissage automatique qui est appliqué avec succès à de nombreux problèmes concrets complexes. Il a largement été utilisé dans les systèmes logiciels d’apprentissage automatique. Les réseaux de neurones profonds constituent le cœur de ces systèmes. Une fois construit, un réseau de neurones profond souhaitable doit être entraîné en exécutant un algorithme d’apprentissage sur des données.
Notre équipe de recherche a examiné des erreurs structurelles (failles) et des inefficacités de conception courantes dans les programmes d’AP. Les failles peuvent conduire à une fonctionnalité incorrecte, comme un résultat/comportement inattendu ou à un plantage où le programme cesse de fonctionner avec ou sans l’affichage d’un message d’erreur. Les inefficacités de conception entraînent des performances médiocres en montrant des symptômes tels qu’une faible précision de prédiction. Nous avons cerné 8 problèmes de conception et 14 failles pour une architecture d’AP populaire, à savoir les réseaux de neurones profonds à propagation avant qui sont largement utilisés dans les applications industrielles. Ces derniers sont dits « à propagation avant », car l’information ne peut se propager que dans un seul sens, sans possibilité de retour en arrière, de la couche d’entrée, à travers les couches cachées, vers la couche de sortie qui représente une probabilité de classe ou une valeur réelle prédite. Les failles et les problèmes ont été trouvés en passant en revue la littérature existante sur la conception de programmes d’AP et en inspectant manuellement des programmes d’AP problématiques.
Les problèmes de conception sont précisés en décrivant leur contexte, leurs conséquences et les réusinages recommandés. Pour fournir des preuves empiriques sur la pertinence et l’impact perçu des problèmes de conception cernés, nous avons mené un sondage auprès de 81 développeurs de programmes d’AP. En général, les développeurs percevaient les problèmes de conception proposés comme reflétant des problèmes de conception ou de mise en œuvre, avec des degrés d’accord variant de 47 % à 68 %. Nous sommes d’avis que le fait de disposer d’une liste de mauvaises pratiques de conception connues pour les modèles d’AP peut aider les développeurs à éviter les pièges pendant le développement de leurs programmes, ce qui se traduit par des logiciels de meilleure qualité.
À l’aide de la liste des failles et des problèmes de conception cernés, nous avons créé NeuraLint, une approche de vérification basée sur un modèle pour les programmes d’AP. Pour ce faire, nous avons proposé un métamodèle pour les programmes d’AP qui comprend leur squelette de base et leurs propriétés fondamentales. Ce métamodèle, en tant que modèle de modèles, saisit les propriétés essentielles des programmes indépendamment des bibliothèques d’AP disponibles. En considérant le métamodèle proposé, une règle de vérification est précisée pour chaque faille ou problème de conception afin de détecter son occurrence. Ensuite, nous proposons un processus de vérification pour vérifier les modèles de programmes d’AP qui sont conformes au métamodèle. Nous avons utilisé des transformations de graphiques pour mettre en œuvre NeuraLint : représentant les modèles d’AP par des graphiques et, par la suite, vérifiant ces graphiques à l’aide de transformations. De cette façon, le modèle de chaque programme d’AP est extrait de son code, puis vérifié pour détecter les problèmes potentiels. Nous avons évalué NeuraLint en trouvant divers types de failles et de problèmes de conception dans plusieurs programmes d’AP existants extraits de dépôts GitHub et de publications sur Stack Overflow. Les résultats montrent que NeuraLint détecte efficacement les failles et les problèmes de conception dans les exemples synthétisés et réels avec un rappel de 70,5 % et une précision de 100 %.
Les travaux futurs s’orientent dans plusieurs directions. Bien que le métamodèle proposé soit conçu pour les architectures dans lesquelles l’information ne peut se propager que dans un seul sens, sans possibilité de retour en arrière, il pourrait être étendu à d’autres architectures de réseaux de neurones, comme les réseaux de neurones récurrents. Les chercheurs pourraient également étendre notre ensemble de règles de vérification pour couvrir un plus grand nombre de types de failles ou de problèmes dans les programmes d’AP. Assurer la qualité d’autres techniques d’apprentissage automatique, comme l’apprentissage par renforcement, est une autre application potentielle. En outre, les programmes d’AP pourraient être exécutés de manière expérimentale pour évaluer leurs performances (et leur fonctionnalité), ce qui permettrait la détection de problèmes potentiels. Une telle évaluation, qui s’appelle une analyse dynamique, enrichirait l’évaluation de la qualité des systèmes logiciels d’apprentissage automatique. Enfin, le profil de qualité des systèmes logiciels d’apprentissage automatique pourrait être étendu au-delà des failles et des problèmes de conception pour détecter la dégradation des performances (baisse du pouvoir prédictif du modèle) dans le temps et les problèmes de qualité soulevés par l’interaction avec d’autres parties d’un système.
Cet article a été réalisé par Amin Nikanjam, associé de recherche (Polytechnique Montréal), avec l’accompagnement de Marie-Paule Primeau, conseillère en vulgarisation scientifique, dans le cadre de notre initiative « Mon projet de recherche en 800 mots.