IBM opent CodeNet voor machine learning-systemen die code vertalen en verifiëren

IBM heeft zijn CodeNet-initiatief onthuld, dat tot doel heeft onderzoekers te voorzien van een dataset waarmee ze kunnen experimenteren met het gebruik van machine learning-technieken om programmeertaalvertalers, codegeneratoren en analysers te creëren. CodeNet bevat een verzameling van 14 miljoen codevoorbeelden die 4053 veelvoorkomende programmeerproblemen oplossen. In totaal bevat de collectie zo'n 500 miljoen regels code en omvat ze 55 programmeertalen, zowel moderne talen als C++, Java, Python en Go, als oudere talen als COBOL, Pascal en FORTRAN. De ontwikkelingen van het project worden gedistribueerd onder de Apache 2.0-licentie en het is de bedoeling dat de datasets worden verspreid in de vorm van publiek domein.

De voorbeelden zijn geannoteerd en implementeren identieke algoritmen in verschillende programmeertalen. Er wordt verwacht dat de voorgestelde set zal helpen bij het trainen van machine learning-systemen en het ontwikkelen van innovaties op het gebied van vertaling en het parseren van machinecodes, vergelijkbaar met hoe de geannoteerde beelddatabase van ImageNet de ontwikkeling van patroonherkenning en computer vision-systemen heeft geholpen. Verschillende programmeerwedstrijden worden genoemd als een van de belangrijkste bronnen van collectievorming.

In tegenstelling tot traditionele vertalers, die worden geïmplementeerd op basis van vertaalregels, kunnen machine learning-systemen de context van codegebruik vastleggen en er rekening mee houden. Bij het converteren van de ene programmeertaal naar de andere is context net zo belangrijk als bij het vertalen van de ene menselijke taal naar de andere. Dit gebrek aan contextoverweging verhindert dat code wordt geconverteerd vanuit oudere talen zoals COBOL.

Het hebben van een grote database met algoritme-implementaties in verschillende talen zal helpen bij het creëren van universele machine learning-systemen die, in plaats van directe vertaling tussen specifieke talen, een meer abstracte weergave van de code manipuleren, onafhankelijk van specifieke programmeertalen. Een dergelijk systeem kan worden gebruikt als vertaler, waarbij de verzonden code in een van de ondersteunde talen wordt vertaald naar de interne abstracte weergave, van waaruit code vervolgens in meerdere talen kan worden gegenereerd.

Het systeem zal ook bidirectionele transformaties kunnen uitvoeren. Banken en overheidsinstanties blijven bijvoorbeeld projecten gebruiken in de verouderde COBOL-taal. Een op machine learning gebaseerde vertaler kan COBOL-code omzetten in een Java-representatie en, indien nodig, het Java-fragment terugvertalen naar COBOL-code.

Naast de vertaling tussen talen worden toepassingsgebieden van CodeNet genoemd, zoals het creëren van slimme codezoeksystemen en de automatisering van kloondetectie, evenals de ontwikkeling van optimizers en automatische codecorrectiesystemen. In het bijzonder zijn de voorbeelden die in CodeNet worden gepresenteerd voorzien van metagegevens die de resultaten beschrijven van prestatietests, de resulterende programmagrootte, het geheugenverbruik en de status ervan, waardoor we correcte code kunnen onderscheiden van code met fouten (om correcte code van onjuiste code te onderscheiden, de verzameling bevat specifiek voorbeelden met fouten, waarvan het aandeel 29.5%) is. Een machine learning-systeem kan met deze metadata rekening houden om de meest optimale code te genereren of om regressies in de geanalyseerde code te identificeren (het systeem kan begrijpen dat het algoritme in de ingediende code niet optimaal is geïmplementeerd of fouten bevat).

Bron: opennet.ru

Voeg een reactie