Сегодня компания Google, наряду со своей моделью искусственного интеллекта Gemini, представила AlphaCode 2, улучшенную версию генератора кода AlphaCode, представленного лабораторией DeepMind компании Google около года назад.
AlphaCode 2 фактически работает на базе Gemini или, по крайней мере, ее разновидности Gemini Pro, дополненной данными конкурсов по программированию. И, по словам Google, модель гораздо способнее своего предшественника — по крайней мере, в одном бенчмарке.
По данным Google, в подмножестве соревнований по программированию, проводимых на Codeforces, платформе для проведения конкурсов по программированию, AlphaCode 2 — на языках Python, Java, C++ и Go — показал лучшие результаты, чем в среднем 85% участников. Это по сравнению с примерно 50% участников, которых его предшественнику удалось обойти на том же подмножестве.
“Мы выбрали 12 недавних конкурсов с более чем 8 000 участников, либо из дивизиона 2, либо из более сложного дивизиона «1+2». Всего получилось 77 задач”, — говорится в техническом описании AlphaCode 2. “AlphaCode 2 решает 43% задач с 10 попыток, что почти в два раза больше, чем у оригинального AlphaCode (25%)”.
AlphaCode 2 может понимать задачи программирования, связанные со «сложной» математикой и теоретической информатикой. Среди прочих достаточно сложных методов AlphaCode 2 способен выполнять динамическое программирование, объясняет научный сотрудник DeepMind Реми Леблон.
Динамическое программирование подразумевает упрощение сложной задачи путем ее разбиения на более простые подпроблемы снова и снова. Леблонд говорит, что AlphaCode 2 знает не только, когда правильно применить эту стратегию, но и где ее использовать. Это немаловажно, учитывая, что проблемы, требующие динамического программирования, были основной загвоздкой для оригинального AlphaCode.
«AlphaCode 2 должен показать некоторый уровень понимания, некоторый уровень рассуждений и проектирования решений, прежде чем он сможет перейти к фактической реализации для решения проблемы программирования», — говорит Леблонд. «И все это он делает на проблемах, с которыми никогда раньше не сталкивался».
AlphaCode 2 решает проблемы, сначала обращаясь к семейству «моделей политики», которые генерируют ряд образцов кода для каждой проблемы. Образцы кода, не соответствующие описанию проблемы, отфильтровываются, а алгоритм кластеризации группирует «семантически схожие образцы кода», чтобы избежать избыточности. Наконец, скоринговая модель в AlphaCode 2 выявляет лучшего кандидата из каждого из 10 крупнейших «кластеров» образцов кода, который и является ответом AlphaCode 2 на поставленную задачу.
Все модели искусственного интеллекта имеют недостатки, и AlphaCode 2 не является исключением. Согласно описанию, AlphaCode 2 требует большого количества проб и ошибок, что слишком дорого для масштабной работы и в значительной степени зависит от способности отсеивать очевидно плохие образцы кода. Переход на более функциональную версию Gemini, такую как Gemini Ultra, может смягчить некоторые из этих проблем, говорится в обзоре.
Что касается того, можно ли ожидать, что AlphaCode 2 когда-нибудь появится в продуктах — AlphaCode так и не был выпущен, — то на брифинге Эли Коллинз, вице-президент по продуктам DeepMind, намекнул на такую возможность.
«Одна из наиболее интересных для меня вещей в последних результатах — это то, что когда программисты сотрудничают с AlphaCode 2 на базе Gemini, определяя определенные свойства, которым должен следовать код, производительность модели становится еще выше», — сказал Коллинз. «В будущем мы увидим, как программисты будут использовать высокоэффективные модели ИИ в качестве инструментов для совместной работы, которые помогают в процессе разработки программного обеспечения — от рассуждений о проблемах до помощи в реализации».