Прогнозування дефектів у програмному забезпеченні алгоритмами глибинного навчання CNN та RNN

Abstract
Досліджено процес прогнозування дефектів у програмному забезпеченні (ПЗ) з використанням алгоритмів глибинного навчання. Показано, що цей процес складається з декількох основних етапів: пошук та підготовка даних, побудова абстрактного синтаксичного дерева (АСД), обхід дерева та кодування значень вершин у цілі числа, збалансування даних, побудова та навчання нейронної мережі. З'ясовано, що застосування цього процесу прогнозування дефектів у ПЗ може пришвидшити та полегшити пошук дефектів та відповідно знизити вартість їх виправлення. Встановлено, що передові алгоритми машинного навчання, які на цей момент використовуються на етапі побудови та навчання нейронної мережі, досі є недостатньо ефективними, щоб можна було застосовувати прогнозування дефектів у комерції, демонструючи нестабільну точність 40-60 %. За результатами досліджень встановлено, що застосування алгоритмів глибинного навчання дає точніші результати, ніж інші алгоритми машинного навчання. Для зниження дисперсії та підвищення середньої точності прогнозування запропоновано новий метод прогнозування дефектів у ПЗ на підставі поєднання двох останніх модифікацій алгоритмів глибинного навчання CNN та RNN за допомогою бінарного класифікатора логістична регресія. Проведено навчання нейронної мережі на наборі даних розміром 50 000 файлів вихідного коду, отриманих з 13-ти проєктів мовою Java. За результатами досліджень виявлено, що метод CNN+RNN в середньому дає на 10-9 % вищу точність, ніж RNN та на 2 % вищу точність, ніж CNN, що доводить доцільність використання поєднання алгоритмів глибинного навчання у задачі прогнозування дефектів. Проаналізовано точність методу CNN+RNN по кожному з ПЗ проектів з набору даних, унаслідок чого виявлено, що для 11-ти з 13-ти проєктів поєднання CNN+RNN дає не меншу точність, ніж окремо взяті CNN та RNN.

This publication has 14 references indexed in Scilit: