IBM avaa CodeNetin koneoppimisjärjestelmille, jotka kääntävät ja tarkistavat koodia

IBM on julkistanut CodeNet-aloitteensa, jonka tavoitteena on tarjota tutkijoille tietojoukko, jonka avulla he voivat kokeilla koneoppimistekniikoiden käyttöä ohjelmointikielen kääntäjien, koodigeneraattoreiden ja analysaattoreiden luomiseen. CodeNet sisältää 14 miljoonan koodiesimerkin kokoelman, jotka ratkaisevat 4053 500 yleistä ohjelmointiongelmaa. Kaiken kaikkiaan kokoelma sisältää noin 55 miljoonaa koodiriviä ja kattaa 2.0 ohjelmointikieltä, molemmat modernit kielet, kuten C++, Java, Python ja Go, sekä vanhat kielet mukaan lukien COBOL, Pascal ja FORTRAN. Projektin kehitystyöt jaetaan Apache XNUMX -lisenssillä ja tietojoukot on tarkoitus jaella julkisesti.

Esimerkit on merkitty ja toteuttavat identtisiä algoritmeja eri ohjelmointikielillä. Ehdotetun sarjan odotetaan auttavan kouluttamaan koneoppimisjärjestelmiä ja kehittämään innovaatioita kääntämisen ja konekoodin jäsentämisen alalla, samalla tavalla kuin ImageNet annotoitu kuvatietokanta auttoi hahmontunnistus- ja tietokonenäköjärjestelmien kehittämisessä. Erilaiset ohjelmointikilpailut mainitaan yhtenä kokoelmanmuodostuksen päälähteistä.

Toisin kuin perinteiset kääntäjät, jotka toteutetaan muunnossääntöjen perusteella, koneoppimisjärjestelmät voivat kaapata ja ottaa huomioon koodin käytön kontekstin. Ohjelmointikielestä toiseen muunnettaessa konteksti on yhtä tärkeä kuin käännettäessä ihmiskielestä toiseen. Tämä kontekstin huomioimatta jättäminen estää koodin muuntamisen vanhoista kielistä, kuten COBOL.

Laaja tietokanta algoritmien toteutuksista eri kielillä auttaa luomaan universaaleja koneoppimisjärjestelmiä, jotka suoran käännöksen sijaan tiettyjen kielten välillä manipuloivat koodin abstraktimpaa esitystä, riippumatta tietyistä ohjelmointikielistä. Tällaista järjestelmää voidaan käyttää kääntäjänä, joka kääntää lähetetyn koodin millä tahansa tuetuista kielistä sen sisäiseen abstraktiin esitykseen, josta koodia voidaan sitten luoda useilla kielillä.

Järjestelmä pystyy myös suorittamaan kaksisuuntaisia ​​muunnoksia. Esimerkiksi pankit ja valtion virastot käyttävät edelleen projekteja vanhentuneella COBOL-kielellä. Koneoppimiseen perustuva kääntäjä pystyy muuttamaan COBOL-koodin Java-esitykseen ja tarvittaessa kääntämään Java-fragmentin takaisin COBOL-koodiksi.

Kielten välisen kääntämisen lisäksi mainitaan CodeNetin käyttöalueet kuten älykkäiden koodihakujärjestelmien luominen ja kloonien havaitsemisen automatisointi sekä optimoijien ja automaattisten koodinkorjausjärjestelmien kehittäminen. Erityisesti CodeNetissä esitetyt esimerkit on varustettu metatiedoilla, jotka kuvaavat suorituskykytestauksen tuloksia, tuloksena olevaa ohjelman kokoa, muistin kulutusta ja tilaa, joiden avulla voimme erottaa oikean koodin virheellisestä koodista (oikean koodin erottamiseksi väärästä koodista, kokoelma sisältää erityisesti virheellisiä esimerkkejä, joiden osuus on 29.5 %). Koneoppimisjärjestelmä voi ottaa nämä metatiedot huomioon luodakseen optimaalisimman koodin tai tunnistaakseen regressioita analysoidusta koodista (järjestelmä voi ymmärtää, että lähetetyn koodin algoritmi ei ole toteutettu optimaalisesti tai sisältää virheitä).

Lähde: opennet.ru

Lisää kommentti