IBM avas CodeNet'i masinõppesüsteemide jaoks, mis tõlgivad ja kontrollivad koodi

IBM esitles algatust CodeNet, mille eesmärk on pakkuda teadlastele andmekogumeid, mis võimaldavad katsetada masinõppe meetodite rakendamist tõlkijate loomisel ühest programmeerimiskeelest teise, samuti koodigeneraatorite ja -analüsaatorite loomisel. CodeNet sisaldab kogumit, mis hõlmab 14 miljonit koodinäidet, mis lahendavad 4053 tüüpilist programmeerimisprobleemi. Kogu kogumis on umbes 500 miljonit koodirea ja see katab 55 programmeerimiskeelt, sealhulgas kaasaegsed keeled nagu C++, Java, Python ja Go, samuti vananenud keeled, sealhulgas COBOL, Pascal ja FORTRAN. Projekti tulemused levitatakse Apache 2.0 litsentsi alusel ja andmekogusid plaanitakse jagada avaliku omandina.

Примеры снабжены аннотациями и реализуют идентичные алгоритмы на разных языках программирования. Предполагается, что предложенный набор поможет тренировке систем машинного обучения и развитию инноваций в области трансляции и машинного разбора кода, по аналогии с тем, как БД аннотированных изображений ImageNet помогла развитию систем распознавания образов и машинного зрения. В качестве одного из основных источников формирования коллекции называются различные соревнования по программированию.

В отличие от традиционных трансляторов, реализованных на основе правил преобразования, системы машинного обучения могут улавливать и учитывать контекст использования кода. При преобразовании из одного языка программирования в другой контекст не менее важен, чем при переводе из одного человеческого языка на другой. Именно отсутствие учёта контекста мешает преобразованию кода с устаревших языков, таких как COBOL.

Suur hulk erinevatel t autod ja keeles olemine aitab luua universaalseid masinõppesüsteeme, mis ei kasuta mitte otsest tõlget konkreetsete keelte vahel, vaid manipuleerivad koodi abstraktse, keele sõltumatult esitusega. Sellist süsteemi saab kasutada tõlkena, mis tõlgib edastatud koodi ükskõik milliseks toetatud keeles oma sisemisse abstraktse esitusse, millest saab hiljem genereerida koodi mitmesugustes keeltes.

Samuti suudab süsteem teostada kaheastmelisi teisendusi. Näiteks jätkavad pangad ja riigiasutused vananenud COBOL-keele projekte. Masinõppel põhinev tõlkija suudab COBOL-koodi tõlkida Java keele esituseks ning vajadusel tõlkida Java osa tagasi COBOL-koodiks.

CodeNet'i rakendused hõlmavad mitte ainult tõlkimist erinevate keelte vahel, vaid ka nutikate koodiotsingusüsteemide ja kloonide tuvastamise automatiseerimise loomist, samuti optimeerijat ja koodi automaatset parandamist. Eriti CodeNet'is esitatud näidised on varustatud metainfoga, mis kirjeldab jõudluse testimise tulemusi, programmi lõplikku suurust, mälu kasutamist ja olekut, mis võimaldab eristada korrektset koodi vigasest (et eristada õiget koodi valest, on kogusse spetsiaalselt kaasatud näiteks vead, mida on kokku 29,5%). Masinõppesüsteem võib neid metaandmeid arvesse võtta, et genereerida kõige optimaalsemat koodi või tuvastada regressioone analüüsitavas koodis (süsteem suudab mõista, et edastatud koodi algoritm on realiseeritud mitteoptimaalselt või sisaldab vigu).

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster