DeepMind, mis on tuntud oma tehisintellekti ja närvivõrkude arenduste poolest, mis suudavad mängida arvuti- ja lauamänge inimtasemel, esitles projekti AlphaCode, mis arendab masinõppe süsteemi koodi genereerimiseks. See suudab osaleda programmeerimisvõistlustel platvormil Codeforces ja näidata keskmisi tulemusi. Arenduse peamine omadus on võime genereerida koodi keeltes Python või C++, võttes sisendiks ingliskeelse ülesande sõnastuse.
Süsteemi testimiseks valiti välja 10 uut Codeforces'i võistlust, milles osales üle 5000 osaleja, ja mis toimusid pärast masinõppe mudeli koolituse lõpetamist. Ülesannete täitmise tulemused võimaldasid AlphaCode'il siseneda nende võistluste reitingu keskmise taseme lähedale (54,3%). Prognoositav üldine reiting AlphaCode'i jaoks oli 1238 punkti, mis tagab koha Top 28% seas kõigist Codeforces'i osalejatest, kes on viimase 6 kuu jooksul vähemalt korra osalenud võistlustel. Tuleb märkida, et projekt on endiselt arendusstaadiumis ja tulevikus on plaanis parandada genereeritud koodi kvaliteeti ning arendada AlphaCode'i suunas süsteemide poole, mis aitavad koodi kirjutada, või rakenduste arendamise vahendite poole, mida saavad kasutada inimesed, kellel pole programmeerimisoskusi.
Projektis kasutatakse "Transformer" neurovõrgu arhitektuuri koos proovivõtu ja filtreerimise meetoditega, mis võimaldavad genereerida erinevaid ettearvamatuid koodiversioone, mis vastavad loomuliku keele tekstile. Pärast filtreerimist, klasterdamist ja reastamist sorteeritakse genereeritud variantide voost välja kõige optimaalsem töötav kood, mida seejärel kontrollitakse õige tulemuse saavutamise osas (iga võistluse ülesandes on näidatud sisendandmed ja vastav tulemus, mis tuleb programmi täitmisel saavutada).

Masinõppe süsteemi rohkete treeningute jaoks kasutati GitHubi avalikes reposteeringutes olemasolevat koodibaasi. Pärast esmase mudeli ettevalmistamist toimus optimeerimisfaas, mis viidi ellu koodikogumi põhjal, mis hõlmas Codeforces, CodeChef, HackerEarth, AtCoder ja Aizu pakutud ülesannete ja lahenduste näiteid. Kokku kasutati treeninguks 715 GB koodi GitHubist ja üle miljoni näite standardsete võistlusülesannete lahendustest. Enne koodi genereerimisele üleminekut läbis ülesande tekst normaliseerimise faasi, mille käigus välistasime kõik ebaolulise ja jätsime alles vaid olulised osad.

Allikas: opennet.ru
