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