В Google Brain разрабатывают нейросеть для автодополнения кода

code

Google Brain ведет разработку ИИ, который предсказывает изменения в коде исходя из прошлых изменений. Команда Google Brain выбрала неявную модель, которая по результатам тестов обеспечивает наилучшую общую производительность и масштабируемость из всех протестированных на данный момент моделей.

Модель может быть адаптирована для улучшения систем автодополнения, которые игнорируют истории редактирования, и для прогнозирования поисковых запросов разработчика (например, для stackoverflow.com), учитывая последние изменения в коде.

Принцип работы алгоритма

Сначала было разработано два представления данных с правками кода: явное и неявное. Явное представление содержит двумерную сетку токенов, а неявное — содержит последовательность правок:

Два варианта представления данных с правками текста
Два варианта представления данных с правками текста

Далее для каждого из двух представлений разработали свою модель, которая должна предсказывать следующую правку. Для явного представления используется двухслойная LSTM-сеть, а для скрытого представления модель разбита на encoder и decoder. Encoder представляет собой слой LSTM, а декодер — нестандартную модель, которая на выходе генерирует пары: содержимое и положение в коде. Подробное описание архитектуры модели — в оригинальной статье.

Варианты моделей для задач редактирования текста
Варианты моделей для задач редактирования текста

Результаты

Для оценки моделей, исследователи разработали набор упрощенных синтетических датасетов, которые включают в себя те виды правок, которые встречаются и в обычном коде, чтобы обеспечить более четкую интерпретацию результатов. Кроме того, они собрали датасет последовательностей правок из снимков базы кода Google, содержащих восемь миллионов правок от 5700 разработчиков.

Эксперименты на синтетических данных проводились по разным задачам редактирования: вставка, удаление, перемещение и т.д.

Точность рассчитывалась для следующих моделей: E — модель с явным представлением, IR — модель с неявным представлением, IA — улучшенная модель с неявным представлением, POMP — можно интерпретировать как некий показатель сложности обобщения задачи (чем ниже значение — тем труднее обобщается задача):

Эксперименты на синтетических данных
Эксперименты на синтетических данных

На реальных данных, собранных с внутренней среды разработки Google Clients in the Cloud, accuracy на тесте модели E составил 51%, на IR — 55,5%, а на IA- 61,1%.

Модель IA обеспечивает хороший компромисс: достигает лучшей точности и имеет меньше проблем с ограничениями памяти, чем явная модель. Исследования этой задачи будут продолжены с упором на эту модель.

Подписаться
Уведомить о
guest

0 Comments
Межтекстовые Отзывы
Посмотреть все комментарии

gogpt