В MIT создали самообучающуюся систему исправления ошибок в коде

Новая система машинного обучения анализирует успешно проведённое исправление багов программного обеспечения и узнаёт, как исправлять новые ошибки. Cистема исправления кода, разработанная сотрудниками MIT, в автоматическом режиме исправляет почти в два раза больше ошибок, чем её предшественники.
Genesis

Обычно ошибки в приложениях представляют собой небольшие оплошности в коде, патчи для которых занимают пару строк. Основываясь на этой простоте исправления, исследовательская группа профессора MIT Мартина Ринарда разработала автоматический генератор таких исправлений. Система представляет собой набор шаблонов, которые как правило требуют исправления в виде «заплаток». Эти шаблоны ошибок с примерами реальных исправлений для них используются как обучающая выборка для системы.

Шаблоны более точно адаптированы к реально существующим типам патчей, поэтому генерируются более точные предложения исправления ошибок. В тестах новая система, получившая название Genesis, исправила почти в два раза больше ошибок, чем самая эффективная система шаблонов с ручным кодированием.

Сотрудник группы Ринарда Фан Лонг говорит по этому поводу:

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

Оценка качества алгоритма основывается на количестве исправленных ошибок и бесполезных патчей. Например, генерация 10 предложений, 4 из которых являются реальными исправлениями ошибок кода, имеет более высокую оценку, нежели генерация тысячи патчей, всего 5 из которых пригодны для использования.

Genesis работает с программами, написанными на языке Java. Тесты системы проводились с использованием 41 Open Source проекта. Genesis корректно исправила 21 тестовый пример из 49 предложенных. Исследователи верят, что большее количество обучающих выборок и больший объём вычислительной мощности смогут продемонстрировать лучшее качество финальных результатов.

Подробнее о методе обучения системы выбору правильного патча для входных данных можно узнать в блоге разработчиков.

Источник: MIT News