Společnost DeepMind, která získala popularitu díky svým vývojům v oblasti umělé inteligence a vytváření neuronových sítí schopných hrát počítačové a deskové hry na úrovni člověka, představila projekt AlphaCode, který rozvíjí systém strojového učení pro generaci kódu, schopný účastnit se soutěží v programování na platformě Codeforces a dosahovat průměrných výsledků. Klíčovou vlastností vývoje je schopnost generovat kód v programovacích jazycích Python nebo C++, přičemž přijímá text s popisem úkolu v anglickém jazyce.
Pro testování systému bylo vybráno 10 nových soutěží Codeforces s více než 5000 účastníky, které proběhly po dokončení trénování modelu strojového učení. Výsledky plnění úkolů umožnily systému AlphaCode umístit se přibližně uprostřed žebříčku uvedených soutěží (54,3 %). Očekávané celkové hodnocení AlphaCode dosáhlo 1238 bodů, což zajišťuje zařazení do Top 28 % mezi všemi účastníky Codeforces, kteří se alespoň jednou zúčastnili soutěží v posledních 6 měsících. Je třeba poznamenat, že projekt je zatím v počáteční fázi vývoje a plánuje se v budoucnu zvýšit kvalitu generovaného kódu a také rozvíjet AlphaCode směrem k systémům, které pomáhají při psaní kódu, nebo nástrojům pro vývoj aplikací, které budou moci používat lidé bez znalosti programování.
V projektu je použita architektura neuronové sítě „Transformer“ v kombinaci s metodami vzorkování a filtrování, které umožňují generovat různé nepředvídatelné varianty kódu odpovídající textu v přirozeném jazyce. Po filtrování, klasifikaci a hodnocení se z formovaného toku variant vyřazuje nejoptimálnější funkční kód, který je poté ověřen, zda produkuje správný výsledek (v každém úkolu soutěže je uveden příklad vstupních dat a odpovídající výsledek, který by měl být získán po provedení programu).

Pro hrubý trénink systému strojového učení byla využita kódová základna dostupná v veřejných repozitářích GitHub. Po přípravě počátečního modelu probíhala fáze optimalizace, realizovaná na základě kolekce kódu s příklady úloh a řešeními nabízenými účastníkům soutěží Codeforces, CodeChef, HackerEarth, AtCoder a Aizu. Celkem bylo pro trénink použito 715 GB kódu z GitHubu a více než milion příkladů řešení typických úloh soutěží. Před přechodem k generování kódu text úlohy procházel fází normalizace, během které bylo odstraněno vše zbytečné a zůstaly pouze významné části.

Zdroj: opennet.ru
