HyperAIHyperAI
il y a 2 mois

Break-It-Fix-It : Apprentissage non supervisé pour la réparation de programmes

Yasunaga, Michihiro ; Liang, Percy
Break-It-Fix-It : Apprentissage non supervisé pour la réparation de programmes
Résumé

Nous abordons les tâches de réparation : étant donné un juge (par exemple, un compilateur) qui évalue la qualité d'une entrée, l'objectif est de former un correcteur capable de transformer un exemple défectueux (par exemple, du code avec des erreurs de syntaxe) en un exemple correct (par exemple, du code sans erreurs de syntaxe). Les travaux existants créent des données d'entraînement composées de paires (défectueuses, correctes) en corrompant des exemples corrects à l'aide d'heuristiques (par exemple, en supprimant des jetons). Cependant, les correcteurs formés sur ces données générées artificiellement ne généralisent pas bien à la distribution réelle des entrées défectueuses. Pour combler cette lacune, nous proposons une nouvelle approche d'entraînement appelée Break-It-Fix-It (BIFI), qui repose sur deux idées clés : (i) nous utilisons le juge pour vérifier la sortie du correcteur sur des entrées réelles défectueuses et ajoutons les sorties correctes (réparées) aux données d'entraînement ; et (ii) nous formons un corrupteur pour générer du code défectueux réaliste à partir de code correct. Sur la base de ces idées, nous mettons à jour itérativement le corrupteur et le correcteur tout en les utilisant conjointement pour générer davantage de données appariées. Nous évaluons BIFI sur deux jeux de données de réparation de code : GitHub-Python, un nouveau jeu de données que nous introduisons où l'objectif est de réparer du code Python avec des erreurs d'analyse AST ; et DeepFix, où l'objectif est de réparer du code C avec des erreurs de compilation. BIFI surpassse les méthodes existantes, atteignant une précision de réparation de 90,5 % sur GitHub-Python (+28,5 %) et 71,7 % sur DeepFix (+5,6 %). Il convient de noter que BIFI n'a besoin d'aucune donnée étiquetée ; nous espérons qu'il constituera un point de départ solide pour l'apprentissage non supervisé diversifié des tâches de réparation.

Break-It-Fix-It : Apprentissage non supervisé pour la réparation de programmes | Articles de recherche récents | HyperAI