DeepMind
2 февраля 2022 г.Мир10 контестов Codeforces (новее обучающих данных)

Competitive programming with AlphaCode

Пост DeepMind (изначально опубликован 2 февраля 2022; обновлен 8 декабря 2022 после выхода статьи в Science) описывает AlphaCode — систему, которая решает задачи олимпиадного программирования, генерируя и отбирая полноценные программы. Валидация на 10 новых контестах Codeforces показывает уровень около медианного участника: оценочный ранг AlphaCode — в топ‑54% по распределению участников.

ЭкспериментОткрыть источник

Методология и данные

1 блок

Трансформерная языковая модель кода: предобучение на публичном коде GitHub и дообучение на датасете соревновательных задач; для каждой задачи генерируется большой пул программ, который фильтруется/кластеризуется и rerank'ается до 10 кандидатов для отправки; оценка на 10 недавних контестах Codeforces.

Эксперимент

Ключевые результаты

4 блока

Как работает AlphaCode

Фрагмент из раздела отчета

AlphaCode использует языковую модель кода (трансформер), чтобы генерировать большой пул кандидатов и затем сокращать его до небольшого набора для отправки. Ключ в том, что качество достигается не одним ответом, а масштабом генерации и фильтрацией.

Результаты на Codeforces

Фрагмент из раздела отчета

Оценка проведена на реальных соревнованиях, которые были новее обучающих данных, поэтому тест отражает перенос на незнакомые задачи.

Данные и воспроизводимость: CodeContests

Фрагмент из раздела отчета

DeepMind открыла датасет CodeContests, чтобы сообщество могло повторять эксперименты и развивать подход.

Ограничения

Фрагмент из раздела отчета

Хотя AlphaCode показывает «соревновательный» уровень, это не победитель Codeforces и не универсальный агент программирования.

Подробности из отчетаПоказать

Пост DeepMind (изначально опубликован 2 февраля 2022; обновлен 8 декабря 2022 после выхода статьи в Science) описывает AlphaCode — систему, которая решает задачи олимпиадного программирования, генерируя и отбирая полноценные программы. Валидация на 10 новых контестах Codeforces показывает уровень около медианного участника: оценочный ранг AlphaCode — в топ‑54% по распределению участников.

Как работает AlphaCode

AlphaCode использует языковую модель кода (трансформер), чтобы генерировать большой пул кандидатов и затем сокращать его до небольшого набора для отправки. Ключ в том, что качество достигается не одним ответом, а масштабом генерации и фильтрацией.

  • Предобучение на отобранном публичном коде GitHub и дообучение на небольшом датасете соревнований по программированию.
  • Генерация большого количества программ на C++ и Python для каждой задачи.
  • Фильтрация, кластеризация и rerank, чтобы оставить 10 кандидатов, которые можно «сабмитить» как ответы.

Результаты на Codeforces

Оценка проведена на реальных соревнованиях, которые были новее обучающих данных, поэтому тест отражает перенос на незнакомые задачи.

  • Использованы 10 недавних контестов Codeforces (каждый новее обучающих данных).
  • Оценочный ранг AlphaCode — в топ‑54% участников, то есть около медианного конкурсанта.

Данные и воспроизводимость: CodeContests

DeepMind открыла датасет CodeContests, чтобы сообщество могло повторять эксперименты и развивать подход.

  • В набор входят задачи, решения и тесты (включая «широкие» тест‑наборы для проверки).
  • Датасет опубликован на GitHub: https://github.com/deepmind/code_contests

Ограничения

Хотя AlphaCode показывает «соревновательный» уровень, это не победитель Codeforces и не универсальный агент программирования.

  • Эффективность достигается за счет большого объема генерации и отбора; это может быть дорого по вычислениям.
  • Область применения ограничена олимпиадными задачами и не покрывает типичную промышленную разработку (архитектура, долгие итерации, интеграции).