
Automated Source Code Completion by Retrieval-oriented Unsupervised Learning
Öffnen
Autor:in
Gutachter:in
Ulges, Adrian
Villmow, Johannes
Datum
2021-12-08
DOI
Metadata
Zur Langanzeige
Masterarbeit

Zusammenfassung
In dieser Thesis wird ein Modell vorgestellt, welches große Lücken im Quellcode der
Programmiersprachen Java und Python füllen kann. Das Modell besteht aus zwei Untermodellen:
einem Retriever und einem Generator. Das Besondere an dem Modell ist der Fuision-in-Decoder
und retrieval-basierte Ansatz, der auf einer punkte-basierten Bewertung (Relevance Scores) beruht.
Mit dem aufgezeigten Training kann der Retriever auf einer nicht markierten Sammlung (Corpus)
von Quellcode trainiert werden. Das Modell lernt, indem es zufällig ausgeschnittene Lücken in den
Token-Sequenzen einer Quellcode-Passage füllt, mit der Unterstützung von Gold Passagen – dies
sind vollständige Passagen ohne maskierte Lücke, von welchen die Abfrage (Query) abstammt –
oder anderen Quellcode-Passagen aus dem Corpus. Bevor eine Vorhersage für eine Lücke erstellt
wird, wird ein großer Corpus aus Quellcode-Schnippseln nach hilfreichen Passagen durchsucht, die
dem Modell helfen sollen, eine bessere Vorhersage abzugeben. Ein Kernaspekt ist die Benutzung
von Relevance Scores, welche die Nützlichkeit einer Passage für einen gegebenen Query darstellt.
Diese Scores werden vom Generator erzeugt und dem Retriever im Training vorgegeben, um diese
mit seinem Encoding nachzustellen. Das Generator Training ist abhängig von dem Retriever, da nur
einige wenige Passagen zeitgleich vom Generator verarbeitet werden können, um aus diesen
Informationen zu kombinieren. Abschließend wird ein Index für den ganzen Corpus erzeugt, um
eine k-Nearest-Neighbour Suche der vom Retriever encodierten Passagen durchführen zu können.
Das Modell ist in der Lage, mit dem iterativen Training zu lernen und sich so zu verbessern, dass es
die Grund-Modelle übertrifft mit denen es initialisiert wurde. Einige Verbesserungen an der
Architektur des Modells sind inspiriert von den Beobachtungen des Modells in den durchgeführten
Versuchsreihen. Zum Beispiel werden mehr nicht-hilfreiche Passagen künstlich hinzugegeben, um
den Unterschied in den Relevance Scores zwischen hilfreichen und nicht-hilfreichen Passagen zu
vergrößern. Von dem Training des Retrievers mit Gold Passagen profitiert das Gesamtmodell, da
der Retriever dem Generator ermöglicht, andere Kombinationen von Retriever und Generator, die
nicht mit Gold Passagen trainiert wurden, um bis zu 31% zu übertreffen.
This thesis proposes a model to predict large gaps inside source code written in the programming
languages java and python. The model is internally split into two sub-models: retriever and
generator. The speciality of the model is the Fusion-in-Decoder- and retrieval-approach based on
relevance scores. With the proposed training a retriever can be trained unsupervised on a corpus of
source code. The model learns by filling in random masked out token sequences from a source code
query, with the help of gold passages – the full passage without the masked out part from which a
query originates – or other source code passages from the corpus. Before generating a prediction, a
large document corpus consisting of source code snippets is searched to find useful passages that
assist the model in giving a better prediction of the missing code. A core aspect is the usage of
relevance scores that represent the usefulness of a given passage for answering a specific query.
These scores are produced by the generator and given to the retriever in training to replicate them
with its encoding. The generator training depends in turn on the retriever, as only some passages can
be processed simultaneously by the generator to perform passages combination. Afterwards an
index is applied to the retriever-encoded corpus of passages to conduct a k-nearest-neighbour
search.
The model was built iteratively and was continuously evaluated. The resulting model is able to
improve with iterative learning and outperforms the base models it was initialized with. Some
changes in the model architecture were inspired by observation of its behaviour, e.g. providing the
retriever in its training with negative samples to push the distinguishment of useful and useless
passages to a corresponding query helps the retriever to score better in the experiments. The training
of the model benefits from using gold passages in the training of the retriever, as the resulting
retriever enables the generator to outperform a generator-retriever-combination that was not trained
with gold passages up to 31% depending on the mask length.
Schlagworte
Machine Learning
Retrieval
Unsupervised
NLP
Source Code Infilling
Retrieval
Unsupervised
NLP
Source Code Infilling
DDC-Klassifikation
005 Computerprogrammierung, Computerprogramme, Daten
Umfang
II, 72 Seiten
Einrichtung
Fachbereich Design Informatik Medien
Link zur Veröffentlichung
Sammlungen
BibTeX
@masterthesis{Scheid2021,
author={Scheid, David},
title={Automated Source Code Completion by Retrieval-oriented Unsupervised Learning},
pages={II, 72 Seiten},
month={12},
year={2021},
publisher={Hochschule RheinMain},
school={Hochschule RheinMain, Wiesbaden},
url={https://hlbrm.pur.hebis.de/xmlui/handle/123456789/29},
doi={10.25716/pur-17}
}