Techniky strojového učení pro rozpoznávání vzorů zdrojového kódu
Machine Learning Techniques for Source Code Pattern Recognition
Typ dokumentu
bakalářská prácebachelor thesis
Autor
Rudolf Raevskiy
Vedoucí práce
Kovalenko Alexander
Oponent práce
Donat-Bouillud Pierre
Studijní obor
Znalostní inženýrstvíStudijní program
Informatika 2009Instituce přidělující hodnost
katedra aplikované matematikyPráva
A university thesis is a work protected by the Copyright Act. Extracts, copies and transcripts of the thesis are allowed for personal use only and at one?s own expense. The use of thesis should be in compliance with the Copyright Act http://www.mkcr.cz/assets/autorske-pravo/01-3982006.pdf and the citation ethics http://knihovny.cvut.cz/vychova/vskp.htmlVysokoškolská závěrečná práce je dílo chráněné autorským zákonem. Je možné pořizovat z něj na své náklady a pro svoji osobní potřebu výpisy, opisy a rozmnoženiny. Jeho využití musí být v souladu s autorským zákonem http://www.mkcr.cz/assets/autorske-pravo/01-3982006.pdf a citační etikou http://knihovny.cvut.cz/vychova/vskp.html
Metadata
Zobrazit celý záznamAbstrakt
Automatizované porozumění sémantice kódu je klíčové pro vývojáře při psaní spolehlivého a optimalizovaného kódu. V posledních letech roste zájem o aplikaci strojového učení ve zdrojovém kódu s cílem automaticky odhalovat chyby, komentovat kód nebo jej pochopit a vylepšit. Tato práce uvádí techniky hlubokého učení aplikované na různé úrovně abstrakce zdrojového kódu. Experimentujeme se souborem dat, který se skládá ze zdrojového kódu jazyka R. Jazyk R má velkou komunitu převážně statistiků. Knihovny jazyka R však mají tendenci obsahovat neoptimální kód. Hlavním přínosem této práce je model natrénovaný na velkém souboru dat R, který je prvním krokem k automatizovanému nástroji pro psaní lepšího kódu R. Zaměřujeme se především na abstraktní syntaktické stromy (Abstract Syntax Trees, AST), ale uvažujeme i o jiných formách reprezentace. Různé abstrakce přidávají vstupním datům strukturu, a pomáhají tak lépe zobecňovat soubory dat. Trénujeme a vyhodnocujeme několik modelů založených na různých reprezentacích kódu. Jako hlavní model pro tuto úlohu byla vybrána architektura založená na transformerech, protože v této oblasti dosahuje lepších výsledků než jiné modely. Trénování modelu na velkém souboru dat R je prvním krokem k automatizovanému nástroji pro psaní lepšího kódu R. Výsledkem je RASTaBERTa, který je podle nás, nejmodernějším modelem založeným na transformátorech pro jazyk R a může být použit k dalšímu trénování pro specifické úlohy, jako je klasifikace, detekce chyb a anomálií, oprava chyb atd. The automated understanding of code semantics is crucial for helping developers write reliable and optimized code. In recent years, there has been a growing interest in applying machine learning to source code, with the aim of automatically discovering bugs, commenting or understanding and improving the code. This work reports deep learning techniques applied to various levels of abstraction of the source code. We experiment with a dataset consisting of R language source code. R language has a large community of mostly statisticians. However, R libraries are prone to have suboptimal code. The main contribution of this work is a model trained on a large R dataset, which is the first step toward an automated tool to write a better R code. We primarily focus on Abstract Syntax Trees (AST), considering other representations forms just as well. Different abstractions add a structure to the input and therefore help to better generalize across the dataset. We train and evaluate several models based on various code representations. The transformer-based architecture was chosen as a backbone model for the current task, as it outperforms its counterparts in this domain. Training a model on a large R dataset is the first step toward automatized tool to write a better R code. As a result of RASTaBERTa, which is, to the best of our knowledge, the state-of-the-art transformer-based model for the R language and can be used for further training for specific tasks such as classification, bugs, and anomalies detection, bug-fix, etc.
Kolekce
- Bakalářské práce - 18105 [295]