Научная статья на тему 'ПРОГНОЗИРОВАНИЕ СВОЙСТВ ПРОГРАММЫ НА ОСНОВАНИИ "БОЛЬШОГО КОДА"'

ПРОГНОЗИРОВАНИЕ СВОЙСТВ ПРОГРАММЫ НА ОСНОВАНИИ "БОЛЬШОГО КОДА" Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
39
11
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
МАШИННОЕ ОБУЧЕНИЕ / ДИНАМИЧЕСКАЯ ТИПИЗАЦИЯ / СТАТИЧЕСКИЙ АНАЛИЗ / JAVASCRIPT / GITHUB / БОЛЬШОЙ КОД

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Вагин И.С.

В этой статье сформулирована проблема вывода свойств программы на основе структурированного предсказания и показано, как выполнять обучение основываясь на “большом коде”.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «ПРОГНОЗИРОВАНИЕ СВОЙСТВ ПРОГРАММЫ НА ОСНОВАНИИ "БОЛЬШОГО КОДА"»

ISSN 2223-4047

Вестник магистратуры. 2019. № 6-2(93)

УДК 004

И.С. Вагин

ПРОГНОЗИРОВАНИЕ СВОЙСТВ ПРОГРАММЫ НА ОСНОВАНИИ "БОЛЬШОГО КОДА"

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

Ключевые слова: машинное обучение, динамическая типизация, статический анализ, JavaScript, GitHub, большой код.

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

В этой статье предлагается статистический подход, который предсказывает свойства данной программы, изучая вероятностную модель из существующих кодовых баз, уже аннотированных такими свойствами. Термин «свойство программы» используется, чтобы охватить как классические семантические свойства программ (например, аннотации типов), так и синтаксические элементы программы (например, идентификаторы или код). Подход является довольно общим и может служить основой для различных видов статистических инвариантных предсказаний и статистических синтезаторов кода.

Основная техническая идея статьи заключается в преобразовании входной программы в представление, которое позволяет сформулировать проблему вывода свойств программы (семантических или синтаксических) в виде структурированного предсказания с условными случайными полями (CRF [1]).

На этапе прогнозирования дается программа ввода, для которой необходимо вывести свойства, представляющие интерес. На следующем шаге программа конвертируется в представление, которое называется сетью зависимостей. Суть сети зависимостей состоит в том, чтобы фиксировать отношения между элементами программы, свойства которых должны быть предсказаны, с элементами, свойства которых известны. Как только сеть получена, выполняется структурированное прогнозирование. Это делает совместный прогноз для всех элементов вместе, оптимизируя функцию оценки на основе изученной модели CRF. Создание совместного прогноза, который учитывает структуру и зависимость, особенно важно, поскольку свойства различных элементов часто связаны между собой. Полезной аналогией является возможность делать совместные предсказания при обработке изображений, когда на предсказание метки пикселя влияют предсказания соседних пикселей.

Для определения известных и неизвестных свойств, необходимо определить набор элементов программы, для которых мы хотели бы вывести свойства. Это элементы, для которых выводимые свойства в настоящее время неизвестны. Также определяются множество элементов, свойства которых известны. Одними из таких элементов являются имена полей или методов. Цель задачи прогнозирования -предсказать неизвестные свойства на основе: •полученных известных свойств •взаимосвязи между различными элементами

Далее строится сеть зависимостей, фиксирующая различные виды отношений между элементами программы. Сеть зависимостей является ключом к получению структуры при выполнении предсказаний и интуитивно фиксирует, как свойства, которые должны быть предсказаны, влияют друг на друга. Например, связь между известными и неизвестными свойствами позволяет нам использовать тот факт, что многие программы используют общие привязки (например, общие API, такие как JQuery). Это означает, что неизвестные величины, которые мы стремимся предсказать, зависят от способа использования известных элементов программы. Кроме того, связь между двумя неизвестными свойствами означает, что предсказание для этих двух свойств каким-то образом связано.

© Вагин И.С., 2019.

Научный руководитель: Афанасьев Алексей Викторович - кандидат физико-математичекских наук, Мытищинский филиал МГТУ им. Н. Э. Баумана, Россия.

Вестник магистратуры. 2019. № 6-2(93)

ISSN 2223-4047

Следующим шагом после получения сети зависимостей является вывод наиболее вероятных значений (в соответствии с вероятностной моделью, полученной из данных) для узлов сети, называемый выводом MAP [2].

Общий процесс прогнозирования аннотаций типов идентичен. Во-первых, определяются элементы программы с неизвестными свойствами для вывода аннотаций типов. Затем определяются элементы с известными свойствами, такими как имена API или переменные с известными типами. Затем создаётся сеть зависимостей и, наконец, выполняется вывод MAP и вывод программы, аннотированной аннотациями прогнозируемого типа. Затем можно запустить стандартную проверку типов, чтобы проверить, являются ли предсказанные типы действительными для этой программы.

Библиографический список

1. Lafferty, J. D., Mccallum, A., and Pereira, F. C. N. Conditional random fields: Probabilistic models for segmenting and labeling sequence data. ICML '01, pp. 282-289.

2. Koller, D., and Friedman, N. Probabilistic Graphical Models: Principles and Techniques. MIT Press, 2009

ВАГИН ИВАН СЕРГЕЕВИЧ - магистрант, Мытищинский филиал МГТУ им. Н. Э. Баумана, Россия.

i Надоели баннеры? Вы всегда можете отключить рекламу.