Компанията DeepMind, известна с разработките си в областта на изкуствения интелект и създаването на невронни мрежи, способни да играят в компютърни и настолни игри на ниво сравнимо с човешкото, представи проекта AlphaCode, който развива система за машинно обучение за генериране на код, способна да участва в състезания по програмиране на платформата Codeforces и да показва среден резултат. Ключовата характеристика на разработката е способността да генерира код на языците Python или C++, приемайки текстово описание на задачата на английски език.
За тестване на системата бяха избрани 10 нови състезания Codeforces с над 5000 участници, проведени след завършване на обучението на модела за машинно обучение. Резултатите от изпълнението на задачите позволиха на системата AlphaCode да влезе в около средата на класирането на посочените състезания (54.3%). Прогнозираният общ рейтинг на AlphaCode възлезе на 1238 точки, което осигурява влизане в Top 28% сред всички участници в Codeforces, които поне веднъж са участвали в състезания през последните 6 месеца. Отбелязва се, че проектът все още е в ранна фаза на развитие и в бъдеще се планира повишаване на качеството на генерирания код, както и развитие на AlphaCode към системи, помагащи в писането на код, или средства за разработка на приложения, с които могат да работят хора без умения за програмиране.
В проекта се използва архитектура на невронната мрежа „Transformer“ в комбинация с методи за семплиране и филтриране, позволяващи генерирането на различни непредсказуеми варианти на код, съответстващи на текста на естествения език. След филтриране, клъстеризиране и ранжиране от създадения поток от варианти се отсеират най-оптималния работещ код, който след това се проверява за получаване на правилен резултат (в всяка задача на състезанията се посочва пример за входни данни и съответстващият резултат, който трябва да бъде получен след изпълнението на програмата).

За груба тренировка на машинно обучение беше използвана кодова база, достъпна в публичните репозитории на GitHub. След подготовката на началния модел, се извърши фаза на оптимизация, реализирана на базата на колекция код с примери за задачи и решения, предлагани на участниците в състезанията Codeforces, CodeChef, HackerEarth, AtCoder и Aizu. Общо за тренировката беше използвано 715 ГБ код от GitHub и над милион примери за решения на типови задачи от състезания. Преди преминаване към генерирането на код, текстът на задачата премина през фаза на нормализация, при която се изключваше всичко излишно и оставаха само значителните части.

Източник: opennet.ru
