Az IBM megnyitja a CodeNet kódot lefordító és ellenőrző gépi tanulási rendszerekhez

Az IBM bemutatta CodeNet kezdeményezését, amelynek célja, hogy olyan adatkészletet biztosítson a kutatóknak, amely lehetővé teszi számukra, hogy gépi tanulási technikák használatával kísérletezzenek programnyelvi fordítók, kódgenerátorok és elemzők létrehozására. A CodeNet 14 millió kódpéldát tartalmaz, amelyek 4053 általános programozási problémát oldanak meg. A gyűjtemény összesen mintegy 500 millió kódsort tartalmaz, és 55 programozási nyelvet fed le, mind a modern nyelveket, mint a C++, a Java, a Python és a Go, valamint a régebbi nyelveket, beleértve a COBOL-t, a Pascal-t és a FORTRAN-t. A projekt fejlesztései Apache 2.0 licenc alatt kerülnek terjesztésre, az adatállományok pedig a tervek szerint publikus formában kerülnek terjesztésre.

A példák megjegyzésekkel ellátottak, és azonos algoritmusokat valósítanak meg különböző programozási nyelveken. A javasolt készlet várhatóan elősegíti a gépi tanulási rendszerek képzését, valamint innovációk fejlesztését a fordítás és a gépi kódelemzés területén, hasonlóan ahhoz, ahogy az ImageNet annotált képadatbázis segítette a mintafelismerő és számítógépes látásrendszerek fejlesztését. A gyűjteményalapítás egyik fő forrásaként a különféle programversenyeket említik.

A hagyományos fordítókkal ellentétben, amelyeket az átalakítási szabályok alapján hajtanak végre, a gépi tanulási rendszerek képesek rögzíteni és figyelembe venni a kódhasználat kontextusát. Amikor egyik programozási nyelvről a másikra konvertálunk, a kontextus ugyanolyan fontos, mint az egyik emberi nyelvről a másikra történő fordításkor. A kontextus figyelembevételének hiánya akadályozza meg a kód konvertálását olyan régebbi nyelvekről, mint például a COBOL.

A különböző nyelveken végrehajtott algoritmus-megvalósítások nagy adatbázisa segít olyan univerzális gépi tanulási rendszerek létrehozásában, amelyek a konkrét nyelvek közötti közvetlen fordítás helyett a kód absztraktabb megjelenítését manipulálják, függetlenül az adott programozási nyelvektől. Egy ilyen rendszer fordítóként használható, és a továbbított kódot bármely támogatott nyelven lefordítja belső absztrakt reprezentációjára, amelyből aztán több nyelven is előállítható a kód.

A rendszer képes lesz kétirányú transzformáció végrehajtására is. Például a bankok és a kormányzati szervek továbbra is az elavult COBOL nyelven használják a projekteket. A gépi tanuláson alapuló fordító képes lesz a COBOL kódot Java reprezentációvá alakítani, és szükség esetén a Java töredéket visszafordítani COBOL kódba.

A nyelvek közötti fordítás mellett megemlítik a CodeNet olyan alkalmazási területeit, mint az intelligens kódkereső rendszerek létrehozása és a klónfelismerés automatizálása, valamint az optimalizálók és az automatikus kódjavító rendszerek fejlesztése. A CodeNetben bemutatott példák különösen a teljesítményteszt eredményeit, az eredményül kapott programméretet, a memóriafogyasztást és az állapotot leíró metaadatokkal vannak felszerelve, amelyek lehetővé teszik a helyes kód és a hibás kód megkülönböztetését (a helyes kód és a hibás kód megkülönböztetése érdekében, a gyűjtemény kifejezetten tartalmaz hibás példákat, amelyek aránya 29.5%). A gépi tanulási rendszer figyelembe tudja venni ezeket a metaadatokat a legoptimálisabb kód létrehozásához vagy az elemzett kód regresszióinak azonosításához (a rendszer megérti, hogy a beküldött kódban lévő algoritmus nincs optimálisan implementálva, vagy hibákat tartalmaz).

Forrás: opennet.ru

Hozzászólás