IBM otvara CodeNet za sustave strojnog učenja koji prevode i provjeravaju kod

IBM je predstavio svoju inicijativu CodeNet koja ima za cilj pružiti istraživačima skup podataka koji im omogućuje eksperimentiranje s korištenjem tehnika strojnog učenja za stvaranje prevoditelja programskih jezika, generatora koda i analizatora. CodeNet uključuje zbirku od 14 milijuna primjera koda koji rješavaju 4053 uobičajena programska problema. Ukupno, zbirka sadrži oko 500 milijuna linija koda i pokriva 55 programskih jezika, kako modernih jezika kao što su C++, Java, Python i Go, tako i naslijeđenih jezika uključujući COBOL, Pascal i FORTRAN. Razvoj projekta distribuira se pod licencom Apache 2.0, a skupovi podataka planiraju se distribuirati u obliku javne domene.

Primjeri su označeni i implementiraju identične algoritme u različitim programskim jezicima. Očekuje se da će predloženi set pomoći u obuci sustava za strojno učenje i razvoju inovacija u području prevođenja i parsiranja strojnog koda, slično kao što je ImageNet baza podataka s označenim slikama pomogla razvoju sustava za prepoznavanje uzoraka i računalnog vida. Kao jedan od glavnih izvora formiranja zbirki navode se razna natjecanja u programiranju.

Za razliku od tradicionalnih prevoditelja, koji se implementiraju na temelju pravila prevođenja, sustavi strojnog učenja mogu uhvatiti i uzeti u obzir kontekst korištenja koda. Pri prevođenju iz jednog programskog jezika u drugi, kontekst je jednako važan kao i pri prevođenju s jednog ljudskog jezika na drugi. Ovaj nedostatak razmatranja konteksta je ono što sprječava konverziju koda iz naslijeđenih jezika kao što je COBOL.

Posjedovanje velike baze podataka implementacija algoritama na različitim jezicima pomoći će u stvaranju univerzalnih sustava strojnog učenja koji, umjesto izravnog prijevoda između određenih jezika, manipuliraju apstraktnijim predstavljanjem koda, neovisno o određenim programskim jezicima. Takav se sustav može koristiti kao prevoditelj, prevodeći poslani kod na bilo kojem od podržanih jezika u njegov interni apstraktni prikaz, iz kojeg se potom može generirati kod na više jezika.

Sustav će također moći izvoditi dvosmjerne transformacije. Na primjer, banke i vladine agencije nastavljaju koristiti projekte u zastarjelom jeziku COBOL. Prevoditelj temeljen na strojnom učenju moći će pretvoriti COBOL kod u Java reprezentaciju i, ako je potrebno, prevesti Java fragment natrag u COBOL kod.

Osim prevođenja između jezika, navedena su područja primjene CodeNet-a kao što su stvaranje pametnih sustava za pretraživanje koda i automatizacija otkrivanja klonova, kao i razvoj optimizatora i sustava za automatsko ispravljanje koda. Konkretno, primjeri predstavljeni u CodeNetu opremljeni su metapodacima koji opisuju rezultate testiranja performansi, rezultirajuću veličinu programa, potrošnju memorije i stanje, što nam omogućuje razlikovanje ispravnog koda od koda s pogreškama (kako bismo razlikovali točan kod od netočnog koda, zbirka posebno uključuje primjere s pogreškama, čiji je udio 29.5%). Sustav strojnog učenja može uzeti u obzir te metapodatke kako bi generirao najoptimalniji kod ili identificirao regresije u analiziranom kodu (sustav može shvatiti da algoritam u poslanom kodu nije optimalno implementiran ili sadrži pogreške).

Izvor: opennet.ru

Dodajte komentar