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 и не универсальный агент программирования.
- Эффективность достигается за счет большого объема генерации и отбора; это может быть дорого по вычислениям.
- Область применения ограничена олимпиадными задачами и не покрывает типичную промышленную разработку (архитектура, долгие итерации, интеграции).