Towards Debugging and Testing Deep Learning Systems

Au cours des dernieres annees, l’apprentissage profond, en anglais Deep Learning (DL) a fait d’enormes progres, en atteignant et depassant meme parfois le niveau de performance des humains pour differentes tâches, telles que la classification des images et la reconnaissance vocale. Grâce a ces progres, nous constatons une large adoption du DL dans des applications critiques, telles que la conduite autonome de vehicules, la prevention et la detection ducrime, et le traitement medical. Cependant, malgre leurs progres spectaculaires, les systemes de DL, tout comme les logiciels traditionnels, presentent souvent des comportements errones en raison de l’existence de defauts caches ou d’inefficacites. Ces comportements erronespeuvent etre a l’origine d’accidents catastrophiques. Ainsi, l’assurance de la qualite des logiciels (SQA), y compris la fiabilite et la robustesse, pour les systemes de DL devient une preoccupation majeure. Les tests traditionnels pour les modeles de DL consistent a mesurer leurs performances sur des donnees collectees manuellement ; ils dependent donc fortement de la qualite des donnees de test qui, souvent, n’incluent pas de donnees d’entree rares, comme entemoignent les recents accidents de voitures avec conduite autonome (exemple Tesla/Uber). Les techniques de test avancees sont tres demandees pour ameliorer la fiabilite des systemes de DL. Neanmoins, les tests des systemes de DL posent des defis importants, en raison de leur nature non-deterministe puisqu’ils suivent un paradigme axe sur les donnees (la tâche cible est apprise statistiquement) et leur manque d’oracle puisqu’ils sont concus principalementpour fournir la reponse. Recemment, les chercheurs en genie logiciel ont commence a adapter des concepts du domaine du test logiciel tels que la couverture des cas de tests etles pseudo-oracles, pour resoudre ces difficultes. Malgre les resultats prometteurs obtenus de cette renovation des methodes existantes de test logiciel, le domaine du test des systemes de DL est encore immature et les methodes proposees a ce jour ne sont pas tres efficaces. Dans ce memoire, nous examinons les solutions existantes proposees pour tester les systemes de DL et proposons quelques nouvelles techniques. Nous realisons cet objectif en suivant une approche systematique qui consiste a : (1) etudier les problemes et les defis lies aux tests des logiciels de DL; (2) souligner les forces et les faiblesses des techniques de test logiciel adaptees aux systemes de DL; (3) proposer de nouvelles solutions de test pour combler certaines lacunes identifiees dans la litterature, et potentiellement aider a ameliorer l’assurance qualite des systemes de DL.----------ABSTRACT: Over the past few years, Deep Learning (DL) has made tremendous progress, achieving or surpassing human-level performance for different tasks such as image classification and speech recognition. Thanks to these advances, we are witnessing a wide adoption of DL in safetycritical applications such as autonomous driving cars, crime prevention and detection, and medical treatment. However, despite their spectacular progress, DL systems, just like traditional software systems, often exhibit erroneous corner-cases behaviors due to the existence oflatent defects or inefficiencies, and which can lead to catastrophic accidents. Thus, software quality assurance (SQA), including reliability and robustness, for DL systems becomes a big concern. Traditional testing for DL models consists of measuring their performance on manually collected data ; so it heavily depends on the quality of the test data that often fails to include rare inputs, as evidenced by recent autonomous-driving car accidents (e.g., Tesla/Uber). Advanced testing techniques are in high demand to improve the trustworthiness of DL systems. Nevertheless, DL testing poses significant challenges stemming from the non-deterministic nature of DL systems (since they follow a data-driven paradigm ; the target task is learnedstatistically) and their lack of oracle (since they are designed principally to provide the answer). Recently, software researchers have started adapting concepts from the software testing domain such as test coverage and pseudo-oracles to tackle these difficulties. Despite somepromising results obtained from adapting existing software testing methods, current software testing techniques for DL systems are still quite immature. In this thesis, we examine existing testing techniques for DL systems and propose some new techniques. We achieve this by following a systematic approach consisting of : (1) investigating DL software issues and testing challenges ; (2) outlining the strengths and weaknesses of the software-based testing techniques adapted for DL systems ; and (3) proposing novel testing solutions to fill some of the identified literature gaps, and potentially help improving the SQA of DL systems.