Firma DeepMind, znana z osiągnięć w dziedzinie sztucznej inteligencji i budowy sieci neuronowych zdolnych do grania w gry komputerowe i planszowe na poziomie człowieka, przedstawiła projekt AlphaCode, polegający na opracowaniu systemu uczenia maszynowego do generowania kodu, który może uczestniczyć w konkursach programistycznych na platformie Codeforces i wykaż się średnim wynikiem. Kluczową cechą rozwoju jest możliwość generowania kodu w Pythonie lub C++, przyjmując jako dane wejściowe tekst z opisem problemu w języku angielskim.
Do testów systemu wybrano 10 nowych konkursów Codeforces, w których wzięło udział ponad 5000 uczestników, odbywających się po zakończeniu szkolenia z modelu uczenia maszynowego. Wyniki realizacji zadań pozwoliły systemowi AlphaCode znaleźć się mniej więcej w połowie rankingów tych konkursów (54.3%). Przewidywana ogólna ocena AlphaСode wyniosła 1238 punktów, co zapewnia wejście do Top 28% wszystkich uczestników Codeforces, którzy brali udział w konkursach przynajmniej raz w ciągu ostatnich 6 miesięcy. Zaznacza się, że projekt jest jeszcze w początkowej fazie rozwoju i w przyszłości planowana jest poprawa jakości generowanego kodu, a także rozwój AlphaCode w kierunku systemów pomagających w pisaniu kodu, czy narzędzi do tworzenia aplikacji, które można używane przez osoby nie posiadające umiejętności programowania.
W projekcie wykorzystano architekturę sieci neuronowej Transformer w połączeniu z technikami próbkowania i filtrowania w celu wygenerowania różnych nieprzewidywalnych wariantów kodu odpowiadających tekstowi w języku naturalnym. Po przefiltrowaniu, grupowaniu i rankingu, z wygenerowanego strumienia opcji eliminowany jest najbardziej optymalnie działający kod, który następnie jest sprawdzany pod kątem uzyskania prawidłowego wyniku (każde zadanie konkursowe wskazuje przykład danych wejściowych i odpowiadający temu przykładowi wynik , który należy uzyskać po uruchomieniu programu).
Aby z grubsza przeszkolić system uczenia maszynowego, wykorzystaliśmy bazę kodu dostępną w publicznych repozytoriach GitHub. Po przygotowaniu wstępnego modelu przeprowadzono fazę optymalizacji, opartą na zbiorze kodu z przykładowymi problemami i rozwiązaniami zaproponowanymi przez uczestników konkursów Codeforces, CodeChef, HackerEarth, AtCoder i Aizu. Łącznie do szkoleń wykorzystano 715 GB kodu z GitHuba oraz ponad milion przykładów rozwiązań typowych problemów konkursowych. Tekst zadania przed przystąpieniem do generowania kodu przeszedł fazę normalizacji, podczas której wyeliminowano wszystko, co niepotrzebne, pozostawiając jedynie istotne fragmenty.
Źródło: opennet.ru