Show item record

dc.contributor.advisorSahraoui, Houari
dc.contributor.authorMaes, Lucas
dc.date.accessioned2023-12-12T20:12:28Z
dc.date.availableNO_RESTRICTIONfr
dc.date.available2023-12-12T20:12:28Z
dc.date.issued2023-11-01
dc.date.submitted2023-07
dc.identifier.urihttp://hdl.handle.net/1866/32228
dc.subjectGénie logicielfr
dc.subjectapprentissage profondfr
dc.subjectapprentissage auto-superviséfr
dc.subjectnon contrastiffr
dc.subjectdistillationfr
dc.subjectreprésentation du codefr
dc.subjectrecherche de codefr
dc.subjectdétection de clonefr
dc.subjectSoftware engineeringfr
dc.subjectDeep learningfr
dc.subjectSelf-supervised learningfr
dc.subjectNoncontrastivefr
dc.subjectCode representationfr
dc.subjectCode searchfr
dc.subjectClone detectionfr
dc.subject.otherArtificial intelligence / Intelligence artificielle (UMI : 0800)fr
dc.titleSur l'élaboration de meilleures techniques pour l'apprentissage auto-supervisé des représentations du codefr
dc.typeThèse ou mémoire / Thesis or Dissertation
etd.degree.disciplineInformatiquefr
etd.degree.grantorUniversité de Montréalfr
etd.degree.levelMaîtrise / Master'sfr
etd.degree.nameM. Sc.fr
dcterms.abstractLes représentations du code apprises par les modèles d’apprentissage profond sont une composante cruciale pour certaines applications en génie logiciel telles que la recherche de code ou la détection de clones. Les performances de ces applications dépendent de la qualité des représentations apprises par les modèles. De fait, des représentations possédant peu de bruit et contenant des informations avec un haut niveau d’abstraction, comme la sémantique fonctionnelle, facilitent la résolution de ces tâches. En effet, la recherche de code nécessite de comprendre les objectifs des morceaux de code pour les comparer avec une requête en langage naturel, tandis que la détection de clone exige de déterminer si deux morceaux de code ont la même sémantique fonctionnelle. La capacité des modèles à apprendre des représentations contenant de telles informations abstraites est donc cruciale pour la bonne résolution de ces tâches. Cependant, il est toujours difficile pour les modèles de code d’apprendre des représentations abstraites indépendantes de la syntaxe, par exemple la sémantique fonctionnelle. Ce mémoire se consacre donc à l’élaboration de meilleures techniques pour l’apprentissage des représentations du code via l’apprentissage auto-supervisé. Plus spécifiquement, nous nous sommes concentrés sur deux tâches centrales dans l’automatisation du génie logiciel nécessitant un minimum de compréhension de la sémantique fonctionnelle, à savoir, la recherche de code et la détection de clones de type 4. Ce mémoire propose différentes approches à différents degrés d’entraînement. Le premier degré est le pré-entraînement et consiste à apprendre des représentations génériques du code adaptables à n’importe quels problèmes. Le second est le peaufinage, modifiant les représentations apprises pour un problème spécifique. Tout d’abord, nous proposons un nouvel algorithme de pré-entraînement pour les modèles de code utilisant une méthode non contrastive régularisée adaptée de VICReg, permettant l’apprentissage de représentations génériques. Ensuite, nous proposons un nouvel objectif de peaufinage des modèles de code utilisant la distillation des connaissances d’un ensemble de modèles déjà peaufinés, appelés enseignants, sur un modèle étudiant, lui permettant ainsi l’apprentissage de représentations plus abstraites. L’ensemble des contributions vise à améliorer les représentations du code et à maximiser les performances des modèles d’apprentissage automatique pour le code, mais aussi à déterminer quel est le meilleur degré d’entraînement à adopter pour cela. Les résultats expérimentaux et les analyses menées dans ce mémoire sont préliminaires et ne permettent pas de tirer de conclusions définitives. Néanmoins, il est important de souligner que la deuxième contribution surpasse la méthode classique de peaufinage des modèles pour la recherche de code. De plus, les approches décrites proposent des pistes de directions de recherche innovantes et non conventionnelles.fr
dcterms.abstractCode representations learned by deep learning models are a crucial component for certain software engineering applications such as code search or clone detection. The performance of these applications depends on the quality of the representations learned by the models. In fact, low-noise representations containing highly abstract information, such as functional semantics, facilitate the resolution of these tasks. Indeed, code search requires understanding the objectives of code snippets in order to compare them with a natural language query, while clone detection requires determining whether two code snippets have the same functional semantics. The ability of models to learn representations containing such abstract information is therefore crucial to the successful resolution of these tasks. However, it is still difficult for code models to learn abstract representations that are independent of syntax, such as functional semantics. This thesis is therefore dedicated to developing better techniques for learning code representations via self-supervised learning. More specifically, we focus on two central tasks in software engineering automation requiring a minimum understanding of functional semantics, namely, code search and type 4 clone detection. This work proposes different approaches with different degrees of training. The first, pre-training, consists in learning generic code representations that can be adapted to any problem. The second is fine-tuning, modifying the representations learned for a specific problem. First, we propose a new pre-training algorithm for code models using a regularized non-contrastive method adapted from VICReg [14] enabling the learning of generic representations. Secondly, we propose a new code model refinement objective using knowledge distillation of a set of already refined models, called teachers, on a student model allowing it to learn more abstract representations. The aim of all these contributions is not only to improve code representations and maximize the performance of machine learning models for code, but also to determine the best degree of training to adopt for this purpose. The experimental results and analyses carried out in this thesis are preliminary and do not allow to draw formal conclusions. Nevertheless, it is important to underline that the second contribution outperforms the classical model refinement method for code search. Moreover, the approaches described suggest innovative and unconventional research directions.fr
dcterms.languagefrafr


Files in this item

Thumbnail

This item appears in the following Collection(s)

Show item record

This document disseminated on Papyrus is the exclusive property of the copyright holders and is protected by the Copyright Act (R.S.C. 1985, c. C-42). It may be used for fair dealing and non-commercial purposes, for private study or research, criticism and review as provided by law. For any other use, written authorization from the copyright holders is required.