Существуют системы, способные решать отдельные задачи, генерируя программный код, но эти решения не носят универсального характера: обученный одному классу задач ИИ с большой вероятностью не сработает, когда условия задачи кардинально поменяются.
Чтобы найти решение, DeepMind подошла к задаче как к языковой проблеме. В какой-то степени описание задачи — это выражение того, что должен сделать алгоритм, а код — выражение того же самого, только на другом языке. Поэтому при обучении системы исследователи решили достичь двух целей: сначала ИИ должен усвоить описание задачи, а затем — на основании своего внутреннего представления создать программный код.
Обучение ИИ проходило в два этапа. На первом этапе система должна была обработать архив GitHub — всего более 700 Гб кода, которые перемежались с комментариями на естественном языке, поясняющими его работу. После того, как система была обучена, она прошла период настройки. DeepMind организовал свои собственные соревнования по программированию, а затем передал результаты в систему: описание проблемы, работающий код, код с ошибками и тестовые примеры, используемые для его проверки.
Подобные подходы уже применялись ранее, но в DeepMind выделили больше ресурсов на обучение. «Ключевым фактором производительности AlphaCode, — указывается в документе, — стало масштабирование количества образцов модели на порядки больше, чем в предыдущей работе».
Поначалу более 40% предлагаемых нейросетью решений либо требовали слишком больших аппаратных ресурсов, либо решение задачи занимало слишком много времени. Отфильтровав некорректные варианты, AlphaCode вошла в число тех 54% конкурсантов на чемпионате платформы Codeforces, кто справился с поставленной задачей — превратить 2 строки исходного кода в одну, более короткую. Эта производительность примерно соответствует начинающему программисту с обучением от нескольких месяцев до года, отметили авторы статьи.
Обучение ИИ оказалось дорогим и ресурсоемким — оно проходило в системе, чья суммарная производительность превышала 2000 петафлопс. При этом выделение большего количества ресурсов для решения проблемы может привести к дальнейшим улучшениям, считают исследователи.
AlphaCode вряд ли оставит программистов без работы. Его производительность значительно снижается по мере увеличения сложности задач. Существующую версию ИИ, вероятно, можно улучшить, но вычислительные ресурсы, необходимые для этого, сейчас недоступны.