IBM åbner CodeNet til maskinlæringssystemer, der oversætter og verificerer kode

IBM har afsløret sit CodeNet-initiativ, som har til formål at give forskere et datasæt, der giver dem mulighed for at eksperimentere med brugen af ​​maskinlæringsteknikker til at skabe programmeringssprogsoversættere, kodegeneratorer og analysatorer. CodeNet inkluderer en samling af 14 millioner kodeeksempler, der løser 4053 almindelige programmeringsproblemer. Samlingen indeholder i alt omkring 500 millioner linjer kode og dækker 55 programmeringssprog, både moderne sprog som C++, Java, Python og Go, og ældre sprog, herunder COBOL, Pascal og FORTRAN. Projektets udviklinger distribueres under Apache 2.0-licensen, og datasættene planlægges distribueret i form af offentligt domæne.

Eksemplerne er kommenteret og implementerer identiske algoritmer i forskellige programmeringssprog. Det forventes, at det foreslåede sæt vil hjælpe med at træne maskinlæringssystemer og udvikle innovationer inden for oversættelse og maskinkodeparsing, svarende til hvordan ImageNet-annoterede billeddatabasen hjalp med udviklingen af ​​mønstergenkendelse og computersynssystemer. Forskellige programmeringskonkurrencer er nævnt som en af ​​hovedkilderne til samlingsdannelse.

I modsætning til traditionelle oversættere, som er implementeret baseret på transformationsregler, kan maskinlæringssystemer fange og tage højde for konteksten af ​​kodebrug. Når man konverterer fra et programmeringssprog til et andet, er konteksten lige så vigtig, som når man oversætter fra et menneskeligt sprog til et andet. Denne mangel på kontekstovervejelse er det, der forhindrer kode i at blive konverteret fra ældre sprog som COBOL.

At have en stor database med algoritmeimplementeringer på forskellige sprog vil hjælpe med at skabe universelle maskinlæringssystemer, der i stedet for direkte oversættelse mellem specifikke sprog manipulerer en mere abstrakt repræsentation af koden, uafhængig af specifikke programmeringssprog. Et sådant system kan bruges som en oversætter, der oversætter den transmitterede kode på et hvilket som helst af de understøttede sprog til dets interne abstrakte repræsentation, hvorfra kode derefter kan genereres på flere sprog.

Systemet vil også være i stand til at udføre tovejstransformationer. For eksempel fortsætter banker og offentlige myndigheder med at bruge projekter på det forældede COBOL-sprog. En maskinlæringsbaseret oversætter vil være i stand til at konvertere COBOL-kode til en Java-repræsentation og om nødvendigt oversætte Java-fragmentet tilbage til COBOL-kode.

Ud over oversættelse mellem sprog, nævnes anvendelsesområder for CodeNet som oprettelse af smarte kodesøgningssystemer og automatisering af klondetektering samt udvikling af optimizere og automatiske kodekorrektionssystemer. Især eksemplerne præsenteret i CodeNet er udstyret med metadata, der beskriver resultaterne af ydeevnetest, den resulterende programstørrelse, hukommelsesforbrug og tilstand, hvilket gør det muligt for os at skelne korrekt kode fra kode med fejl (for at skelne korrekt kode fra forkert kode, indsamling omfatter specifikt eksempler med fejl, hvoraf andelen er 29.5 %). Et maskinlæringssystem kan tage højde for disse metadata for at generere den mest optimale kode eller for at identificere regressioner i den analyserede kode (systemet kan forstå, at algoritmen i den indsendte kode ikke er optimalt implementeret eller indeholder fejl).

Kilde: opennet.ru

Tilføj en kommentar