У Microsoft на NeurIPS вышла интересная статья: AI-модель BugLab для поиска и исправления багов в коде.
#paper #tech
Microsoft натренировали GAN-подобную модель для поиска и исправления багов в программном коде. Модель состоит из двух нейросетей и обучается в unsupervised режиме: без размеченных данных. Первая нейросеть берет код и внедряет в него баг: изменяет какую-нибудь строчку. Вторая модель берет измененный код, старается найти в нем баг и исправить его. На фото к посту показан код из open source проекта на GitHub, в котором обученная модель нашла баг и исправила его.
Разработчики говорят, что такая система сможет повысить производительность разработчиков и переключить их внимание с поиска мелких багов на более сложные и интересные задачи. Что ж, теперь Copilot будет за нас писать код, а BugLab — исправлять его ошибки😄
Пока что BugLab работает только с языком Python и с простыми багами, вроде перепутанных знаков сравнения ("<=" вместо ">="), логических операторов ("or", "and") и названий переменных ("j" вместо "i").
Но самое интересное — это архитектура модели. Обычно нейросети, которые работают с кодом, воспринимают код как набор токенов. По сути, работа с кодом ведется как работа с текстом в NLP. Но BugLab — графовая нейросеть. Она использует графовую структуру, чтобы лучше отразить взаимосвязи между переменными, выражениями и смысловыми частями кода. Эту идею восприятия кода не как текста, а как графа, Microsoft уже предлагали в своей прошлой работе.
В экспериментах c Bu#paper #tech t сравнили две архитектуры сетей, которые имеют graph-like структуру: это GNN (graph neural network) и Relational Transformers. Обе архитектуры показали хорошие результаты.
Подробнее о модели:
Блогпост Microsoft c гифками
Статья на arxiv