Przecław News

Informacje o Polsce. Wybierz tematy, o których chcesz dowiedzieć się więcej w Wiadomościach Przecławia.

Deepmind przedstawia „AlphaCode”: system generowania kodu z zaawansowanym uczeniem maszynowym stosowany do rozwiązywania problemów z programowaniem konkurencyjnym

Źródło: https://deepmind.com/blog/article/Competitive-programming-with-AlphaCode

Programowanie komputerów stało się uniwersalnym narzędziem do rozwiązywania problemów w naszym codziennym życiu, przemyśle i ośrodkach badawczych. Jednak okazało się, że trudno jest włączyć przełomowe rozwiązania sztucznej inteligencji do opracowywania systemów, aby programowanie było bardziej wydajne i dostępne. Wielkoskalowe modele językowe wykazały ostatnio niezwykłą zdolność tworzenia kodu i wykonywania prostych zadań programistycznych. Jednak modele te działają słabo, gdy są testowane na trudniejszych, nieznanych problemach, które wymagają umiejętności rozwiązywania problemów poza tłumaczeniem instrukcji na kod.

Tworzenie kodu, który realizuje określony cel, wymaga przeszukiwania dużej ustrukturyzowanej przestrzeni programów z rzadkim sygnałem nagrody. Dlatego konkurencyjne zadania programistyczne wymagają znajomości algorytmów i skomplikowanego języka naturalnego, które pozostają bardzo trudne.

Duże modele transformatorów mogą osiągać niskie jednocyfrowe współczynniki rozwiązywania we wczesnych pracach, wykorzystując syntezę programów do konkurencyjnego programowania. Jednak nie są w stanie zapewnić rozwiązań większości problemów. Ponadto, w wystarczających przypadkach testowych w istniejących konkurencyjnych zestawach danych programistycznych, metryki stają się niewiarygodne do pomiaru postępu badań.

W tym celu zespół DeepMind wprowadził AlphaCode, system do pisania konkurencyjnych programów komputerowych. AlphaCode generuje nowy kod przy użyciu modeli językowych opartych na transformatorach, a następnie inteligentnie filtruje do niewielkiej grupy interesujących programów. Stawiając czoła nowym wyzwaniom, które obejmują połączenie krytycznego myślenia, logiki, algorytmów, kodu i interpretacji języka naturalnego, AlphaCode uplasował się w czołówce 54% konkurentów w konkursach programistycznych.

Wszystkie używane modele są wstępnie przeszkolone w kodzie GitHub o otwartym kodzie źródłowym, który zawierał pliki kodu z kilku popularnych języków: C++, C#, Go, Java, JavaScript, żeby wymienić tylko kilka. Następnie zostały dostrojone na zestawie danych z zestawu danych konkurencji programowania CodeContests. Ten zestaw danych gromadzi dane z różnych źródeł, dzieli je czasowo, aby wszystkie dane treningowe poprzedzały wszystkie problemy z oceną, zawiera dodatkowe wygenerowane testy w celu sprawdzenia poprawności i ocenia zgłoszenia w konkurencyjnym środowisku programistycznym.

READ  Microsoft zmienia Twoją klawiaturę

Zespół opisuje problem konkurencyjnego generowania kodu programistycznego jako zadanie translacji sekwencji na sekwencję, które po otrzymaniu opisu problemu X w języku naturalnym tworzy odpowiednie rozwiązanie Y w języku programowania. To spostrzeżenie zmotywowało ich do użycia architektury transformatora koder-dekoder dla AlphaCode, która to modeluje. Opis problemu X jest wprowadzany do kodera jako płaska seria liter przez architekturę (w tym metadane, tokenizowane). Próbkuje Y w sposób autoregresyjny z dekodera, po jednym tokenie na raz, aż do osiągnięcia końca tokena kodu, w którym to momencie kod może zostać zbudowany i uruchomiony.

Źródło: https://storage.googleapis.com/deepmind-media/AlphaCode/competition_level_code_generation_with_alphacode.pdf

Konstrukcja kodera-dekodera zapewnia dwukierunkową reprezentację opisu (tokeny na początku opisu mogą dotyczyć tokenów na końcu). Oferuje również większą elastyczność w oddzieleniu struktur kodera i dekodera. Naukowcy odkryli również, że wykorzystanie płytkiego kodera i głębokiego dekodera zwiększa efektywność treningu bez negatywnego wpływu na wskaźniki rozwiązywania problemów.

Postępuj zgodnie z poniższymi krokami podczas korzystania z AlphaCode:

  1. Wstępnie trenuj model języka oparty na transformatorach z konwencjonalnymi celami modelowania języka przy użyciu kodu GitHub.
  2. Użyj GOLD z temperowaniem jako celu szkoleniowego, aby dostroić model w CodeContests.
  3. Dla każdego wyzwania wygeneruj dużą liczbę próbek z obecnych modeli.
  4. Korzystając z przykładowych testów i grupowania w celu zidentyfikowania próbek na podstawie zachowania programu, przefiltruj próbki, aby uzyskać mały zestaw zgłoszeń (maksymalnie dziesięć) do przetestowania na ukrytych przypadkach testowych.

Badacze ocenili swój model przy użyciu wielu programów w językach C++ i Python dla każdego wyzwania. Ponadto są one filtrowane, grupowane i ponownie klasyfikowane otrzymane rozwiązania do małej grupy 10 programów kandydujących do oceny zewnętrznej. Współpracowali z Codeforces i przetestowali AlphaCode, powtarzając udział w dziesięciu ostatnich konkursach. Ten zautomatyzowany system zastępuje procesy debugowania, kompilacji, testowania i przesyłania, prowadzone metodą prób i błędów.

Dokument: https://storage.googleapis.com/deepmind-media/AlphaCode/competition_level_code_generation_with_alphacode.pdf

Odniesienie: https://deepmind.com/blog/article/Competitive-programming-with-AlphaCode