В интервью с Янником Кильхером ведущие инженеры DeepMind Реми Леблон и Питер Чой раскрывают внутреннюю кухню проекта AlphaCode — системы искусственного интеллекта, способной участвовать в соревнованиях по спортивному программированию на уровне среднего человека. Исследователи обсуждают методологию обучения на данных GitHub, борьбу с «галлюцинациями» кода и объясняют, почему массовое сэмплирование вариантов оказалось эффективнее попыток научить модель «рассуждать» как человек.
🚀 Реальность против хайпа: что на самом деле умеет AlphaCode 1:11
После публикации статьи в СМИ появилось множество громких заголовков, однако авторы призывают к осторожности в интерпретациях. Питер Чой отмечает, что самой распространенной ошибкой в медиа стало утверждение, будто система программирует «как средний разработчик».
На самом деле, по словам Чоя, результат AlphaCode соответствует уровню среднего участника соревнований по программированию (competitive programmer), что является гораздо более узкой и специфической метрикой.
Различия между работой инженера и AlphaCode:
- Постановка задачи: В спортивном программировании описание задачи предельно точно, включает примеры и жесткие ограничения.
- Чтение кода: Большая часть работы реального программиста — это чтение и понимание чужого кода, а не написание нового с нуля.
- Итерации: Разработчики общаются с заказчиками и уточняют требования, в то время как AlphaCode работает с готовым «замороженным» условием.
🛠 Методология: от GitHub до Codeforces 5:54
Проект начался с амбициозной, почти «невыполнимой» цели — создать систему, способную решать задачи, которые она никогда не видела в обучающей выборке. Для этого команда использовала двухэтапный процесс:
- Предварительное обучение (Pre-training): Модель обучалась на огромном массиве данных из открытых репозиториев GitHub.
- Тонкая настройка (Fine-tuning): Дообучение на специфическом наборе данных из 12 000–13 000 задач по спортивному программированию.
Питер Чой подчеркивает, что проект жестко следовал конкретной метрике успеха (North Star), что помогало интегрировать новые идеи как изнутри DeepMind, так и из внешних исследований.
🎲 Сэмплирование как замена человеческой интуиции 9:25
Ключевым и самым спорным моментом архитектуры AlphaCode является подход «массового сэмплирования». В отличие от человека, который обдумывает 2–3 варианта решения, модель генерирует до 100 000 и более потенциальных решений для одной задачи.
Реми Леблон выделяет несколько важных наблюдений:
- Корреляция масштаба: Чем больше размер модели, тем выше качество генерируемых образцов и тем круче кривая успеха при увеличении количества попыток.
- Температура сэмплирования: Это основной инструмент контроля «творчества» модели, хотя авторы признают его грубость.
- Разнообразие: Чтобы модель не выдавала однотипные ошибки, исследователи использовали специальные префиксы (метки), позволяющие «поворачивать» модель в разные стороны при генерации кода.
🧠 Умеет ли ИИ «рассуждать»? 10:45
Янник Кильхер задал вопрос о наличии в скрытых слоях модели абстрактных концептов, таких как алгоритм Дейкстры или сортировка.
Реми Леблон считает вероятным, что эти концепты присутствуют в латентном пространстве, так как модель успешно реализует их для решения сложных задач. Однако он признает, что эти знания «перемешаны» с огромным количеством другого шума, и выбор правильной концепции в нужный момент остается главной трудностью.
Питер Чой добавляет, что из-за авторегрессионной природы (предсказание следующего токена) модель может «осознать», какой алгоритм нужен (например, поиск в глубину DFS), только на середине процесса написания кода.
🔍 Фильтрация: как найти иголку в стоге сена 16:20
Из 100 000 сгенерированных вариантов нужно выбрать всего 10 для отправки на проверку. Команда пыталась обучить отдельную «модель-критика» (value function) для оценки правильности кода, но это не дало значимых результатов. По мнению Реми Леблона, обучение такой функции на малых данных крайне затруднительно.
В итоге AlphaCode использует элегантный метод фильтрации:
- Выполнение кода: Все сгенерированные программы запускаются на открытых тестах, которые идут в условии задачи.
- Кластеризация: Программы, выдающие одинаковые результаты на одних и тех же входных данных, объединяются в группы.
- Выбор из групп: Решения выбираются из самых больших кластеров, так как вероятность того, что ошибочные программы случайно выдадут одинаковый результат на нескольких тестах, крайне мала.
⚠️ Ложные срабатывания и «взлом» системы 40:00
На определенном этапе разработки исследователи столкнулись с кризисом: до 40–60% решений оказались «ложными срабатываниями». Модель находила способы «обмануть» тесты, не решая задачу по существу.
Причины ложных срабатываний:
- Слабые тесты: Например, в задачах с ответом «Да/Нет» модель могла просто всегда выводить «Да».
- Неэффективный код (Slow Positives): ИИ писал правильный алгоритм, который работал слишком медленно для лимитов соревнований.
Чтобы решить эту проблему, команда применила метод мутации (fuzzing): они программно генерировали новые входные данные и проверяли на них решения, написанные людьми. Это позволило снизить уровень ложноположительных результатов до приемлемых 4%.
🔮 Будущее программирования глазами авторов 47:54
Реми Леблон и Питер Чой с оптимизмом смотрят на будущее ИИ в разработке. По их мнению, подобные технологии не заменят людей, но радикально изменят процесс обучения и работы.
Прогнозы авторов:
- Демократизация: ИИ поможет людям быстрее учиться кодингу, предлагая улучшения и комментируя ошибки.
- Автоматизация рутины: Генерация юнит-тестов и умное автодополнение станут стандартом индустрии.
- Alpha Requirement Engineer: В шутку Янник и гости обсуждают, что следующим шагом должна стать модель, способная переводить размытые пожелания клиентов в четкие технические задания.
В завершение Реми Леблон призвал научное сообщество активнее работать над этой проблемой, отметив, что для старта исследований не обязательно обладать огромными вычислительными мощностями.