IBM atidaro CodeNet mašininio mokymosi sistemoms, kurios verčia ir tikrina kodą

IBM pristatė savo CodeNet iniciatyvą, kurios tikslas – suteikti tyrėjams duomenų rinkinį, leidžiantį eksperimentuoti naudojant mašininio mokymosi metodus kuriant programavimo kalbos vertėjus, kodų generatorius ir analizatorius. „CodeNet“ apima 14 milijonų kodų pavyzdžių, kurie išsprendžia 4053 įprastas programavimo problemas, rinkinį. Iš viso kolekcijoje yra apie 500 milijonų kodo eilučių ir ji apima 55 programavimo kalbas, tiek šiuolaikines kalbas, kaip C++, Java, Python ir Go, ir senąsias kalbas, įskaitant COBOL, Pascal ir FORTRAN. Projekto kūriniai platinami pagal Apache 2.0 licenciją, o duomenų rinkinius planuojama platinti viešo domeno forma.

Pavyzdžiai yra anotuoti ir realizuoja identiškus algoritmus skirtingomis programavimo kalbomis. Tikimasi, kad siūlomas rinkinys padės mokyti mašininio mokymosi sistemas ir plėtoti naujoves vertimo ir mašininio kodo analizavimo srityje, panašiai kaip ImageNet anotuotų vaizdų duomenų bazė padėjo kurti modelių atpažinimo ir kompiuterinio matymo sistemas. Įvairūs programavimo konkursai įvardijami kaip vienas pagrindinių kolekcijos formavimo šaltinių.

Skirtingai nuo tradicinių vertėjų, kurie įgyvendinami remiantis transformacijos taisyklėmis, mašininio mokymosi sistemos gali užfiksuoti ir atsižvelgti į kodo naudojimo kontekstą. Konvertuojant iš vienos programavimo kalbos į kitą, kontekstas yra toks pat svarbus kaip ir verčiant iš vienos žmogaus kalbos į kitą. Šis konteksto neatsižvelgimas neleidžia kodo konvertuoti iš senų kalbų, tokių kaip COBOL.

Turėdami didelę algoritmų diegimo skirtingomis kalbomis duomenų bazę, galėsite sukurti universalias mašininio mokymosi sistemas, kurios vietoj tiesioginio vertimo tarp konkrečių kalbų manipuliuoja abstraktesniu kodo vaizdu, nepriklausomai nuo konkrečių programavimo kalbų. Tokia sistema gali būti naudojama kaip vertėjas, verčiantis perduotą kodą bet kuria iš palaikomų kalbų į vidinį abstrakčią atvaizdą, iš kurio vėliau galima sugeneruoti kodą keliomis kalbomis.

Sistema taip pat galės atlikti dvikryptes transformacijas. Pavyzdžiui, bankai ir vyriausybinės agentūros ir toliau naudoja projektus pasenusia COBOL kalba. Mašininiu mokymusi pagrįstas vertėjas galės konvertuoti COBOL kodą į Java reprezentaciją ir, jei reikia, išversti Java fragmentą atgal į COBOL kodą.

Be vertimo tarp kalbų, minimos tokios CodeNet taikymo sritys kaip išmaniųjų kodų paieškos sistemų kūrimas ir klonų aptikimo automatizavimas, optimizatorių ir automatinio kodo taisymo sistemų kūrimas. Visų pirma CodeNet pateiktuose pavyzdžiuose yra metaduomenys, apibūdinantys našumo testavimo rezultatus, gautą programos dydį, atminties suvartojimą ir būseną, leidžiančius atskirti teisingą kodą nuo kodo su klaidomis (norint atskirti teisingą kodą nuo neteisingo, rinkinyje konkrečiai pateikiami pavyzdžiai su klaidomis, kurių dalis – 29.5 proc. Mašininio mokymosi sistema gali atsižvelgti į šiuos metaduomenis, kad sukurtų optimaliausią kodą arba identifikuotų analizuojamo kodo regresijas (sistema gali suprasti, kad pateiktame kode pateiktas algoritmas nėra optimaliai įgyvendintas arba jame yra klaidų).

Šaltinis: opennet.ru

Добавить комментарий