25.04.2024
Подписывайтесь на Telegram-канал по ссылке

Нейросеть научилась генерировать код и понимать задачи программирования

Code generation with AlphaCode

Инженеры компании DeepMind AI разработали систему искусственного интеллекта AlphaCode, которая может генерировать код и решать задачи из чемпионатов по программированию. Нейросеть обучали пониманию постановки задачи и поискам её решения. Разработчики применили новый подход к обучению ИИ. Они предположили, что описание задачи — это выражение того, что должен делать алгоритм, а её решение — то же самое, но изложенное на другом языке. Сначала нейросеть обучили пониманию описаний задачи, а затем — созданию программного кода на основании своего внутреннего представления. Исследование опубликовано в журнале Science.

Для обучения инженеры использовали архив GitHub с более чем 700 Гбайт кода, а также комментарии к нему на естественном языке. Затем в DeepMind организовали внутренний чемпионат по программированию, и на его материалах обучили искусственный интеллект. Ему показали полный цикл: постановка задачи, работающий и неработающий код, а также тестовые примеры для его проверки. Разработчики отметили, что этот подход не новый, но в этот раз для обучения выделили больше ресурсов.

Изначально более 40% предлагаемых нейросетью решений либо требовали слишком больших аппаратных ресурсов, либо решение занимало слишком много времени. После анализа кода инженеры обнаружили, что при решении различных задач система часто использовала схожие фрагменты кода, которые выдавали одинаковые ответы при одинаковых исходных данных. В DeepMind отсеяли некорректные варианты, и AlphaCode смогла решать задачи на уровне программистов с опытом работы от нескольких месяцев до года. В итоге нейросеть попала в число справившихся с задачами 54% конкурсантов на чемпионате.

Чтобы улучшить работу нейросети, инженеры ввели автоматизированную проверку по 100 тысячам предлагаемых системой решений. Это приводило к пропорциональному росту доли правильных ответов, но одновременно росла и ресурсоёмкость вычислительной системы. Изначально для обучения требовался объём энергии в 16 раз превышающий годовую потребность средней американской семьи. В итоге инженеры сделали вывод, что система предлагает корректные решения, но при усложнении условий задачи растёт её ресурсоёмкость. Таким образом, по их словам, AlphaCode может выступать в качестве помощника программистов, но не способна заменить их.