Microsoft научила искусственный интеллект искать ошибки в программном коде
Microsoft работает над алгоритмами искусственного интеллекта, способного с 99-процентной вероятностью определять ошибки в коде программ и разделять их на критические, важные и малозначимые. ИИ позволит сократить время и деньги затрачиваемые на поиски этих ошибок.
В ближайшие месяцы компания планирует выложить методологию, вместе с примерами модели и другими материалами, в открытый доступ на GitHub.
Искусственный помощник экспертов по безопасности
Как Microsoft сообщила в своем официальном блоге, совместно с экспертами по безопасности, команда работает над разработкой модели машинного обучение для быстрого нахождения ошибок в программном коде. Такой тандем, надеются в компании, позволит повысить эффективность поиска недочетов в коде.
Внедрение ИИ, позволит не только лучше выявлять ошибки, но и тратить на это меньше времени. Также его использование даст специалистам возможность не реагировать на так называемые «ложные срабатывания» – подозрения на ошибки, в итоге не получающие подтверждений.
По данным Microsoft, каждый месяц 47 тыс. разработчиков (штат в Microsoft) в процессе написания кода генерируют приблизительно 30 тыс. ошибок. Естественно, на их выявление уходить львиная часть рабочего времени. Ситуацию осложняет и тот факт, что содержащий ошибки код размещается не в одном хранилище, а нескольких десятках – девелоперы хранят его более чем в 100 хранилищах на GitHub и AzureDevOps.
Как пишет портал VentureBeat, разработчики (не только из Microsoft) в среднем допускают около 70 ошибок на каждые 1000 строчек кода. Исправление каждой из них, считают эксперты, затребует в 30 раз больше времени, чем написание одной новой строчки кода.
Помимо времени, поиск и исправление ошибок требует и денежных вливаний – в США на это ежегодно тратится около $113 млрд.
Обучение нового ИИ Microsoft
Модель машинного обучения Microsoft построена на информации о 13 млн рабочих элементов и ошибок в программном коде. Эти данные Microsoft собирает с 2001 г.
Информацию, с которой работает ИИ, была заранее отобрана экспертами по безопасности Microsoft с использованием статистической выборки. Обучение модели проходило в два этапа:
- Сперва она стала выявлять ошибки безопасности и другие ошибки в коде.
- Затем к этой способности добавилось умение расставлять так называемые «метки серьезности» – модель научилась относить эти ошибки к критическим, важным и малозначимым.
Точность выявления по результатам первых тестов работы модели оказалась очень высокой – ИИ смог выявить рабочие элементы с ошибками безопасности в 99% случаев. Правильное разделение этих ошибок на критические и некритические происходит в 97% случаев.
Дальнейшее развитие модели
Microsoft предусмотрел возможность повторного обучения модели, используемой в ее новом ИИ. Оно происходит в автоматическом режиме, но все еще частично зависит от экспертов – все данные, которые модель получает для обработки, по-прежнему утверждаются экспертами Microsoft по безопасности.
Как и при первичном обучении, для выявления ошибок во время повторного обучения модель применяет два метода их предсказания.
- Первый – «моделя логистической регрессии», используемая для выявления вероятности существования определенного класса или события.
- Второй – это инверсия частоты, с которой то или иное слово встречается в обрабатываемых моделью документах.
Предсказание ошибок для всех
Пока модель использовалась исключительно в стенах Microsoft. Компания не сообщает, на какой стадии готовности он находится, но, тем не менее, собирается поделиться ими со всем миром. В обозримом будущем код модели будет выложен в открытом доступе в репозитории на сервисе GitHub, который с 2018 принадлежит самой Microsoft.