2min

Een team van Google Brain heeft een nieuwe aanpak geschreven om een kunstmatige intelligentie (AI) te maken die wijzigingen in de broncode kan voorspellen aan de hand van aanpassingen in het verleden. Naar eigen zeggen levert de aanpak de beste prestaties en schaalbaarheid van alle opties die tot nu toe getest zijn.

Het maken van een dergelijke AI is uitdagend, aangezien een ontwikkelaar vaak wijzigingen maakt met één of meer doelen in gedachten. “Wijzigingspatronen kunnen niet alleen begrepen worden op het gebied van de wijziging (wat toegevoegd of verwijderd is) of het resultaat ervan (de staat van de code na het toepassen van de wijziging)”, aldus de onderzoekers, meldt Venturebeat.

“Een aanpassing moet begrepen worden op het gebied van de relatie tussen de wijziging en de staat waarin deze gemaakt is.” Wil je een AI zo ver krijgen om een reeks bewerkingen te voorspellen, dan moet er volgens de onderzoekers een representatie zijn van de eerdere bewerkingen waarmee het model het patroon kan generaliseren en toekomstige bewerkingen kan voorspellen.

Ontwikkeling

Het team heeft daarom eerst twee representaties ontwikkeld om intentie-informatie vast te leggen die met de tijd mee schaalt met de lengte van de code-reeksen. Het gaat om expliciete representaties, die bewerkingen in de reeks ’tonen’ als tokens in een 2D-raster, en impliciete representaties, die verdere bewerkingen bevestigen.

Vervolgens maakte het team een machine learning-model dat de relatie tussen de wijzigingen met de context waarin ze gemaakt zijn kan vastleggen, specifiek door de initiële code en de wijzigingen te encoderen, de context samen te stellen en de volgende wijzigingen en hun posities vast te leggen.

Om de generaliseerbaarheid van het systeem te meten, ontwikkelden de onderzoekers een reeks synthetische data geïnspireerd op wijzigingen die mogelijk in echte data voorkomen, maar vereenvoudigd zijn om een duidelijkere interpretatie van de resultaten mogelijk te maken. Daarnaast hebben ze een grote dataset met bewerksequenties van snapshots van een Google code base met acht miljoen wijzigingen van 5.700 ontwikkelaars samengesteld, en die opgedeeld in sets voor training, ontwikkeling en testen.

Betrouwbaarheid

De onderzoekers stellen dat uit experimenten blijkt dat het model betrouwbaar en accuraat posities voorspelde waar een wijziging gemaakt moest worden, evenals de content van die wijziging. De onderzoekers denken dat het model aangepast kan worden om autocomplete-systemen die de historie van wijzigingen negeren te verbeteren, of om zoekopdrachten voor code die ontwikkelaars uit zullen voeren te voorspellen.