Исследователи Microsoft разработали инструмент на базе ИИ, который, по мнению ученых, поможет программистам быстрее находить и исправлять ошибки в коде. ПО получило название BugLab и основано оно на принципах работы генеративно-состязательных сетей.
Всего в BugLab задействовано две конкурирующие GAN-сети, которые учатся, «играя» между собой в прятки. А сам процесс построен следующим образом. Первая сеть получает на вход эталонный программный код и решает стоит ли вводит в код ошибку и точно формулирует свою ошибку. К примеру, решает заменить знак сложения знаком вычитания. После этого код редактируется и в него специально заносятся ошибки. Затем другая сеть ищет ошибку, сделанную первой сетью, и пытается ее исправить.
Эти две GAN-сети обучаются самостоятельно в режиме самоконтроля. Первая сеть учится прятать ошибки в коде таким образом, чтобы их было тяжело найти, а вторая учится искать даже самые неочевидные баги. В итоге обе сети получают пользу — первая может с каждым разом генерировать все более сложные ошибки, а вторая их находить. Такой подход к обучению схож с принципами работы генеративно-состязательных сетей, за исключением того, что новые фрагменты кода не создаются с нуля, а перезаписывают данные уже существующих отрывков. Исследователи из Microsoft отметили, что процесс обучения схож с игрой в прятки, когда один участник ищет наиболее подходящее место, в котором его бы не нашли, а второй анализирует ситуацию и пытается найти такие места.
В компании отметили, что нынешние модели машинного обучения пока не умеют находить сложные логические и архитектурные баги, поэтому исследователи сконцентрировались на обучении ИИ определять самые распространенные ошибки, к которым относятся:
-
ошибки использования символов сравнения;
-
неправильное применения логических операторов;
-
ошибки в именах переменных.
Также исследователи заявили, что во время обучения использовали фрагменты кода на языке программирования Python. А после процесса обучения протестировали ИИ на отрывках кода из Python Package Index (PyPI). Испытания показали, что подобный метод обучения на 30% эффективнее альтернатив.
Далее специалисты из Microsoft опробовали BugLab на проектах с открытым исходным кодом на GitHub. Среди всех найденных ошибок 19 оказались ранее неизвестными. Но кроме этого, эксперименты показали, что инструмент еще далек от идеала и часто выдает ложные срабатывания.
В ближайшем будущем исследователи планируют обучить ИИ понимать структуру кода, для этого планируется представить фрагменты кода в виде вершин графа и ребрами указать их отношения между собой. Такой подход позволит применить стандартные модели машинного обучения и добиться более точного определения ошибок
Комментарии
Имхо, рано или поздно компы научатся писать код для любой платформы по любому заданию, написанному на каком-нибудь языке моделирования, и даже будут предлагать пользовательский дизайн. Но не радуйтесь, гуманитарии. К этому времени почти все шаблоны ПО уже будут разработаны. Но у технарей работа останется: железо само по себе работать не может. :))
Первые 3 абзаца - красота, перспективы.
Далее - ну, вообще-то, оно нормально не работает. ;))