В DeepMind AI научили нейросеть решать любые задачи по программированию

Читать в полной версии

Инженеры подразделения Alphabet DeepMind AI рассказали о создании системы искусственного интеллекта (ИИ) AlphaCode, которая способна генерировать код и решать задачи, предлагаемые на чемпионатах по программированию. Для этого нейросеть обучили двум языковым навыкам: пониманию постановки задачи и поиску её решения.

Источник изображения: Christopher Gower / unsplash.com

Сегодня существуют системы, способные решать отдельные задачи, генерируя программный код, однако эти решения не носят универсального характера: обученный одному классу задач ИИ с большой вероятностью терпит неудачу, когда условия задачи кардинально меняются. Поэтому инженеры Google применили несколько иной подход, положив, что описание задачи — это выражение того, что должен делать алгоритм, а её решение — то же самое, но изложенное на другом языке. Поэтому при обучении системы исследователи решили достичь двух целей: сначала ИИ должен усвоить описание задачи, а затем на основании своего внутреннего представления создать программный код.

В качестве источника данных выступил архив GitHub с более чем 700 Гбайт кода, которые перемежались с комментариями на естественном языке, поясняющими его работу. После первого этапа обучения система перешла к этапу настройки: в DeepMind организовали внутренний чемпионат по программированию, материалы которого также «скормили» ИИ. В этих материалах был полный цикл: постановка задачи, работающий и неработающий код, а также тестовые примеры для его проверки. Подобный подход применялся и раньше, но на сей раз инженеры выделили значительно больше ресурсов на обучение — «на порядки больше, чем в предыдущей работе».

Источник изображения: Procreator / unsplash.com

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

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

Учёные сделали вывод, что система действительно научилась работать, как и было задумано, предлагая корректные решения, а не случайные фрагменты кода «в надежде», что какой-то из них сработает. Однако при усложнении условий значительно растёт ресурсоёмкость, а значит, сегодня услуги настоящих программистов по-прежнему востребованы, хотя и открываемые ИИ перспективы тоже заслуживают внимания.