Исследовать
- Опубликовано
- Авторы
Альфакодная команда
Примечание. Этот блог был впервые опубликован 2 февраля 2022 года. После публикации газеты в науке 8 декабря 2022 года мы сделали незначительные обновления текста, чтобы отразить это.
Решение новых проблем и установление новой вехи в конкурентном программировании
Создание решений непредвиденных проблем – это вторая натура в человеческом интеллекте – результат критического мышления, информированного по опыту. Сообщество машинного обучения добилось огромного прогресса в создании и понимании текстовых данных, но достижения в решении проблем остаются ограниченными относительно простыми проблемами по математике и программированию, или иначе для получения и копирования существующих решений.
В рамках миссии DeepMind по решению разведки мы создали систему под названием Alphacode, которая пишет компьютерные программы на конкурентном уровне. Альфакод достиг предполагаемого ранга в пределах 54% участников программных соревнований, решая новые проблемы, которые требуют комбинации критического мышления, логики, алгоритмов, кодирования и понимания естественного языка.
Опубликованная на обложке науки, наша статья подробно описывает Alphacode, который использует языковые модели на основе трансформатора для генерации кода в беспрецедентном масштабе, а затем разумно фильтруют в небольшой набор многообещающих программ.
Мы подтвердили нашу производительность, используя соревнования, организованные на CodeForces, популярной платформе, которая проводит регулярные соревнования, которые привлекают десятки тысяч участников со всего мира, которые приходят, чтобы проверить свои навыки кодирования. Мы выбрали для оценки 10 недавних конкурсов, каждый более новее, чем наши учебные данные. Alphacode расположен на уровне среднего конкурента, отмечая впервые, когда система генерации кодов ИИ достигла конкурентного уровня производительности в соревнованиях по программированию.
Чтобы помочь другим опираться на наши результаты, мы выпустили наш набор данных о проблемах и решениях по конкурентному программированию на GitHub, включая обширные тесты, чтобы обеспечить правильные программы, которые проходят эти тесты – не хватает текущих наборов данных критической функции. Мы надеемся, что этот эталон приведет к дальнейшим инновациям в решении проблем и генерации кода.
Проблема связана с CodeForces, и решение было сгенерировано Alphacode.
Конкурентное программирование – это популярная и сложная деятельность; Сотни тысяч программистов участвуют в соревнованиях по кодированию, чтобы получить опыт и продемонстрировать свои навыки в веселых и совместных способах. Во время конкурсов участники получают серию длинных описаний проблем и несколько часов, чтобы написать программы для их решения.
Типичные проблемы включают в себя поиск способов размещения дорог и зданий в определенные ограничения или создание стратегий для выигрыша настольных настольных игр. Затем участники занимают в основном в зависимости от того, сколько проблем они решают. Компании используют эти соревнования в качестве инструментов рекрутинга, и аналогичные типы проблем распространены в процессах найма для инженеров -программистов.
«
Я могу с уверенностью сказать, что результаты альфакода превзошли мои ожидания. Я был скептичен, потому что даже в простых конкурентных проблемах часто требуется не только для реализации алгоритма, но и (и это самая сложная часть) для его изобретения. Alphacode удалось выступить на уровне многообещающего нового конкурента. Я не могу дождаться, чтобы увидеть, что ждет впереди!
Майк Мирзаянов, основатель, CodeForces
Способности к решению проблем, необходимые для преодоления этих соревнований, выходят за рамки существующих систем ИИ. Однако, объединив достижения в крупномасштабных моделях трансформатора (которые недавно показали многообещающие способности генерировать код) с крупномасштабной выборкой и фильтрацией, мы добились значительного прогресса в количестве проблем, которые мы можем решить. Мы предварительно готовим нашу модель по выбранному общедоступному коду GitHub и настраиваем ее в нашем относительно небольшом конкурентном наборе программирования.
Во время оценки мы создаем огромное количество программ C ++ и Python для каждой задачи, порядки величины, чем предыдущая работа. Затем мы фильтруем, кластер и перерабатываем эти решения небольшому набору из 10 кандидатских программ, которые мы представляем для внешней оценки. Эта автоматизированная система заменяет процесс проб и ошибок конкурентов от отладки, компиляции, прохождения тестов и в конечном итоге отправки.
С разрешения кодовыхформ мы оценили альфакод, моделируя участие в 10 недавних конкурсах. Впечатляющая работа конкурентного сообщества программирования создала область, в которой невозможно решать проблемы с помощью ярлыков, таких как дублирующиеся решения, которые можно увидеть ранее, или пробовать каждый потенциально связанный алгоритм. Вместо этого наша модель должна создавать новые и интересные решения.
В целом, Alphacode расположен примерно на уровне среднего конкурента. Несмотря на то, что этот результат далеко не выиграл конкурсы, представляет собой существенный скачок в возможностях решения проблем, и мы надеемся, что наши результаты вдохновит сообщество конкурентных программ.
«
Решение конкурентных проблем программирования – это действительно трудно сделать, требуя как хороших навыков кодирования, так и для решения проблем у людей. Я был очень впечатлен тем, что Alphacode может добиться прогресса в этой области, и взволнован, чтобы увидеть, как модель использует свое понимание утверждения для создания кода и направления его случайных исследований для создания решений.
Петр Митричев, инженер программного обеспечения, конкурентный программист Google и мирового класса
Чтобы искусственный интеллект, помогающий человечеству, наши системы должны иметь возможность разрабатывать возможности решения проблем. Alphacode ранжирован в первых 54% на реальных соревнованиях по программированию, что демонстрирует потенциал моделей глубокого обучения для задач, которые требуют критического мышления. Эти модели элегантно используют современное машинное обучение, чтобы выразить решения проблем в качестве кода, возвращаясь к символическому корню ИИ из искусственного интеллекта десятилетия назад. И это только начало.
Наше исследование в генерации кода оставляет огромную комнату для улучшения и намекает на еще более захватывающие идеи, которые могут помочь программистам повысить их производительность и открыть поле людям, которые в настоящее время не пишут код. Мы продолжим это исследование и надеемся, что дальнейшие исследования приведут к инструментам для улучшения программирования и приближения нас к искусственному искусственному искусству.
Посмотреть решения Alphacode и изучить модель на alphacode.deepmind.com