<  Retour au portail Polytechnique Montréal

Debugging and Testing Deep Learning Software Systems

Houssem Ben Braiek

Thèse de doctorat (2022)

Document en libre accès dans PolyPublie
[img]
Affichage préliminaire
Libre accès au plein texte de ce document
Conditions d'utilisation: Tous droits réservés
Télécharger (3MB)
Afficher le résumé
Cacher le résumé

Résumé

RÉSUMÉ L'apprentissage profond est de plus en plus déployé dans les systèmes à grande échelle et les systèmes critiques grâce aux percées récentes en apprentissage automatique. On utilise maintenant des applications logicielles intégrant l'apprentissage profond dans la vie de tous les jours, incluant les finances, l'énergie, la santé et les transports. L'approche traditionnelle du développement logiciel est déductive, consistant en l'écriture de règles qui dictent le comportement du système avec un programme codé. En apprentissage profond, ces règles sont plutôt inférées de façon inductive à partir de données d'apprentissage. Malgré ce changement de paradigme permettant des progrès transformationnels dans plusieurs domaines d'applications, des inquiétudes quant à leur fiabilité ont été soulevées et ont rendu la recherche sur la qualité des logiciels incluant des réseaux de neurones d'une importance primordiale. Premièrement, les programmes d'entraînement des réseaux de neurones modernes sont devenus plus complexes, incorporant le non-déterminisme inhérent et les subtilités cachées derrière une pile de boîtes à outils. En conséquence, les bogues tels que des erreurs de codage, des mauvaises configurations et l'abus d'interface de programmation (API) se produisent fréquemment, selon des études récentes. Par conséquent, nous concevons des débogueurs automatisés qui s'appuient sur l'analyse de code statique et de la dynamique d'entraînement, tout en étant conceptuellement découplés des APIs, des modèles et d'autres choix d'implémentation. Nos outils de débogage sont implémentés pour fonctionner avec les bibliothèques populaires, et leurs évaluations sont menées sur de vrais programmes bogués de StackOverflow et Github. Deuxièmement, même un programme d'entraînement sans bogue peut aussi produire des modèles non fiables en raison de la tendance de l'apprentissage basé sur les données au biais de sélection, aux fausses corrélations et aux déviations de distribution. Ces modèles non fiables se basent sur des raccourcis injustifiés et des biais inductifs médiocres qui ne correspondent pas aux exigences de l'application ou aux propriétés du système. De plus, les développeurs ont tendance à inclure des opérations post-entraînement comme la compression de taille des paramètres, qui peuvent altérer négativement les biais inductifs sans être identifiés avant le déploiement. Traditionnellement, le test du modèle repose sur l'estimation de ses performances sur des échantillons de test qui sont indépendants et distribués de manière identique. Cependant, ces tests échouent souvent à exposer les défauts inhérents du modèle car les échantillons retenus pour le test héritent souvent des mêmes biais que les données d'apprentissage. En outre, les attaques contradictoires se concentrent sur la révélation des vulnérabilités de modèle contre des entrées malveillantes qui ne correspondent pas forcément aux conditions réelles.

Abstract

Deep Learning (DL) is increasingly becoming an integral part of intelligent software systems in critical aspects of our daily lives, from finance and energy to health and transportation. Traditionally, software logic is developed deductively, by encoding the rules that govern the program's behavior into the code. In contrast, Deep Neural Networks (DNNs) derived inductively (i.e., learned) these rules from the training data. Despite this paradigm shift enabling transformational progress across a wide range of domains, concerns over their trustworthiness have been raised and have made research on DL software quality of paramount importance. First, the training programs of modern DNNs have become more complex, incorporating inherent nondeterminism and hidden intricacies of a deeply-growing pile of toolkits. As a result, bugs such as coding faults, misconfigurations, and API misuses occur more frequently, according to recent studies on DL bugs. Therefore, we design automated DL debuggers that rely on static code analysis and training dynamics monitoring, while being conceptually decoupled from APIs, Models, and other implementation choices. Our debugging tools are implemented to work on mainstream DL libraries, and their assessments are conducted on real buggy programs from StackOverflow and Github. Second, even a bug-free DL training program can still produce unreliable DNNs because of the data-driven learning's proneness to selection bias, spurious correlations, and distributional shifts. In such cases, an optimized DNN might have learned unjustified shortcuts and poor inductive biases that misaligned with the application requirements or the system properties. Furthermore, modern DL pipelines tend to include post-training operations such as size compression or domain transition, which can adversely alter the patterns captured by the DNN without being identified before deployment. Conventional testing of a DNN reposes in estimating its performance on independent and identically distributed (iid) held-out test samples. However, iid tests often fail to expose the inherent model's flaws because the held-out samples often inherit the same biases of the training data. Besides, adversarial attacks focus on maliciously-crafted inputs that reveal model vulnerabilities against likely-unforeseeable data in real-world conditions. In parallel, DL software testing trends focus on designing structural coverage criteria with no evidence of correlation to fault-revealing abilities, and they are evaluated on how well they generate distorted images for computer vision applications. In regards to distributional drifts, generative modeling is limited by the curse of dimensionality, while model-dependent detectors based on uncertainties or activation maps suffer from reliability degeneration on shifted inputs.

Département: Département de génie informatique et génie logiciel
Programme: Génie informatique
Directeurs ou directrices: Foutse Khomh
URL de PolyPublie: https://publications.polymtl.ca/10496/
Université/École: Polytechnique Montréal
Date du dépôt: 06 févr. 2023 15:08
Dernière modification: 08 avr. 2024 10:23
Citer en APA 7: Ben Braiek, H. (2022). Debugging and Testing Deep Learning Software Systems [Thèse de doctorat, Polytechnique Montréal]. PolyPublie. https://publications.polymtl.ca/10496/

Statistiques

Total des téléchargements à partir de PolyPublie

Téléchargements par année

Provenance des téléchargements

Actions réservées au personnel

Afficher document Afficher document