Уперше штучний інтелект зробив те саме, що й людина-програміст – розробив правильні алгоритми та написав відповідний комп’ютерний код для нових складних задач. У журналі “Science” повідомили: система штучного інтелекту AlphaCode від DeepMind досягла такої продуктивності, що дала змогу їй перевершити половину учасників онлайн-конкурсу з програмування.
Зображення: Science/AAAS
Мовний асистент у мобільних додатках, науковий помічник або допоміжна система в автомобілях чи на промислових об’єктах: адаптивні алгоритми та системи ШІ вже присутні у багатьох сферах нашого життя. Тимчасом машинний мозок опановує стратегічні ігри та аналіз даних, а також завдання, які довго вважали такими, що йому не до снаги: ШІ блефує в покері, оцінює реакцію своїх опонентів у переговорах і розробляє нові математичні теореми.
А як щодо програмування? Наскільки реалістичні науково-фантастичні сценарії, в яких штучний інтелект сам стає творцем нових алгоритмів і систем ШІ? Досі системи могли генерувати невеликі фрагменти коду або прості програми на основі готових схем і правил. “Але для того, щоб написати повністю програму, ви повинні зрозуміти завдання, розробити правильний алгоритм розв’язання, а потім написати код для реалізації цього алгоритму”, — пояснив Юцзя Лі (Yujia Li) та його колеги з DeepMind, дочірньої компанії Google. Якщо завдання представлене не в комп'ютерно репрезентативній формі, а в вигляді складних текстів природною мовою, це ще складніше для машини. Такі завдання ставлять, наприклад, на змаганнях із програмування, коли люди-програмісти мають перетворити їх у комп’ютерний код. Однак поки що системи штучного інтелекту, засновані на нейронних мережах, не могли їх розв’язувати.
Так було раніше — команда DeepMind вперше розробила систему штучного інтелекту, здатну програмувати достатньо добре, щоби брати участь у змаганнях із кодування. “Наскільки нам відомо, жодна комп’ютерна система ніколи не досягала таких показників у змаганнях із програмування”, — кажуть Лі та його команда.
Їхня система AlphaCode правильно розв’язала в середньому 34% конкурсних завдань на платформі Codeforces, і в такий спосіб продемонструвала кращі результати, ніж половина учасників-людей.
Цікаво, що AlphaCode досягнула цього не завдяки заздалегідь заданим правилам програмування. Система штучного інтелекту розвинула власні можливості лише внасіідок тренуванню на конкурсних завданнях та їхніх розв'язках із минулих років. Зазвичай ці дані публікують програмістські платформи, тож вони доступні для підготовки учасників. Система ШІ навчилася програмувати, використовуючи тільки ці набори даних.
Для свого навчання AlphaCode проаналізував 715 гігабайтів фрагментів коду на різних мовах програмування з платформи Github. Ця неструктурована підбірка скриптів не містила описів проблеми, тож підходить тільки для ознайомлення з типовими структурами та синтаксичними елементами. Потім кодер модуля AlphaCode Transformer отримав половину відповідного скрипту, а декодер мав навчитися правильно доповнювати другу половину.
На другому етапі навчання заздалегідь натренована система ШІ отримала близько 13 500 старих конкурсних завдань із платформи Codeforces і розв’язки — правильні й неправильні. Оцінюючи ці дані, AlphaCode “дізналася”, які особливості відрізняють правильні програмістські рішення від неправильних.
Після завершення цього етапу слідувало оцінювання — змагання. Для цього AlphaCode надали завдання, сформовані у грудні 2021 року на платформі Codeforces для десяти конкурсів із понад 5000 учасників. Система ШІ спочатку створила мільйони потенційних кодових розв’язків для кожного завдання. Потім підмодуль перевірив працездатність цих варіантів і відібрав десять потенційно придатних розв’язків для кожного завдання.
Процес тренування AlphaCode. Зображення: DeepMind.
Потім команда Лі завантажила ці кодові рішення на платформу Codeforces, де їх уже оцінили. На основі цих значень дослідники визначили, яким AlphaCode потрапила би до рейтингу учасників-конкурсантів.
Результат: кодові розв’язки AlphaCode виявилися кращими, ніж у 54,3% людей-учасників. “Ця продуктивність еквівалентна продуктивності програміста-початківця, що навчався впродовж року”, — пояснили Лі та його колеги. Як і люди-учасники, AlphaCode частіше розв’язувала правильно легші завдання, ніж складні.
Це перший випадок, коли штучному інтелекту вдалося позмагатися з програмістами-людьми у конкурсі вільного програмування. Завдяки цьому AlphaCode потрапила на обкладинку “Science”. Команда DeepMind вважає свою систему ШІ перспективним підходом для майбутніх програмістів: “Відносно проста архітектура демонструє унікальний потенціал здійснювати аналіз, необхідний для того, щоб за допомогою програмного коду розв’язувати складні проблеми”, — кажуть Лі та його колеги.
Дослідник штучного інтелекту Зіко Колтер (Zico Kolter ) з Університету, котрий не брав участі в дослідженні, дотримується подібного погляду: “Незалежно від того, наскільки AlphaCode “розуміє”, що робить, система демонструє надзвичайно хороші результати, коли справа доходить до розв’язання складних завдань у програмуванні”, — написав учений у супровідному коментарі.
Колтер вважає AlphaCode першим прикладом моделі, що здатна навчитися кодувати, не знаючи правил. Однак процедура все ще дуже складна: AlphaCode знадобилося 175 мегават-годин енергії для навчання й аналізу, а також обчислювальної потужності, що відповідає 2149 дням безперервної роботи зі швидкістю один петафлоп на секунду. “Тож наша робота над системами генерування коду все ще потребує вдосконалення”, — визнають Лі та його команда.
Nadja Podbregar
Künstliche Intelligenz als Programmierer
Science, American Association for the Advancement of Science (AAAS)
Science, 2022; doi: 10.1126/science.abq1158, 9/12/2022
10.01.2023