66
Software Engineering and Infomation Management THIRD CONFERENCE ON SHORT PAPERS

THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

Software Engineeringand Infomation Management

THIRD CONFERENCE ON

SHORT PAPERS

Page 2: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

Third Conference on Software Engineering andInformation Management (SEIM-2018)

(short papers)Saint Petersburg, April 14, 2018

Yurii Litvinov, Marat Akhin, Boris Novikov, Vladimir Itsykson (editors)

Saint Petersburg — 2018

Page 3: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

Third Conference on Software Engineering and Information Management (SEIM-2018)Saint Petersburg, April 14, 2018

Yurii Litvinov, Marat Akhin, Boris Novikov, Vladimir Itsykson (editors)

This volume contains seven selected papers originally presented at the Third Conference onSoftware Engineering and Information Management (SEIM-2018), which was held in SaintPetersburg, Russia, on April 14, 2018. These papers were selected in thorough single-blindreviewing process.

ISBN 000-0-0000000-0-0

Формат 215х275. Печать цифровая.Тираж 50 экз. Заказ №241002.Отпечатано в ООО "Цифровая фабрика "Быстрый Цвет".196066, Санкт-Петербург, ул. Варшавская, 98.(812) 644-40-44

Copyright c© 2018 for the individual papers by the papers’ authors. Copying permitted forprivate and academic purposes. This volume is published and copyrighted by its editors.

Page 4: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

Table of Contents

Message from the Editors 4

SEIM 2018 Organization 5

Оценка качества слабоструктурированных данных при сопоставлении независимых ис-точниковАлексей Калина, Борис Новиков 6

Использование СММ в играх с неполной информациейЕкатерина Бакшинская 15

Оценка эффективности извлечения признаков из изображений для построения реко-мендательных систем в социальных сетяхАлександр Карачев, Дмитрий Бугайченко 24

Тексто-независимая идентификация по голосуДаниил Никулин, Владимир Тутыгин 31

Построение прогностических моделей поведения нефтяных котировок на основе мето-дов опорных векторов (SVM) и ARIMA.Андрей Расторгуев, Дмитрий Григорьев 38

Recurrent neural network for code clone detectionArseny Zorin, Vladimir Itsykson 47

Автоматизация проверки корректности использования программных библиотекМаксим Гусев, Владимир Ицыксон 53

3

Page 5: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

Message from the Editors

The Third Conference on Software Engineering and Information Management (SEIM-2018)opens its doors to young researchers and practitioners in different areas of computer scienceand software engineering, providing an opportunity to present their research, discuss state-of-the-art technology and engage in useful networking. As before, we consider SEIM to mainlyfocus on researchers who are just starting out their scientific careers, and hope to ease theirintroduction to the conference process. On the other hand, SEIM might also be of interest tomore experienced researchers, who are aimed at sharing their research with a wider scientificcommunity. The conference welcomes submissions on a wide range of topics, including butnot limited to:

• Algorithms and data structures• Big data• Cloud systems• Coding theory• Compilers• Crowdsourcing• Data storage and processing• Development management• Digital signal processing• Distributed systems• E-commerce / e-government• Empirical software engineering• High-performance computing• Information retrieval• Information security• Intelligent data analysis• Internet of Things• Machine learning

• Mobile systems• Modelling• Natural language processing• Networks and telecommunications• (Non-)relational databases• Operating systems• Programming languages• Recommendation systems• Robotics• Semantic web• Social networks• Software analysis• Software testing• Software verification• Software virtualization• Software-defined networks• Theoretical computer science• Visual languages

This year we received 43 papers, each reviewed by at least 3 members of the ProgramCommittee, of which 8 were selected for publication in CEUR-WS.org, 7 — for indexing inRSCI, and 1 was accepted as talk-only to allow the authors to receive valuable feedbackabout their research. We would like to thank the members of our Program Committee fortheir continuous work and contribution to the success of our conference.

These proceedings include the SEIM-2018 papers, which were selected by the ProgramCommittee for indexing in RSCI. These papers passed not only the original review procedure,but also an additional round of post-review with the conference feedback. We thank theauthors for their submissions to SEIM 2018 and hope to see them in the future.

Furthermore, we would also like to thank Tatiana Mironova, Sergey Zherevchuk andSvyatoslav Mikhailov for their great help in organizing the conference, Computer ScienceCenter for hosting the event, and JetBrains Research for their overall support. The additionalinformation about the SEIM conference series can be found on the conference website at:http://2018.seim-conf.org/Yurii Litvinov, Marat Akhin, Boris Novikov, Vladimir ItsyksonEditors

4

Page 6: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

SEIM 2018 Organization

The conference was organized jointly with Computer Science Center and supported by JetBrains Research.

Steering CommitteeDmitry Bulychev / St. Petersburg State UniversityVladimir Itsykson / St. Petersburg Polytechnic UniversityAndrey Ivanov / JetBrainsIakov Kirilenko / St. Petersburg State UniversityKirill Krinkin / St. Petersburg Electrotechnical UniversityBoris Novikov / St. Petersburg State University

Program Committee ChairsYurii Litvinov / St. Petersburg State UniversityMarat Akhin / St. Petersburg Polytechnic University

Program CommitteeMikhail Belyaev / St. Petersburg Polytechnic UniversityDaniil Berezun / JetBrains, St. Petersburg State UniversityNatalia Bogach / St. Petersburg Polytechnic UniversityTimofey Bryksin / St. Petersburg State UniversityDmitry Bugaichenko / St. Petersburg State UniversityDmitry Boulytchev / St. Petersburg State UniversityEkaterina Verbitskaya / St. Petersburg State UniversityNikolay Vyahhi / St. Petersburg Academic UniversityMikhail Glukhikh / JetBrainsNatalia Grafeeva / St. Petersburg State UniversityDmitry Grigorev / St. Petersburg State UniversitySemyon Grigorev / St. Petersburg State UniversityVictoria Erofeeva / St. Petersburg State UniversityYuriy Ivanskiy / Institute of Problems of ME RASVladimir Itsykson / St. Petersburg Polytechnic UniversityAleksandr Kapitonov / ITMO UniversityIakov Kirilenko / St. Petersburg State UniversityDmitry Kosarev / St. Petersburg State UniversityKirill Krinkin / Open Source and Linux LabSvetlana Lazareva / RaidixDmitry Luciv / St. Petersburg State University

Igor Malyshev / St. Petersburg Polytechnic UniversityElena Mikhailova / St. Petersburg State UniversityMikhail Moiseev / Intel CorporationDmitry Mordvinov / St. Petersburg State UniversityVyacheslav Nesterov / Dell EMCBoris Novikov / St. Petersburg State UniversityGennady Pekhimenko / Microsoft ResearchOleg Pliss / OracleAnton Podkopaev / St. Petersburg State UniversitySergey Salishev / St. Petersburg State UniversityElena Sivogolovko / ArcadiaKirill Smirnov / St. Petersburg State UniversityDarja Solodovnikova / University of LatviaSergey Stupnikov / Institute of Informatics Problems RASMaksim Tkatchenko / Singapore Management UniversityPeter Trifonov / St. Petersburg Polytechnic UniversityArthur Khanov / St. Petersburg State UniversityDmitry Tsitelov / DevexpertsMikhail Zymbler / South Ural State UniversityGeorge Chernishev / St. Petersburg State UniversityAnna Yarygina / St. Petersburg State University

5

Page 7: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

Оценка качества слабоструктурированныхданных при сопоставлении независимых

источниковАлексей Калина

Санкт-Петербургский государственныйуниверситет

Email: [email protected]

Борис НовиковСанкт-Петербургский государственный

университетEmail: [email protected]

Аннотация—Оценка качества данных являетсяважной задачей при работе с большими объемамиинформации. В последние годы количество задач,связанных с использованием слабоструктурирован-ных данных постоянно растет. Обработка таких дан-ных представляет собой большую сложность, нежелиданных, представленных в структурированном виде.Поэтому и так нетривиальная задача оценки качестваданных становится еще более трудной. В этой работепредлагается подход к оценке качества данных, ос-нованный на сопоставлении нескольких независимыхисточников. Метод позволяет оценивать качество сиспользованием различных критериев и метрик, учи-тывая типы данных и цели проводимой процедуры.Результаты проведенных экспериментов демонстри-руют высокую стабильность результатов примененияметода.

I. ВВЕДЕНИЕ

В наши дни объемы данных увеличиваются болеечем в два раза каждые два года [1]. Количество ошибоки несоответствий с реальным миром растет вместе собъемами данных. Качество данных является обшир-ной и все более актуальной темой в современном мире.Разные авторы определяют термин качество данныхпо-разному. Одни из них утверждают, что это сте-пень пригодности данных для конкретного использова-ния [2][3]. Другие делают упор на том, что это понятиемногомерное и складывается из точности, полноты идругих критериев [4][5][6]. Оценка качества данных –первый и очень важный шаг в трудоемком процессе,который называется Улучшение качества данных.

В течение нескольких последних десятилетий бы-ли разработаны различные методы оценки качестваданных [7][8]. Большинство из них относятся к реля-ционной модели данных и основываются на анализеотдельных значений без использования других таблиц.Исключением является метод кросс-доменного анали-за, который позволяет обрабатывать избыточность инесогласованность данных в нескольких таблицах [9]. Вэтой работе предлагается метод оценки качества, осно-ванный на сопоставлении нескольких источников. Этотподход позволяет определить качество экземпляра дан-

ных в контексте различных критериев и с применениемнескольких метрик для оценки.

Цель работы заключается в разработке нового подхо-да к оценке качества данных. Многообразие форматови моделей представления данных существенно услож-няет эту задачу. Изучение способов обработки неструк-турированных и слабоструктурированных данных про-должается, хотя еще не так давно основное вниманиеисследователей привлекали данные, представленные вреляционной модели и имеющие четкую структуру.Подход, который описывается в этой работе, учиты-вает текущие тенденции и предоставляет возможностьоценивать качество слабоструктурированных данных.Под этим термином мы понимаем возможное отсут-ствие схемы данных с фиксированными типами дан-ных, иерархическую структуру атрибутов и возмож-ный пропуск атрибутов. В экспериментах при оценкеиспользовались наборы данных, представленные в сла-боструктурированной форме. Они имеют различнуюструктуру, модель и формат представления.

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

Далее описан процесс сопоставления источников, за-имствованный из процессов интеграции данных. Со-поставление источников является ключевой особенно-стью предлагаемого метода оценки качества данных.Интеграция данных может быть одним из возмож-ных способов улучшения качества данных [10]. Онапредставляет собой комплекс задач, возникающих ив научных исследованиях (использование данных изразных биоинформационных репозиториев), и в ком-мерческой сфере (при объединении баз данных схожихфирм). Суть интеграции данных в слиянии записей,соответствующих одному и тому же объекту реальногомира, из различных источников.

6

Page 8: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

В разделе Метод описывается подход к оценке ка-чества данных. В разделе Эксперименты описанырезультаты применения метода для оценки качестваколлекции о книжных публикациях и трех коллекцийс информацией о футболистах. Цель экспериментовсостоит в оценке стабильности результатов примененияметода. В Заключении подводится итог работы и озву-чиваются задачи для будущих статей.

II. КАЧЕСТВО ДАННЫХ

II-A. Жизненный цикл

В нашей работе оценка качества данных рассмат-ривается как часть процесса улучшения качества дан-ных. Для описания этого процесса модифицируем по-нятие жизненного цикла качества данных, котороебыло введено авторами методологии Luzzu для оценкисвязанных данных [11]. Использование метода оценкикачества на основе сопоставления источников требуетдополнительного этапа в начале цикла. В итоге жиз-ненный цикл включает в себя 6 этапов:

1) Выбор стратегии сопоставления источников.При оценке качества данных методом сопостав-ления источников добавляется первый этап. Онвключает в себя идентификацию и анализ взаи-модействия нескольких источников.

2) Определение метрик. Для каждой предметнойобласти и конкретного приложения может иметьместо свое понимание термина качества данных.Поэтому определение критериев, которые имеютболее весомое значение, является первым шагомв этом процессе. Далее определяются метрики, покоторым будет проводиться оценка качества.

3) Оценка. На этом этапе набор данных оцениваетсяпо метрикам качества, определенным на предыду-щем этапе жизненного цикла. В результате этогоэтапа появляется информация о наличии ошибокразличного рода. По окончании этапа информа-ция об ошибках структурируется в отчетах и пере-дается на следующую стадию жизненного цикла.

4) Очистка данных. Для обеспечения высокого ка-чества и постоянного его улучшения требуетсяпроизвести очистку для набора данных. Очисткойданных называется процесс исправления ошибокв коллекции. Некоторые операции очистки, на-пример – по восстановлению пропущенных дан-ных, могут быть произведены автоматически. Вобщем случае этот процесс требует вмешатель-ства человека.

5) Хранение, каталогизация и архивирование. Наэтом этапе наборы данных, возможно очищенные,хранятся и архивируются вместе с их метадан-ными качества. Коллекции публикуются и ка-талогизируются на основе различных критериевкачества.

6) Анализ. Анализ метаданных позволит опреде-лить, какие наборы данных требуют новой ите-рации жизненного цикла качества.

Эта работа сфокусирована на первых трех этапахжизненного цикла качества данных.II-B. Критерии и метрики

Оценка качества данных включает в себя измерениекритериев качества. Критерии – свойства данных, ко-торые могут быть измерены или оценены в соответ-ствии со стандартами и использованы для определениякачества данных [6]. В разных областях ключевыми мо-гут являться разные характеристики. Например, ана-лиз статистических данных обычно требует значитель-ного и репрезентативного количества данных для про-ведения анализа. В этом случае важно способствоватьполноте, допуская несогласованность. И наоборот, припубликации таблицы результатов экзаменов студентовважнее иметь проверенные на непротиворечивость ре-зультаты, чем полные.

Критерии могут рассматриваться как некоторые ха-рактеристики набора данных. Сами по себе критериине предоставляют никаких количественных мер, номогут быть измерены с помощью метрик оценки каче-ства [2]. Эти метрики разрабатываются с учетом кон-кретного приложения и позволяют оценивать качестводанных по конкретным критериям. При этом одомукритерию качества может соответствовать несколькометрик. В данной ситуации термин метрика рассмат-ривается не в общеизвестном математическом смысле.

Существуют различные варианты разделения крите-риев качества на группы. К примеру, Кристиан Би-зер определяет 3 категории в соответствии с типомоцениваемых данных: Информация о контенте, Ин-формация о контексте и Рейтинги самих данных иих поставщиков [12]. Другой вариант разделения пред-ставлен в статье Завери, в которой рассматриваютсякритерии связанных данных: Доступность, Внутрен-ние, Контекстные и Репрезентативные [13]. В этомразделе мы рассмотрим критерии группы Информациио контенте или же в другой нотации – Внутреннейгруппы. В различных источниках в эту группу входят:синтаксическая и семантическая точность, полнота, со-гласованность и другие. Разберем некоторые из них.

В общем случае можно определить точность какстепень достоверности данных, то есть как меру совпа-дения значения в наборе данных со значением объектареального мира [14]. При этом точность бывает двухвидов: синтаксическая и семантическая.

1) Синтаксическая точность. Этот критерий каче-ства определяет совпадение значения атрибута созначением, принадлежащим предметной области,соответствующей этому атрибуту [2]. В роли мет-рик синтаксической точности могут выступатьразличные функции расстояния. Например, рас-стояние Левенштейна, которое определяется как

7

Page 9: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

минимальное число вставок, перестановок и уда-лений символов для преобразования одной стокив другую [20]. Другой пример метрики – использо-вание синтаксических правил, таких как проверкана допустимость символов или на соответствиезначения шаблону [13][6].

2) Семантическая точность. В свою очередь се-мантическая точность определяется как соответ-ствие заданного значения реальному [16]. Длявычисления этого критерия можно использоватьстатистические методы, например, поиск выбро-сов [12]. Другой способ определения семантиче-ской точности значения – поиск данных об одномобъекте в различных источниках и определениекорректности путем сравнения [2].

3) Полнота. Полнота набора данных – это степень,в которой в наборе данных присутствуют всерелевантные для него данные. Метрикой можетвыступать отношение количества непустых зна-чений коллекции к мощности всего набора дан-ных [6].

Отметим, что рассмотренные критерии отличаютсяот одноименных понятий, используемых в теории ин-формационного поиска.II-C. Сопоставление источниковИнтеграция данных включает в себя объедине-

ние данных из различных источников и предостав-ление данных пользователям в унифицированном ви-де [17][18]. Она состоит из трех этапов:

1) Сопоставление схем данных. Задача на этом эта-пе состоит в том, что из схем представления дан-ных нескольких независимых источников необхо-димо составить одну и предоставить отображениекаждой из схем на результирующую.

2) Связывание записей. Данный этап также назы-вают проблемой идентификации объекта. Задачазаключается в определении того, соответствуютли две сущности из разных наборов данных одно-му объектом реального мира.

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

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

III. МЕТОДIII-A. Стратегия идентификации объекта

Метод предполагает, что для поставленной задачиоценки качества идентифицированы источники дан-ных, с помощью которых она будет решаться. В ка-честве источников могут выступать несколько наборовданных с пересекающимися множествами объектов ре-ального мира. На этом этапе необходимо решить типич-ную задачу для сценариев интеграции данных – задачуидентификации объекта. Также в других источниках ееназывают проблемой слияния/очистки [19]. Суть зада-чи заключается в выборе алгоритма для определениясущностей из различных источников, соответствующиходному объекту реального мира.

Существуют разные способы решения этой пробле-мы, и метод позволяет использовать любой из нихдля достижения конечной цели – результатов оценкикачества данных. Рассмотрим два подхода к решениюзадачи идентификации объекта.

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

Использование предикатов соответствия [21] – дру-гой способ для решения этой задачи. К каждому ат-рибуту во всех наборах данных применяются атомар-ные метрики схожести. Они вычисляют насколько двазначения близки друг другу. Среди таких функций вы-деляют расстояние Левенштейна [20], метрику Джаро-Уинклера, фонетические функции и другие [15]. Далеек результатам этих вычислений применяют более об-щие функции, уровня записи. Как правило, на этомэтапе применяются статистические и вероятностныеалгоритмы. На последнем шаге метода производитсяанализ контекста сущностей, включающий внешниеключи с ассоциативными и структурными ссылками.

III-B. Определение критериев и метрикРассмотрим критерии и метрики качества, исполь-

зовавшиеся в эксперименте с книжными публикация-ми. Все измерения проводились на уровне атрибутовданных. Оценка применялась к двум типам данных -строковым значениям и элементам, хранящим дату.

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

8

Page 10: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

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

Синтаксическая точность основывается на принад-лежности значения тому множеству всех вариантов,которые соответствуют исследуемому атрибуту. Поэто-му оценка для синтаксической точности проводитсябез использования объекта другого источника. В слу-чае со строковыми атрибутами всевозможные значе-ния определяются естественным языком. Для проверкина синтаксическую точность таких данных можно ис-пользовать орфографические анализаторы или другиеинструменты, оценивающие правильность написанноготекста. При обработке атрибутов-дат важно учитыватьопределение формата представления полей этого ти-па в системе. Например, в определенных реализацияхдаты могут содержать только год, в других – толькополноценные записи, включающие день или в разныхсистемах могут использоваться разные разделителидля чисел. Все эти требования определяются полити-ками, разработанными до оценки качества. В качествеметрики синтаксической точности можно использоватьпредикат, проверяющий соответствие значения регу-лярному выражению.

При использовании метода сопоставления источни-ков для оценки качества могут возникнуть ситуации,когда оба значения соответствующих объектов синтак-сически точны, но тем не менее различны. Например,такое течение событий может произойти в случае,когда одно из значений неточно семантически. Этоозначает, что данные значения соответствуют разнымобъектам реального мира. Для проверки этой гипоте-зы в работе использовались возможности современныхпоисковых движков. Алгоритм заключается в том, чток поисковой системе отправляются два запроса, содер-жащие строковые значения первого и второго объекта.Далее проводится анализ выдачи на превышение по-рогового значения количества совпавших результатовиз двух запросов. В случае такого совпадения делаетсявывод о соответствии двух сущностей одному реаль-ному объекту и как следствие семантическая точностьстроковых значений. Для дат этот критерий можноинтерпретировать как проверку на теоретическую ре-альность такого значения. То есть, к примеру, датапубликации книги не может быть указана позже те-кущего года или до даты издания первого варианта.Такие правила также предварительно определяютсяполитиками оценки качества.

III-C. Оценка качества данныхНа этом этапе проводится основная вычислительная

работа метода. Псевдокод алгоритма оценки качестваданных приведен в блоке Algorithm 1. Ход алгоритма:

1) Для объекта, подвергающегося оценке, проводит-ся поиск соответствующего ему объекта в другомисточнике. Эта процедура выполняется в соот-ветствии со стратегией идентификации объекта,определенной на первом шаге метода. В резуль-тате получаем пару объектов, являющихся однойсущностью реального мира.

2) Теперь необходимо провести оценку качества поинтересующим критериям с использованием вы-бранных метрик и найденного объекта из друго-го источника. Существуют разные подходы дляприменения метрик качества к данным. Методне ограничивает разработчика в выборе такихподходов. Для примера, при проведении экспери-ментов для применения метрик качества исполь-зовалась идея конвейера. Вычисление оценки поразным критериям проводилось последовательно,и от результатов оценки текущей характеристикизависит то, какой критерий будет оцениватьсяследующим. Рассмотрим подробнее конвейер дляэксперимента с книжными публикациями.a) Первоначально необходимо сравнить значе-

ния атрибутов соответствующих объектов.Для тех полей, которые содержат идентич-ные данные, оценка не требуется. Мы поль-зуемся предположением о том, что экви-валентные значения означают правильностьсодержимого этого атрибута в обоих источ-никах данных.

b) К несовпадающим атрибутам объекта приме-няются метрики для оценки полноты. В слу-чае неполноты атрибута, дальнейшая оценкадля него не требуется, так как не отражаю-щее в достаточной мере значение реальногомира нельзя проверить на точность. Еслиатрибут обладает свойством полноты, пере-ходим к следующему шагу конвейера.

c) На этом этапе конвейера необходимо опре-делить какой анализ выполнять: синтаксиче-ской или семантической точности. Для этогоиспользуется предположение о том, что по-хожие, но не идентичные значения означа-ют, что данные могут иметь синтаксическуюнеточность. В свою очередь сильно отлича-ющиеся данные могут означать, что в нихесть семантическая ошибка. Для сравнениязначений можно использовать разные метри-ки сравнения, в зависимости от предметнойобласти. При проведении экспериментов длясравнения данных применялось расстояниеЛевенштейна.

9

Page 11: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

d) Для близких значений проводится оценкасинтаксической точности, а для далеких -семантической. В случае, если при вычисле-нии не было обнаружено ошибок этих типов,то качество данных исследуемого атрибутаопределяется как неизвестное и требует руч-ного анализа.

e) Алгоритм конвейера применяется ко всемобъектам набора данных.

Algorithm 1 Алгоритм оценки качества данных1: procedure DATA QUALITY ASSESSMENT2: reports← Array()3: for book ∈ books do4: book2← IdentificationObject(book)5: report← Initialize()6: for attr ∈ book.Attributes do7: if Equals(attr, book2) then8: report.Add(attr, accurate)9: else if IsNotComplete(attr, book2) then

10: report.Add(attr, incomplete)11: else if Leven(attr, book2) < thresh then12: if IsNotSyntAccur(attr, book2) then13: report.Add(attr, syntacticInaccurate)14: end if15: else if IsNotSemAccur(attr, book2) then16: report.Add(attr, semanticInaccurate)17: else18: report.Add(attr, unknown)19: end if20: end for21: reports.Add(report)22: end for23: return reports24: end procedure

III-D. Демонстрация результатовНа заключительном этапе проводится демонстрация

полученных результатов. После проведения процеду-ры оценки качества данных, необходимо представитьрезультаты в том виде, который позволит экспертампонять, как можно повысить качество этих данных.Как правило, реализация этого шага метода требуетменьших трудозатрат нежели непосредственная оцен-ка, однако, некачественное проведение этого этапаможет перечеркнуть всю проделанную ранее работу.Рассмотрим два подхода к демонстрации результатов,использовавшихся при экспериментах:

1) Один из способов заключается в предоставленииобщей картины качества данных по набору дан-ных. Это достигается путем вычисления метрикпо полученным результатам для разных критери-ев качества. Например, для того чтобы опреде-лить общую полноту набора данных, можно рас-считать отношение количества атрибутов, в кото-

рых полнота достигается, к неполным атрибутам.Получив общую картину качества данных, при-нимается решение о необходимости улучшениятекущего состояния набора данных и происходитвыбор подходящих способов для этого.

2) В противоположность первому подходу можнопредоставлять результаты оценки качества в видеотчетов по каждому содержащему ошибки объ-екту. Такой отчет предоставляет информацию обатрибуте, в котором есть недочет, то есть егозначение и критерий качества, который не удо-влетворяет определенным политикам. Результатыв такой форме можно автоматически отправлятьэкспертам для ручного исправления и повышениякачества набора данных.

IV. ЭКСПЕРИМЕНТЫБыло проведено два эксперимента в разных предмет-

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

IV-A. Книжные публикацииДля проведения первого эксперимента использова-

лись два набора данных с информацией о книжныхпубликациях. Коллекции были взяты из двух независи-мых источников: сообщество “Book-Crossing” [22] и пор-тал “Open Library” [23]. Наборы данных представленыв слабоструктурированном виде, в форматах csv и jsonсоответственно. Первая коллекция насчитывает поряд-ка 270 тыс. записей, в то время как вторая – около 25млн. Для оценки качества использовался набор данныхс информацией о публикациях, взятый из сообществапо буккроссингу.

Listing 1. Запись из набора данных Open Library{

” t i t l e ” : ”To␣ K i l l ␣a␣Mockingbird ” ,” pub l i s h e r s ” : [

”The␣Audio␣Partners ”] ,” authors ” : [

{” key ” : ” / authors /OL498120A ”

}] ,” isbn_10 ” : [

” 157270036X”] ,” publ ish_date ” : ”May␣1997 ”

}

Оценка качества данных производилась по отноше-нию к следующим атрибутам: название книги, датапубликации и издательство. Проблема идентификации

10

Page 12: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

Listing 2. Запись из набора данных Book-Crossing

” 157270036X” ; ”To␣ K i l l ␣a␣Mockingbird ” ; ” Harper␣Lee ” ; ” 1997 ” ; ” Audio␣Partners ”

объекта для данной задачи решалась сопоставлениемв наборах данных ключевого поля ISBN10 (междуна-родный стандартный книжный номер). Этот атрибутявляется уникальным идентификатором любой книж-ной публикации. На листингах 1 и 2 представленыпримеры записей из рассматриваемых наборов данных,описывающие однин и тот же объект реального мира(часть полей не показана).

Оценка качества данных проводилась по критериямполноты, синтаксической и семантической точности всоответствии с метриками, описанными в предыдущемразделе. Последний этап метода заключается в демон-страции полученных результатов. Два разных подходак представлению качества данных проиллюстрированына рисунках 1 и 2.

Для определения стабильности результатов приме-нения метода, набор данных “Book-Crossing” был раз-бит на десять равномощных независимых частей, идля каждой из них была произведена оценка трехатрибутов. Поле Publication Year оценивалось по тремкритериям, однако синтаксический анализ не выявилошибок, поэтому таблица результатов не содержитсоответствующего им поля. Результаты экспериментаприведены в таблицах 1, 2, 3.

Таблица IКАЧЕСТВО АТРИБУТА TITLE, %

1 2 3 4 5 6 7 8 9 10Верные 86,83 87,26 86,94 87,04 87,15 85,89 86,74 86,49 86,84 87,54

Синтаксическиеошибки 0,59 0,61 0,55 0,51 0,65 0,68 0,71 0,67 0,72 0,68

Семантическиеошибки 7,02 6,97 8,13 8,18 8,27 8,38 8,16 8,25 8,53 7,66

Неполные 1,96 1,78 1,50 1,60 1,35 1,69 1,55 1,65 1,38 1,57Неизвестно 3,60 3,38 2,89 2,66 2,58 3,36 2,84 2,94 2,54 2,54

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

Для каждого критерия качества атрибутов были рас-считаны среднеквадратические отклонения. Результа-ты представлены в таблице 4. Максимальное значениесреднеквадратического отклонения достигает 1,38%.Малый разброс результатов говорит о том, что ре-

зультаты применения предложенного метода оценкикачества стабильны.

Таблица IIКАЧЕСТВО АТРИБУТА PUBLISHER, %

1 2 3 4 5 6 7 8 9 10Верные 61,62 62,07 63,43 63,37 63,83 63,29 62,63 62,34 61,94 62,34

Синтаксическиеошибки 0,88 1,00 0,89 0,51 1,14 1,15 1,49 1,61 1,42 1,10

Семантическиеошибки 26,93 27,98 26,55 27,11 27,66 27,87 28,17 28,28 29,10 27,71

Неполные 7,38 5,89 5,81 5,02 4,22 4,04 3,95 4,15 4,05 5,41Неизвестно 3,19 3,06 3,32 3,48 3,15 3,65 3,76 3,61 3,50 3,43

Таблица IIIКАЧЕСТВО АТРИБУТА PUBLICATION YEAR, %

1 2 3 4 5 6 7 8 9 10Верные 43,51 41,82 40,32 40,12 45,91 40,78 38,83 41,28 40,02 41,95

Семантическиеошибки 0,00 0,00 0,01 0,00 0,01 0,00 0,00 0,00 0,01 0,01

Неполные 1,43 1,83 1,62 1,64 1,70 1,43 1,64 1,54 1,49 1,39Неизвестно 55,05 56,35 58,06 58,23 52,38 57,79 59,52 57,18 58,48 56,65

Таблица IVСРЕДНЕКВАДРАТИЧНЫЕ ОТКЛОНЕНИЯ, %

Название Издательство Год публикацииВерные 0,43 0,71 1,38

Синтаксическиеошибки 0,07 0,31 0

Семантическиеошибки 0,52 0,7 0

Неполные 0,17 1,07 0,13Неизвестно 0,36 0,21 1,37

Полный набор данных портала “Open Library”, насчи-тывающий более 25 млн записей, был проиндексированв поисковом движке ElasticSearch. Данная процедурапозволила быстро искать публикации по их ISBN. Мо-дуль оценки качества данных для обоих экспериментовбыл написан на Java. В роли функции расстояния ис-пользовалось расстояние Левенштейна, реализованноев библиотеке info.debatty. Для проверки орфографииприменялась библиотека org.languagetool. С помощьюYandex XML API были загружены все необходимыедля семантической оценки результаты поисковых за-просов.IV-B. Футболисты

Второй эксперимент заключался в оценке качестваданных трех коллекций с информацией о футболистах.

11

Page 13: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

Рис. 1. Отчеты качества данных

Поле Значение Дефект качества Поле Значение Дефект качества

ISBN 'F;F,F,,; ISBN C',C;;CPpX

Автор Nathaniel Hawthorne Автор Gabriel Garcia Marquez

Scarlet Letter Die Liebe in Den Zelten Семантическая

The Scarlet Letter (Signet Classics) Die liebe in den Zeiten der Cholera неточность

;99C p

1-Aug-59 1991

Signet Book Семантическая Deutscher Taschenbuch Verlag (DTV)

Signet Classics неточность DTV

Поле Значение Дефект качества Поле Значение Дефект качества

ISBN 7'C'8P,,P ISBN pP7;p,FCFX

Автор Dan Brown Автор Ann Rule

Angels Tamp; Demons Синтаксическая Last DanceA Last Chance (Ann RuleVs Crime Files) Семантическая

Angels P demons неточность Last dance, last chance and other true cases неточность

,ppC ,pp,

2003 2003

Atria Pocket

Atria Books Pocket Books

Название

Год издания

Издательство

Неполнота

Неизвестно

Название

Год издания Неполнота

Издательство

Название

Издательство Неполнота

Название

Год издания

Издательство Неполнота

Год издания Неизвестно

Рис. 2. Статистика качества по набору данных ”Book-Crossing”

0

20

40

60

80

100

Для этого были собраны данные со спортивных сайтов”championat.com”, ”bombardir.ru” и ”euro-football.ru”. Ре-зультирующие наборы данных содержат 3808, 3377 и3495 записей, соответственно. Коллекции создавались сединой схемой данных, поэтому проблемы сопоставле-ния схем данных не возникло. Пример записи из набораданных ”championat.com” представлен в листинге 3.

Listing 3. Запись из набора данных ”championat.com”{

” FirstName ” : ”Рафаэл ” ,” LastName ” : ”Толой ” ,” Na t i ona l i t y ” : [

”Бразилия ” ,”Италия ”

] ,” Po s i t i on ” : ” защитник” ,” BirthDate ” : ” 1990−10−10 ” ,” Height ” : 185 ,”Weight ” : 75 ,”Number ” : 3

}Оценка качества проводилась по пяти атрибутам:

Имя, Фамилия, Позиция, Номер, Гражданство. Про-блема идентификации объекта решалась с помощьюрасстояния Левенштейна по двум атрибутам: Имяи Фамилия. Если вычисленное расстояние оказалосьменьше порогового значения, то записи признавалисьсоответствующими одному объекту.

Для оценки использовались два критерия качества:точность и полнота. В этом эксперименте точностьне разделялась на синтаксическую и семантическую,так как решение об ошибке принималось только наоснове различия значений. Если в двух записях из трех,соответствующих одному объекту, значения атрибутасовпадали, то они признавались точными, а третье —неточным. Для оценки полноты производилась провер-ка на отсутствие значения у атрибута. Кроме того, для

12

Page 14: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

Рис. 3. Результаты оценки качества данных для эксперимента с футболистами

0

20

40

60

80

100

Championat.com Bombardir.ru Euro-football.ru

поля Гражданство неполнота имела место, если списокне содержал все необходимые элементы.

Результаты оценки качества трех наборов данныхпредставлены на рисунке 3. Высокий процент неточ-ных значений атрибута Фамилия связан с различнымпредставлением фамилий иностранных футболистов висточниках данных. Для атрибута Гражданство набораданных Euro-Football.ru 21% процент от всех значе-ний – неполные. Это обуславливается ограничениемисточника данных, заключающимся в том, что каж-дому футболисту на сайте соответствует только одногражданство.

V. ЗАКЛЮЧЕНИЕВ ходе работы были изучены различные крите-

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

В качестве примера применения метода было прове-дено два эксперимента. В первом из них использова-

лись две коллекции с информацией о книжных публи-кациях, для одной из которых была проведена оценкакачества. Во втором эксперименте качество данныхбыло оценено для трех наборов данных о футболистах.Описанный метод показал стабильные результаты наэтих наборах данных.

Целью будущих работ является использование раз-работанного метода для оценки качества других дан-ных. Под этим понимается, как использование другихатрибутов с новыми типами данных, так и оценкадругих коллекций.

СПИСОК ЛИТЕРАТУРЫ

[1] John Gantz and David Reinsel. Extracting value from chaos. IDCiview, 1142(2011):1–12, 2011.

[2] C. Batini and M. Scannapieca. Data quality. Springer-Verlag,Berlin, Germany, pages 19–31, 2006.

[3] Thomas N. Herzog, Fritz J. Scheuren, andWilliam E.Winkler. Whatis Data Quality and Why Should We Care?, pages 7–15. SpringerNew York, New York, NY, 2007.

[4] Richard Y Wang, Henry B Kon, and Stuart E Madnick. Dataquality requirements analysis and modeling. In Data Engineering,1993. Proceedings. Ninth International Conference on, pages 670–677. IEEE, 1993.

[5] Howard Veregin. Data quality parameters. Geographical informationsystems, 1:177–189, 1999.

13

Page 15: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

[6] Nicola Askham, Denise Cook, Martin Doyle, Helen Fereday, MikeGibson, Ulrich Landbeck, Rob Lee, Chris Maynard, Gary Palmer,and Julian Schwarzenbach. The six primary dimensions for dataquality assessment. Technical report, Technical report, DAMA UKWorking Group, 2013.

[7] Philip Woodall, Martin Oberhofer, and Alexander Borek. Aclassification of data quality assessment and improvement methods.International Journal of Information Quality 16, 3(4):298–321, 2014.

[8] Hans Viggo Sæbø. Quality assessment and improvement methodsin statistics–what works? Statistika, 94(4):5–14, 2014.

[9] Jixue Liu, Jiuyong Li, Chengfei Liu, and Yongfeng Chen. Discoverdependencies from data—a review. IEEE transactions on knowledgeand data engineering, 24(2):251–264, 2012.

[10] Gregor Endler. Data quality and integration in collaborativeenvironments. In Proceedings of the on SIGMOD/PODS 2012 PhDSymposium, pages 21–26. ACM, 2012.

[11] Jeremy Debattista, SÖren Auer, and Christoph Lange. Luzzu—a methodology and framework for linked data quality assessment.Journal of Data and Information Quality (JDIQ), 8(1):4, 2016.

[12] Christian Bizer and Richard Cyganiak. Quality-driven informationfiltering using the wiqa policy framework. Web Semantics: Science,Services and Agents on the World Wide Web, 7(1):1–10, 2009.

[13] Amrapali Zaveri, Anisa Rula, Andrea Maurino, Ricardo Pietrobon,Jens Lehmann, and Sören Auer. Quality assessment for linked data:A survey. Semantic Web, 7(1):63–93, 2016.

[14] R Ryan Nelson, Peter A Todd, and Barbara H Wixom. Antecedentsof information and system quality: an empirical examinationwithin the context of data warehousing. Journal of managementinformation systems, 21(4):199–235, 2005.

[15] Kalaiselvi R. Sumathi V. P., Kousalya K. A comparativestudy on syntax matching algorithms in semantic web. WSEASTRANSACTIONS on COMPUTERS, 2016.

[16] Yuangui Lei, Victoria Uren, and Enrico Motta. A frameworkfor evaluating semantic metadata. In Proceedings of the 4thinternational conference on Knowledge capture, pages 135–142.ACM, 2007.

[17] Xin Luna Dong and Divesh Srivastava. Big data integration. In DataEngineering (ICDE), 2013 IEEE 29th International Conference on,pages 1245–1248. IEEE, 2013.

[18] Jens Bleiholder and Felix Naumann. Data fusion. ACM ComputingSurveys (CSUR), 41(1), 2009.

[19] Mauricio A Hernández and Salvatore J Stolfo. Real-world data isdirty: Data cleansing and the merge/purge problem. Data miningand knowledge discovery, 2(1):9–37, 1998.

[20] Владимир Иосифович Левенштейн. Двоичные коды с исправ-лением выпадений, вставок и замещений символов. In ДокладыАкадемии наук, volume 163, pages 845–848. Российская академиянаук, 1965.

[21] Nick Koudas, Sunita Sarawagi, and Divesh Srivastava. Recordlinkage: similarity measures and algorithms. In Proceedings of the2006 ACM SIGMOD international conference on Management ofdata, pages 802–803. ACM, 2006.

[22] Book-Crossing Dataset. URL : http://www2.informatik.uni-freiburg.de/ cziegler/BX/.

[23] Open Library. URL : https://openlibrary.org/.

Quality assessment ofsemi-structured data by

independent sources matchingAlexey Kalina, Boris Novikov

Data quality assessment is an important activity whenworking with large volumes of information. In recent years,the number of tasks associated with the use of semi-structured data is constantly growing. The processingof such data presents a greater complexity than thedata presented in a structured form. Therefore, the non-trivial task of quality assessment becomes even moredifficult. This paper proposes an approach to assess dataquality, based on a matching of two independent sources.

The method allows evaluating the quality using variousdimensions and metrics, taking into account the types ofdata and the purpose of the procedure. The results of theexperiments demonstrate the high stability of the method.

14

Page 16: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

Использование СММ в играх с неполнойинформацией

Екатерина БакшинскаяСанкт-Петербургский государственный

университетEmail: [email protected]

Аннотация—В данной статье описывается стати-стический подход к решению задач, связанных состратегическими играми с неполной информацией.Основная идея подхода заключается в использовании,для описания состояний игры в различные моментывремени, скрытых марковских моделей (СММ). Внашей работе мы рассматриваем модель, котораяотображает поведение игроков как набор состоянийс заранее определенными вероятностями переходовмежду ними. Предложенный в работе метод, ос-новывается на комбинации алгоритмов, эффективнорешающих задачи описанные СММ. Работа методапроиллюстрирована на примерах простейших игр сдвумя игроками.

I. ВВЕДЕНИЕ

Математическая теория игр — дисциплина, возник-шая на стыке 2 наук: математики и экономики. Внастоящее время область ее практического применениядостаточно широка: политические и дипломатическиеотношения, биология, информатика и другие. Предме-том изучения данной дисциплины являются игры исвязанные с ними стратегии (т.е. множества доступ-ных игрокам действий), а целью — выработка методовнахождения оптимальных стратегий. Под игрой, какправило, понимается некоторая конфликтная ситуа-ция, т.е. процесс, в котором принимают участие от двухи более сторон преследующих собственные цели (см.,например, [1]).

Игры принято различать по типу. Например, коопе-ративные и некооперативные игры, с нулевой суммой иненулевой суммой, параллельные и последовательные,метаигры, игры с полной или неполной информацией[2], [4]. Последние, с одной стороны, наиболее сложныдля построения моделей прогнозирования, с другой— представляют значительный практический интерес,т.к., достаточно часто в реальных конфликтных ситу-ациях, участники не обладают полной информацией одействиях оппонентов [3], [5], [6].

Введем важное определение, которым будем пользо-ваться дальше:

Определение 1. Ход игрока — это выбор действияиз некоторого множества возможных действий игрока,определяемых правилами игры.

В нашей работе мы будем рассматривать игры, вклю-чающие в себя следующие элементы:

1) чередование ходов, которые могут быть как лич-ными, так и случайными;

2) недостаточность информации;3) функция выигрыша [7].Как уже было отмечено ранее, во многих реаль-

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

В данной статье мы будем использовать Скрытыемарковские модели (СММ) для описания состоянийигры в различные моменты времени. СММ зарекомен-довали себя как мощное средство обработки данныхв самых различных областях [8]. Преимущества СММперед другими моделями следующие:

1) СММ обладают простой математический струк-турой;

2) структура СММ позволяет моделировать слож-ную цепочку наблюдений;

3) параметры модели могут быть автоматически вы-браны таким образом, чтобы описать имеющийсянабор данных для обучения (под обучением СММпонимается определение оценок параметров моде-ли).

В недавно опубликованной работе [9] был предложенметод нахождения оптимальной стратегии для игры сдвумя участниками, основанный на применении СММ.В статье был описан подход к решению стратегическихигр, в которых игроки могут менять стратегии в тече-нии игры. Целью было увеличить шансы игрока, т.е.узнать какую стратегию принимает соперник в каж-дый момент времени. Предложенный подход основанна использовании алгоритма Баума-Велша и поискасмешанного равновесия Нэша.

В нашей работе мы хотим развить данный подход,предложив альтернативный метод, основанный на при-

15

Page 17: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

менении алгоритма Витерби для получения цепочкискрытых состояний и выбора наиболее вероятного хо-да вместо решения марковской игры и использованияравновесия Нэша.

Работу нашего алгоритма мы проиллюстрируем надвух демонстрационных примерах: игры в теннис иигры в “Камень, ножницы, бумага”.

II. СВЯЗАННЫЕ РАБОТЫ

Основополагающей работой в теории игр являетсякнига Джона фон Неймана и Оскара Моргенштерна“Теория игр и экономическое поведение” [2]. Большаячасть данной книги посвящена играм с нулевой сум-мой. Игры с нулевой суммой — игры, в которых вы-игрыш одной стороны равен проигрышу другой. Игрыс нулевой суммой с участием 2–х игроков называютсяантагонистическими. К таким играм также можноотнести игры с постоянной суммой, при которых суммаобщего выигрыша всех игроков фиксирована, и по-этому увеличение выигрыша одного из них возможнотолько за счет уменьшения выигрышей других игро-ков.

В конце 1960–х годов Джон Харшаньи ввел понятиеигр с неполной информацией и разработал концепциюбайесовских равновесий. Д. Харшаньи рассматривалситуации, когда у одного игрока нет информации овозможных выигрышах другого игрока, и выигрышиприходится оценивать вероятностно.

На практике часто встречаются ситуации, кото-рые в теории игр принято называть повторной игрой(repeated game) т.е. игрой, которая состоит в неко-тором числе повторений некоторых игровых стадий(stage game). Впервые повторные игры с неполнойинформацией были введены Ауманом и Машлером в1960г. [3]. Рассматривались игры, в которых начальноесостояние выбиралось с вероятностью p, и только игрок1 знает это состояние, в то время как игрок 2 знаетвсе возможные состояния, но не знает фактическогосостояния. После каждого хода, оба игрока знают исходпредыдущего хода и продолжают играть.

В [10] рассматриваются игры с двумя игроками снулевой суммой, заданные цепью Маркова над конеч-ным множеством состояний и семейством матричныхигр. Последовательность состояний подчиняется цепиМаркова. В начале каждого этапа только игроку 1 со-общается о текущем состоянии, затем воспроизводитсясоответствующая матричная игра, после чего выбран-ные действия наблюдаются обоими игроками. Такиеигры можно охарактеризовать играми с отсутствиеминформации с одной стороны.

В [9] описана модель Скрытой Марковской Игры(СМИ), при которой второй игрок не знает не толькоскрытых состояний в определенные моменты времени,но так же не знает матрицу переходов из состояния всостояние.

В нашей работе мы рассмотрим альтернативный ме-тод нахождения оптимальной стратегии, разработан-ный на основе предложенного в статье [9].

III. ОПРЕДЕЛЕНИЕ МОДЕЛИ СММ

Определение 2. Скрытая марковская модель с па-раметрами λ = (A,B, π) — это модель марковскогопроцесса, в котором неизвестно, в каком состояниинаходится система (состояния скрыты), в то же времякаждое состояние может с некоторой вероятностьюпроизвести некоторое событие, которое можно наблю-дать (наблюдение).

В нашей работе мы рассматриваем однородные цепимаркова, то есть такие, матрица переходных вероятно-стей которых не зависит от номера шага: Aij(t) = Aij .Скрытую марковскую модель с параметрами λ =

(A,B, π) можно описать следующим образом:1) конечное множество состояний S = {s1, . . . , sn};2) состояние вероятностей переходов, стохастиче-

ская матрица A:

A = {aij |aij = P (St = j|St−1 = i)}.

Вероятностные характеристики марковского про-цесса в следующий момент времени зависят толь-ко от вероятностных характеристик в текущиймомент времени;

3) конечное множество наблюдений O = o1, . . . , ok;4) состояние конкретного распределения вероятно-

стей, матрица B:

B = {bil|bil = P (Ot = l|St = i)}.

Значение наблюдаемого вектора Ot, взятого вмомент времени i, зависит только от скрытогосостояния в момент времени i;

5) вектор начала состояний π

π = {πi|πi = P (S1 = i)}.

Популярным примером, иллюстрирующим использо-вание CMM, является “Задача о нечестном казино”:

Имеется 2 кубика: один честный с вероятностью вы-падения каждой грани = 1

6 и нечестный с вероятностьювыпадения 6–ки = 1

2 , а остальных граней = 110 . Кру-

пье подменяет кубики с определенной вероятностьюв зависимости от того, какой кубик был брошен вданный момент. Мы можем наблюдать, что выпадаетна кубиках, но мы не знаем, какой из кубиков былиспользован. Таким образом, требуется определить по-следовательность скрытых состояний.

16

Page 18: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

Честный кубик

Нечестный  кубик

A[1,1]

A[2,1]

A[1,2]A[2,2]

Скрытые состояния

Видимые наблюдения

B[1,k]  k = (1:6)

B[2,k]  k = (1:6)

P(k|честный) = 1/6 k = (1:6) 

P(k|нечестный) = 1/10 k = (1:5)

P(6|нечестный) = 1/2 

Рис. 1. Иллюстрация модели для задачи о нечестном казино.

IV. ПОСТАНОВКА ЗАДАЧИ И ПОШАГОВЫЙ АЛГОРИТМРЕШЕНИЯ

В рассматриваемой нами статье ([9]) ставилась зада-ча: для игрока i найти вероятность того, что Otl+1

= Oj

при 1 ≤ j ≤ k, используя последовательность наблюде-ний Ot0 , . . . , Otl

. В то же время, в рамках рассматривае-мой задачи, нам неизвестны ни последовательности со-стояний, ни элементы матриц A (перехода из состоянияв состояние) и B (перехода из конкретного состояния внаблюдение).

Авторы рассматриваемой статьи на каждом шагеигры выводили оценки параметров модели СММ спомощью алгоритма Баума-Велша, и затем решалимарковскую игру.

Рис. 2. Пример модели с двумя состояниями и двумя наблюдениями.

В нашей работе мы предлагаем вместо решения мар-ковской игры использовать алгоритм Витерби для на-хождения состояния другого игрока в текущий момент

времени, после чего делать выбор наиболее вероятногохода.

Таким образом, решение поставленной задачи будетстроиться по следующим шагам:

1) составляющие игры и описание СММ:• 2 игрока, один из которых описывается СММ

(будем называть его первым игроком);• функции выигрыша в виде матрицы выплат.

2) вычисляем элементы матрицы B, находя смешан-ные стратегии для первого игрока;

3) используем алгоритм Баума–Велша для выводапараметров первого игрока на каждом шаге игры;

4) находим скрытые состояния, используя алгоритмВитерби;

5) зная текущее состояние противника, выбираемдля игрока 2 наиболее выигрышных ход;

6) игроки делают ход. Сравниваем наблюдения ивычисляем результат хода;

7) добавляем результат последнего хода к цепоч-ке наблюдений, подаваемой на вход алгоритмуБаума–Велша и Витерби;

8) повторяем шаги 2)-6) после каждого хода до окон-чания игры.

V. ОПИСАНИЕ АЛГОРИТМОВ И ИНСТРУМЕНТАРИЙВсе описанные выше методы реализованы в языке

программирования R. Выбор данного языка обуслов-лен наличием большого количества пакетов с откры-тым кодом, позволяющих решать задачи описанныескрытыми марковскими моделями. Для реализациипредложенного нами алгоритма был использован пакет“HMM”[11] (код пакета “HMM” можно посмотреть в[12]), а конкретно функции из него:initHMM — инициализация СММsimHMM — генерация цепочки наблюдений и состо-

яний по заданной СММbaumWelch — алгоритм Баума-Велшаviterbi — алгоритм ВитербиРассмотрим подробнее алгоритмы Баума-Велша и

Витерби:Алгоритм Баума-Велша используется для нахож-

дения неизвестных параметров СММ. Пусть дана вы-ходная последовательность (или несколько) с дискрет-ными значениями, требуется “потренировать” СММ наданном выходе. Задача обучения параметров в СММсостоит в том, чтобы, с учетом выходной последова-тельности или на бора таких последовательностей, най-ти наилучший набор вероятностей для A — матрицыпереходов из состояние i в состояние j, B — матрицывероятности появления наблюдений в зависимости отсостояния и π — вектора начальных состояний. Фор-мальное описание алгоритма можно посмотреть в [13],[14].

Реализация алгоритма Баума-Велша, осуществлен-ная в пакете “HMM” не предусматривает оценку век-тора π. В связи с этим, код алгоритма Баума-Велша

17

Page 19: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

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

вероятную последовательность предыдущих состоянийскрытой марковской модели на основе последователь-ности наблюдений (см. [13], [14]).

VI. ТЕСТИРОВАНИЕПротестируем наш алгоритм на примере игры опи-

санной в [9], сравним с результатами, полученнымиавторами статьи, а так же проведем дополнительныетесты.

В рассматриваемой работе приведен пример игры втеннис, в которой есть 2 игрока (подающий и принима-ющий). Набор стратегий для каждого из них:

1) подающий может подать мяч в центр (Центр) илив открытую зону (Открытый);

2) принимающий должен быть готов к одному изэтих действий.

У подающего есть 3 состояния: Агрессивный, Спо-койный или Защитный. Для каждого состояния име-ются свои вероятности подать мяч в центр или в от-крытую зону (состояния меняются согласно цепи мар-кова). Наша задача состоит в том, чтобы предсказатьнаправление подачи (центр или открытая зона).

Прежде чем перейти к непосредственно к вычисле-ниям и тестированию, введем несколько определений:Определение 3. Матрица выплат — это таблица, вкоторой отображены выплаты каждому из участниковв игре двух лиц за определенный ход. Строки таблицыпоказывают результаты каждого выбора хода первымигроком, а столбцы –– результаты выбора второго иг-рока.Определение 4. Смешанная стратегия — заданноевероятностное распределение ходов.Определение 5. Равновесие в смешанных стратеги-ях — ситуация, когда ни одному из игроков не выгодноотклоняться от своей смешанной стратегии.Определение 6. Чистая стратегия — частный слу-чай смешанной стратегии, в котором одна из вероятно-стей равна 1, а остальные 0.Определение 7. Седловая точка — вид равновесияв чистых стратегиях, характеризующий тем, что соот-ветствующий элемент матрицы является одновременнонаибольшим в своем столбце и наименьшим в своейстроке [7].

Матрицы выплат для каждого из состояний в пред-ложенной игре использовались следующие:

Обозначения:“Открытый”— открытая зона“Центр”— центральная зона

Таблица IМАТРИЦА ВЫПЛАТ (АГРЕССИВНЫЙ ИГРОК)

Открытый ЦентрОткрытый 0.35 , 0.65 0.89 , 0.11

Центр 0.98 , 0.02 0.15 , 0.85

Таблица IIМАТРИЦА ВЫПЛАТ (УМЕРЕННЫЙ ИГРОК)

Открытый ЦентрОткрытый 0.15 , 0.85 0.8 , 0.2

Центр 0.9 , 0.1 0.15 , 0.85

Таблица IIIМАТРИЦА ВЫПЛАТ (ЗАЩИТНЫЙ ИГРОК)

Открытый ЦентрОткрытый 0.1 , 0.9 0.55 , 0.45

Центр 0.85 , 0.15 0.05 , 0.95

VI-A. Вычисление элементов матрицы B

Для вычисления элементов матрицы B ищем рав-новесие в смешанных стратегиях. Подробное решениебудет приведено для матрицы выплат агрессивногоигрока (для остальных матриц выплат аналогично).

Рассмотрим нашу матрицу выплат:

Таблица IVМАТРИЦА ВЫПЛАТ (АГРЕССИВНЫЙ ИГРОК)

Открытый ЦентрОткрытый 0.35 , 0.65 0.89 , 0.11

Центр 0.98 , 0.02 0.15 , 0.85

Наша игра является игрой с постоянной суммой.При игре с постоянной суммой на каждом шаге игрыобщая сумма выплат игрокам фиксирована. Такимобразом, на каждом шаге игры зная выигрыш первогоигрока, мы с точностью можем сказать о выигрышевторого игрока. В таком случае для поиска равновесияв смешанных стратегиях нам достаточно рассматри-вать матрицу выплат в которой представлены выплатытолько для первого игрока:

Таблица VМАТРИЦА ВЫПЛАТ ПЕРВОГО ИГРОКА (АГРЕССИВНЫЙ ИГРОК)

Открытый ЦентрОткрытый 0.35 0.89

Центр 0.98 0.15

Ситуация равновесия для игры с постоянной суммойописывается следующими неравенствами:

H(x, y) ≤ H(x, y) ≤ H(x, y), ∀x ∈ S1, ∀y ∈ S2, (1)

где

18

Page 20: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

• S1, S2 — множество стратегий (наблюдений в на-шем случае) для игрока 1 и игрока 2;

• x = {x1, x2} , y = {y1, y2} — смешанные стратегии,где x1, x2 — вероятности подать мяч в открытую ицентральную зоны первым игроком, а y1, y2 — ве-роятности принять мяч в открытой и центральнойзонах вторым игроком;

• H(x, y) — функция выигрыша игрока 1 в ситуации(x, y), которая определяется как математическоеожидание его выигрыша [16].

Неравенства (1) можно интерпретировать следую-щим образом: игрок 1 стремится найти стратегию,которая будет приносить ему максимальный выигрыш.В то же время игрок 2 ищет стратегию при которой унего будет минимальный проигрыш.

Прежде чем искать равновесие в смешанных стра-тегиях необходимо определить есть ли равновесие вчистых стратегиях (есть ли седловая точка).

В нашем случае ситуации равновесия в чистых стра-тегиях нет.

Таким образом, нам необходимо найти равновесие всмешанных стратегиях для игрока 1, для чего необхо-димо решить задачу линейного программирования:

µ −→ sup

x1, x2 ≥ 0

x1 + x2 = 1

0.35x1 + 0.98x2 − µ ≥ 0

0.89x1 + 0.15x2 − µ ≥ 0

Для решения задачи был использован пакет языка R“Rglpk”[15]. Полученное решение для матрицы выплатагрессивного игрока: x1 = 0.61 , x2 = 0.39.

Аналогично посчитав для состояний “умеренного ” и“защитного” игрока получаем следующую матрицу B:

Таблица VIМАТРИЦА B

Открытаязона

Центральнаязона

Агрессивный игрок 0.61 0.39Умеренный игрок 0.54 0.46Защитный игрок 0.64 0.36

Для сравнения представим матрицу B, полученнуюв рассматриваемой статье ([9]) без учета равновесиясмешанных стратегий:

Таблица VIIМАТРИЦА B ИЗ СТАТЬИ “USING HMM IN STRATEGIC GAMES”

Открытаязона

Центральнаязона

Агрессивный игрок 0.9 0.1Умеренный игрок 0.6 0.4Защитный игрок 0.2 0.8

Оценим работу нашего алгоритма на примере двухматриц: посчитанной нами и представленной в статье.

VI-B. Тестирование по данным представленным встатье

Рассмотрим для начала сценарий “Агрессивный иг-рок”.

Рис. 3. Оригинальная СММ (Агрессивный игрок)

На каждом шаге игры применяем алгоритм Баума-Велша:

Рис. 4. Тренированная СММ (Агрессивный игрок) на 1000 шаге игры

После чего применив алгоритм Витерби для полу-ченной СММ, получаем последовательность предпо-лагаемых состояний первого игрока. Теперь, зная всенеобходимые сведения об игроке 1, выбираем наиболеевероятное наблюдение для игрока 2. Сравнив получен-ные наблюдения, считаем результат хода и повторяемалгоритм Баума-Велша и Витерби, но уже на наблюде-ниях количество которых на единицу больше.

Используя матрицы выплат, мы посчитали результа-ты игры после каждых 200 ходов из 10000 (то есть в 50-ти партиях) и получили 47 выигрышей, что составляет94% от общего количества игр.

19

Page 21: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

Таблица VIIIСРАВНЕНИЕ РЕЗУЛЬТАТОВ (СЦЕНАРИЙ АГРЕССИВНЫЙ ИГРОК)

Предложеннаянами модель

Модель, предложеннаяв статье [9]

Количествопобед 94% 78%

Рассмотрим теперь аналогичным образом сценарий“Защитный игрок”. Оригинальная СММ совпадает спредставленной на рис. 3 за исключением вектора на-чальных состояний: π = (0.3, 0.13, 0.57). Тренирован-ная СММ, после применения алгоритма Баума-Велша:

Рис. 5. Тренированная СММ (Защитный игрок) на 1000 шаге игры

Результат представлен в таблице:

Таблица IXСРАВНЕНИЕ РЕЗУЛЬТАТОВ (СЦЕНАРИЙ ЗАЩИТНЫЙ ИГРОК)

Предложеннаянами модель

Модель, предложеннаяв статье [5]

Количествопобед 92% 71%

Из полученных результатов, видим, что наш алго-ритм сработал лучше, чем представленный в [9].

Особый интерес представляет количество ударов, от-раженных принимающим игроком т.е. сколько ходов из10000 оказались выигрышными для него.

Таблица XКОЛИЧЕСТВО ОТРАЖЕННЫХ УДАРОВ

Сценарийагрессивный игрок

Сценарийзащитный игрок

Количествоотраженных ударов 74,53% 73,67%

Так же были построены 95−ти% доверительные ин-тервалы для двух сценариев:

Для сценария агрессивного игрока: 71, 42% < x <76, 24%.

Для сценария защитного игрока: 71, 18% < x <76, 64%.

VI-C. Тестирование на данных, найденных намиАналогичным образом алгоритм был протестирован

для этой же игры, при тех же сценариях (агрессив-ный игрок и защитный игрок), но уже с матрицейB, найденной нами. Оригинальная СММ совпадает спредставленной на рис. 3 за исключением матрицы B.Использовалась матрица B из таблицы VI. Результатыпредставлены в таблице:

Таблица XIРЕЗУЛЬТАТЫ ПРИ ТЕСТИРОВАНИИ НА НАШИХ ДАННЫХ

Результат, посчитанныйпо матрицам выплат

Количествоотраженных ударов

Сценарийагрессивный

игрок62% 59.24%

Сценарийзащитный

игрок62% 61.34%

95−ти% доверительные интервалы для количестваотраженных ударов:

Для сценария агрессивного игрока: 56, 16% < x <63, 88%.

Для сценария защитного игрока: 55, 79% < x <63, 52%.

Видим, что результаты, полученные при тестирова-нии алгоритма на данных, использующих матрицу вы-плат найденную в разделе VI-A, оказались значительнохуже результатов, полученных при тестировании алго-ритма на данных из статьи [9]. Это можно объяснитьтем, что в матрице B, посчитанной в данной работе,вероятности подать в открытую зону и центральнуюочень близки друг к другу. При таких условиях доста-точно большую роль в игре играет “случай”, которыйневозможно контролировать. Таким образом, можносделать следующий вывод: чем равномернее матрицаB, тем хуже работает алгоритм, и наоборот.

VII. ПРИМЕНЕНИЕ МОДЕЛИ К ДРУГОЙ ИГРЕ СОСХОЖИМИ ХАРАКТЕРИСТИКАМИ

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

1) игроки одновременно делают ход, в котором мо-гут поставить камень, ножницы или бумагу;

2) побеждает в ходе тот, кто выставил более выиг-рышную фигуру;

3) камень побеждает ножницы, ножницы побежда-ют бумагу, бумага побеждает камень. Рис.6.;

4) после чего считается результат хода;5) далее ход может повторяться, то есть игра явля-

ется повторной.

20

Page 22: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

Рис. 6. Игра “Камень, ножницы, бумага”

Опишем рассматриваемую модель игры:1) два игрока, один из которых не знает скрытых

состояний и переходов между состояниями и на-блюдениями другого;

2) первый игрок может принимать одно из трехсостояний:

a) выгоднее ставить “камень”;b) выгоднее ставить “ножницы”;c) выгоднее ставить “бумагу”;

3) начальное состояние зависит от личных интересовигрока, мы будем проверять алгоритм при равно-мерном векторе начала состояний π = ( 1

3 ; 13 ; 1

3 );4) вероятности переходов между состояниями и на-

блюдениями представлены на рис.7.

КаменьНожницы

Бумага

Ставитькамень1/3

Ставитьножницы

1/3

Ставитьбумагу1/3

0.5 0.33 0.17 0.17 0.5 0.33 0.330.17 0.5

0.70.2

0.1

0.80.1

0.1

0.7

0.1 0.2

Рис. 7. Оригинальная СММ игры “Камень, ножницы, бумага”.

Использованы следующие матрицы выплат:

Таблица XIIМАТРИЦА ВЫПЛАТ (ВЫГОДНО СТАВИТЬ КАМЕНЬ)

Камень Ножницы БумагаКамень 0.5 , 0.5 1 , 0 0 , 1

Ножницы 0.5 , 0.5 0.5 , 0.5 1 , 0Бумага 1 , 0 0 , 1 0.5 , 0.5

Таблица XIIIМАТРИЦА ВЫПЛАТ (ВЫГОДНО СТАВИТЬ НОЖНИЦЫ)

Камень Ножницы БумагаКамень 0.5 , 0.5 1 , 0 0 , 1

Ножницы 0 , 1 0.5 , 0.5 1 , 0Бумага 1 , 0 0.5 , 0.5 0.5 , 0.5

Таблица XIVМАТРИЦА ВЫПЛАТ (ВЫГОДНО СТАВИТЬ БУМАГУ)

Камень Ножницы БумагаКамень 0.5 , 0.5 1 , 0 0.5 , 0.5

Ножницы 0 , 1 0.5 , 0.5 1 , 0Бумага 1 , 0 0 , 1 0.5 , 0.5

В данной игре множество наблюдений состоит изтрех элементов: O = {Камень, Ножницы, Бумага}.

Применяем алгоритм Баума-Велша на каждом шагеигры:

КаменьНожницы

Бумага

Ставитькамень0.296

Ставитьножницы0.2894

Ставитьбумагу0.4146

0.5 0.33 0.17 0.17 0.5 0.33 0.330.17 0.5

0.68230.185

0.1327

0.78440.124

0.0916

0.6634

0.1181 0.2185

Рис. 8. Тренированная СММ игры “Камень, ножницы, бумага”на1000 шаге игры

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

Далее повторяем действия из раздела VI с разницейв том, что мы для игрока 2 выбираем не наиболеевероятный ход (фигуру), а тот ход, который побеждаетнаиболее вероятный (побеждает наиболее вероятнуюфигуру).

Был посчитан результат игры по матрицам выплатпосле каждых 200 шагов (т.е. в 50-ти партиях), и так-же посчитано количество выигрышей (количество си-туаций, при которых игрок 2 выставил более выигрыш-ную фигуру), и количество ситуаций “ничья”(игрокивыставили одинаковые фигуры). Все результаты пред-ставлены в следующей таблице:

21

Page 23: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

Таблица XVРЕЗУЛЬТАТЫ РАБОТЫ АЛГОРИТМА В ИГРЕ “КАМЕНЬ, НОЖНИЦЫ,

БУМАГА”

по матрицамвыплат

Количество”выигрышей”

Количествоситуаций”ничья”

Результат 76.7% 74.3% 15.2%

Полученные результаты, оказались неплохими, номожем ли мы на этом основании утверждать, что нашалгоритм примени к любой игре со схожими характе-ристиками? Для ответа на этот вопрос был проведенеще один тест на модели игры “Камень, ножницы,бумага” со следующими шагами:

• игра была запущена 100 раз;• при каждом запуске игры генерировалась рандом-

ная матрица A, матрицы выплат по которым вы-числялись элементы матрицы B и вектор началасостояний π;

• каждая игра содержала 10000 шагов;• после каждой игры вычислялось количество выиг-

рышей и ситуаций “ничья”.

По результатам проведенного теста были построеныгистограммы (рис.9 и рис.10), в которых:

Cреднее количество выигрышей составило: 72.3%

Среднее для ситуации “ничья” составило: 14.9%

Win

Fre

quen

cy

40 50 60 70 80 90 100

05

1015

20

Рис. 9. Количество выигрышей

Draw

Fre

quen

cy

8 10 12 14 16 18 20 22

010

2030

40

Рис. 10. Количество ситуаций “ничья”

VIII. ЗАКЛЮЧЕНИЕ

В нашей работе было представлено решение длячастных случаев стохастической игры с отсутствиемполной информации. В качестве инструмента описанияданного процесса(стохастической игры) мы использо-вали СММ (скрытую марковскую модель). Нами былразработан алгоритм позволяющий предсказывать сле-дующее действие соперника (описанного СММ) в игредвух лиц.

В порядке иллюстрации работы нашего алгоритмамы рассмотрели два демонстрационных примера: игрув теннис и игру “Камень, ножницы, бумага”. Экспе-риментальные результаты показывают неплохую эф-фективность (по результатам проведенных тестов) иуниверсальность (применимость алгоритма к другимиграм со схожими характеристиками) разработанногоалгоритма.

Нашей ближайшей задачей является адаптация иприменение других подходов к решению такого классаигр.

СПИСОК ЛИТЕРАТУРЫ[1] Петросян, Л. Зенкевич, Н. Шевкопляс, Е. Теория игр. — 2-е изд.

— Санкт-Петербург : БХВПетербург, 2012. — 432 с.[2] Фон-Нейман Дж, Моргенштерн О. Теория игр и экономическое

поведение. Пер. с англ. под ред. и с доб. Н. Н. Воробьева. — М.:Наука, 1970.

[3] Aumann Robert J, Maschler Michael, Stearns Richard E. Repeatedgames with incomplete information. –– Cambridge, MA. : MITpress, 1995.

[4] Gibbons R. A primer in game theory. – Harvester Wheatsheaf, 1992.[5] Fudenberg D., Maskin E. The folk theorem in repeated games

with discounting or with incomplete information //A Long-RunCollaboration On Long-Run Games. – 2009. – С. 209-230.

22

Page 24: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

[6] Харшаньи Д. Игры с неполной информацией //Мировая эко-номическая мысль. Всемирное признание (лекции нобелевскихлауреатов). – 2005. – Т. 5. – С. 44-63.

[7] Оуэн Гильермо. Теория игр. Пер. с англ. И. Н. Врублевский, Г.Н. Дюбина, А. Н. Ляпунова / Под ред. А. А. Корбута. — 2-е изд.— М. : Едиториал УРСС, 2004. — 216 с.

[8] Dymarski Przemyslaw. Hidden Markov Models, Theory andApplications / Ed. by Przemyslaw Dymarski. — InTech, 2011. —ISBN: 978-953-307-208-1.

[9] Using HMM in Strategic Games / Mario Benevides, Isaque Lima,Rafael Nader, Pedro Rougemont // Proceedings 9th InternationalWorkshop on Developments in Computational Models, BuenosAires, Argentina, 26 August 2013 / Ed. by Mauricio Ayala-Rinc´on,Eduardo Bonelli, Ian Mackie. –– Vol. 144 of Electronic Proceedingsin Theoretical Computer Science. –– Open Publishing Association,2014. –– P. 73–84

[10] Renault, Jérôme. The value of Markov chain games with lack ofinformation on one side // Mathematics of Operations Research. ––2006. –– Vol. 31, no. 3. –– P. 490–512.

[11] Himmelmann Lin Package ‘HMM’. –– 2010. –– URL :https://cran.rproject.org/web/packages/HMM/HMM.pdf.

[12] Himmelmann Lin. –– 2010. –– URL :https://github.com/cran/HMM/blob/master/R/HMM.r.

[13] Martin James H, Jurafsky Daniel. Speech and language processing:An introduction to natural language processing, computationallinguistics, and speech recognition. –– Pearson/Prentice Hall, 2009.–– P. 122–141.

[14] Rabiner Lawrence R. A tutorial on hidden Markov models andselected applications in speech recognition // Proceedings of theIEEE. –– 1989. –– Vol. 77, no. 2. –– P. 257–286.

[15] Theussl Stefan, Hornik Kurt, Buchta Christian, SchwendingerFlorian. R/GNU Linear Programming Kit Interface. –– 2017. ––URL : https://cran.rproject.org/web/packages/Rglpk/Rglpk.pdf.

[16] Григорьева К.В. Методические указания Часть 1. Бескоалици-онные игры в нормальной форме. // Факультет ПМ-ПУ СПбГУ.— 2007.

Using HMM in games with lack ofinformation

Ekaterina BakshinskaiaThis article describes a statistical approach to a solution

of problems related to strategic games with incompleteinformation. The main idea of the approach is to usehidden Markov models (HMM) to describe the states ofthe game at different instants of time. In our work, weconsider a model that displays the behavior of players as aset of states with predetermined probabilities of transitionsbetween them. The algorithm consists of a combination ofalgorithms that effectively solve the problems described bythe CMM. The work of this algorithm is illustrated by theexamples of the simplest games with two players.

23

Page 25: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

Оценка эффективности извлечения признаковиз изображений для построения

рекомендательных систем в социальных сетяхАлександр Карачев

Математико-механический факультетСанкт-Петербургский Государственный Университет

Санкт-Петербург, Российская Федерация[email protected]

Дмитрий БугайченкоМатематико-механический факультет

Санкт-Петербургский Государственный УниверситетСанкт-Петербург, Российская Федерация

[email protected]

Аннотация—В современном мире объемы данныхрастут экспоненциально, поэтому появляется пробле-ма избыточной информации. В частности, средне-статистический пользователь социальной сети не всостоянии просмотреть все содержимое новостнойленты за короткий промежуток времени, поэтомуразрабатываются рекомендательные системы, сорти-рующие публикации по степени интересности. В рам-ках данной работы будут рассмотрены ранжирующиемодели, определяющие степень релевантности публи-кации на основе признаков, извлеченных из изобра-жений. Будет проведено сравнение полученных ре-зультатов с показателями не учитывающих содержи-мое публикации моделей, работающих на признакахсоциально- демографического и статистического ха-рактера. На основании этих результатов будет выде-лена граница применимости и оценен потенциальныйэффект дальнейшего использования подобных мето-дов в реальных задачах.Ключевые слова—изображения, извлечение при-

знаков, рекомендательные системы, нейронные сети

I. ВВЕДЕНИЕПроблему перенасыщенности информацией пытают-

ся решить довольно давно. Рекомендательные системыиз совокупности всех доступных объектов пытаютсявыделить те, которые релевантны для данного пользо-вателя [1]. Например, такая концепция активно исполь-зуется в интернет-магазинах (рекомендации товаров)и развлекательных сайтах. В частности, во многих со-циальных сетях (Одноклассники, Вконтакте, Facebook)помимо сортировки пользовательскихc публикаций повремени существует возможность упорядочивания ихпо степени спрогнозированной интересности для дан-ного пользователя.

Рассмотрим одну из распространенных классифика-ций рекомендательных систем [2]:

• Фильтрация по содержимому — рекомендации ос-новываются на оценке сходства между предпочте-ниями пользователя и важными характеристиками(признаками) объекта;

• Коллаборативная фильтрация — рекомендацииосновываются на сходстве между пользователями,

обладающими похожим поведением: предполагает-ся, что у клиентов, обладающих близкими реак-циями на одни и те же объекты будет примерноодинаковая реакция и на прочие объекты;

• Социальные рекомендательные системы — реко-мендации строятся на основе реакции друзей поль-зователя на объект, при этом учитывается силасвязи в социальном графе для данных пользова-телей [1];

• Гибридная схема — является смесью фильтрациипо содержимому и коллаборативной.

При использовании фильтрации по содержимомуили гибридной схемы крайне важную роль играет вы-бор характеристик, описывающих объект. В рекомен-дательных системах социальных сетей зачастую в ка-честве признаков используются, например, социально-демографические признаки пользователя, статистиче-ские сведения о публикации (оценки “друзей”, пока-затель кликабельности — click-to-rate) [3], сведения огруппах. Однако признаки, из медиафайлов, прикреп-ленных к посту, зачастую не извлекаются. В частности,в ряде социальных сетей существенную роль игра-ют изображения. В данной работе будут рассмотреныразличные способы извлечения признаков и оцененаэффективность этих признаков с точки зрения ранжи-рования новостной ленты.

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

24

Page 26: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

II. СВЯЗАННЫЕ РАБОТЫ

Рекомендательные системы широко используются виндурстрии для построения индивидуальный предло-жений содержимого сервиса для пользователя. Колла-боративные рекомендательные системы являются рас-пространенным методом решения подобных задач. Ра-боты, описывающие данные методы и их применениепубликовались в конце XX века. Примером можетслужить почтовый сервис Tapestry [4], либо системаGroupLens [6]. Соверменным примером может служитьрекомендательная система сервиса Amazon [5].

Однако у данной концепции есть существенный недо-статок — проблема холодного старта [2]. Реакциюна элемент, о взаимодействии с которым остутвуютсведения, либо их количество недостаточно велико (на-пример, новый товар), спрогнозировать невозможно.В социальной сети, где постоянно появляются новыепользователи и публикации, проблема холодного стар-та является весьма серьезной.

Схожей проблемой является большая разреженностьданных — пользователь реагирует лишь на чрезвычай-но малую их часть. Улучшить качество предсказаний вподобных сервисах могут социальные рекомендатель-ные системы [7], учитывающие связи пользователя сдругими через явное их взаимодействие — ”дружбу”в социальных сетях, интенсивность общения друг сдругом, наличие общих друзей, членство в одинаковыхгруппах и другие подобные признаки. Такая схема при-меняется во многих социальных сетях и дргих онлайн-сервисах, например, при построении умной ленты но-востей в социальной сети ”Одноклассники” [3], либорекомендаций по выбору объекта для скачивания вфайлообменном клиенте Tribler [8].

Другим способом решения подобных задач являетсяфильтрация по содержимому. Исследования на даннуютему проводились в том числе и на основе онлайн-сервисов Last.fm и Delicious, где в качестве содержимо-го рассматривались текстовые аннотации, состоящие изнабора слов, заданных пользователем (тэги — tags) [9].Аналогичным образом (на основе текстовых аннотацийобъекта, а не самого объекта) строились рекомендациии в работе с изображениями, примером может служитьисследование на основе сервиса Flickr [10]. Тем не ме-нее, не стоит забывать что с увличением вычислитель-ных мощностей все чаще проводятся поптыки извле-чения признаков из самих объектов. Примером этогомогут служить основанная на применении сверточныхсетей система рекомендации музыки [11]. Важным во-просом в подобных подходах является определение эф-фективного метода извлечения признаков из объекта,частный случай этой задачи для изображений будетрассмотрен далее в данной работе.

Гибридный подход сочетает в себе указанные вы-ше методы. Применение данного подхода позволяеткомпенсировать часть недостатков, характерных для

них по отдельности. В ряде работ было показано, чтогибридный подход позоволяет улучшить качество реко-мендаций, в частности, на таких наборах данных какMovieLens и Douban [12] [13].

В рамках данной работы будет построена гибриднаярекомендательная система социальной сети, являюща-яся на комбинации социального и основанного на содер-жимом подходов. При этом, в отличие от ряда другихисследований [10] признаки будут извлекаться непо-средственно из изображений с помощью сверточныхсетей, а не заменяться пользовательскими аннотация-ми. Также важным фактором является исследованиев данной работе именно социальной сети со специфи-ческими для таких систем факторами как высокая ча-стота появления новых объектов и существенная рольсоциальных связей.

III. ИЗВЛЕЧЕНИЕ ПРИЗНАКОВ ИЗ ИЗОБРАЖЕНИЙПопытки работать с графическими объектами пред-

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

Существенные изменения произошли с появлениемсверточных сетей. Их отличительной чертой являетсялокальность работы с объектом, поэтому даже большаявходная размерность не приводит к увеличении тако-вой в сети, помимо этого ликвидируется привязанностьпризнака к конкретной зоне. Рассмотрим алгоритмработы сверточных сетей подробнее.

Тремя главными составляющими в сверточных ней-ронных сетях являются локальное рецепторное поле(local receptive field), разделяемые веса (shared weights)и подвыборка (subsampling) [14].

• Локальное рецепторное поле — каждый нейрон по-следующего слоя связан в предыдущем слое толькос малой его областью. Она называется локальнымрецепторным полем. Локальными рецепторнымиполями замощается весь слой, каждому из нихставится в соответствие нейрон в следующем слое;

• Разделяемые веса — все веса у нейронов, описан-ных в предыдущем пункте, совпадают. Эвристиче-ски считается, что это позволяет искать наличиеконкретной характеристики на всем изображении.Такая конструкция называется картой признаков(feature map). Зачастую используется набор изнескольких карт признаков;

• Подвыборка — операция уменьшения размерности.При ее применении каждая карта признаков пере-ходит в более плотное свое представление с утра-той несущественной части информации. Довольно

25

Page 27: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

распространено применение операции max-pooling,являющейся частным случаем подвыборки. Приданной операции карта признаков разбивается начасти с последующим выбором максимального зна-чения нейрона в каждой из них. В итоге сохраня-ется информация о наличии признака в локальнойобласти.

Сейчас весьма эффективно используются многослой-ные (глубокие) сверточные архитектуры. Одной изстандартных задач является задача классификацииизображений. На протяжении нескольких лет суще-ственным вызовом является весьма разнообразный на-бор данных ImageNet. Высокоэффективным решениемданной задачи стала глубокая сверточная архитектураVGG-16 [15]. Помимо нее в данной работе рассматрива-лась сверточная сеть архитектуры ResNet-50 [16]. Из-зашироты спектра представленных классов признаки, ко-торые извлекаются при решении данной задачи, хоро-шо описывают произвольные изображения. Обучениена большом наборе изображений требует больших вы-числительных и временных затрат, поэтому в даннойработе воспользуемся уже вычисленными весами дляуказанной архитектуры, находящимися в публичномдоступе.

IV. ДАННЫЕРассматриваются публикации в социальной сети “Од-

ноклассники”. Были рассмотрены публикации с одними более изображениями, опубликованные с 1 июня по16 июля 2017 года в ряде сообществ данного ресурса.Были скачаны все доступные изображения из указан-ных публикаций. Пригодными к дальнейшему анализуоказались 7932744 объектов.

Все изображения были обрезаны до квадратных про-порций с сохранением центра, затем их размер былприведен к формату 224 на 224 пикселя, с сохранениемтрех цветовых уровней (этот формат является стан-дартным для архитектуры VGG-16 и ResNet-50).

Было осуществлено извлечение признаков из обрабо-танных изображений путем применения к ним сверточ-ной части сети VGG-16 (либо ResNet-50) с весами, полу-ченными на наборе данных ImageNet. Таким образом,каждому изображению была сопоставлена трехмернаяматрица размерности 7 на 7 на 512 (либо матрицаразмерности 1 на 2048).

Были собраны сведения о показах этих публика-ций пользователям. В каждом из показов присутству-ет реакция: либо положительная (поставлена оценка“Класс!”), либо нет (игнорирование публикации, нега-тивная оценка, жалоба на публикацию). Из всех воз-можных характеристик были выбраны следующие:

1) Показатель кликабельности публикации на мо-мент показа пользователю — отношение количе-ства положительных оценок, которые пользова-тели дали этой публикации к числу показов этойпубликации;

2) Прогноз коллаборативной рекомендательной си-стемы социальной сети “Одноклассники” [3] порелевантности данного поста;

3) Наличие положительных оценок, поставленныхдрузьями пользователя.

Все данные были выгружены в файловую системуHDFS (Hadoop distributed file system).

V. ЭКСПЕРИМЕНТДля скачивания объектов и предварительной под-

готовки данных использовался язык Python, как об-ладающий широким спектром реализованных библио-тек, упрощающих работу с данными. Для работы снейронными сетями использовалась библиотека Kerasс вычислительной основой Tensorflow. Выбор даннойбиблиотеки обусловлен простотой реализации сложныхнейросетевых структур в ней, и высокой производи-тельности Tensorflow при вычислениях на графическомпроцессоре.

Для непосредственной работы с подготовленнымиданными была выбрана платформа Spark, отличаю-щаяся своим быстродействием при работе с большимиобъемами информации. Также на ней существует рядинструментов, позволяющих строить обучающиеся мо-дели и оценивать их качество.

Для реализации поставленной цели был построен рядбинарных классификаторов, предсказывающих тип ре-акции пользователя. Качество каждого из них проверя-ется на валидационном множестве с помощью одного изстандартных показателей — площади под ROC-кривой(area under receiver operating characteristic curve — ROCAUC). ROC-кривая отображает соотношение междудолей верных положительных ответов классификатораот всех имеющихся объектов положительного класса(true positive rate) с долей ошибочных положительныхответов классификатоа от общего числа имеющихсяобъектов отрицательного класса (false positive rate) приварьировании порога решающего правила. Площадьпод ROC-кривой описывает качество классификатора,чем ближе это значение к 1, тем качественнее класси-фикатор [17].

Рассмотрим построение бинарного классификаторабез использования данных об изображениях.

С помощью встроенных в платформу Spark инстру-ментов реализуется логистическая регрессия. Обучениепроводится на показах в июне (98137604 прецедентов),валидация на показах за 16 дней в июле (48061228 пре-цедентов). Вектор признаков образуют три характери-стики, указанные выше. Построенную модель назовембазовой.

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

26

Page 28: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

Рис. 1. На оси абсцисс – количество просмотров, которое каждыйпользователь катергории совершил, на оси ординат – суммарноеколичество просмотров по всей категории.Жирными вертикальнымилиниями выделены верхние и нижние квантильные границы. Чернымцветом обозначены июньские просмотры, серым — июльские

Рассмотрим построение классификаторов с изобра-жениями. Извлечем признаки из изображений двумяспособами:

1) Поскольку выходной вектор VGG-16 слишком ве-лик, уменьшим его размерность с помощью мето-да главных компонент. Имеется возможность за-дать параметр размерности выходных векторов;

2) С помощью применения к изображениям ней-росетевой архитектуры ResNet-50 получим век-тор размерности 2048. Затем с помощью методаглавных компонент уменьшается размерность доуказанной в параметре.

Было выбрано несколько репрезентативных значе-ний для размерности векторов. Полученные в обоихметодах вектора конкатенируются с вектором призна-ков базовой модели. Тем самым получается векторпризнаков для логистической регрессии. Модели, по-лученные на основе методов (1) и (2) назовем VGG-моделью и ResNet-моделью соответственно. В даннойработе используется нотация VGG:n или ResNet:n, гдепервая часть обозначения — тип модели, а число n —параметр, задающий размерность вектора признаков,полученных из изображений. Обучение и валидациямоделей происходит на тех же множествах, что и в ба-зовой модели. Воспроизводимость данного эксперимен-та подтверждается с помощью случайного разбиенияобучающей выборки на 5 частей с последующей оцен-кой качетва полученных моделей на валидационноммножестве (просмотры в июле). Вычисляется среднеезначение показателей качества и строятся доверитель-ные интервалы с уровнем доверия 0, 95. Результатыданного эксперимента приведены в таблице I.

Среди множества всех пользователей имеются те,поведение которых нерепрезентативно. Это могут бытькак чрезмерно активные пользователи, так и напро-тив — клиенты с крайне небольшим количеством про-смотров. Излишне активных пользователей небольшоеколичество — их удаление не скажется отрицательно накачестве прогнозов. В то же время малоактивных поль-

Вход(изображения)(1,2048)

Полносвязный(100) relu

Полносвязный(20) relu

Dropout (0.5)

Dropout (0.5)

Полносвязный(1)

sigmoid

Рис. 2. Архитектура первого этапа нейросетевого подхода

зователей довольно много, однако их активность огра-ничивается несколькими просмотрами за большой вре-менной интервал — их поведение не может отразить ихнастоящие предпочтения. Поэтому для валидационно-го и обучающего множеств зададим в качестве нижнейграницы 0, 25 квантиль и 0, 95 в качестве верхней (см.Рис. 1). Сдвиг в сторону более активных пользователейобусловлен тем, что их поведение более информативно,чем у малоактивных пользователей, поэтому они пред-ставляют большую ценность. В качестве представителяклассификаторов с признаками изображений выбранымодели архитектуры “ResNet:20” и “VGG:20”. Для нихбыла проведена валидация по просмотрам, случившим-ся в определенном временном интервале после разме-щения публикации. В качетве обучающей выборки бы-ли выбраны просмотры, случившиеся в течение первых24 часов после публикации. Воспроизводимость обеспе-чивалась аналогично предыдущему абзацу. Результатыданного подхода приведены в таблице II.

Поскольку подход с логистической регрессией пока-зал приемлемые результаты, было решено применитьболее сложную модель — нейросетевой классификатор.

Помимо признаков, извлеченных из изображений,используются признаки социально демографическойгруппы реагирующего пользователя: было выделено 10возрастных категорий и 2 пола. Эти данные были пере-ведены в вектор размерности 20 с помощью унитарногокодирования (one-hot encoding).

Обучение нейросетевого классификатора проходилов три этапа.

Разбиение на три этапа было мотивировано высо-

27

Page 29: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

Вход(изображения)(1,2048)

Полносвязный(100) relu

Полносвязный(20) relu

Dropout (0.5)

Dropout (0.5)

Вход(соц-дем)(20)

Полносвязный(1)

sigmoid

ОбычныйРегуляризацияНеизменяемый

Рис. 3. Архитектура второго этапа нейросетевого подхода

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

• Обучение бинарного нейросетевого классификато-ра с полносвязной архитектурой с использованиемпризнаков, извлеченных из изображений с помо-щью архитектуры ResNet50. Подробное описаниеполученной сети представлено на Рис. 2;

• Веса, полученные в первом пункте используютсядля начальной инициализации весов в верхних сло-ях сети. Параллельно ветви с данными признакамиобучается ветвь с социально-демографическимипризнаками. Самые верхние слои зафиксированы,часть промежуточных, полученных из предыду-щего шага имеют регуляризацию в виде суммыквадратов разностей между изначальными весо-выми коэффициентами и текущими. Подробноеописание полученной сети представлено на Рис. 3;

• Полученные в предыдущем пункте веса использу-ются для начальной инициализации весов в верх-них слоях сети, используемой на данном этапе.К ним присоединяются базовые признаки. Частьвесов, полученных на прошлом шаге, неизменяема,часть имеет регуляризацию, описанную в предыду-щем пункте. Подробное описание полученной сетипредставлено на Рис. 4.

Обучение на каждом этапе ведется до стабилиза-

Вход(изображения)(1,2048)

Полносвязный(100) relu

Полносвязный(20) relu

Вход(соц-дем)(20)

Полносвязный(1) relu

Полносвязный(1)

sigmoid

Конкатенация

ОбычныйРегуляризацияНеизменяемый

Вход(базовый)(3)

Dropout (0.5)

Dropout (0.5)

Рис. 4. Архитектура третьего этапа нейросетевого подхода

ции AUC-метрики в третьем знаке на валидационноммножестве. В качестве оценки качества изначальнойрекомендательной системы используется полносвязнаяоднослойная нейронная сеть, использующая только ба-зовые признаки.

Обучение проходило на множестве показов в июне,валидация — на множестве показов в июле. Нижняяи верхняя границы допустимой активности пользо-вателей были выбраны аналогично вышеописанномуподходу — 0,25 и 0,95 квантили соответственно. Толькослучившиеся не позднее 24 часов с момента публикациипросмотры включены в обучающую выборку. Воспро-изводимость обеспечивается аналогично предыдущимпунктам — путем случайного разбиения обучающейвыборки 5 частей, вычиления среднего значения каче-ства полученных моделей и построения доверительногоинтервала с уровнем доверия 0,95.

Обучение велось с помощью стохастического гради-ентного спуска [14], со скоростью обучения (learningrate) 0,01; размером батча 10000; моментом Нестерова0.9 и параметром регуляризации 10−6.

Оценка качества данного подхода приведена в таб-лице II.

28

Page 30: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

VI. РЕЗУЛЬТАТВ таблице I приведены показатели качества рабо-

ты применения различных наборов признаков при по-строении моделей на основе логистической регресии.В качестве этого показателя используется показательROC AUC на валидационном множестве (просмотры виюле). Стабильность полученного результата и узостьграниц доверительного интервала обусловлена боль-шим количеством обучающих примеров.

Выигрыш есть, однако составляет менее 1%. Базо-вая модель основывается на статистике по действиямпользователей, поэтому можно предположить, что дляпоказов, которые произошли в небольшой промежутоквремени такая модель предсказывает хуже, чем длятех, у которых успели накопиться сведения.

В таблице II приведена валидация на июльских по-казах, случившихся на определнном временном ин-тервале. Прочерками указаны комбинации временногоинтервала валидации и модели, для которых экспери-менты не были проведены. Качество классификаторовописывается с помощью показателя ROC AUC. Нетруд-но видеть, что увеличение эффективности интенсивнее(на самых ранних просмотрах на порядок выше, чемпри обучении на всем множестве). При расширениивременного интервала выполняется предположение осокращении разницы между качеством моделей.

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

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

VII. ЗАКЛЮЧЕНИЕВ рамках данной работы было проведено построение

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

но, и при более глубоком исследовании существенноулучшит качество рекомендаций.

СПИСОК ЛИТЕРАТУРЫ[1] Shapira, B., Ricci, F., Kantor, P. B., & Rokach, L. ”Recommender

systems handbook”, Springer US, 2011.[2] Celerblad, A. ”Implementing a scalable recommender system for

social networks.”, Linköping University Electronic Press, (2017).[3] D. Bugaychenko, From click to predict and back:

ML pipelines at OK, url: https://assets.contentful.com/oxjq45e8ilak/4mO1lz1ew0WaWU4OUUSig8/5771fb5c5920bf225dedf45530c9f9a7/From_click_to_predict_and_back.pdf

[4] Goldberg, David, et al. ”Using collaborative filtering to weave aninformation tapestry.” Communications of the ACM 35.12 (1992):61-70.

[5] Linden, Greg, Brent Smith, and Jeremy York. ”Amazon.comrecommendations: Item-to-item collaborative filtering.” IEEEInternet computing 7.1 (2003): 76-80.

[6] Konstan, Joseph A., et al. ”GroupLens: applying collaborativefiltering to Usenet news.” Communications of the ACM 40.3 (1997):77-87.

[7] He, Jianming, and Wesley W. Chu. ”A social network-basedrecommender system (SNRS).” Data mining for social network data.Springer US, 2010. 47-74.

[8] Pouwelse, Johan A., et al. ”TRIBLER: a social‐based peer‐to‐peersystem.” Concurrency and computation: Practice and experience20.2 (2008): 127-138.

[9] Cantador, Iván, Alejandro Bellogín, and David Vallet. ”Content-based recommendation in social tagging systems.” Proceedings ofthe fourth ACM conference on Recommender systems. ACM, 2010.

[10] Sigurbjörnsson, Börkur, and Roelof Van Zwol. ”Flickr tagrecommendation based on collective knowledge.” Proceedings of the17th international conference on World Wide Web. ACM, 2008.

[11] Van den Oord, Aaron, Sander Dieleman, and Benjamin Schrauwen.”Deep content-based music recommendation.” Advances in neuralinformation processing systems. 2013.

[12] Strub, Florian, Romaric Gaudel, and Jérémie Mary. ”Hybridrecommender system based on autoencoders.” Proceedings of the1st Workshop on Deep Learning for Recommender Systems. ACM,2016.

[13] Christakou, Christina, Spyros Vrettos, and Andreas Stafylopatis.”A hybrid movie recommender system based on neural networks.”International Journal on Artificial Intelligence Tools 16.05 (2007):771-792.

[14] Nielsen M. A., ”Neural Networks and Deep Learning”, DeterminationPress, 2015.

[15] Simonyan, Karen, and Andrew Zisserman. ”Very deep convolutionalnetworks for large-scale image recognition.” arXiv preprintarXiv:1409.155 (2014)

[16] He, Kaiming, et al. ”Deep residual learning for image recognition.”Proceedings of the IEEE conference on computer vision and patternrecognition. 2016.

[17] Донцова Юлия Сергеевна. ”Анализ методов бинарной класси-фикации” Известия Самарского научного центра Российскойакадемии наук, 16.6-2, (2014): 434-438.

29

Page 31: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

Таблица IСРАВНИТЕЛЬНЫЕ ПОКАЗАТЕЛИ НА ЛОГИСТИЧЕСКОЙ РЕГРЕССИИ

Тип модели Базовая VGG:20 ResNet:20 ResNet:50 VGG:10 ResNet:10Качество 0, 6986 ± 0, 0004 0, 7021 ± 0, 0002 0, 7027 ± 0, 0002 0, 7035 ± 0, 0004 0, 7011 ± 0, 0002 0, 7013 ± 0, 0002

Таблица IIПОКАЗАТЕЛИ ПРИ ВАЛИДАЦИИ ПО ВРЕМЕНИ

Начало Конец Базовая ResNet:20 ResNet:20 Многоэтапный(минуты) (минуты) нейросетевой

0 30 0, 6861 ± 0, 0009 0, 7054 ± 0, 0007 0, 6962 ± 0, 0013 0, 656 ± 0, 0070 60 0, 7111 ± 0, 0003 0, 7303 ± 0, 0007 0, 7206 ± 0, 0006 —0 120 0, 7166 ± 0, 0005 0, 7316 ± 0, 0009 0, 7246 ± 0, 0008 —0 240 0, 7135 ± 0, 0006 0, 7243 ± 0, 0003 0, 7203 ± 0, 0004 —0 420 0, 7111 ± 0, 0003 0, 7192 ± 0, 0005 0, 7159 ± 0, 0009 —

Effectiveness estimation of extractingfeatures from images for building social

network recommender systemsAlexander Karachev, Dmitry Bugaychenko

Volumes of data are growing exponentially nowadays,thus there is a problem of the redundant information. Inparticular, an average social network user can not examinenews feed in a short period of time, therefore variousrecommender systems are built, which sort publicationsby relevance. In this work, ranging models, which calculaterelevance with features, extracted from images, are built.Comparison between those models and ones that arebased on socialdemographic and statistical features only, iscalculated. The limits of applicability and potential effectsof further usage of such methods in real problems areestimated.

30

Page 32: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

Тексто-независимая идентификация по голосу

Даниил Никулин

Санкт-Петербургский

Академический университет

Email: [email protected]

Владимир Тутыгин

Санкт-Петербургский политехнический

университет Петра Великого

Email: [email protected]

Аннотация — В статье произведен обзор и анализ

методов и алгоритмов биометрической аутентификации на

основе тексто-независимой идентификации на динамических

голосовых характеристиках. Предложен набор методов и

алгоритмов, способный решать задачу тексто-независимой

идентификации в условиях сильных шумов, реализованный

в среде MATLAB. Произведено тестирование методов в

наборе и проанализированы результаты.

I. ВВЕДЕНИЕ

В настоящее время особую важность приобретают задачи защиты информации. Среди задач защиты выделяются задачи аутентификации. Одними из активно развивающихся методов являются методы биометрической аутентификации.

Методы биометрической аутентификации могут быть по статическим (неизменяемым) данным человека или по динамическим. К статическим характеристикам человека, можно отнести отпечатки пальцев, радужную оболочку, геометрию лица, сетчатку глаза. К динамическим характеристикам можно отнести голос, подчерк, сердечный ритм, походку. Преимуществом методов на статических характеристиках является относительная простота организации процесса аутентификации и низкая вероятность ошибки. Однако недостатками статических методов являются необходимость в специализированной аппаратуре, а также неизменяемость и открытость статических биометрических характеристик человека.

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

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

II. ОБЩАЯ СХЕМА

Работу системы распознавания можно глобально разделить на два режима: режим регистрации и режим идентификации. Другими словами, чтобы узнавать человек, системе необходимо иметь данные об этом человеке.

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

Рис. 1: Общая схема работы

III. ИЗВЛЕЧЕНИЕ ПРИЗНАКОВ

Недостатки статических методов идентификации,

зачастую, связаны с дороговизной аппаратуры. В связи с

этим основное преимущество динамических методов

именно в возможности работы с дешевым и

низкокачественным оборудованием. Именно поэтому

актуальной является задача робастной идентификации, т.е.

устойчивой работы системы вне зависимости от

возможных шумовых составляющих, вызванных

оборудованием.

A. Предварительная фильтрация

Целью предварительной фильтрации является

улучшение аудиосигнала для избавления от артефактов,

вызванных низкокачественной аппаратурой записи.

1) Выбросы Некачественная аппаратура записи звука может

приводить к кратковременным мощностным выбросам. Данные шумовые явления могут предоставить большие трудности для алгоритма нахождения активности голоса.

31

Page 33: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

Пример подобных «выбросов» представлен на рисунке 2.

Рис. 2: Сигнал с выбросами

Идея алгоритма заключается в последовательном

вычислении энергии коротких участков файла, сравнении со средним значением энергии и подавлении с помощью перемножении с инвертированным окном Тьюки

1 в случае

превышения энергии участка среднего значения на некоторый порог. Окно Тьюки были выбрано по причине наличия широкого плоского пика и гладких краев. Для более гладкой фильтрации и точного детектирования промежуточные участки аудиофайла выбирались с перекрытием.

После обработки представленная выше звуковая дорожка выглядит вот так:

Рис. 3: Отфильтрованный от выбросов сигнал

2) Низкочастотный шум Низкочастотные гармоники опасны тем, что создают

постоянную энергетическую составляющую на коротком промежутке времени, которая может быть ошибочно признана как активность голоса.

1 https://www.mathworks.com/help/signal/ref/tukeywin.html

Рис. 4: Исходный сигнал с низкочастотным шумом

Для избавления от подобных составляющих был

выбран эллиптический ФВЧ 3-го порядка с частотой среза, равной 40Гц. Выбор эллиптического фильтра был сделан из-за того, что эллиптические фильтры обеспечивают более крутой (по сравнению с фильтрами Баттерворта и Чебышева) спад АЧХ в переходной зоне между полосами пропускания и задерживания. Платой за это является наличие равномерных пульсаций АЧХ как в полосе пропускания, так и в полосе задерживания. Частота среза была выбрана по той причине, что частота воспринимаемого голоса находится в районе 20-40Гц.

На рисунках 4 и 5 видно применение ФВЧ для сигнала, содержащего низкочастотный шум.

Рис. 5: Пример отфильтрованного сигнала

B. Voice Activity Detection

Целью алгоритма VAD является выделение участков

активности голоса и удаление из аудиосигнала прочих

участков. Это необходимо, так как на дальнейших этапах

строится спектрограмма, и оцениваются её

характеристики. В этом случае, участки, содержащие

только шум, вносили бы весомое искажение.

1) Вычисление мощностных характеристик В качестве мощностных характеристик сигнала и шума

использовались следующие формулы:

– мощность сигнала -го участка

– мощность шума -го участка

– вектор значений амплитуды -го участка

32

Page 34: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

2) Сглаживание характеристик и нормализация Сначала сигнал фильтровался с помощью фильтра

Гаусса, после чего оценивалась и вычиталась мощность фоновых шумов. Отчищенный от фоновых шумов сигнал нормировался до единицы.

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

3) Нахождение границ фраз Для нахождения границ фраз массив мощностей

сигнала проходится в обоих направлениях. В каждом случае ищется спад энергии, а так как массив проходится в двух направлениях, то находятся как начало, так и конец фраз.

4) Объединение фраз Зачастую длительность вычисленных фраз оказывается

менее 100мс. В связи с этим, разработан алгоритм, объединяющий короткие близко расположенные фразы в одну. Для этого сравниваются энергии соседних участков, и если они отличаются менее чем на установленный порог, то данные участки объединяются. При этом происходил перерасчет энергии объединенных фраз соразмерно длительности и мощности каждого.

5) Расширение фраз во времени и перемножение с

оконными функциями Для плавного перехода между периодами активности и

затишья массивы фраз расширяются на 50мс в каждую сторону (если это возможно).

После того, как найдены все участки активности голоса и посчитаны начальные и конечный индексы каждой из фраз, создаётся массив, который будет содержать полный аудиосигнал участков активности. Данные участки умножаются на оконную функцию Кайзера

2 для

уменьшения растекания спектра. Окно Кайзера выбрано из-за малых значений перегиба.

6) Результаты тестирования алгоритма VAD На этом работа системы VAD можно считать

оконченной. На выходе имеем массив, содержащий исключительно голосовой сигнал, что можно наблюдать на Рис. 6.

Голубым цветом отмечен входной аудиосигнал.

Красным цветом — мощность речевого сигнала

Зеленым цветом — мощность шума Для того, чтобы проверить валидность, точность и

устойчивость работы системы VAD, система была протестирована примерно на 80 аудиозаписей различных людей общей продолжительностью более 6 часов. В изначальном варианте разметка аудиозаписей производилась вручную. При этом было обнаружено, что ошибка алгоритма при SNR

3 > 50dB менее 1%. По этой

причине, в связи с большим объёмом исходных данных,

2 https://en.wikipedia.org/wiki/Kaiser_window

3 SNR – Signal to Noise Ratio

было решено считать, что работа алгоритма на не зашумленных данных за образец и сравнивать уже с ним.

Рис. 6: SNR = 40

Далее для оценки работы на зашумленных данных,

брался эталонный сигнал и добавлялся шум различной мощности, что можно наблюдать на Рис. 8.

Рис. 7: SNR = 5

Для сравнения и нахождения ошибки брался эталон, и

находилось расстояние Хемминга между индексами эталонов и тестовым множеством. Таким образом, получив большие эталонные и тестовые множества, был составлен статистический график ошибки алгоритма (по Хеммингу) в зависимости от SNR, представленный на рисунке 8.

Здесь синей линией отмечен график среднего значения, а красными — первый и третий квартили.

Рис. 8: Зависимость ошибки алгоритма VAD от мощности

шума

C. MFCC

Так как необработанный массив спектра несет в себе много излишней и шумовой информации, то было решено использовать MFCC значения для выделения главных

33

Page 35: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

признаков. Мел-частотные кепстральные коэффициенты (MFCC) основаны на идее логарифмического закона чувствительности человеческого уха к частоте звука. Кепстр - энергетический спектр функции . По сути, кепстр есть обратное отображение логарифма энергии спектра во временную область. Он определяется выражением:

Отличие от основного метода MFCC в том, что в данном случае не использовалось обратное преобразование во временную область по соображениям вычислительной эффективности, а также вместо мел-свертки используется логарифмическая децимация.

1) Логарифмическая децимация Для задачи логарифмической децимации создавался

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

В листинге 1 представлен псевдокод выбора точек в логарифмической шкале для дальнейшей децимации.

Листинг 1. Алгоритм выбора точек для логарифмической

децимации.

На Рис. 9. приведен пример логарифмической децимации. Здесь верхний график является логарифмическим спектром от 0 до 5000Гц содержащий более 16000 точек, а нижний – выделенный массив основных компонент размерностью 800 точек.

Рис. 9: Частотные компоненты в логарифмическом

(сверху) и линейном (снизу) масштабах

2) Нормализация магнитуды спектра Из-за громкости аудиозаписи и количества точек в

буфере, абсолютная мощность голосовых компонент может сильно варьироваться на несколько десятков децибел и более. Для преодоления данной проблемы было решено ограничиться мощностью спектра в 25 децибел. Находился максимум массива частот, сопоставлялся уровню 25 децибел, т.е ко всему массиву прибавлялось значение 25 децибел и отнималось значение найденного максимума массива. В итоге, всё, что отличалось от максимума более, чем на 25 децибел, считалось равным нулю.

3) Вычисление статистических параметров Значения главных компонент по своей сути являются

реализацией случайного процесса, зависящего от интонации и конкретной фразы. Однако можно сделать предположение, что данный процесс является реализацией суммы многомерных гауссовых процессов со своими значениями среднеквадратичного отклонения (СКО) и математического ожидания (МО). Для оценки правомочности данного подхода были построены ряд гистограмм плотности случайного процесса, график одного которых представлен на Рис. 10.

Рис. 10: Гистограмма спектральных компонент

Визуальный просмотр данных графиков привел к мнению, что в первом приближении будет достаточно представить случайный процесс в виде одного многомерного гауссова с независимыми математическими ожиданиями и дисперсиями каждой координаты, график которых для гистограммы с Рис. 10 представлен на рисунке 11.

Рис. 11: График основных компонент, состоящий из

оценок МО и СКО процесса

function [ indexes ] =

log_indexes ( outp_n, inp_n )

indexes = (exp(0 : outp_n) - 1) ./ exp(outp_n);

indexes = round(inp_n .* indexes + 1);

end

34

Page 36: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

IV. КЛАССИФИКАТОРЫ

Что представляют собой "признаки"? На самом деле это всего лишь набор чисел, характеризующих человека — вектор в многомерном пространстве. А задача классификатора заключается в том, чтобы построить функцию отображения этого многомерного пространство в пространство действительных чисел. Другими словами, его задача состоит в получении числа, которое бы характеризовало меру схожести.

В итоге в качестве классификаторов рассматривались следующие функции:

1. Евклидово расстояние

2. SMV

3. MLP

V. ЭКСПЕРИМЕНТАЛЬНЫЕ РЕЗУЛЬТАТЫ

A. Бинарная классификация

Для бинарной классификации была выбрана задача распознавания пола оратора. Таким образом, существует всего 3 четко определенных возможных результата: мужской голос, женский голос, неизвестно.

Был проведен эксперимент, в рамках которого система обучалась на выборке из 25 человек (12 женщин и 13 мужчин), после чего было проведено тестирование на контрольной выборке данных 60 других человек (31 женщин и 29 мужчин). Большинство данных были взяты из тренировочного набора для конкурсов NIST SRE

4.

В результате были получены результаты, представленные на рисунке 12.

Рис. 12. График FAR/FRR для случая бинарной

классификации по половому признаку

На рисунке 12 представлен традиционный для систем идентификации график зависимости вероятности ложного отказа (False Rejection Rate FRR) от вероятности ложного совпадения (False Acceptance Rate FAR) в

4 www.nist.gov

логарифмической шкале. В данном случае нулевой гипотезой было предположение, что голос мужской. В этом случае FAR будет соответствовать ошибке второго рода, а FRR – ошибке первого рода. EER – такое значение, при котором FAR = FRR.

На Рис. 13. представлены те же данные, но в виде ROC кривых.

Рис. 13. ROC кривая для случая бинарной классификации

Для сравнения результатов с имеющимися аналогами,

был взят результат из статьи [2], где также на данных

NIST SRE решалась задача бинарной классификации по

половому признаку. К сожалению, в статье не

представлены численные результаты для EER или AUC,

однако представлен FAR/FRR график, изображенный на

Рис. 14.

Рис. 14. График FAR/FRR из статьи [2]

35

Page 37: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

B. Задача аутентификации

Для решения задачи аутентификации, она представлялась как объединение задач бинарной классификации, где каждая из выделенных задач отвечала на вопрос, принадлежит ли данный голос определенному человеку, информация о котором имеется в системе.

При тестировании все множество голосов было разделено на 3 подмножества. Первое, размером 25, использовалось для обучения системы и регистрации пользователей в ней. Второе, размером 10, также участвовало в обучении в качестве негативных примеров. Третье, размером 50, использовалось исключительно для тестирования и проверки системы на работоспособность.

В результате получились результаты, представленные на Рис. 15.

Рис. 15. График FAR/FRR для задачи аутентификации

AUC значения для кривых равны соответственно: 0.981, 0.9994 и 0.9972.

В статье [4] приводится пример решения данной задачи, где они смогли получить на тренировочной выборке NIST SRE и на закрытой тестовой выборки NIST SRE, что можно наблюдать на рисунке 16.

Рис. 16. График FAR/FRR из статьи [4]

В статье победителей NIST SRE12 [3] приводятся результаты, где они смогли добиться уровня ошибки EER в пределах 2,5-3,0% на тестовой выборке. Также в статье построена FAR/FRR кривая для тренировочной выборки, представленная на Рис. 17.

Рис. 17. График FAR/FRR победителей NIST SRE12 из

статья [3]

VI. ЗАКЛЮЧЕНИЕ

Наиболее заметными результатами, полученными в ходе экспериментов являются низкий уровень точности метода, основанного на классификации по Евклидову расстоянию и очень высокие вычислительные затраты на настройку многослойного персептрона: длительность настройки MLP превышала длительность настройки SVM в несколько сотен раз на одном и том же наборе данных.

Для предложенного алгоритма распознавания результаты бинарной классификации по половому признаку оказались значительно хуже тех, что были приведены в [2]. Это оказалось вполне ожидаемо, так как алгоритм был разработан для идентификации людей, а не специально для определения пола. В то же время значения AUC и EER оказались достаточными, чтобы можно были использовать классификатор с вероятностью ошибки около 15% при помощи MLP.

Для задачи аутентификации, наоборот, результаты тестирования предложенной системы оказались значительно лучше тех, что были представлены в статьях. В первую очередь это связано ограниченностью тестового набора для тестирования предложенной системы. Тестовая выборка NIST SRE содержит аудиосигнала более 600 различных человек, в то время как предложенная система тестировалась на выборке из 85 человек. Во-вторых, отличие заключается в схеме проведения тестирования. Если в данной статье решалась задача биометрической идентификации, то в конкурсе NIST SRE помимо идентификации, в первую очередь тестировалась способность системы к диаризации в реальном времени,

36

Page 38: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

т.е. определении, кто в данный момент из собеседников говорит в телефонном разговоре.

СПИСОК ЛИТЕРАТУРЫ

[1] Homayoon Beigi. Fundamentals of Speaker Recognition. New York. – Springer 2011

[2] Karam Z.N., Campbell W.M. (2013) Graph Embedding for Speaker Recognition. In: Fu Y., Ma Y. (eds) Graph Embedding for Pattern Analysis. Springer, New York, NY

[3] Kozlov A., Kudashev O., Matveev Y., Pekhovsky T., Simonchik K., Shulipa A. (2013) SVID Speaker Recognition System for NIST SRE 2012. In: Železný M., Habernal I., Ronzhin A. (eds) Speech and Computer. SPECOM 2013. Lecture Notes in Computer Science, vol 8113. Springer, Cham

[4] Tomi Kinnunen, Haizhou Li. An Overview of Text-Independent Speaker Recognition: from Features to Supervectors // Speach Communication. 52(1): 12-40 2010

[5] Айвазян С.А., Бухштабер В.М., Енюков И.С., Мегиалкин Л Д. Прикладная статистика: Классификация и снижение размерностей / Справочное издание под ред. С.А. Айвазяна. М.: Финансы и статистика, 1989. 607 с.

[6] Дьяконов В. Современные цифровые анализаторы спектра // Компоненты и технологии – 2010. - № 5. - С.185-195.

[7] Сергиенко А.Б. Цифровая обработка сигналов. - СПб.: Изд-во Питер, 2013г. – 608 с

[8] Тутыгин В.С. Цифровая обработка сигналов.: лаб.практикум/ В.С.Тутыгин.- СПб.: Изд-во Политехн. ун-та, 2015. ¬- 116 с.

[9] Хайкин С. Нейронные сети: полный курс - Neural Networks: A Comprehensive Founda-tion. 2-е. М.: «Вильяме», 2006. 1104 с.

[10] Djellali Hayet1, Laskri Mohamed Tayeb Using Vector Quantization for Universal Back-ground Model in Automatic Speaker Verification // International Conference on Web and Infor-mation Technologies 2012

[11] Md. Rashidul Hasan, Mustafa Jamil, Md. Golam Rabbani Md. Saifur Rahman Speaker Identification Using Mel Frequency Cepstral Coefficients // 3rd International Conference on Electrical & Computer Engineering ICECE 2004

Text-Independent Speaker Recognition Daniil Nikulin, Vladimir Tutygin

The article reviews and analyzes the methods and algorithms of biometric authentication based on text-independent identification on dynamic voice characteristics. Was proposed set of methods and algorithms that can solve text-independence in conditions of strong noises, implemented in the MATLAB environment. Testing methods in the set and analyzed results.

37

Page 39: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

Построение прогностических моделей поведениянефтяных котировок на основе методов опорных

векторов (SVM) и ARIMA.Андрей РасторгуевСанкт-Петербургский

Государственный Университет,Санкт-Петербург, Россия

[email protected]

Дмитрий ГригорьевСанкт-Петербургский

Государственный Университет,Санкт-Петербург, Россия

[email protected]

Аннотация—Производство и потребление нефти являют-ся критическими факторами для экономики ряда стран,поэтому возможность прогнозирования поведения ее це-ны весьма актуальна. Существует множество работ, ко-торые исследуют различные методы машинного обучения:SVM, ANN, kNN, а также статистические методы ARIMA,GARCH и другие инструменты анализа временных рядов.Обзор литературы показывает преимущество методов SVMи ARIMA при прогнозировании финансовых рынков. В дан-ной работе описана методика построения прогностическихмоделей на базе этих двух методов. Кроме того делаетсявывод о лучших показателях модели SVM при предсказа-нии ценовых приращений котировок на энергоресурсы.

Index Terms—финансовые временные ряды, цены нанефть, метод опорных векторов (SVM), ARIMA, прогно-зирование финансовых котировок

I. Введение

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

Глобальный интерес к нефтяным котировкам приво-дит к их высокой волатильности и хаотическому по-ведению [1], особенно в моменты выхода важной фун-даментальной информации: ежедельные запасы сыройнефти в США по данным Американского институтанефти (API), количество буровых установок в США отBaker Hughes, запасы нефти и нефтепродуктов в США(EIA), результаты переговоров стран ОПЕК+ и т.д.

На данный момент исследователям не удалось прийтик консенсусу о степени влияния макроэкономическойстатистики на нефтяные котировки [2]. Несмотря на то,что [3] было обнаружено влияние монетарной политикина долгосрочное поведение рынка нефти, до сих порне выявлено корреляции выхода макроэкономическихновостей на результаты дневных торгов [4]. Этот фактпоощряет исследователей прогнозировать результатыторгов по сырой нефти на основе торговых данных запрошлые периоды.

В данной работе описана методика построения про-гностических моделей на базе двух популярных ме-тодов - опорных векторов (SVM) и интегрированноймодели авторегрессии скользящего среднего (ARIMA),после чего делается вывод о лучших показателях мо-дели SVM на ценовых данных сырой нефти (BRENT),легкой нефти Light и газа Natural Gas за период с 1991по 2018 гг.

Остальная часть работы организована следующимобразом. Раздел II содержит обзор актуальных пуб-ликаций по теме прогнозирования финансовых рядови нефтяных котировок в частности. В Разделе IIIпредставлена методология по построению прогности-ческой системы на основе методов SVM и ARIMA, в товремя как результаты экспериментов и их обсуждениеприведены в Разделе IV. С реализацией экспериментовна языке R можно ознакомиться в Разделе V. Заклю-чительные положения содержатся в Разделе VI.

II. Обзор существующих моделей и публикаций

Совокупность методов прогнозирования финансовыхрядов можно разделить на статистические модели иметоды машинного обучения [5]. К первым относятсятакие традиционные модели, как экспоненциальноесглаживание, интегрированная модель авторегрессиискользящего среднего (ARIMA), а также для работы сволатильностью - обобщенная модель авторегрессион-ной условной гетероскедастичности (GARCH) [6].

38

Page 40: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

ARIMA (Autoregressive Integrated Moving Average,модель Бокса – Дженкинса, методология Бокса –Дженкинса) — интегрированная модель авторегрессии– скользящего среднего является одной из распро-страненных моделей, что обусловлено независимостьюот природы и взаимозависимостей данных временногоряда. В работе [7] показано, что для предсказаний накоротком интервале данный метод более устойчив иэффективен по сравнению с более сложными струк-турными моделями. Преимущество ARIMA над non-ARIMA (AR, MA, ARMA и GARCH) подтверждаетсяпри прогнозировании ценовых приращений биржевыхиндексов стран БРИКС [8]. Формальная запись моделиARIMA(p, d, q) имеет вид [9]:

4dXt = c+

p∑

i=1

ai4dXt−i +q∑

j=1

bjεt−j + εt (1)

где εt - белый шум, p - порядок полиномов авторе-грессии AR с соответствующими коэффициентами ai,q - порядок полиномов скользящего среднего MA скоэффициентами bi, а d - порядок интегрируемости,который определяет степень долговременнсости памя-ти процесса. С использованием оператора задержкиL : Lxt = xt−1 модель может быть записана на языкелинейных операторов:

(1−L)dXt = c+(

p∑

i=1

aiLi)(1−L)dXt+(1+

q∑

j=1

bjLj)εt (2)

Для того, чтобы иметь возможность обработать вре-менной ряд с помощью ARIMA, необходимо проверитьего стационарность, то есть обнаружить наличие еди-ничных корней (например, при помощи теста Дики –Фуллера [10]). При необходимости, ряд диффиренциру-ют d раз, получая стационарную последовательность,которая хорошо описывается моделью ARIMA, а исход-ный процесс называют стационарно интегрированнымпорядка d.

Отличиями финансовых серий цен от традиционныхвременных рядов является наличие шумовой компо-ненты, нестационарность и хаотичная природа дан-ных [11]. В то же время для того, чтобы смоделиро-вать поведение временного ряда с помощью ARIMAнеобходима его стационарность. Наиболее часто это до-стигается путем логарифмирования приращения ценыфинансового актива [12].

В свою очередь методы машинного обучения могутпринимать на вход нестационарные данные и могутэффективно обнаруживать нелинейные зависимостимежду входными данными. Примерами могут служитьметоды опорных векторов (SVM), нейронных сетей(ANN) и k-ближайших соседей (KNN). Несмотря насвою универсальность, нейронные сети при сравнении сARIMA в задачах прогнозирования финансовых рядовне всегда обладают преимуществом. Этот факт былзамечен в работе [13] при предсказании поведения

Korean Stock Price Index. Аналогичная ситуация былаполучена при предсказании трендов на рынке акцийИндии [14]. Однако в работах [5], [15], [16] удалосьспроектировать нейронные сети, которые при пред-сказании поведения различных биржевых индексовоказались лучше ARIMA. Таким образом, отсутствуетоднозначное мнение о преимуществе статистическихметодов над машинным обучением и наоборот.

С другой стороны, когда речь заходит о сравни-тельном анализе методов машинного обучения друг сдругом, то большое число публикаций признает превос-ходство SVM при прогнозировании финансовых рядов,в том числе и нефтяных котировок. Впервые это былообнаружено в работе по исследованию возможностипредсказания недельных приращений рынков облига-ций и фьючерсов на биржевой индекс S&P 500 [17].При этом на вход классификаторов на базе SVM иANN подавались значения простейших индикаторовтехнического анализа EMA и RDP. В качестве другихвходных данных можно использовать опережающиемакроэкономические индикаторы. Как показано в ра-боте [18], приращения индекса S&P 500 и валютногокурса USD/JPY могут с помощью SVM предсказыватьнаправление движения индекса NIKKEI225 лучше, чемANN. Может показаться, что SVM-классификатор бу-дет работать лучше, если на вход подавать макси-мально доступное число разнородных данных, однакоони не должны иметь корреляцию друг с другом [19].Общую картину дополняют работы [20], [21], в которыхдемонстрируются способы повышения качества про-гнозирования SVM путем оптимизации ее параметрови использования в индикаторах технического анализадлины окна равного горизонту предсказания. В тойже работе [21] было показано, что при прогнозирова-нии курсов акций, SVM лучше ANN, которая в своюочередь эффективней kNN.

Рассмотрим метод SVM, которому отдает предпо-чтение большинство источников, проанализированныхавторами.

В основе SVM (Support Vector Machine) лежит прин-цип преобразования вектора входных данных в про-странство большей размерности (kernel trick) и осу-ществления линейной регресии в этом пространстве (вслучае бинарной классификации) [22]. Для n-мернойклассификации могут использоваться n∗(n−1)

2 моделейSVM, которые будут определять итоговый класс.

Классификатор работает следующим образом[23], предположим, что точки ряда имеют вид:{(x1, c1), (x2, c2), ..., (xn, cn)} , где ci принимаютзначения из {−1, 1} (метка класса, которомупринадлежит точка xi), а xi - это p-мерныйвещественный вектор (обычно, нормализованныйзначениями [0, 1] или [−1, 1]). Теперь можнорассматривать эту совокупость, как обучающийнабор данных. Далее необходимо, чтобы SVMклассифицировала его указанным образом (а в

39

Page 41: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

дальнейшем, классифицировала и новые вектораxn+1, xn+2, ...). Для этого строится оптимальнаяразделяющая гиперплоскость, уравнение которойимеет вид

w ∗ x− b = 0 (3)

Для граничных гиперплоскостей выполняется

w ∗ x− b = 1, w ∗ x− b = −1 (4)

В случае линейной разделимости обучающей выборки,мы можем выбрать две гиперплоскости таким образом,чтобы между ними не было точек и затем макси-мизировать расстояние между ними. Ширина полосыв таком случае равна 2

‖w‖ . Таким образом, задачазаключается в минимизации ‖w‖. Для этого у каждогоi, нужно проверить, что

w ∗ xi − b ≤ 1, ci = 1 и w ∗ xi − b ≥ −1, ci = −1 (5)

Или, что то же самое

ci ∗ (w ∗ xi − b) ≥ 1, 1 ≤ i ≤ n (6)

Получаем задачу квадратичной оптимизации:

‖w‖2 → min ci ∗ (w ∗ xi − b) ≥ 1, 1 ≤ i ≤ n (7)

По теореме Куна - Таккера, эта задача эквивалентнадвойственной задаче поиска седловой точки функцииЛагранжа

L(w, b;λ) = 12‖w‖2 −

∑ni=1 λi(ci(wi − b)− 1)

→ minw,bmaxλλi ≥ 0, 1 ≤ i ≤ n

(8)

где λ = (λ1, ..., λn) - вектор двойственных переменных.Путем сведения этой задачи к эквивалентной задачеквадратичного программирования (содержащей толь-ко двойственные переменные), получается следующийалгоритм классификации:

a(x) = sign(n∑

i=1

λicixi ∗ x− b) (9)

При этом суммирование ведется не по всей выборке, атолько по опорным векторам, для которых λi 6= 0 (от-сюда и название метода). В общем случае, обучающаявыборка не обязана быть линейно разделимой, поэтомуалгоритму дана возможность ошибаться и вводитсяштраф C за ошибки:

12‖w‖2 + C

∑ni=1 ξi → minw,b,ξi

ci(wi − b) ≥ 1− ξi, 1 ≤ i ≤ nξi ≥ 0, 1 ≤ i ≤ n

(10)

Далее такая задача решается методами квадратичногопрограммирования.

III. Методика построения прогностической системы

Как следует из Раздела II, прогнозировать пове-дение финансовых рядов можно разнообразными спо-собами и на основе разнотипных данных. В даннойработе будет исследована применимость наиболее по-пулярных методов SVM и ARIMA. Несмотря на то, чтометод ANN также может быть очень эффективен [24],разработка подходящей архитектуры нейронной сетиявляется нетривиальной задачей и поэтому в даннойработе не рассматривается.

A. Данные и их подготовка

Для обучения и тестирования моделей был исполь-зован набор дневных показателей цен закрытия нефтимарки BRENT, взятый с сайта finam.ru за периодвремени с 17 мая 1991 года по 28 января 2018 года, чтов итоге составляет 9101 наблюдение. Данный подходпохож на применение месячных ценовых данных вработе [25] для успешного прогнозирования поведениянефтяного рынка на следующий месяц. Однако тамбыл применен ограниченный набор в 408 значений,заканчивающийся 2003 годом. Поэтому отличиями на-шей работы являются модели, предсказывающие днев-ные цены закрытия (которые считаются более зашум-ленными) на более обширном и актуальном наборекотировок. Весь набор данных был разделен на двепоследовательных части: обучающую выборку (80%,или 7281 значение) и тестовую выборку (20%, или 1820значений). Классический подход кросс-валидации неприменялся, так как данные имеют хронологическийпорядок, что не позволяет обучать модель на данныхиз будущего. В данной работе была проведена кросс-валидация со скользящим окном фиксированного раз-мера в 5 дней, в то время как прогноз строится толькона один день вперед (аналогично [26]). Исходный гра-фик зависимости цены от времени представлен на рис.1, а соответствующие графики автокорреляционной ичастичной автокорреляционной функций на рис. 2 и 3соответственно.

Рис. 1. График зависимости цены на нефть марки BRENT отвремени

40

Page 42: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

Рис. 2. График автокорреляционной функции для цены на нефтьмарки BRENT

Рис. 3. График частичной автокорреляционной функции дляцены на нефть марки BRENT

Как можно заметить, такие данные не являютсястационарными – график функции автокорелляциипоказывает сильную зависимость между ценами. Такиеданные непригодны для модели ARIMA, поэтому ис-пользуется метод взятия приращений логарифмов: (logreturns) r(t) = logP (t)−logP (t−1), где P (t) обозначаетцену закрытия в день t. Временной ряд, составлен-ный из таких приращений, становится стационарным.Соответствующие графики приращений логарифмов,а также графики автокорреляционной и частичнойавтокорреляционной функций представлены на рис.4, 5 и 6 соответственно. График автокорреляционнойфункции подтверждает предположение о стационарно-сти приращений логарифмов. С другой стороны, дляпроверки временного ряда на стационарность можноиспользовать тест Дики – Фуллера, который в этомслучае отвергает гипотезу о нестационарности с веро-ятностью более чем 99%.

B. Построение моделей

Для построения прогноза на следующий день ис-пользуется скользящее окно размером 5 дней, на кото-ром строится соответствующая модель с выбраннымипараметрами для составления прогноза на текущийдень. После этого, окно сдвигается на один день вперед,

Рис. 4. График зависимости приращений логарифмов цены нанефть марки BRENT от времени

Рис. 5. График автокорреляционной функции для приращенийлогарифмов цены на нефть марки BRENT

строится новая модель, и делает прогноз на следующийдень. Таким образом, совершается обход всего выбран-ного периода.

Чтобы определить параметры ARIMA, можно вос-пользоваться графиками функции автокорреляции ифункции частичной автокорреляции. По ним опреде-ляются параметры p = 1 и q = 1. Так как рядиз приращений логарифмов является стационарным,на вход модели подается логарифм цены закрытия, а

Рис. 6. График частичной автокорреляционной функции дляприращений логарифмов цены на нефть марки BRENT

41

Page 43: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

параметр d выбирается равным единице. На выходемодель также прогнозирует логарифм цены закрытия.

В качестве ядра для SVM было выбрано гауссово

ядро: K(x, y) = exp

{−‖x− y‖

2

2γ2

}. Исходя из того, что

модель SVM сильно зависит от выбора параметров (вособенности от параметра C – штрафа за ошибку), дляопределения оптимальных параметров был использо-ван метод Grid Search, описанный в [27]. Параметр εвыбирался из множества {10−5, ..., 10−1}, параметр C– из {10−3, ..., 102}, параметр γ – из {10−5, ..., 102}.На вход SVM получает вектор из 5 предыдущихлогарифмов цен закрытия. Специальные преобразо-вания входных данных, вроде взятия разностей, нетребуются, достаточно нормализовать входной вектор.Соответственно, модель также прогнозирует логарифмцены закрытия.

Для построения гибридной модели, был использо-ван метод взвешенного суммирования прогнозов обеихмоделей, предложенный в [28], суть которого заключа-ется в следующем. Обозначим реальное значение ценызакрытия за y, значение, спрогнозированное модельюARIMA за yarima, а моделью SVM – за ysvm; заerrarima и errsvm обозначим ошибки моделей ARIMAи SVM на обучающем наборе соответственно. После,присвоим моделям веса, обратно пропорциональныеих ошибкам, то есть: ωarima =

errsvmerrarima + errsvm

, а

ωsvm =errarima

errarima + errsvm. В итоге, прогноз гибридной

модели будет равен yhybrid = yarima∗ωarima+ysvm∗ωsvm,то есть, чем лучше модель показала себя на обучающемнаборе, тем с большим весом она будет влиять наитоговый прогноз в гибридной модели.

IV. Результаты экспериментов

Рис. 7. Прогноз модели ARIMA

На рис. 7 и 8 представлены результаты прогнозамодели ARIMA с параметрами p = 1, d = 1, q = 1на тестовом наборе данных. Среднеквадратическое от-клонение (RMSE) составило 0.02781246, в то время какна обучающем наборе оно составляло 0.02931581.

Рис. 8. График ошибок модели ARIMA

Рис. 9. Прогноз модели SVM

Рис. 10. График ошибок модели SVM

42

Page 44: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

На рис. 9 и 10 представлены результаты прогнозамодели SVM с параметрами ε = 10−5, C = 10,γ = 0.01. Среднеквадратичное отклонение (RMSE)составило 0.02181642, в то время как на обучающемнаборе оно составляло 0.02411648.

Рис. 11. Прогнозы моделей за промежуток 50 дней

Более детально рассмотреть графики прогнозов мо-делей на промежутке в 50 дней можно на рис. 11. Весагибридной модели были выбраны исходя из описаниявыше и составили в процентном соотношении 44% и56% соответственно. Среднеквадратическое отклоне-ние (RMSE) гибридной модели составило 0.0240049.Стоит отметить, что, очевидно, гибридная модельпронгозирует цену закрытия лучше других моделей,когда прогнозы SVM и ARIMA лежат по разные сто-роны от реального значения. Но, в виду того, что дней,когда прогнозы SVM и ARIMA лежат по одну сторонуот реального значения больше, на всем тестовом пери-оде гибридная модель не опережает SVM.

Как можно заметить, лучше всех себя показаламодель SVM, заметно опережая ARIMA (0.02181642против 0.02781246). Применение гибридной модели непринесло улучшения по сравнению с моделью SVM(0.0240049 против 0.02181642), хотя заметно умень-шило среднеквадратичную ошибку модели ARIMA(0.0240049 против 0.02781246). Из этого можно сделатьвывод, что применение метода опорных векторов пред-почтительнее в прогнозировании цены на нефть маркиBRENT. С остальными метриками качества прогнозаможно ознакомиться в таблицах I и II. Также былопроизведено сравнение методов SVM и ARIMA надвух других инструментах: нефти Light и газа NaturalGas, с целью тестирования полученных результатовна большем объеме данных. Данные были взяты ссайта finam.ru с момента появления котировок по 28января 2018 года. Для нефти Light это составило 6180наблюдений, для газа Natural Gas – 4608 наблюдений.

Параметры моделей были выбраны аналогично моде-лям для прогноза нефти BRENT. Результаты представ-лены в таблице III. Видно, что для этих котировокмодель SVM также опережает ARIMA, хоть и с менеезаметным преимуществом. Гибридная модель анало-гично улучшает прогнозы ARIMA, но не превосходитпрогнозы SVM.

Таблица IФормулы метрик качества прогнозов

Показатель Формула

Среднеквадратическая ошибка (RMSE)√∑n

i=1(y′ − y)2

Средняя квадратичная ошибка (MSE)∑n

i=1(y′ − y)2

Cредняя абсолютная ошибка (MAE)∑n

i=1 ‖y′ − y‖

Коэффициент детерминации (R2) 1−∑n

i=1 ‖y′ − y‖2∑ni=1 ‖y − y‖2

Таблица IIЗначения метрик качества прогнозов по сырой нефти BRENT

Model RMSE MSE MAE R2

ARIMA 0.02781 0.000773 0.01966 0.99491

SVM 0.02181 0.000475 0.01514 0.99686

HYBRID 0.02400 0.000576 0.01706 0.99621

Таблица IIIСравнение моделей на котировках нефти Light и газа Natural

Gas

Model RMSE MSE MAE R2

Natural Gas (ARIMA) 0.02613 0.000659 0.017813 0.99619

Natural Gas (SVM) 0.02296 0.000527 0.015978 0.99655

Natural Gas (HYBRID) 0.02551 0.000597 0.016852 0.99643

Light (ARIMA) 0.02791 0.000779 0.02014 0.99203

Light (SVM) 0.02482 0.000619 0.018339 0.99264

Light (HYBRID) 0.02645 0.000707 0.019612 0.99229

V. Реализация экспериментов на языке RРазработка велась на языке программирования R с

использованием пакетов arfima [29] и e1071 [30], кото-рые содержат необходимые для построения и тести-рования моделей функции. Ниже представлены клю-чевые фрагменты кода, при помощи которых былиполучены результаты.

Функция rolling_abstract [Листинг 1] осуществля-ет проход по заданному набору данных с указан-ным окном обучения (window.size). Если параметрprediction.depth равен 1, то прогноз осуществляется наследующий день. Модель строится при помощи фаб-ричной функции model.factory (см. ниже), прогнозыосуществляются при помощи функции predict.factory,описание которой также имеется далее.

43

Page 45: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

r o l l i n g_abs t r a c t <- func t i on (name , set ,params , window . s i z e = 5 ,p r ed i c t i on . depth = 1 )

{max_len <- l ength ( s e t $CLOSE) -

p r ed i c t i on . depth + 1r e s <- l i s t ( )f o r ( i in ( ( window . s i z e+1 ) :max_len ) ) {# make p r ed i c t i on on day with index# ( i + p r ed i c t i o n . depth - 1 )p r ed i c t ed <- NULLt e s t_index <- i + p r ed i c t i o n . depth - 1t e s t <- s e t [ t e s t_index , ]

# take prev ious window . s i z e days# as t r a i n i n g s e tt r a i n_s t a r t <- i - window . s i z et r a i n_end <- i - 1t r a i n <- s e t [ c ( t r a i n_s t a r t : t r a i n_end ) , ]

# c r ea t e a modelmodel <- model . f a c t o r y (name) ( t ra in ,

params )

# make a p r ed i c t i o npred i c t ed <-

p r ed i c t . f a c t o r y (name) (model , t e s t )i f ( ! i s . nu l l ( p r ed i c t ed ) ) {# remember p r ed i c t i on on t h i s day

r e s $CLOSE[ t e s t_index ] <- pr ed i c t ed [ 1 ]r e s $DATE[ t e s t_index ] <- t e s t_index

}}

# in case o f NAsde f ined Indexe s <- which ( ! i s . na ( r e s $CLOSE) )ac tua l <- ( s e t $CLOSE) [ de f ined Indexe s ]p r ed i c t ed <- ( r e s $CLOSE) [ de f ined Indexe s ]

# c a l c u l a t e some metr i c s ( rmse , mse , mae ,R2 , . . . )

r e s $metr i c s <- get_metr i c s ( actua l ,p r ed i c t ed )

re turn ( r e s )}

Листинг 1. Код функции прогнозирования со скользящим окном

Функция model.factory [Листинг 2] возвращаетфункцию-конструктор, которая по переданным пара-метрам (train – тестовый набор и params – параметрымодели) создает конкретную модель, которая затембудет передана в функцию predict.factory.

model . f a c t o r y <- func t i on (name) {i f (name == "SVM" ) {

return ( func t i on ( t ra in , params ) {# return f a c t o r y f o r SVM# with s p e c i f i e d parameters eps i l on ,

cost , gamma# pr ed i c t i n g CLOSE by other f e a t u r e sre turn (svm(CLOSE ~ . , t ra in , e p s i l o n =

params$eps , co s t = params$ cost ,gamma = params$gamma) )

})} e l s e i f (name == "ARFIMA" ) {

return ( func t i on ( t ra in , params ) {# return f a c t o r y f o r ARIMA# with s p e c i f i e d parameters p , d , q# conver t ing CLOSE to ob j e c t o f# t s ( time s e r i e s ) c l a s sre turn ( ar f ima : : ar f ima ( as . t s ( t r a i n $CLOSE) ,

order=c ( params$p , params$d ,params$q ) , qu i e t = TRUE) )

})} e l s e i f (name == "SVM_AND_ARFIMA" ) {

return ( func t i on ( t ra in , params ) {# cr ea t e both models# and remember e r r o r s to c a l c u l a t e

weightsre turn ( l i s t (SVM = model . f a c t o ry ( "SVM" ) ( t ra in ,

params ) ,ARFIMA =

model . f a c t o r y ( "ARFIMA" ) ( t ra in ,params ) ,

we = params$we) )

})} . . .

}

Листинг 2. Код функции создания моделей

Функция predict.factory [Листинг 3] осуществляетпрогнозирование для переданной модели на указанномнаборе данных. Для получения прогноза гибридной мо-дели используется функция svm_and_arfima, прин-цип работы которой был описан в разделе III-B.

p r ed i c t . f a c t o r y <- func t i on (name) {i f (name == "SVM" ) {

return ( func t i on (model , s e t ) {# svm has over load f o r p r ed i c t func t i onreturn ( p r ed i c t (model , s e t ) )

})} e l s e i f (name == "ARFIMA" ) {

return ( func t i on (model , s e t ) {# convert s e t to number o f days i f

neededn . ahead <- i f e l s e ( i s . numeric ( s e t ) ,

set , l ength ( s e t $DATE) )re turn ( p r ed i c t (model , n . ahead =

n . ahead , do . p l o t =FALSE) [ [ 1 ] ] $ Forecast )

})} e l s e i f (name == "SVM_AND_ARFIMA" ) {

return ( func t i on (model , s e t ) {re turn (svm_and_arf ima (model , s e t ) )

})} . . .

}svm_and_arf ima <- func t i on (model , s e t ) {

svm_model <- model$SVMarf ima_model <- model$ARFIMAwe <- model$we

# get both p r ed i c t i o n ssvm_pred i c t <-

p r ed i c t . f a c t o r y ( "SVM" ) (svm_model , s e t )ar f ima_pr ed i c t <-

p r ed i c t . f a c t o r y ( "ARFIMA" ) ( ar f ima_model ,s e t )

44

Page 46: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

# ca l c u l a t e weightssvm_weight <- (sum(we) - we [ 2 ] ) / sum(we)ar f ima_weight <- (sum(we) - we [ 1 ] ) /

sum(we)

# return r e s u l t as weighted sumpred i c t ed <- svm_pred i c t * svm_weight +

arf ima_pr ed i c t * ar f ima_weightre turn ( p red i c t ed )

}

Листинг 3. Код функций осуществления прогнозов и построениягибридной модели

VI. Заключение и дальнейшие исследования

Полученные результаты планируется развить, ис-следуя различные длины временных окон и периодовпрогнозирования, а также используя дополнительныетехнические индикаторы для построения модели SVM.Стоит отметить, что модель ARIMA, как статисти-ческий инструмент исследования временных рядов,такую возможность не предусматривает и имеет рядфундаментальных ограничений [31]. Также, предпола-гается исследовать практическую выгоду от подборапараметров SVM другими алгоритмами (например,генетическим алгоритмом).

В данной работе исследованы возможности и описа-на методика построения прогностической системы набазе метода машинного обучения SVM и метода ста-тистического исследования временных рядов ARIMAдля прогнозирования логарифмов цен сырой (BRENT)и легкой (Light) нефти, а также газа Natural Gas. Опи-саны необходимые предварительные преобразованиявходных данных. Сделан вывод о превосходстве методаSVM над ARIMA. Рассмотрен метод комбинирова-ния моделей, который улучшает показатели методаARIMA.

Список литературы

[1] E. Panas and V. Ninni. Are oil markets chaotic? EnergyEconomics, (5):549–568, 2000.

[2] L.H. Ederington, C.S. Fernando, T.K. Lee, S.C. Linn, and A.D.May. Factors influencing oil prices: A survey of the currentstate of knowledge in the context of the 2007-08 oil pricevolatility. Working Paper, Energy Information Administration,Department of Energy, Washington, DC, 2011.

[3] Lombardi M. J. Anzuini, A. and P. Pagano. The impact ofmonetary policy shocks on commodity prices. Working Paper,European Central Ban, 2010.

[4] L. Kilian and C. Vega. Do energy prices respond to U.S.macroeconomic news? A test of the hypothesis of predeterminedenergy prices. Review of Economics and Statistics, 2009.

[5] Adewumi A. O. Adebiyi A. A. and Ayo C. K. Comparison ofARIMA and artificial neural networks models for stock priceprediction. Journal of Applied Mathematics, 2014.

[6] Z.G. Zhang J. J.Wang, J. Z. Wang and S. P. Guo. Stockindex forecasting based on a hybrid model. Omega, vol. 40,(6):758–766, 2012.

[7] G. Kenny A.Meyler and T. Quinn. Forecasting irish inflationusing arima models. Technical Paper 3/RT/1998, Central Bankof Ireland Research Department, 1998.

[8] Aye G. C. et al. Predicting brics stock returns using arfimamodels. Applied Financial Economics, (17):1159–1166, 2014.

[9] Wikipedia. Autoregressive-moving average model. http://en.wikipedia.org/wiki/Autoregressive_moving_average_model,2018. [Online; accessed 21-January-2018].

[10] Dickey D. A. and Fuller W. A. Distribution of the estimatorsfor autoregressive time series with a unit root. Journal of theAmerican statistical association, (366a):427–431, 1979.

[11] Chan T. H. Lye, C. T. and C. W. Hooy. Nonlinear analysisof chinese and malaysian exchange rates predictability withmonetary fundamentals. Journal of Global Business andEconomics, (5):38–49, 2012.

[12] Tsay R. S. Analysis of financial time series. John Wiley & Sons,2005.

[13] Y. Sehwan C. K. Lee and J. Jongdae. Neural network modelversus sarima model in forecasting korean stock price index(kospi). Issues in Information System, vol. 8, (2):372–378, 2007.

[14] V. P. Saxena N. Merh and K. R. Pardasani. A comparisonbetween hybrid approaches of ann and arima for indian stocktrend forecasting. Journal of Business Intelligence, vol. 3,(2):23–43, 2010.

[15] C. L. Tan J. T.Yao and H. L. Poh. Neural networks for technicalanalysis: a study on klci. International Journal of Theoreticaland Applied Finance, vol. 2, (2):221–241, 1999.

[16] S. Kom Y. B. Wijaya and T. A. Napitupulu. Stock priceprediction: Comparison of arima and artificial neural networkmethods—an indonesia stock’s case. 2nd InternationalConference on Advances in Computing, Control andTelecommunication Technologies (ACT ’10), Jakarta, Indonesia,pages 176–179, 2010.

[17] Tay F. E. H. and Cao L. Application of support vector machinesin financial time series forecasting. Omega, (4):309–317, 2001.

[18] Nakamori Y. Huang W. and Wang S. Y. Forecasting stockmarket movement direction with support vector machine.Computers & Operations Research, (10):2513–2522, 2005.

[19] Duan W. Q. and Stanley H. E. Cross-correlation and thepredictability of financial return series. Physica A: StatisticalMechanics and its Applications, (2):290–296, 2011.

[20] Das S. P. and Padhy S. A novel hybrid model usingteaching–learning-based optimization and a support vectormachine for commodity futures index forecasting. InternationalJournal of Machine Learning and Cybernetics, (1):97–111, 2018.

[21] Shynkevich Y. et al. Forecasting price movements usingtechnical indicators: Investigating the impact of varying inputwindow length. Neurocomputing, pages 71–88, 2017.

[22] Vapnik V. The nature of statistical learning theory. Springer,New York (ISBN 0-387-94559-8), 1995.

[23] Wikipedia. Support Vector Machine. https://en.wikipedia.org/wiki/Support_vector_machine, 2018. [Online; accessed 21-January-2018].

[24] Boyacioglu M. A. Kara Y. and Baykan O. K. Predictingdirection of stock price index movement using artificial neuralnetworks and support vector machines: The sample of theistanbul stock exchange. Expert systems with Applications,pages 5311–5319, 2011.

[25] Xie W. et al. A new method for crude oil price forecastingbased on support vector machines. International Conference onComputational Science. – Springer, Berlin, Heidelberg, pages444–451, 2006.

[26] Rob J Hyndman. Cross-validation for time series. https://robjhyndman.com/hyndsight/tscv/, 2016. [Online; accessed 21-January-2018].

[27] Hsu C. W. et al. A practical guide to support vectorclassification. 2003.

[28] Shou-Yang Wang Wei Huang, Yoshiteru Nakamori. Forecastingstock market movement direction with support vector machine.Computers & Operations Research 32, page 2513–2522, 2005.

[29] CRAN. arfima: Fractional ARIMA (and Other Long Memory)Time Series Modeling. https://cran.r-project.org/package=arfima, 2018. [Online; accessed 21-January-2018].

[30] CRAN. e1071: Misc Functions of the Department of Statistics,Probability Theory Group (Formerly: E1071), TU Wien. https://cran.r-project.org/package=e1071, 2018. [Online; accessed21-January-2018].

45

Page 47: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

[31] Petrica A. C. et al. Limitation of arima models in financialand monetary economics. Theoretical and Applied Economics,pages 19–42, 2016.

Developing forecasting models of oil price behaviourusing support vector machine (SVM) and ARIMA

Abstract—Production and consumption of oil are criticalfactors for the economics of a number of countries, so the abilityto predict the behavior of its price is very important. There aremany works that explore various methods of machine learning:SVM, ANN, kNN, as well as statistical methods ARIMA,GARCH and other time series analysis tools. The literaturereview shows the advantages of SVM and ARIMA methodsin forecasting financial markets. In this paper, a technique forconstructing predictive models based on these two methods isdescribed. Conclusion is made that SVM model outperformsARIMA, that make it a good candidate for the energy pricesreturn prediction.

Index Terms—financial time series, oil prices, support vectormachine (SVM), ARIMA, financial prices forecasting

46

Page 48: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

Recurrent Neural Network for Code CloneDetection

Arseny ZorinPeter the Great St.-Petersburg

Polytechnic UniversitySt.Petersburg, Russia

E-mail: [email protected]

Vladimir ItsyksonPeter the Great St.-Petersburg

Polytechnic UniversitySt.Petersburg, Russia

E-mail: [email protected]

Abstract—Code clones are a duplicated code which degradesthe software quality and hence increases the maintenance cost.Code clone detection is an important problem for softwaremaintenance and evolution. Many researches have investigateddifferent techniques to automatically detect duplicate code inprograms exceeding thousand lines of code. In this article wepropose an AI-based approach for detection of method-levelclones in Java projects. This approach uses a recurrent neuralnetwork with Siamese architecture for clone detection. A tool hasbeen developed in Java and Python to support the experimentscarried out and to validate the proposed approach. Finally, weprovide some evaluation results and share the key stages of ourfuture work.

Index Terms—code clone detection, machine learning, neuralnetworks, abstract syntax trees.

I. INTRODUCTION

A code fragment that was copied and pasted with majoror minor edits is called software duplicate or code clone. Ithas been studied that 30% of code in most of the softwarecompanies are code clones [1]. The most common complica-tion of code clones is software maintenance. Specifically, therecould be a bug present in one of the duplicated fragments,in this case, that bug has to be detected and fixed in otheridentical fragments. The presence of duplicated but identicalbugs in many locations within a piece of software increasesthe difficulty of software maintenance.

Code clones can emerge in a software system due to variousreasons (Fig. 1) [2]. One of them is copying and pasting of acode fragment that could provide a reasonable starting pointfor the implementation. Forking could be another cause ofclones occurring. The term forking is used by Kapser andGodfrey[3] to mean the reuse of similar solutions with thehope that they will be diverged significantly with the evolutionof the system. For example, when creating a driver for ahardware family, a similar hardware family may already havea driver, and thus can be reused with slight modifications [2].

Merging of two similar systems: Sometimes two softwaresystems of similar functionalities are merged to produce a newone. Although these systems may have been developed bydifferent teams, clones may produce in the merged systembecause of the implementations of similar functionalities inboth systems [2].

Significant efforts in writing reusable code: It is hard andtime consuming to write reusable code. Perhaps, it is easierto maintain two cloned fragments than the efforts to producea general but probably more complicated solution [2].

Lack of ownership of the code to be reused: Code may beborrowed or shared from another subsystem which may not bemodified because it may belong to a different department oreven may not be modifiable (access not granted and/or storedin nonvolatile memory). In such situations, the only way ofreusing the existing code is to copy and paste with requiredadaptations [2].

There are not all causes of clones occurrence.Detecting clones is an important problem for software

maintenance. Despite the fact that previous research hasdemonstrated harmful impacts of code cloning, this is notalways the case. Also, it is not always necessary to refactorclones. Nonetheless, the ability to automatically detect twosimilar fragments of code is critical in many areas, e.g.code simplification, code maintainability, plagiarism detection,copyright infringement detection, malicious software detectionand detection of bug reports. There are few clones detectiontechniques known and used in practice. We favor Roy andCordys classification by their “internal source code repre-sentation” e.g. text-, token-, tree-, graph- and metric-basedtechniques [2].

The purpose of our project is to develop an AI-based methodfor clone detection. Our approach has several steps, firstly weare generating an Abstract Syntax Tree (AST). After that weremove all nodes from AST that are not interesting to us.Next step is creating representations of tree tokens for feedingthem to pre-trained recurrent neural network. Last step of ourapproach is answer representation in human-readable format.

This article contains five sections. Section II presents the re-search background and the related work. Section III describesthe tool that has been developed. Section IV discusses theresults obtained using our tool. Finally, Section V concludesthe article.

II. BACKGROUND AND RELATED WORK

A. Basic definitions

Each article defines clones in its own ways. Below are thecommon definitions which are used throughout this article.

47

Page 49: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

Fig. 1. Tree-diagram for the reasons of cloning

Code fragment is a part of a source code needed to runa program. It can contain a function or a method, blocks orsequences of statements [4].

Code clones two or more fragments of code that are similarwith respect to a clone type [4].

Code class is a set of clone pairs where each pairs is relatedby the same relation between the two code fragments [4].

Clone candidate is a clone pair reported by a clone detector[4].

B. Types of clones

Generally there are four types of clones.Type-I. Fragments that are identical to each other except

for variations in comments and layout [2][5].Type-II. Fragments that are identical to each other except

for variations and in identifiers name and literal values inaddition to Type-I [2][5].

Type-III. Syntactically similar fragments that differ at thestatement level. The fragments have statements added, modi-fied or removed with each other with respect to each other inaddition to clone Type-II [2][5].

Type-IV. Fragments that are syntactically dissimilar, butimplement the same functionality [2][5].

Type I - III clones indicate textual similarity, whereas TypeIV - semantic similarity. Our tool supposed to detect first threetypes of clones.

There are an examples of different clone types on fig 2)

Fig. 2. Types of clones

C. Code Clone Detection

The code clone detection is a two-phase process whichconsists of transformation and comparison phases. First partis a source text transformation into an internal format, whichallows usage of more efficient comparison algorithm. Actualmatches were detected during the second phase.

The clone detection process begins from transformingsource code into representations suitable for accessing sim-ilarity. As it has been already mentioned in Introduction,detection techniques can be classified by their source coderepresentation.

Text-based techniques. Approaches of this type use littleor no transformation of a source code before an actual compar-ison. In most cases, a raw source code is used directly in theclone detection process. Techniques in this category differ inunderlying string comparison algorithm. Comparing calculatedsignatures per line is one possibility to identify for matchingsubstrings.

Token-based techniques. This approach begins by trans-forming a source code into a sequence of tokens and thenscanned for duplicated sub-sequences of tokens, and thecorresponding original code is returned as clones. Matchingsubsequences of tokens generally improves recognition power,but token abstraction has a tendency to admit more falsepositives [6].

Tree-based techniques. This approach measures similarityof subtrees in syntactic representations. First of all, sourceprograms are converted into parse trees or abstract syntaxtrees, which can then be processed using either tree matchingor structural metrics to find clones.

Graph-based techniques. This type of approach refersto semantic approaches and uses a static program analysisto provide more precise information than a simple syntacticsimilarity. In some approaches, a program is representedwith a program dependency graph (PDG). The nodes of this

48

Page 50: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

graph represent expressions and statements, while the edgesrepresent control and data dependencies.

Metric-based techniques. This approach gathers a numberof metrics for code fragments, and then compare metrics vec-tors rather than code or ASTs directly. Such technique involvesfingerprinting functions, metrics calculated for syntactic like aclass, function, method or statement that provides values thatcan be compared to find clones of these syntactic units. Inmost cases, a source code is first parsed to an AST or ControlFlow Graph (CFG) representation to calculate the metrics.Metrics are calculated from names, layouts, expressions andcontrol flow of functions. A clone is defined as a pair of wholefunction bodies with similar metrics values.

D. Neural Networks

A neural network is a series of methods that attempt toidentify underlying relationships in a set of data by usinga process that mimics the way the human brain operates.Neural networks have achieved state of the art performanceon similarity tasks, e.g. searching for similar pictures, photosand text, this is the main reason why we are using neuralnetworks in our approach.

Recurrent neural networks (RNN) can use their feedbackconnections to store representations of recent input events inform of activations. RNNs are naturally suited for variable-length inputs like sentences, especially the Long Short-TermMemory model [7]. LSTM sequentially updates a hidden-staterepresentation, but these steps also rely on a memory cellcontaining four components: a memory state, an output gatethat determines how the memory state affects other units, aswell as an input gate (and forget gate) that controls what isbeing stored in memory based on each new input and a currentstate.

Standard RNNs suffer from the vanishing gradient problemin which the backpropagated gradients become vanishinglysmall over long sequences [8]. The LSTM model is a solutionto this problem. Like the standard RNN, the LSTM sequen-tially updates a hidden-state representation, but it introducesa memory state ct and three gates that control the flow ofinformation through the time steps [9].

Siamese architecture of RNN was used for clone detectionpurposes [9]. This model is applied for assessing semanticsimilarity between sentences. The Manhattan LSTM model isoutlined in Fig. 3 [9]. There are two LSTM networks, eachof them process one of the sentences in a given pair. Thismodel uses LSTM to read in word-vectors representing eachinput sentence and employs its final hidden state as a vectorrepresentation for each sentence. Subsequently, similarity be-tween these representations is used as a predictor of semanticsimilarity.

Siamese architecture is an architecture of energy-basedmodels (EBM). EBMs are used in situations where the en-ergies for various configurations must be compared in orderto make a decision (classification, verification, etc.) [9]. Theadvantage of EBMs over traditional probabilistic models,particularly generative models, is that there is no need for

estimating normalized probability distributions over the inputspace. The absence of normalization saves us from computingpartition functions that may be intractable. It also gives usconsiderably more freedom in the choice of architectures forthe model [10].

Fig. 3. Siamese RNN

E. Related Work

Neural network usage for clones detection tools is not anew approach. Martin White et al. [11] developed an approachbased in part on language models. In their work they castclone detection as a recursive learning procedure designed toadequately represent fragments that serve as constituents ofhigher-order components. The purpose of deep learning is tosynchronize the source code representation that was used inthe clone detection process with the manner in which the codeis conceptually organized. In other words, Martin White et al.use deep learning on preprocessing step.

Hui-Hui Wei and Ming Li [12] proposed an end-to-enddeep feature learning framework for clone detection, namelyCDLH (Clone Detection with Learning to Hash), which si-multaneously learn hash functions and representations of codefragments via AST-based LSTM to take into account both thelexical and syntactical aspects of source codes.

S. Carter et al. [13] proposed a solution in the form of the“Self-Organizing Map”. This performs a classification using anunsupervised training phase. It had the additional advantage ofpreserving any topological relationships between input vectors.

III. METHODS

This section describes the proposed approach for clonedetection in Java source code. Our tool has been developedin Java and Python. It accepts Java project as the input andseparates the functions/methods presented in it. Having definedthe methods, we are building vector representations of tokensfor every method. These vectors are input vectors for pre-trained neural network that analyzes a project for clones.

The overall process is carried out in three major stages:pre-processing, detection and post-processing. All stages of

49

Page 51: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

our approach are presented with a process illustrated on fig.4.

Fig. 4. Stages of work

A. Pre-processing

This stage includes the process of comments and whitespaceremoval. All files are being scanned for AST creation. Duringthe first step we are looking for useless tokens (such ascomments, white spaces etc.) and removing them. At the finalstep we are creating vector representation of tokens (word2vecmodel) [14]. As another neural network was used for vectorrepresentation, it has to be trained. We used a project with1953 KLOC (number of thousand lines of code, LOC).

Another part of pre-processing is dataset selection. Thereare some benchmarks of known clones for testing detectiontools (for example, BigCloneBench[15]). BigCloneBench is acollection of eight million validated clones within IJaDataset-2.0, a big data software repository containing 25,000 open-source Java systems. BigCloneBench contains both intra-project and inter-project clones of the four primary clonetypes [15][16]. Despite the fact that there are few benchmarksfor our purposes, was decided to generate our own dataset.This decision was made to avoid behavior copying of alreadyexisting tools. Self-written, so-called code mutator was used.Its essence is to generate an artificial clone, i.e. copy and pastelines of code, or delete them (Fig. 5).

First step of our mutator is to generate a random numberfrom 0 to 2. This step allows us to figure out what type ofmutation we will make. For example, if we obtained 0 asmutation type we will select deleting lines, 1 - copying linesand for 2 - we will stay method unchanged. After that werandomly decide how many lines will be modified and whatlines will be modified. No more than 10 percent of methodare mutated. The last step is mutation. On that step we deleteselected lines or copy selected lines and paste them to therandomly selected place inside method. As a returned type

Fig. 5. Mutation stages

of mutator we have mutated methods represented as tokensequence. That methods can be clones of first three types.

A vector representation was also built for obtained tokens,and it was then fed to neural network for training. A largeproject (3507,5 KLOC) was used for network training. Allmethods in selected projects were mutated for the subsequentdatasets generation.

The training set for a Siamese network consists of triplets(x1, x2, y), where x1 and x2 are sequences and y ∈ {0, 1}indicates whether x1 and x2 are similar (y = 1) or dissimilar(y = 0). The aim of training is to minimize the distance inan embedding space between similar pairs and maximize thedistance between dissimilar pairs.

For effective training counterexamples are needed. In thatcase, it was considered that source code of the project andcode obtained from mutator are clones. On the other hand,source codes of currently used project (part of it) and anotherproject were considered as not clones (counterexamples).

B. Detection

The granularity of our approach is method-level. Methodscan have different length, it means that vector representationsfor different methods can have different dimensions. In orderto make “word embeddings” fixed-dimensional, a sequence-to-sequence (seq2seq) model was used [17]. Sequence-to-sequence models have enjoyed great success in a variety oftasks, such as machine translation, speech recognition, andtext summarization.

The idea behind a seq2seq model is to use one LSTM toread the input sequence, one timestep at a time, to obtainlarge fixed-dimensional vector representation, and then to useanother LSTM to extract the output sequence from that vector(fig. 6). The second LSTM is essentially a recurrent neuralnetwork language model except that it is conditioned onthe input sequence. State of LSTMs hidden cells at the lastmoment of the encoder roll-out was used as fixed-dimensionalvectors.

Dataset for training seq2seq model is the same dataset as forSiamese neural network. We are using vector representationsof 3507,5 KLOC project. Softmax cross entropy was used as

50

Page 52: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

Fig. 6. Sequence-to-sequence

loss function. Optimization of the parameters is done usingAdam optimization [18] and loss minimization.

Our Siamese network contains 10 layers of BidirectionalLSTM nodes. The output obtained from the final BLSTM layeris projected through a single densely connected feedforwardlayer. To learn the input pair similarity, euclidean basedcontrastive loss is used. Loss function is shown in equation1.

L(x1, x2, y, w) =(1− y) ∗D2

w − y ∗max2{0,m−Dw}2

(1), where• m > 0 — a margin, that defines a radius around Gw(x).

Gw is a parametric function• Dw — euclidean distance between x1 and x2.• x1, x2, y — the labeled sample pair.• w — parameter [19].

C. Post-processing

The output from the previous phase is presented in theform of clone pairs. Obtained clone pairs are pairs of vectorrepresentations. To present results in a human-readable format,obtained representations are fed into decoder (second LSTMin seq2seq model). After the previous step, obtained represen-tations are mapped back to AST tokens which have human-readable properties. The identified clone methods, called “po-tential clone pairs”, are clustered separately for each clone.Clustering is the process of grouping clone pairs into classesor clusters, so that clone pairs within a cluster are highlysimilar to one another, but very dissimilar to clone pairs inother clusters.

IV. RESULTS

To evaluate the proposed approach, a source code of severalJava projects has been used. The experimental analysis hasbeen carried out with a small-sized project of 2 KLOC to amedium-sized project of 14 KLOC. In total, for testing weselected five projects: three of them were fully mutated andother two were kept unchanged. On the current level of ourapproach we are mutating the projects and testing them forclones.

Each model was trained at least 10 epochs on one computenode of Nvidia DGX-1. The average training time per epochfor seq2seq model is 20 minutes and for Siamese network - 5minutes.

The model that is being trained searches code clones onthe selected projects in few minutes. As a result, we foundapproximately 83% of clones in each project. Searching forclones in large projects, at the moment, is very labor-intensiveand resource-consuming. For example, it will require about 54billion iterations to scan the whole project with 3507,5 KLOCsclones.

Current state of our project is a work in progress. In the nextphase of our project we will solve the problem of iterationsfor a large amount of code. To solve this, we decided to useLocality- Sensitive Hashing (LSH). LSH is an algorithm forsolving the approximate or exact Near Neighbor Search in highdimensional spaces. The nearest neighbor search problem is:given a set of n points P = {p1, ..., pn} in a metric spaceX with distance function d, pre-process P so as to efficientlyanswer queries for finding the point in P closest to a querypoint q ∈ X [7].

Basic LSH idea [20]:• use LSH: a special hash function that would put points

that are close together to the same point• if two points are close together in high-dimensional

space, then they should remain close together after someprojection to a lower-dimensional space

This idea can be easily understood using the example show-ing in fig. 7. The picture shows how four items (representedby the different colors) are located into buckets after applied ahash function. As the green and the red item are placed in thesame bucket, we can conclude that those items are neighborsor similar. Calling hash function only once opens the door topossible errors due to the random nature of it. In the lowerpart of the image all items are placed in different buckets, soit is impossible to conclude the similarities between them.

Fig. 7. LSH example

We foresee on more stage in our future research where wewill be improving dataset for Siamese RNN training. At the

51

Page 53: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

moment datasets generated through a self-written “mutator”and obtained datasets have not got a high accuracy. To improvethe results of Siamese RNN working we have to generatedatasets with a higher accuracy.

As was previously mentioned BigCloneBench is a clonedetection benchmark of clones. It was created for testing clonedetection tools. This dataset is suitable for our tool testing.

V. CONCLUSION

In this article we have proposed an AI-based approach todetect method-level code clones. Our approach uses severalrecurrent neural networks on different stages of clones de-tection. We could improve the precision and reduce the totalcomparison cost by increasing datasets accuracy and neuralnetwork parameters changing.

The main distinguishing feature of proposed method isusing neural networks for clone detection. Comparing theproposed method with the methods from the literature, it canbe concluded that neural networks were not used at the clonesearch level, but only at the level of data preparation andresponse processing.

We have implemented the above mentioned method inpractise to scan a small and medium sized project for codeclones, and the obtained results indicate that the proposedmethod is not at the final stage and can be improved. The earlyexperiments prove that with help of this method we could findmore than 80% of clones. However, for more accurate resultsit is necessary to conduct more experiments, especially on realprojects.

This article was written with the support of the SiemensGrant for Masters and PhD students.

REFERENCES

[1] Chanchal K. Roy and James R. Cordy, An Empirical Study of FunctionClones in Open Source Software, WCRE ’08 Proceedings of the 200815th Working Conference on Reverse Engineering. Pages 81-90

[2] Chanchal K. Roy and James R. Cordy A Survey on Software CloneDetection Research, Technical report, Queen’s University, 2007

[3] Cory Kapser and Michael W. Godfrey “Cloning Considered Harmful”Considered Harmful, Proceedings of the 13th Working Conference onReverse Engineering, 2006

[4] Abdullah Sheneamer and Jugal Kalita A Survey of Software CloneDetection Techniques, International Journal of Computer Applications137, 2016.

[5] Marat Akhin and Vladimir Itsykson Clone detection: Why, what andhow?, 6th Central and Eastern European Software Engineering Confer-ence, 2010

[6] Chanchal K. Roy and James R. Cordy and Rainer Koschke Comparsionand evaluation of code clone detection techniques and tools: A qulitativeapproach, Science of Computer Programming 74, 2009

[7] Sepp Hochreiter and Jurgen Schmidhuber Long Short-Term Memory,Neural Computation, 1997.

[8] R. Pascanu and T. Mikolov and Y. Bengio On the difficulty of trainingrecurrent neural networks. Journal of Machine Learning Research, 2013.

[9] Jonas Mueller and Aditya Thyagarajan Siamese Recurrent Architecturesfor Learning Sentence Similarity, Proceedings of the 30th AAAI Confer-ence on Artificial Intelligence (AAAI), 2016.

[10] Yann LeCun and Fu Jie Huang Loss Functions for Discriminative Train-ing of Energy-Based Models. Proc. of the 10-th International Workshopon Artificial Intelligence and Statistics, 2005

[11] Marti nWhite and Michele Tufano and Christopher Vendome and DenysPoshyvanyk Deep Learning Code Fragments for Code Clone Detection,Proceedings of the 31st IEEE/ACM International Conference on Auto-mated Software Engineering, 2016.

[12] Huihui Wei and Ming Li Supervised Deep Features for Software Func-tional Clone Detection by Exploiting Lexical and Syntactical Informationin Source Code, Twenty-Sixth International Joint Conference on ArtificialIntelligence, 2017

[13] Clone detection in telecommunications software systems : a neural netapproach, Technical report, University of Hertfordshire, 1994

[14] Thomas Mikolov and Ilya Sutskever and Kai Chen and Greg S Corradoand Jeff Dean Distributed Representations of Words and Phrases and theirCompositionality, Advances in Neural Information Processing Systems26, 2013.

[15] Jeffrey Svajlenko, Judith F. Islam, Iman Keivanloo, Chanchal K. Royand Mohammad Mamun Mia, Towards a Big Data Curated Benchmarkof Inter-Project Code Clones, IEEE International Conference on SoftwareMaintenance and Evolution, 2014.

[16] Jeffrey Svajlenko and Chanchal K. Roy Evaluating clone detectiontools with BigCloneBench, IEEE International Conference on SoftwareMaintenance and Evolution, 2015.

[17] Ilya Sutskever and Oriol Vinyals and Quoc V. Le Sequence to SequenceLearning with Neural Networks, NIPS, 2014.

[18] Diederik P. Kingma, Jimmy Ba Adam: A Method for Stochastic Op-timization, 3rd International Conference for Learning Representations,2015.

[19] Raia Hadsell, Sumit Chopra, Yann LeCun Dimensionality Reduction byLearning an Invariant Mapping, IEEE Computer Society Conference onComputer Vision and Pattern Recognition, CVPR 2006.

[20] Piotr Indyk and Rajeev Motwani Approximate Nearest Neighbors:Towards Removing the Curse of Dimensionality, Theory of Computing,2000

52

Page 54: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

Автоматизация проверки корректности использования программных библиотек

Максим Гусев Санкт-Петербургский политехнический

университет Петра Великого Email: [email protected]

Владимир Ицыксон Санкт-Петербургский политехнический

университет Петра Великого Email: [email protected]

Аннотация. В статье описывается метод автоматизированной динамической проверки корректности протоколов использования программных библиотек. Основная идея метода состоит в сравнении разработанных спецификаций программных библиотек с трассами выполнения инструментированной программы. Результатом сравнения является отчет с найденными несоответствиями программы спецификации программной библиотеки. Разработанный метод был реализован в виде прототипа инструмента для анализа Java-программ, который был апробирован на ряде тестовых и реальных программных проектов. Эксперименты показали работоспособность подхода и инструмента.

I. ВВЕДЕНИЕ

Современные библиотеки достаточны сложны и их использование становится нетривиальной задачей. Разработчикам необходимо абсолютное понимание всех аспектов работы с библиотекой: сценарии работы с библиотекой, подготовка входных данных, интерпретация результатов, влияние на окружение и т.п.

Для правильного использования библиотеки необходимо иметь формализованное описание протокола общения с библиотекой — спецификацию, позволяющую контролировать корректность взаимодействия основного приложения и библиотеки.

В данной работе мы представляем подход, основанный на автоматизированной динамической проверке корректности протокола использования программной библиотеки, и его реализацию в виде инструмента для анализа Java-программ. Под корректностью здесь понимается следование приложением протоколу доступа к библиотеке, заложенного в ее спецификации.

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

II. ОБЗОР МЕТОДОВ ТЕСТИРОВАНИЯ НА ОСНОВЕ

МОДЕЛЕЙ

Динамические методы проверки корректности протоколов использования библиотек на основе спецификаций имеют непосредственное отношение к тестированию на основе моделей (Model Based Testing) и тестированию спецификаций.

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

SibylFS [1] — инструмент, использующий формальную спецификацию в качестве тестового оракула для тестирования POSIX-совместимых и других файловых систем. Операционные системы критически зависят от поведения файловых систем, но их поведение отличается во многих деталях как между реализациями, так и в рамках разных версий одной реализации. SibylFS предоставляет математически строгую модель поведения файловой системы, которая определяет диапазон допустимых действий файловой системы для любой последовательности системных вызовов в пределах рассматриваемой области, и которая может использоваться в качестве тестового оракула, чтобы решить, допустима ли рассматриваемая трасса с точки зрения модели.

SPEST [2] (SPEcification based teSTing) — инструмент тестирования по стратегии “черного ящика”, который использует простой язык создания формальных спецификаций для генерации модульных тестов. Спецификации хранятся в виде аннотированных комментариев. Синтаксис инструмента позволяет пользователю создавать логические выражения, которые описывают ожидаемое поведение кода. Пользователь также может провести валидацию на синтаксическую корректность и корректность типов благодаря возможность компиляции спецификации.

GraphWalker [3] – инструмент, принимающий в качестве входных данных описание программы как конечного автомата. Модель впоследствии используется для генерации тестов (трасс). Подходит для онлайн и офлайн тестирования. Разработан на языке Java.

53

Page 55: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

JSXM [4] – инструмент, который использует модели JSXM. Они представляют собой специальный тип расширенных конечных автоматов, называемых Stream X-Machines (SXM). SXM позволяют описать как поток управления, так и данные системы. Наиболее важным преимуществом SXM является тот факт, что при достаточно хорошем описании условий, можно гарантировать, что сгенерированные тестовые примеры показывают все функциональные несоответствия в реализации. Сгенерированные абстрактные тесты могут быть переведены в JUnit-тесты.

Инструмент Modbat [5] базируется на использовании расширенных конечных автоматов и специализируется на тестировании API. Пользователь определяет и компилирует модель, которая затем исследуется Modbat и выполняется на тестируемой системе. Ошибочные тестовые прогоны фиксируются как трассы с наличием ошибок. Modbat предоставляет язык моделирования DSL, основанный на языке Scala, с функциями для вероятностных и недетерминированных переходов, компонентных моделей с наследованием и исключениями. Модель, используемая Modbat, совместима с Java-байткодом.

ModelJUnit [6] представляет собой набор Java-классов и является расширением JUnit. ModelJUnit позволяет создать модели на базе конечных автоматов и расширенных конечных автоматов (в виде Java-классов) и генерировать тесты на основе этих моделей, затем вычислять различные метрики.

Инструмент TestOptimal [7] поддерживает моделирование на базе конечных автоматов и расширенных конечных автоматов с применением нескольких алгоритмов генерации тестовых примеров. Он имеет различные плагины для онлайн-тестирования веб-приложений, приложений Windows, баз данных и веб-сервисов и т. д.

UniTESK [8] — технология тестирования, основанная на формальных моделях (или спецификациях) требований к поведению программных или аппаратных компонентов. В UniTESK моделируется поведение тестируемой системы. Основной вид моделей, используемый в этой технологии — программные контракты, однако для генерации нетривиальных тестовых последовательностей в ней используются автоматные модели.

В приведенном обзоре представлено лишь несколько методов и практических инструментов, позволяющих организовывать тестирование, управляемое моделями (model-based testing — MBT). Отметим, что только подход, используемый в SibylFS, использует формальную спецификацию библиотеки именно для проверки корректности протокола взаимодействия с файловыми системами. Остальные инструменты предлагают либо работать с моделью исследуемой программы, либо использовать контракты для тестирования. Отметим, что нерассмотренный в обзоре подход learning-based testing (и соответствующие инструменты), является лишь развитием подхода MBT, и инструменты на его базе так же не решают задачу проверки следования программы протоколу библиотеки.

Таким образом, обзор показал, что для решения задачи проверки корректности протокола взаимодействия с произвольными библиотеками не существует подходящих инструментов. То есть представленная работа актуальна.

III. ФОРМАЛИЗМ ДЛЯ СПЕЦИФИКАЦИИ БИБЛИОТЕК

В данной работе для задания спецификаций библиотек используется формализм, описанный в [9]. Формальная спецификация библиотеки в соответствии с ним определяет:

описание API библиотеки, то есть сигнатуру функций, состоящую из имен функций, перечня параметров и их типов и типа возвращаемого значения;

поведенческую модель библиотеки, задаваемую системой взаимодействующих расширенных конечных автоматов;

описание окружения.

Поведенческая модель библиотеки является определяющей для данной работы, поэтому рассмотрим ее подробней.

Все объекты библиотеки, имеющие свой жизненный цикл, задаются с помощью расширенных конечных автоматов.

Состояния автомата определяют текущую позицию в жизненном цикле. Каждый объект имеет начальное состояние, также может специфицироваться финальное состояние, в котором объект прекращает существование (например, при закрытии файла дескриптор файла уничтожается).

Переходы автомата из одного состояния в другое инициируются вызовами функций API библиотеки. Возможность вызова функции API в текущем состоянии определяется охраняемыми условиями (guarded conditions). Некоторые вызовы API могут оставлять автомат в том же состоянии, например, функции read/write при работе с файлами.

Помимо перевода автомата в новое состояние вызов функции API может также порождать дочерний автомат, если такое предусмотрено логикой функционирования библиотеки. Например, вызов socket(…) создает новый дочерний автомат для библиотеки bsd-socket.

Для более глубокого задания семантики библиотеки в поведенческом описании присутствуют также семантические действия, связывающие конкретные вызовы API с семантическим доменом, в котором функционирует библиотека.

Для разработчика поведенческое описание библиотек нагляднее представлять не в алгебраическом, а в графическом виде. На рис. 1 представлен фрагмент поведенческого описания Java-классов FileReader и BufferedReader, представленных в пакетах java.io.FileReader и java.io.BufferedReader соответственно.

54

Page 56: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

IV. ПОДХОД К ПРОВЕРКЕ КОРРЕКТНОСТИ ПРОТОКОЛА

ИСПОЛЬЗОВАНИЯ БИБЛИОТЕКИ

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

В данной работе мы использовали подход, основанный на динамическом анализе исследуемой программы. Основная идея подхода заключается в сопоставлении трасс выполнения программы, состоящих из трасс отдельных объектов, с формальной спецификацией программной библиотеки.

Рис. 1: Фрагмент поведенческой модели Java-классов FileReader и BufferedReader

Трасса отдельного объекта — это протокол всех операций с объектом, полученный в результате конкретного запуска программы. Трасса содержит информацию о состояниях объекта и переходах между

ними. В листинге 1 приведен пример фрагмента Java-программы, состояния и переходы, спроецированные на модель библиотеки, выделены на рис. 1 жирными линиями.

Сопоставление трасс объектов со спецификацией преследует цель обнаружить нарушения протокола использования библиотеки. Типичные ошибки, обнаруживаемые в ходе сопоставления:

нарушение порядка вызова функций API;

недостижение финального состояния автомата объектом — оставленные «висячие» объекты;

и т.п.

Предлагаемый подход состоит из трех основных этапов (см. рис. 2):

инструментирование программы;

формирование трассы;

анализ трассы и обнаружение несоответствий.

A. Задание формальной спецификации библиотеки

Спецификацию библиотеки в соответствии с формализмом [9] необходимо задавать в удобном для пользователя виде. В данной работе для этого используется предметно-ориентированный язык, описанный в [10]. Он реализован как внутренний DSL для языка программирования Kotlin. Как и в исходном формализме, библиотека описывается системой расширенных конечных автоматов. Каждый автомат идентифицируется именем и характеризуется набором состояний. Переход между состояниями осуществляется переходами, инициируемыми вызовами функций API.

8 public static void main(String[] args) { 9 String line; 10 BufferedReader br = null; 11 FileReader fr = null; 12 try { 13 fr = new FileReader(FILENAME); 14 br = new BuffereReader(fr); 15 while((line = br.readline()) != null){ 16 System.out.printl(line); 17 } 18 br.close(); 19 fr.close(); 20 } catch (IOException e){ 21 e.printStackTrace(); 22 } 23}

Листинг 1: Пример Java-кода

Все автоматы имеют три стандартных состояния:

Init — начальное состояние, когда объект еще не инициализирован;

Constructed — автомат создан;

Final — автомат завершил свой жизненный цикл.

55

Page 57: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

Рис. 2: Этапы разработанного метода

Для описания библиотеки также используются четыре типа переходов:

CallEdge — вызов метода;

ConstructorEdge — вызов конструктора автомата;

AutoEdge — неявный переход, используется, если сущность может изменять свое состояние без явного внешнего воздействия;

LinkedEdge — связанный переход, предназначен создания дочернего автомата. Используется, когда вызов функции API приводит к созданию нового автомата определенного типа.

Подробное описание предметно-ориентированного языка можно найти в [10].

Разработчик, анализирующий корректность функционирования программного проекта с точки зрения соответствия протоколу использования библиотеки, для начала создает формальное описание библиотеки на основе документации или использует спецификацию, созданную ранее авторами библиотеки или другими разработчиками.

B. Инструментирование программы

Второй этап — подготовка исходного текста проекта к формированию трасс. Для этого исходный код специальным образом инструментируется. Инструментирование происходит таким образом, чтобы при формировании трассы была возможность получить всю необходимую при анализе информацию о действиях со всеми объектами целевой библиотеки:

место вызова функции в программном коде;

принадлежность вызова к объекту и библиотеке;

идентификатор объекта;

тип вызова функции.

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

C. Формирование трасс

На этом этапе инструментированная программа запускается с целью формирования трассы. Информация, имеющаяся в трассе, позволяет идентифицировать типы объектов, конкретные объекты, соответствующие автоматам модели, а также вызовы API, соответствующие конкретным переходам. Полный анализ трассы позволяет соотнести протокол поведения программы с моделью библиотеки.

D. Проверка корректности трасс

Последний этап — проверка корректности трасс на модели в соответствии с формальной спецификацией. Эта проверка заключается в анализе соответствия полученной трассы спецификации библиотеки. В ходе проверки контролируется:

корректность завершающих состояний всех созданных объектов программы. Для этого проверяется достижение всеми созданными объектами библиотеки состояний соответствующих автоматов, помеченными как Final;

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

V. СОЗДАНИЕ ИНСТРУМЕНТА ПРОВЕРКИ

КОРРЕКТНОСТИ ПРОТОКОЛА ИСПОЛЬЗОВАНИЯ

БИБЛИОТЕКИ

Сформулируем требования к разрабатываемому инструменту, который реализует предложенный подход. Разрабатываемый инструмент должен:

корректно обрабатывать многофайловые проекты на языке Java версии 8;

поддерживать формат DSL для языка спецификаций библиотек, описанного в [10];

Обеспечивать автоматизацию анализа программы:

o инструментирование программы, управляемое моделью библиотеки;

o запуск инструментированной программы и формирование трассы;

o анализ трассы на соответствие спецификации;

o формирование отчета.

быть кроссплатформенным и работать под управлением операционных систем Windows, Linux и macOS.

В качестве языка разработки инструмента авторами выбран современный объектно-ориентированный язык

56

Page 58: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

Kotlin, так как используемый в подходе DSL [10] реализован на языке Kotlin.

Рассмотрим реализацию каждого этапа в разрабатываемом инструменте анализа.

Первый этап — создание формальной спецификации Java-библиотеки на внутреннем DSL языка Kotlin.

В листинге 2 представлен фрагмент описания спецификации библиотеки java.io.BufferedReader. Приведенный программный код является фрагментом DSL, отвечающим за описание конечного автомата и отражающим набор его состояний и корректных переходов между этими состояниями.

1 val bufferedReader = StateMachine(name = "BufferedReader")

2 val specifiedBufferedReader = State(name = 3 "SpecifiedBufferedReader", machine = bufferedReader) 4 val closedBufferedReader = State(name = "closed",

machine = bufferedReader) 5 bufferedReader.ending = closedBufferedReader.name 6 ConstructorEdge( 7 machine = bufferedReader, 8 src = bufferedReader.getConstructedState(), 9 dst = specifiedBufferedReader, 10 param = listOf(EntityParam( 11 machine = inputStreamReader, 12 state = specifiedInputStreamReader 13 ) 14 ) 15 ) 16 CallEdge( 17 machine = bufferedReader, 18 src = specifiedBufferedReader, 19 dst = specifiedBufferedReader, 20 methodName = "readLine" 21 ) 22 CallEdge( 23 machine = bufferedReader, 24 src = specifiedBufferedReader, 25 dst = closedBufferedReader, 26 methodName = "close" 27 )

Листинг 2: Пример описания java.io.BufferedReader

В строке 1 создается новый конечный автомат, а также задается название автомата, отвечающего за объекты класса BufferedReader. В строках 2–4 задаются состояния, в которых может находиться автомат bufferedReader: specifiedBufferedReader и closedBufferedReader. Состояние автомата specifiedBufferedReader соответствует такому состоянию экземпляра класса BufferedReader, когда задан источник, из которого будет проводиться чтение. Примером перехода в такое состояние может служить, например, код из листинга 3.

BufferedReader br = new BufferedReader(new FileReader(args[i]));

Листинг 3: Пример кода, переводящий автомат в состояние specifiedBufferedReader

Строка 4 задает закрытое состояние автомата closedBufferedReader, названное closed. Примером перехода в такое состояние может служить код из листинга 4.

bufferedReader.close();

Листинг 4: Пример кода, переводящего автомат в финальное состояние

В строке 5 задается конечное состояние автомата, которое он должен принять к моменту завершения работы, в противном случае анализатор выдаст предупреждение. В приведенном примере таким состоянием является closedBufferedReader.

Оставшаяся часть спецификации задает переходы автомата. В приведенном примере имеется 3 перехода: строки 6–15, 16–21 и 21–27.

Первый переход (строки 6–15) отражает инициализацию объекта типа BufferedReader и имеет тип ConstructorEdge. Параметр src задает исходное состояние, а dst — следующее состояние автомата.

Дополнительно, каждый переход может характеризоваться параметрами param, описывающими особенности перехода в новое состояние. Анализ параметров в текущей реализации не осуществляется, его включение планируется в следующие версии.

Пример перехода представлен в листинге 5.

BufferedReader in; … in = new BufferedReader( new InputStreamReader(fromclient.getInputStream()));

Листинг 5: Инициализация объекта путем вызова конструктора

Второй переход (строки 16–21) имеет тип CallEdge и описывает поведение автомата при вызове метода readLine. После вызова метода автомат остается в прежнем состоянии (например, при вызове функции из листинга 6).

in.readLine();

Листинг 6: Вызов метода, не меняющий состояние автомата

Третий переход (строки 22-27) также имеет тип CallEdge и задает поведение автомата при вызове метода close().

Второй этап — инструментирование программы. В текущей реализации для этого используется аспектно-ориентированный подход, реализованный в AspectJ [11]. Инструментированию подвергается рабочий проект совместно с имеющимися тестами. Для удобства последующего анализа в инструменте используется формат JSON для хранения трасс программы.

Третий этап — формирование трассы. Инструментированная программа запускается на имеющихся тестах с целью формирования набора трасс. Фрагмент полученной трассы в формате JSON представлен в листинге 7.

Последний этап — анализ полученных трасс с использованием формальной спецификации библиотеки и выдача отчета пользователю.

Разработанный инструмент позволяет находить нарушения в использовании библиотек, такие как:

отсутствие корректного завершения работы с объектом библиотеки (например, незакрытый файловый дескриптор или сокет);

57

Page 59: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

ошибочный повторный вызов функции библиотеки (например, повторная последовательная инициализация файла);

нарушение порядка использования функций (например, запись в файл до инициализации дескриптора);

и т.п. { "name" : "<init>", "filename" : "test.java", "line" : 14, "type" : "java.io.BufferedReader", "callerName" : "socketIO", "kind" : "constructor-call", "args" : [ "java.io.FileReader@47e58f66" ], "id" : "java.io.BufferedReader@535dc0ca", "place" : "before" }, { "name" : "readLine", "filename" : " test.java", "line" : 15, "type" : "java.io.BufferedReader", "callerName" : "socketIO", "kind" : "method-call", "args" : [ ], "id" : "java.io.BufferedReader@535dc0ca", "place" : "before" }, { "name" : "close", "filename" : " test.java", "line" : 18, "type" : "java.io.BufferedReader", "callerName" : "socketIO", "kind" : "method-call", "args" : [ ], "id" : "java.io.BufferedReader@535dc0ca", "place" : "before" }

Листинг 7: Возможный фрагмент трассы объекта BufferedReader

Рассмотрим примеры таких ошибок и реакцию на них разработанного инструмента.

Одной из самых распространённых ошибок является некорректное завершение жизненного цикла объекта (как, например, экземпляры классов BufferedReader и FileReader в листинге 8 [12]). В листинге 9 показан фрагмент отчета инструмента с обнаруженными ошибками.

43 public class Test6{ 44 public String method (String name) throws

FileNotFoundException, MalformedURLException { 45 FileReader fr = new FileReader (“a.b”); 46 BufferedReader br = new Buffered Reader(fr); 47 if (name == null) return null; 48 String s = null; 49 try { 50 s = br.readLine(); 51 } catch (IOException ioe){ 52 } 53 URL u = new URL(s); 54 return s; 55 }}

Листинг 8: Пример кода, с некорректным завершением жизненного цикла объекта

Object belongs to FileReader in row 45 of Test6.java should be closed. Object belongs to BufferedReader in row 46 of Test6.java should be closed.

Листинг 9: Диагностическое сообщение инструмента при обнаружении объектов с незавершенным жизненным

циклом

Второй тип ошибок — некорректный повторный вызов функции библиотеки. Он также обнаруживается инструментом, хотя в реальных проектах встречается только при очень сложной логике программ, когда причиной повторного вызова является не результат опечатки, а объединение нескольких ветвей управления. Пример простейшего кода представлен в листинге 10, диагностика инструмента — в листинге 11. Логика работы инструмента строится по следующему принципу. В строках 4 и 6 приведено последовательное определение экземпляра класса Socket без промежуточных вызовов, переводящих объект fromserver в другое состояние. Таким образом объект после первого определения попадает в состояние, в котором повторное определение не описано в качестве возможного перехода, и инструмент сообщает об этом в отчете.

1 public class client { 2 try{ 3 Socket fromserver; 4 fromserver = new Socket (“localhost”, 44444); 5 ... 6 fromserver = new Socket (“localhost”, 33333); 7 ... 8 fromserver.close(); 9 ...

Листинг 10: Ошибочный повторный вызов функции библиотеки

Row 4 belongs to Socket in test.java should not be after row 6

Листинг 11: Диагностическое сообщение инструмента при обнаружении повторного вызова

Был создан ряд искусственных примеров для оценки работоспособности инструмента. Спецификация для следующих примеров приведена в [].

22 BufferedReader in; 23 PrintWriter out; 24 25 ServerSocket servers = null; 26 Socket fromclient = null; 27 28 try { 29 servers = new ServerSocket(10123); 30 } catch (IOException e) { 31 System.out.println("Couldn't listen to port 44444"); 32 System.exit(-1); 33 } 34 35 36 try { 37 System.out.print("Waiting for a client..."); 38 fromclient = servers.accept(); 39 System.out.println("Client connected"); 40 } catch (IOException e) { 41 System.out.println("Can't accept"); 42 System.exit(-1); 43 } 44 45 in = new BufferedReader(new InputStreamReader(fromclient.getInputStream())); 46 out = new PrintWriter(fromclient.getOutputStream(), true); 47 String input; 49 System.out.println("Wait for messages"); 50 while ((input = in.readLine()) != null) { 51 if (input.equalsIgnoreCase("exit")) break; 52 out.println("S ::: " + input); 53 System.out.println(input);}

Листинг 12: Пример кода с ошибками типа “Незавершенный жизненный цикл объекта”

58

Page 60: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

Object belongs to ServerSocket in row 38 of C:\testLM\1\test1.java should be closed Object belongs to Socket in row 46 of C:\testLM\1\ test1.java should be closed Object belongs to BufferedReader in row 49 of C:\testLM\1\ test1.java should be closed Object belongs to PrintWriter in row 51 of C:\testLM\1\ test1.java should be closed

Листинг 13: Ошибки, найденные во фрагменте из листинга 12

В листинге 12 представлен простейший пример Java-сервера, в котором было найдено 4 ошибки (см. листинг 13).

Искусственно внесем ошибку в спецификацию: теперь финальным состоянием будет specifiedBufferedReader (см. листинг 14). Так как объект будет попадать в финальное состояние, то инструмент не выдаст предупреждений.

val bufferedReader = StateMachine(name = "BufferedReader") val specifiedBufferedReader = State(name = "SpecifiedBufferedReader", machine = bufferedReader) val closedBufferedReader = State(name = "closed", machine = bufferedReader) bufferedReader.ending = specifiedBufferedReader.name

Листинг 14: Добавление искусственной ошибки в спецификацию

После добавления в программу строк из листинга 15 инструмент не детектирует ошибки в примере.

55 out.close(); 56 in.close(); 57 fromclient.close(); 58 servers.close();

Листинг 15: Корректное завершение жизненного цикла объектов

Внесем другую ошибку в спецификацию: теперь при вызове функции accept() в соответствии со спецификацией сокет должен переходить в закрытое состояние (см. листинг 16).

LinkedEdge( src = socket.getConstructedState(), dst = specifiedSocket, edge = CallEdge(

machine = serverSocket, src = specifiedServerSocket, dst = closedServerSocket, methodName = "accept"

) )

Листинг 16: Добавление искусственной ошибки в спецификацию

Ожидаем ошибку, связанную с повторным закрытием сокета (см. листинг 17), так как после строки 38 листинга 12 сокет будет находиться в закрытом состоянии, то вызов функции close() в строке 58 будет пытаться повторно перевести его в закрытое состояние, что противоречит спецификации.

Row 59 belongs to ServerSocket in C:\testLM\5\test5.java can not be used after row 38

Листинг 17: Ошибка при повторном вызове функции close()

Рассмотрим листинг 18. В результате работы инструмента ожидаем получить 4 ошибки, связанные с некорректным завершением жизненного цикла экземпляров класса BufferedReader. Программа корректно

обрабатывает случаи, когда присвоение идет не только объекту, но и коллекции (см. листинг 19).

... 98 FileWriter fw1 = null; 99 100 fw1 = new FileWriter(FILENAME1); 101 102 FileWriter fw2 = null; 103 104 fw2 = new FileWriter(FILENAME2); 105 106 107 BufferedWriter bw1 = new BufferedWriter(fw1); 108 BufferedWriter bw2 = new BufferedWriter(fw2); 109 110 bw1.close(); 111 bw2.close(); 112 fw1.close(); 113 fw2.close(); 114 115 Vector<BufferedWriter> list = new Vector<>(); 116 bw1 = new BufferedWriter(fw1); 117 bw2 = new BufferedWriter(fw2); 118 list.add(new BufferedWriter(new FileWriter(FILENAME1))); 119 list.add(new BufferedWriter(new FileWriter(FILENAME2))); ...

Листинг 18: Корректное завершение жизненного цикла объектов

Object belongs to BufferedWriter in row 116 of C:\testLM\6\test6.java should be closed Object belongs to BufferedWriter in row 117 of C:\testLM\6\ test6.java should be closed Object belongs to BufferedWriter in row 118 of C:\testLM\6\ test6.java should be closed Object belongs to BufferedWriter in row 119 of C:\testLM\6\ test6.java should be closed

Листинг 19: Корректное завершение жизненного цикла объектов

7 Socket soc = null; 8 String str = null; 9 BufferedReader br = null; 10 DataOutputStream dos = null; 11 BufferedReader kyrd = new BufferedReader(new InputStreamReader(System.in)); 12 try { 13 soc = new Socket(InetAddress.getLocalHost(), 11095); 14 br = new BufferedReader(new InputStreamReader(soc.getInputStream())); 15 dos = new DataOutputStream(soc.getOutputStream()); 16 } catch (UnknownHostException uhe) { 17 System.out.println("Unknown Host"); 18 System.exit(0); 19 } 20 System.out.println("To start the dialog type the message in this client window \n Type exit to end"); 21 boolean more = true; 22 while (more) { 23 str = kyrd.readLine(); 24 dos.writeBytes(str); 25 dos.write(13); 26 dos.write(10); 27 dos.flush(); 28 String s; 29 s = br.readLine(); 30 System.out.println("From server :" + s); 31 if (s.equals("exit")) { 32 break; 33 } 34 }

Листинг 20: Фрагмент кода клиентской части приложения

Спецификацию можно было бы улучшить и считать поведение программы ошибочным, когда экземпляры

59

Page 61: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

классов BufferedWriter и FileWriter не используются перед вызовом метода close().

Рассмотрим результаты работы инструмента для интерактивного клиент-серверного взаимодействия (см. листинги 20, 21 и 22). Клиент отправляет сообщения на сервер, сервер в свою очередь отображает их до тех пор, пока не получит сигнал завершения работы. Инструмент ожидаемо показал правильный результат: 2 ошибки, связанные с некорректным завершением жизненного цикла экземпляров классов ServerSocket и BufferedReader. Интерес представляла оценка правильности сбора трассы для такого рода приложений.

136 ServerSocket ss = null; 137 try { 138 ss = new ServerSocket(11095); 139 } catch (IOException ioe) { 140 System.out.println("Error finding port"); 141 System.exit(1); 142 } 143 Socket soc = null; 144 try { 145 soc = ss.accept(); 146 System.out.println("Connection accepted at :" + soc); 147 } catch (IOException ioe) { 148 System.out.println("Server failed to accept"); 149 System.exit(1); 150 } 151 DataOutputStream dos = new DataOutputStream(soc.getOutputStream()); 152 BufferedReader br = new BufferedReader(new InputStreamReader(soc.getInputStream())); 153 String s; 154 System.out.println("Server waiting for message from the client"); 155 boolean quit = false; 156 do { 157 String msg = ""; 158 s = br.readLine(); 159 int len = s.length(); 160 if (s.equals("exit")) { 161 quit = true; 162 } 163 for (int i = 0; i < len; i++) { 164 msg = msg + s.charAt(i); 165 dos.write((byte) s.charAt(i)); 166 } 167 168 System.out.println("From client :" + msg); 169 dos.write(13); 170 dos.write(10); 171 dos.flush(); 172 } while (!quit); 173 dos.close(); 174 soc.close();

Листинг 21: Фрагмент кода серверной части приложения

Object belongs to ServerSocket in row 145 of C:\testLM\7\test7.java should be closed. Object belongs to BufferedReader in row 158 of C:\testLM\7\ test7.java should be closed.

Листинг 22: Фрагмент кода серверной части приложения

После проверки работоспособности инструмента на искусственных примерах, инструмент был апробирован на серии открытых проектов, размещенных в сети Интернет.

Основные эксперименты проводились на тестах из репозитория apache/incubator-netbeans [12]. Было проанализировано более 400 тестовых файлов, каждый объемом до 100 строк. Было обнаружено 302 случая, когда

экземпляры классов BufferedReader (169), ServerSocket (2) и FileReader (131) не были “закрыты”, то есть не перешли в финальное состояние в соответствии со спецификацией. В связи с тем, что тестирование проводилось на хорошо отлаженных проектах, то серьезных ошибок, которые позволяет обнаружить инструмент с текущим языком описания спецификаций, найдено не было.

Эксперименты на реальных проектах показали работоспособность подхода и инструмента.

VI. ЗАКЛЮЧЕНИЕ

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

Разработанный подход был воплощен в инструмент, способный анализировать Java-программы, использовать спецификации библиотек, написанные на внутреннем DSL языка Kotlin, и обнаруживать определенный класс программных ошибок.

Инструмент был протестирован на серии искусственных примеров и на нескольких реальных проектах, доступных в сети Интернет. На всех тестах инструмент показал свою работоспособность.

Основные ограничения подхода и разработанного инструмента:

низкая полнота получаемых результатов. Связана с использованием динамического анализа, который, как и тестирование, характеризуется низкой полнотой и высокой точностью. Для повышения полноты необходимо увеличивать число запусков и генерируемых трасс;

отсутствие готовых спецификаций для большинства библиотек. Разработчику необходимо самостоятельно специфицировать используемые впервые библиотеки.

Основные достоинства подхода:

Легковесность. При наличии спецификации библиотеки анализ осуществляется так же просто, как и автоматическое тестирование.

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

Возможность получения визуальных трасс функционирования программы, например, в форме различных диаграмм (диаграмм последовательностей, диаграмм переходов), что позволяет разработчику более глубоко понимать

60

Page 62: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

процессы, происходящие в программном обеспечении.

Разработанный прототип инструмента на базе Kotlin-DSL и AspectJ для анализа Java-программ показал свою работоспособность. Основным достоинством реализации с использованием AspectJ для динамического сбора трассы является полная поддержка всех особенностей языка и Java-фреймворков, так как инструмент работает на уровне байткода.

Простота используемого DSL накладывает значительные ограничения на типы ошибок, которые могут быть найдены на этапе проверки корректности, что отразилось на результатах апробации разработанного инструмента.

Таким образом подход показал свою работоспособность, и может быть применен как дополнительный к классическим методам обеспечения качества программного обеспечения.

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

Работа проведена при поддержке стипендиальной программы компании Siemens в Санкт-Петербургском политехническом университете Петра Великого.

СПИСОК ЛИТЕРАТУРЫ

[1] Tom Ridge, David Sheets, Thomas Tuerk, Andrea Giugliano, Anil Madhavapeddy, and Peter Sewell. SibylFS: formal specification and oracle-based testing for POSIX and real-world file systems. In Proceedings of the 25th ACM Symposium on Operating Systems Principles (SOSP), Monterey, CA, October 2015.

[2] Corrigan Johnson. SPEST - A Tool for Specification-Based Testing. англ., url: http://digitalcommons.calpoly.edu/cgi/ viewcontent.cgi?article=2675&context=theses.

[3] O lsson N., Karl K. Graphwalker: The open source model-based testing tool., 2015.

[4] D ranidis D., Bratanis K., Ipate F. JSXM: A tool for automated test generation //International Conference on Software Engineering and Formal Methods. – Springer, Berlin, Heidelberg, pp. 352-366, 2012.

[5] Artho C. V. et al. Modbat: A model-based API tester for event-driven systems //Haifa Verification Conference. – Springer, Cham, pp. 112-128, 2013.

[6] Utting M. et al. The ModelJUnit model-based testing tool, 2007.

[7] Innovate with Model-Based Testing. англ., url: http://mbt.testoptimal.com/index.html

[8] I. Bourdonov, A. Kossatchev, V. Kuliamin, and A. Petrenko. UniTesK Test Suite Architecture. FME’2002. LNCS 2391, Springer-Verlag, 2002.

[9] Itsykson V.M. The Formalism and Language Tools for Semantics Specification of Software Libraries. Modeling and Analysis of Information Systems. 2014;57(8):754-766. (In Russ.) DOI:10.18255/1818-1015-2016-6-754-766.

[10] Алексюк А.О. Автоматизация миграции Java-программ на новый набор библиотек, дис. магистра. Санкт-Петербургский политехнический университет Петра Великого, Санкт-Петербург, 2017.

[11] The AspectJ project. англ., url: https://www.eclipse.org/aspectj/

[12] Apache Netbeans (Incubating). англ., url: https://github.com/apache/incubator-netbeans

[13] Kotlin specification example, англ., url: https://pastebin.com/xnbTXZWH

DEVELOPMENT OF THE METHOD FOR VERIFYING LIBRARY PROTOCOL USAGE CORRECTNESS

Maxim Gusev, Vladimir Itsykson

The article describes the method for automated dynamic verification of the software library protocol usage correctness. The main idea of the method is to compare the developed library specifications with the instrumented program's execution trace. The result of the comparison is produced report with list of violations of library specification. The developed method was implemented as a pilot tool for analysis of Java-programs. The tool was successful tested on series of artificial and industrial projects. An evaluation shows applicability of approach to real projects.

61

Page 63: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

NOTES

Page 64: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint
Page 65: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint
Page 66: THIRD CONFERENCE ON Software Engineering and Infomation … · 2018-11-23 · Third Conference on Software Engineering and Information Management (SEIM-2018) (short papers) Saint

seim-conf.org