0% found this document useful (0 votes)
93 views

Recurrent Neural Network For Code Clone Detection

Uploaded by

Natsu
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
93 views

Recurrent Neural Network For Code Clone Detection

Uploaded by

Natsu
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 66

THIRD CONFERENCE ON

Software Engineering
and Infomation Management
S H ORT PAPE RS
Third Conference on Software Engineering and
Information Management (SEIM-2018)
(short papers)
Saint Petersburg, April 14, 2018

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

Saint Petersburg — 2018


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 on
Software Engineering and Information Management (SEIM-2018), which was held in Saint
Petersburg, Russia, on April 14, 2018. These papers were selected in thorough single-blind
reviewing 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 for
private and academic purposes. This volume is published and copyrighted by its editors.
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 detection


Arseny Zorin, Vladimir Itsykson 47

Автоматизация проверки корректности использования программных библиотек


Максим Гусев, Владимир Ицыксон 53

3
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 science
and 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 mainly
focus on researchers who are just starting out their scientific careers, and hope to ease their
introduction to the conference process. On the other hand, SEIM might also be of interest to
more experienced researchers, who are aimed at sharing their research with a wider scientific
community. The conference welcomes submissions on a wide range of topics, including but
not limited to:

• Algorithms and data structures • Mobile systems


• Big data • Modelling
• Cloud systems • Natural language processing
• Coding theory • Networks and telecommunications
• Compilers • (Non-)relational databases
• Crowdsourcing • Operating systems
• Data storage and processing • Programming languages
• Development management • Recommendation systems
• Digital signal processing • Robotics
• Distributed systems • Semantic web
• E-commerce / e-government • Social networks
• Empirical software engineering • Software analysis
• High-performance computing • Software testing
• Information retrieval • Software verification
• Information security • Software virtualization
• Intelligent data analysis • Software-defined networks
• Internet of Things • Theoretical computer science
• Machine learning • Visual languages

This year we received 43 papers, each reviewed by at least 3 members of the Program
Committee, of which 8 were selected for publication in CEUR-WS.org, 7 — for indexing in
RSCI, and 1 was accepted as talk-only to allow the authors to receive valuable feedback
about their research. We would like to thank the members of our Program Committee for
their continuous work and contribution to the success of our conference.
These proceedings include the SEIM-2018 papers, which were selected by the Program
Committee 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 the
authors 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 and
Svyatoslav Mikhailov for their great help in organizing the conference, Computer Science
Center for hosting the event, and JetBrains Research for their overall support. The additional
information 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 Itsykson
Editors
4
SEIM 2018 Organization

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

Steering Committee
Dmitry Bulychev / St. Petersburg State University
Vladimir Itsykson / St. Petersburg Polytechnic University
Andrey Ivanov / JetBrains
Iakov Kirilenko / St. Petersburg State University
Kirill Krinkin / St. Petersburg Electrotechnical University
Boris Novikov / St. Petersburg State University

Program Committee Chairs


Yurii Litvinov / St. Petersburg State University
Marat Akhin / St. Petersburg Polytechnic University

Program Committee
Mikhail Belyaev / St. Petersburg Polytechnic University Igor Malyshev / St. Petersburg Polytechnic University
Daniil Berezun / JetBrains, St. Petersburg State University Elena Mikhailova / St. Petersburg State University
Natalia Bogach / St. Petersburg Polytechnic University Mikhail Moiseev / Intel Corporation
Timofey Bryksin / St. Petersburg State University Dmitry Mordvinov / St. Petersburg State University
Dmitry Bugaichenko / St. Petersburg State University Vyacheslav Nesterov / Dell EMC
Dmitry Boulytchev / St. Petersburg State University Boris Novikov / St. Petersburg State University
Ekaterina Verbitskaya / St. Petersburg State University Gennady Pekhimenko / Microsoft Research
Nikolay Vyahhi / St. Petersburg Academic University Oleg Pliss / Oracle
Mikhail Glukhikh / JetBrains Anton Podkopaev / St. Petersburg State University
Natalia Grafeeva / St. Petersburg State University Sergey Salishev / St. Petersburg State University
Dmitry Grigorev / St. Petersburg State University Elena Sivogolovko / Arcadia
Semyon Grigorev / St. Petersburg State University Kirill Smirnov / St. Petersburg State University
Victoria Erofeeva / St. Petersburg State University Darja Solodovnikova / University of Latvia
Yuriy Ivanskiy / Institute of Problems of ME RAS Sergey Stupnikov / Institute of Informatics Problems RAS
Vladimir Itsykson / St. Petersburg Polytechnic University Maksim Tkatchenko / Singapore Management University
Aleksandr Kapitonov / ITMO University Peter Trifonov / St. Petersburg Polytechnic University
Iakov Kirilenko / St. Petersburg State University Arthur Khanov / St. Petersburg State University
Dmitry Kosarev / St. Petersburg State University Dmitry Tsitelov / Devexperts
Kirill Krinkin / Open Source and Linux Lab Mikhail Zymbler / South Ural State University
Svetlana Lazareva / Raidix George Chernishev / St. Petersburg State University
Dmitry Luciv / St. Petersburg State University Anna Yarygina / St. Petersburg State University

5
Оценка качества слабоструктурированных
данных при сопоставлении независимых
источников
Алексей Калина Борис Новиков
Санкт-Петербургский государственный Санкт-Петербургский государственный
университет университет
Email: [email protected] Email: [email protected]

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


важной задачей при работе с большими объемами нескольких метрик для оценки.
информации. В последние годы количество задач, Цель работы заключается в разработке нового подхо-
связанных с использованием слабоструктурирован-
ных данных постоянно растет. Обработка таких дан- да к оценке качества данных. Многообразие форматов
ных представляет собой большую сложность, нежели и моделей представления данных существенно услож-
данных, представленных в структурированном виде. няет эту задачу. Изучение способов обработки неструк-
Поэтому и так нетривиальная задача оценки качества турированных и слабоструктурированных данных про-
данных становится еще более трудной. В этой работе должается, хотя еще не так давно основное внимание
предлагается подход к оценке качества данных, ос-
нованный на сопоставлении нескольких независимых исследователей привлекали данные, представленные в
источников. Метод позволяет оценивать качество с реляционной модели и имеющие четкую структуру.
использованием различных критериев и метрик, учи- Подход, который описывается в этой работе, учиты-
тывая типы данных и цели проводимой процедуры. вает текущие тенденции и предоставляет возможность
Результаты проведенных экспериментов демонстри- оценивать качество слабоструктурированных данных.
руют высокую стабильность результатов применения
метода. Под этим термином мы понимаем возможное отсут-
ствие схемы данных с фиксированными типами дан-
I. ВВЕДЕНИЕ ных, иерархическую структуру атрибутов и возмож-
ный пропуск атрибутов. В экспериментах при оценке
В наши дни объемы данных увеличиваются более использовались наборы данных, представленные в сла-
чем в два раза каждые два года [1]. Количество ошибок боструктурированной форме. Они имеют различную
и несоответствий с реальным миром растет вместе с структуру, модель и формат представления.
объемами данных. Качество данных является обшир- В разделе Качество данных излагаются основные
ной и все более актуальной темой в современном мире. теоретические сведения, необходимые для описания ра-
Разные авторы определяют термин качество данных боты метода. Сначала мы расширим понятие жизнен-
по-разному. Одни из них утверждают, что это сте- ного цикла качества данных на случай использования
пень пригодности данных для конкретного использова- нескольких источников данных. Оно показывает, какое
ния [2][3]. Другие делают упор на том, что это понятие место в процессе улучшения качества данных занимает
многомерное и складывается из точности, полноты и оценка. После этого мы определим критерии и метрики,
других критериев [4][5][6]. Оценка качества данных – с помощью которых можно оценивать качество данных.
первый и очень важный шаг в трудоемком процессе, Далее описан процесс сопоставления источников, за-
который называется Улучшение качества данных. имствованный из процессов интеграции данных. Со-
В течение нескольких последних десятилетий бы- поставление источников является ключевой особенно-
ли разработаны различные методы оценки качества стью предлагаемого метода оценки качества данных.
данных [7][8]. Большинство из них относятся к реля- Интеграция данных может быть одним из возмож-
ционной модели данных и основываются на анализе ных способов улучшения качества данных [10]. Она
отдельных значений без использования других таблиц. представляет собой комплекс задач, возникающих и
Исключением является метод кросс-доменного анали- в научных исследованиях (использование данных из
за, который позволяет обрабатывать избыточность и разных биоинформационных репозиториев), и в ком-
несогласованность данных в нескольких таблицах [9]. В мерческой сфере (при объединении баз данных схожих
этой работе предлагается метод оценки качества, осно- фирм). Суть интеграции данных в слиянии записей,
ванный на сопоставлении нескольких источников. Этот соответствующих одному и тому же объекту реального
подход позволяет определить качество экземпляра дан- мира, из различных источников.

6
В разделе Метод описывается подход к оценке ка- 6) Анализ. Анализ метаданных позволит опреде-
чества данных. В разделе Эксперименты описаны лить, какие наборы данных требуют новой ите-
результаты применения метода для оценки качества рации жизненного цикла качества.
коллекции о книжных публикациях и трех коллекций Эта работа сфокусирована на первых трех этапах
с информацией о футболистах. Цель экспериментов жизненного цикла качества данных.
состоит в оценке стабильности результатов применения
метода. В Заключении подводится итог работы и озву- II-B. Критерии и метрики
чиваются задачи для будущих статей. Оценка качества данных включает в себя измерение
критериев качества. Критерии – свойства данных, ко-
II. КАЧЕСТВО ДАННЫХ торые могут быть измерены или оценены в соответ-
ствии со стандартами и использованы для определения
II-A. Жизненный цикл качества данных [6]. В разных областях ключевыми мо-
гут являться разные характеристики. Например, ана-
В нашей работе оценка качества данных рассмат- лиз статистических данных обычно требует значитель-
ривается как часть процесса улучшения качества дан- ного и репрезентативного количества данных для про-
ных. Для описания этого процесса модифицируем по- ведения анализа. В этом случае важно способствовать
нятие жизненного цикла качества данных, которое полноте, допуская несогласованность. И наоборот, при
было введено авторами методологии Luzzu для оценки публикации таблицы результатов экзаменов студентов
связанных данных [11]. Использование метода оценки важнее иметь проверенные на непротиворечивость ре-
качества на основе сопоставления источников требует зультаты, чем полные.
дополнительного этапа в начале цикла. В итоге жиз- Критерии могут рассматриваться как некоторые ха-
ненный цикл включает в себя 6 этапов: рактеристики набора данных. Сами по себе критерии
1) Выбор стратегии сопоставления источников. не предоставляют никаких количественных мер, но
При оценке качества данных методом сопостав- могут быть измерены с помощью метрик оценки каче-
ления источников добавляется первый этап. Он ства [2]. Эти метрики разрабатываются с учетом кон-
включает в себя идентификацию и анализ взаи- кретного приложения и позволяют оценивать качество
модействия нескольких источников. данных по конкретным критериям. При этом одому
2) Определение метрик. Для каждой предметной критерию качества может соответствовать несколько
области и конкретного приложения может иметь метрик. В данной ситуации термин метрика рассмат-
место свое понимание термина качества данных. ривается не в общеизвестном математическом смысле.
Поэтому определение критериев, которые имеют Существуют различные варианты разделения крите-
более весомое значение, является первым шагом риев качества на группы. К примеру, Кристиан Би-
в этом процессе. Далее определяются метрики, по зер определяет 3 категории в соответствии с типом
которым будет проводиться оценка качества. оцениваемых данных: Информация о контенте, Ин-
3) Оценка. На этом этапе набор данных оценивается формация о контексте и Рейтинги самих данных и
по метрикам качества, определенным на предыду- их поставщиков [12]. Другой вариант разделения пред-
щем этапе жизненного цикла. В результате этого ставлен в статье Завери, в которой рассматриваются
этапа появляется информация о наличии ошибок критерии связанных данных: Доступность, Внутрен-
различного рода. По окончании этапа информа- ние, Контекстные и Репрезентативные [13]. В этом
ция об ошибках структурируется в отчетах и пере- разделе мы рассмотрим критерии группы Информации
дается на следующую стадию жизненного цикла. о контенте или же в другой нотации – Внутренней
4) Очистка данных. Для обеспечения высокого ка- группы. В различных источниках в эту группу входят:
чества и постоянного его улучшения требуется синтаксическая и семантическая точность, полнота, со-
произвести очистку для набора данных. Очисткой гласованность и другие. Разберем некоторые из них.
данных называется процесс исправления ошибок В общем случае можно определить точность как
в коллекции. Некоторые операции очистки, на- степень достоверности данных, то есть как меру совпа-
пример – по восстановлению пропущенных дан- дения значения в наборе данных со значением объекта
ных, могут быть произведены автоматически. В реального мира [14]. При этом точность бывает двух
общем случае этот процесс требует вмешатель- видов: синтаксическая и семантическая.
ства человека. 1) Синтаксическая точность. Этот критерий каче-
5) Хранение, каталогизация и архивирование. На ства определяет совпадение значения атрибута со
этом этапе наборы данных, возможно очищенные, значением, принадлежащим предметной области,
хранятся и архивируются вместе с их метадан- соответствующей этому атрибуту [2]. В роли мет-
ными качества. Коллекции публикуются и ка- рик синтаксической точности могут выступать
талогизируются на основе различных критериев различные функции расстояния. Например, рас-
качества. стояние Левенштейна, которое определяется как

7
минимальное число вставок, перестановок и уда- III. МЕТОД
лений символов для преобразования одной стоки III-A. Стратегия идентификации объекта
в другую [20]. Другой пример метрики – использо-
вание синтаксических правил, таких как проверка Метод предполагает, что для поставленной задачи
на допустимость символов или на соответствие оценки качества идентифицированы источники дан-
значения шаблону [13][6]. ных, с помощью которых она будет решаться. В ка-
2) Семантическая точность. В свою очередь се- честве источников могут выступать несколько наборов
мантическая точность определяется как соответ- данных с пересекающимися множествами объектов ре-
ствие заданного значения реальному [16]. Для ального мира. На этом этапе необходимо решить типич-
вычисления этого критерия можно использовать ную задачу для сценариев интеграции данных – задачу
статистические методы, например, поиск выбро- идентификации объекта. Также в других источниках ее
сов [12]. Другой способ определения семантиче- называют проблемой слияния/очистки [19]. Суть зада-
ской точности значения – поиск данных об одном чи заключается в выборе алгоритма для определения
объекте в различных источниках и определение сущностей из различных источников, соответствующих
корректности путем сравнения [2]. одному объекту реального мира.
3) Полнота. Полнота набора данных – это степень, Существуют разные способы решения этой пробле-
в которой в наборе данных присутствуют все мы, и метод позволяет использовать любой из них
релевантные для него данные. Метрикой может для достижения конечной цели – результатов оценки
выступать отношение количества непустых зна- качества данных. Рассмотрим два подхода к решению
чений коллекции к мощности всего набора дан- задачи идентификации объекта.
ных [6]. Простейшим способом сопоставления объектов из
Отметим, что рассмотренные критерии отличаются разных наборов данных является определение уникаль-
от одноименных понятий, используемых в теории ин- ных идентификаторов (ключей), имеющихся у сущно-
формационного поиска. стей в коллекциях. Тогда объекты с одинаковыми иден-
тификаторами можно считать одним реальным объек-
II-C. Сопоставление источников том. Этот способ меньше всего подвержен ошибкам,
Интеграция данных включает в себя объедине- но не во всех случаях имеющиеся данные обладают
ние данных из различных источников и предостав- уникальным идентификатором.
ление данных пользователям в унифицированном ви- Использование предикатов соответствия [21] – дру-
де [17][18]. Она состоит из трех этапов: гой способ для решения этой задачи. К каждому ат-
1) Сопоставление схем данных. Задача на этом эта- рибуту во всех наборах данных применяются атомар-
пе состоит в том, что из схем представления дан- ные метрики схожести. Они вычисляют насколько два
ных нескольких независимых источников необхо- значения близки друг другу. Среди таких функций вы-
димо составить одну и предоставить отображение деляют расстояние Левенштейна [20], метрику Джаро-
каждой из схем на результирующую. Уинклера, фонетические функции и другие [15]. Далее
2) Связывание записей. Данный этап также назы- к результатам этих вычислений применяют более об-
вают проблемой идентификации объекта. Задача щие функции, уровня записи. Как правило, на этом
заключается в определении того, соответствуют этапе применяются статистические и вероятностные
ли две сущности из разных наборов данных одно- алгоритмы. На последнем шаге метода производится
му объектом реального мира. анализ контекста сущностей, включающий внешние
3) Слияние данных. При слиянии данных происхо- ключи с ассоциативными и структурными ссылками.
дит разрешение конфликтов. Конфликтами назы-
ваются ситуации, когда один и тот же реальный III-B. Определение критериев и метрик
объект имеет в нескольких источниках различные Рассмотрим критерии и метрики качества, исполь-
значения атрибутов результирующей схемы. зовавшиеся в эксперименте с книжными публикация-
Процесс интеграции данных существенно пересека- ми. Все измерения проводились на уровне атрибутов
ется с подходом, предлагаемым в этой работе. В ходе данных. Оценка применялась к двум типам данных -
метода, описываемого в следующем разделе, также строковым значениям и элементам, хранящим дату.
решаются задачи сопоставления схем данных и иден- Так как оценка в контексте описываемого метода
тификации объекта. Тем не менее, конечным результа- проводится с использованием значений соответствую-
том интеграции данных является новый набор данных, щих объектов из разных источников, метрики качества
полученный из нескольких независимых источников. В основываются на сравнении содержимого атрибутов
то время как предлагаемый подход позволяет получить этих объектов. При работе со строковыми значениями
оценку качества существующего набора данных и впо- оцениваемое значение принимается за неполное, если
следствии применять различные техники для улучше- оно является подстрокой соответствующего ему зна-
ния общего качества данных. чения из другого источника. Оценка полноты дат за-

8
ключается в проверке на наличие значения в необходи- III-C. Оценка качества данных
мом поле. Если необходимый атрибут имеет какое-либо
На этом этапе проводится основная вычислительная
содержимое, то он в достаточной мере представляет
работа метода. Псевдокод алгоритма оценки качества
реальный мир. Правильность же этого значения нужно
данных приведен в блоке Algorithm 1. Ход алгоритма:
проверять другими критериями. Кроме того, важно
не забывать, что при оценке слабоструктурированных 1) Для объекта, подвергающегося оценке, проводит-
данных необходимое поле может отсутствовать вовсе. ся поиск соответствующего ему объекта в другом
Это также пример неполноты. источнике. Эта процедура выполняется в соот-
ветствии со стратегией идентификации объекта,
определенной на первом шаге метода. В резуль-
Синтаксическая точность основывается на принад- тате получаем пару объектов, являющихся одной
лежности значения тому множеству всех вариантов, сущностью реального мира.
которые соответствуют исследуемому атрибуту. Поэто- 2) Теперь необходимо провести оценку качества по
му оценка для синтаксической точности проводится интересующим критериям с использованием вы-
без использования объекта другого источника. В слу- бранных метрик и найденного объекта из друго-
чае со строковыми атрибутами всевозможные значе- го источника. Существуют разные подходы для
ния определяются естественным языком. Для проверки применения метрик качества к данным. Метод
на синтаксическую точность таких данных можно ис- не ограничивает разработчика в выборе таких
пользовать орфографические анализаторы или другие подходов. Для примера, при проведении экспери-
инструменты, оценивающие правильность написанного ментов для применения метрик качества исполь-
текста. При обработке атрибутов-дат важно учитывать зовалась идея конвейера. Вычисление оценки по
определение формата представления полей этого ти- разным критериям проводилось последовательно,
па в системе. Например, в определенных реализациях и от результатов оценки текущей характеристики
даты могут содержать только год, в других – только зависит то, какой критерий будет оцениваться
полноценные записи, включающие день или в разных следующим. Рассмотрим подробнее конвейер для
системах могут использоваться разные разделители эксперимента с книжными публикациями.
для чисел. Все эти требования определяются полити-
a) Первоначально необходимо сравнить значе-
ками, разработанными до оценки качества. В качестве
ния атрибутов соответствующих объектов.
метрики синтаксической точности можно использовать
Для тех полей, которые содержат идентич-
предикат, проверяющий соответствие значения регу-
ные данные, оценка не требуется. Мы поль-
лярному выражению.
зуемся предположением о том, что экви-
валентные значения означают правильность
При использовании метода сопоставления источни- содержимого этого атрибута в обоих источ-
ков для оценки качества могут возникнуть ситуации, никах данных.
когда оба значения соответствующих объектов синтак- b) К несовпадающим атрибутам объекта приме-
сически точны, но тем не менее различны. Например, няются метрики для оценки полноты. В слу-
такое течение событий может произойти в случае, чае неполноты атрибута, дальнейшая оценка
когда одно из значений неточно семантически. Это для него не требуется, так как не отражаю-
означает, что данные значения соответствуют разным щее в достаточной мере значение реального
объектам реального мира. Для проверки этой гипоте- мира нельзя проверить на точность. Если
зы в работе использовались возможности современных атрибут обладает свойством полноты, пере-
поисковых движков. Алгоритм заключается в том, что ходим к следующему шагу конвейера.
к поисковой системе отправляются два запроса, содер- c) На этом этапе конвейера необходимо опре-
жащие строковые значения первого и второго объекта. делить какой анализ выполнять: синтаксиче-
Далее проводится анализ выдачи на превышение по- ской или семантической точности. Для этого
рогового значения количества совпавших результатов используется предположение о том, что по-
из двух запросов. В случае такого совпадения делается хожие, но не идентичные значения означа-
вывод о соответствии двух сущностей одному реаль- ют, что данные могут иметь синтаксическую
ному объекту и как следствие семантическая точность неточность. В свою очередь сильно отлича-
строковых значений. Для дат этот критерий можно ющиеся данные могут означать, что в них
интерпретировать как проверку на теоретическую ре- есть семантическая ошибка. Для сравнения
альность такого значения. То есть, к примеру, дата значений можно использовать разные метри-
публикации книги не может быть указана позже те- ки сравнения, в зависимости от предметной
кущего года или до даты издания первого варианта. области. При проведении экспериментов для
Такие правила также предварительно определяются сравнения данных применялось расстояние
политиками оценки качества. Левенштейна.

9
d) Для близких значений проводится оценка рых полнота достигается, к неполным атрибутам.
синтаксической точности, а для далеких - Получив общую картину качества данных, при-
семантической. В случае, если при вычисле- нимается решение о необходимости улучшения
нии не было обнаружено ошибок этих типов, текущего состояния набора данных и происходит
то качество данных исследуемого атрибута выбор подходящих способов для этого.
определяется как неизвестное и требует руч- 2) В противоположность первому подходу можно
ного анализа. предоставлять результаты оценки качества в виде
e) Алгоритм конвейера применяется ко всем отчетов по каждому содержащему ошибки объ-
объектам набора данных. екту. Такой отчет предоставляет информацию об
атрибуте, в котором есть недочет, то есть его
Algorithm 1 Алгоритм оценки качества данных значение и критерий качества, который не удо-
1: procedure DATA QUALITY ASSESSMENT влетворяет определенным политикам. Результаты
2: reports ← Array() в такой форме можно автоматически отправлять
3: for book ∈ books do экспертам для ручного исправления и повышения
4: book2 ← Identif icationObject(book) качества набора данных.
5: report ← Initialize()
6: for attr ∈ book.Attributes do IV. ЭКСПЕРИМЕНТЫ
7: if Equals(attr, book2) then Было проведено два эксперимента в разных предмет-
8: report.Add(attr, accurate) ных областях. В первом эксперименте используются
9: else if IsN otComplete(attr, book2) then два набора данных, асимметричных по размеру. Так
10: report.Add(attr, incomplete) как в большей коллекции подавляющая часть записей
11: else if Leven(attr, book2) < thresh then не имеет пересечения с другой коллекцией, оценка
12: if IsN otSyntAccur(attr, book2) then качества проводилось только для меньшей из них. Во
13: report.Add(attr, syntacticInaccurate) втором эксперименте оценивается качество трех набо-
14: end if ров данных.
15: else if IsN otSemAccur(attr, book2) then
16: report.Add(attr, semanticInaccurate) IV-A. Книжные публикации
17: else Для проведения первого эксперимента использова-
18: report.Add(attr, unknown) лись два набора данных с информацией о книжных
19: end if публикациях. Коллекции были взяты из двух независи-
20: end for мых источников: сообщество “Book-Crossing” [22] и пор-
21: reports.Add(report) тал “Open Library” [23]. Наборы данных представлены
22: end for в слабоструктурированном виде, в форматах csv и json
23: return reports соответственно. Первая коллекция насчитывает поряд-
24: end procedure ка 270 тыс. записей, в то время как вторая – около 25
млн. Для оценки качества использовался набор данных
с информацией о публикациях, взятый из сообщества
III-D. Демонстрация результатов
по буккроссингу.
На заключительном этапе проводится демонстрация
полученных результатов. После проведения процеду- Listing 1. Запись из набора данных Open Library
ры оценки качества данных, необходимо представить {
результаты в том виде, который позволит экспертам ” t i t l e ” : ” To␣ K i l l ␣ a ␣ Mockingbird ” ,
” publishers ” : [
понять, как можно повысить качество этих данных. ” The␣ Audio ␣ P a r t n e r s ”
Как правило, реализация этого шага метода требует ],
меньших трудозатрат нежели непосредственная оцен- ” authors ” : [
ка, однако, некачественное проведение этого этапа {
может перечеркнуть всю проделанную ранее работу. ” key ” : ” / a u t h o r s /OL498120A ”
}
Рассмотрим два подхода к демонстрации результатов, ],
использовавшихся при экспериментах: ” isbn_10 ” : [
1) Один из способов заключается в предоставлении ” 157270036X”
общей картины качества данных по набору дан- ],
” p u b l i s h _ d a t e ” : ”May␣ 1997 ”
ных. Это достигается путем вычисления метрик
}
по полученным результатам для разных критери-
ев качества. Например, для того чтобы опреде- Оценка качества данных производилась по отноше-
лить общую полноту набора данных, можно рас- нию к следующим атрибутам: название книги, дата
считать отношение количества атрибутов, в кото- публикации и издательство. Проблема идентификации

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

” 157270036X” ; ” To␣ K i l l ␣ a ␣ Mockingbird ” ; ” Harper ␣ Lee ” ; ” 1997 ” ; ” Audio ␣ P a r t n e r s ”

объекта для данной задачи решалась сопоставлением зультаты применения предложенного метода оценки
в наборах данных ключевого поля ISBN10 (междуна- качества стабильны.
родный стандартный книжный номер). Этот атрибут
является уникальным идентификатором любой книж- Таблица II
КАЧЕСТВО АТРИБУТА PUBLISHER, %
ной публикации. На листингах 1 и 2 представлены
примеры записей из рассматриваемых наборов данных, 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
страции полученных результатов. Два разных подхода
к представлению качества данных проиллюстрированы
на рисунках 1 и 2.
Таблица III
Для определения стабильности результатов приме- КАЧЕСТВО АТРИБУТА PUBLICATION YEAR, %
нения метода, набор данных “Book-Crossing” был раз-
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
для каждой из них была произведена оценка трех
Семантические
атрибутов. Поле Publication Year оценивалось по трем ошибки
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

приведены в таблицах 1, 2, 3.

Таблица IV
Таблица I СРЕДНЕКВАДРАТИЧНЫЕ ОТКЛОНЕНИЯ, %
КАЧЕСТВО АТРИБУТА TITLE, %
Название Издательство Год публикации
1 2 3 4 5 6 7 8 9 10 Верные 0,43 0,71 1,38
Верные
86,83 87,26 86,94 87,04 87,15 85,89 86,74 86,49 86,84 87,54 Синтаксические
0,07 0,31 0
Синтаксические ошибки
0,59 0,61 0,55 0,51 0,65 0,68 0,71 0,67 0,72 0,68 Семантические
ошибки 0,52 0,7 0
Семантические ошибки
7,02 6,97 8,13 8,18 8,27 8,38 8,16 8,25 8,53 7,66
ошибки Неполные 0,17 1,07 0,13
Неполные Неизвестно 0,36 0,21 1,37
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
Полный набор данных портала “Open Library”, насчи-
тывающий более 25 млн записей, был проиндексирован
в поисковом движке ElasticSearch. Данная процедура
По результатам проведенного исследования видно,
позволила быстро искать публикации по их ISBN. Мо-
что большая часть оцененных записей являются вер-
дуль оценки качества данных для обоих экспериментов
ными. Также есть большая группа объектов с неиз-
был написан на Java. В роли функции расстояния ис-
вестным критерием качества для года публикаций. Это
пользовалось расстояние Левенштейна, реализованное
обуславливается тем, что для несовпадающих значе-
в библиотеке info.debatty. Для проверки орфографии
ний, но удовлетворяющих условиям формата и пред-
применялась библиотека org.languagetool. С помощью
шествования текущему году, дополнительный анализ
Yandex XML API были загружены все необходимые
не проводится.
для семантической оценки результаты поисковых за-
Для каждого критерия качества атрибутов были рас- просов.
считаны среднеквадратические отклонения. Результа-
ты представлены в таблице 4. Максимальное значение IV-B. Футболисты
среднеквадратического отклонения достигает 1,38%. Второй эксперимент заключался в оценке качества
Малый разброс результатов говорит о том, что ре- данных трех коллекций с информацией о футболистах.

11
Рис. 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”
”championat.com”, ”bombardir.ru” и ”euro-football.ru”. Ре-
зультирующие наборы данных содержат 3808, 3377 и
100 3495 записей, соответственно. Коллекции создавались с
единой схемой данных, поэтому проблемы сопоставле-
ния схем данных не возникло. Пример записи из набора
данных ”championat.com” представлен в листинге 3.
Listing 3. Запись из набора данных ”championat.com”
80 {
” FirstName ” : ” Рафаэл ” ,
” LastName ” : ” Толой ” ,
” Nationality ” : [
” Бразилия ” ,
” Италия ”
60 ],
” P o s i t i o n ” : ” защитник ” ,
” BirthDate ” : ” 1990−10−10 ” ,
” Height ” : 1 8 5 ,
” Weight ” : 7 5 ,
” Number ” : 3
40 }
Оценка качества проводилась по пяти атрибутам:
Имя, Фамилия, Позиция, Номер, Гражданство. Про-
блема идентификации объекта решалась с помощью
расстояния Левенштейна по двум атрибутам: Имя
20 и Фамилия. Если вычисленное расстояние оказалось
меньше порогового значения, то записи признавались
соответствующими одному объекту.
Для оценки использовались два критерия качества:
точность и полнота. В этом эксперименте точность
0 не разделялась на синтаксическую и семантическую,
так как решение об ошибке принималось только на
основе различия значений. Если в двух записях из трех,
соответствующих одному объекту, значения атрибута
совпадали, то они признавались точными, а третье —
неточным. Для оценки полноты производилась провер-
ка на отсутствие значения у атрибута. Кроме того, для

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

Championat.com Bombardir.ru Euro-football.ru


100

80

60

40

20

поля Гражданство неполнота имела место, если список лись две коллекции с информацией о книжных публи-
не содержал все необходимые элементы. кациях, для одной из которых была проведена оценка
Результаты оценки качества трех наборов данных качества. Во втором эксперименте качество данных
представлены на рисунке 3. Высокий процент неточ- было оценено для трех наборов данных о футболистах.
ных значений атрибута Фамилия связан с различным Описанный метод показал стабильные результаты на
представлением фамилий иностранных футболистов в этих наборах данных.
источниках данных. Для атрибута Гражданство набора Целью будущих работ является использование раз-
данных Euro-Football.ru 21% процент от всех значе- работанного метода для оценки качества других дан-
ний – неполные. Это обуславливается ограничением ных. Под этим понимается, как использование других
источника данных, заключающимся в том, что каж- атрибутов с новыми типами данных, так и оценка
дому футболисту на сайте соответствует только одно других коллекций.
гражданство.
СПИСОК ЛИТЕРАТУРЫ
V. ЗАКЛЮЧЕНИЕ
В ходе работы были изучены различные крите- [1] John Gantz and David Reinsel. Extracting value from chaos. IDC
iview, 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, and William E. Winkler. What
новый метод, основанный на сопоставлении независи- is Data Quality and Why Should We Care?, pages 7–15. Springer
New York, New York, NY, 2007.
мых источников данных. Этот подход достаточно ги- [4] Richard Y Wang, Henry B Kon, and Stuart E Madnick. Data
бок и может использоваться в различных предметных quality 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 information
дено два эксперимента. В первом из них использова- systems, 1:177–189, 1999.

13
[6] Nicola Askham, Denise Cook, Martin Doyle, Helen Fereday, Mike The method allows evaluating the quality using various
Gibson, Ulrich Landbeck, Rob Lee, Chris Maynard, Gary Palmer, dimensions and metrics, taking into account the types of
and Julian Schwarzenbach. The six primary dimensions for data
quality assessment. Technical report, Technical report, DAMA UK data and the purpose of the procedure. The results of the
Working Group, 2013. experiments demonstrate the high stability of the method.
[7] Philip Woodall, Martin Oberhofer, and Alexander Borek. A
classification 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 methods
in statistics–what works? Statistika, 94(4):5–14, 2014.
[9] Jixue Liu, Jiuyong Li, Chengfei Liu, and Yongfeng Chen. Discover
dependencies from data—a review. IEEE transactions on knowledge
and data engineering, 24(2):251–264, 2012.
[10] Gregor Endler. Data quality and integration in collaborative
environments. In Proceedings of the on SIGMOD/PODS 2012 PhD
Symposium, 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 information
filtering 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. Antecedents
of information and system quality: an empirical examination
within the context of data warehousing. Journal of management
information systems, 21(4):199–235, 2005.
[15] Kalaiselvi R. Sumathi V. P., Kousalya K. A comparative
study on syntax matching algorithms in semantic web. WSEAS
TRANSACTIONS on COMPUTERS, 2016.
[16] Yuangui Lei, Victoria Uren, and Enrico Motta. A framework
for evaluating semantic metadata. In Proceedings of the 4th
international conference on Knowledge capture, pages 135–142.
ACM, 2007.
[17] Xin Luna Dong and Divesh Srivastava. Big data integration. In Data
Engineering (ICDE), 2013 IEEE 29th International Conference on,
pages 1245–1248. IEEE, 2013.
[18] Jens Bleiholder and Felix Naumann. Data fusion. ACM Computing
Surveys (CSUR), 41(1), 2009.
[19] Mauricio A Hernández and Salvatore J Stolfo. Real-world data is
dirty: Data cleansing and the merge/purge problem. Data mining
and knowledge discovery, 2(1):9–37, 1998.
[20] Владимир Иосифович Левенштейн. Двоичные коды с исправ-
лением выпадений, вставок и замещений символов. In Доклады
Академии наук, volume 163, pages 845–848. Российская академия
наук, 1965.
[21] Nick Koudas, Sunita Sarawagi, and Divesh Srivastava. Record
linkage: similarity measures and algorithms. In Proceedings of the
2006 ACM SIGMOD international conference on Management of
data, 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 of
semi-structured data by
independent sources matching
Alexey Kalina, Boris Novikov
Data quality assessment is an important activity when
working with large volumes of information. In recent years,
the number of tasks associated with the use of semi-
structured data is constantly growing. The processing
of such data presents a greater complexity than the
data presented in a structured form. Therefore, the non-
trivial task of quality assessment becomes even more
difficult. This paper proposes an approach to assess data
quality, based on a matching of two independent sources.

14
Использование СММ в играх с неполной
информацией
Екатерина Бакшинская
Санкт-Петербургский государственный
университет
Email: [email protected]

Аннотация—В данной статье описывается стати- В нашей работе мы будем рассматривать игры, вклю-
стический подход к решению задач, связанных со чающие в себя следующие элементы:
стратегическими играми с неполной информацией.
Основная идея подхода заключается в использовании, 1) чередование ходов, которые могут быть как лич-
для описания состояний игры в различные моменты ными, так и случайными;
времени, скрытых марковских моделей (СММ). В 2) недостаточность информации;
нашей работе мы рассматриваем модель, которая 3) функция выигрыша [7].
отображает поведение игроков как набор состояний
с заранее определенными вероятностями переходов Как уже было отмечено ранее, во многих реаль-
между ними. Предложенный в работе метод, ос- ных конфликтных ситуациях участники не обладают
новывается на комбинации алгоритмов, эффективно всей информацией об истинных состояниях процесса
решающих задачи описанные СММ. Работа метода и могут оценивать результаты действий соперников
проиллюстрирована на примерах простейших игр с
двумя игроками. только по некоторым ограниченным наборам данных.
В этих условиях принятие решений может зависеть от
нескольких факторов, в том числе — случайных. Один
I. ВВЕДЕНИЕ из возможных подходов к нахождению оптимальной
стратегии в таких задачах это использование для опи-
Математическая теория игр — дисциплина, возник- сания исследуемой ситуации вероятностных моделей.
шая на стыке 2 наук: математики и экономики. В В данной статье мы будем использовать Скрытые
настоящее время область ее практического применения марковские модели (СММ) для описания состояний
достаточно широка: политические и дипломатические игры в различные моменты времени. СММ зарекомен-
отношения, биология, информатика и другие. Предме- довали себя как мощное средство обработки данных
том изучения данной дисциплины являются игры и в самых различных областях [8]. Преимущества СММ
связанные с ними стратегии (т.е. множества доступ- перед другими моделями следующие:
ных игрокам действий), а целью — выработка методов
1) СММ обладают простой математический струк-
нахождения оптимальных стратегий. Под игрой, как
турой;
правило, понимается некоторая конфликтная ситуа-
2) структура СММ позволяет моделировать слож-
ция, т.е. процесс, в котором принимают участие от двух
ную цепочку наблюдений;
и более сторон преследующих собственные цели (см.,
3) параметры модели могут быть автоматически вы-
например, [1]).
браны таким образом, чтобы описать имеющийся
Игры принято различать по типу. Например, коопе-
набор данных для обучения (под обучением СММ
ративные и некооперативные игры, с нулевой суммой и
понимается определение оценок параметров моде-
ненулевой суммой, параллельные и последовательные,
ли).
метаигры, игры с полной или неполной информацией
[2], [4]. Последние, с одной стороны, наиболее сложны В недавно опубликованной работе [9] был предложен
для построения моделей прогнозирования, с другой метод нахождения оптимальной стратегии для игры с
— представляют значительный практический интерес, двумя участниками, основанный на применении СММ.
т.к., достаточно часто в реальных конфликтных ситу- В статье был описан подход к решению стратегических
ациях, участники не обладают полной информацией о игр, в которых игроки могут менять стратегии в тече-
действиях оппонентов [3], [5], [6]. нии игры. Целью было увеличить шансы игрока, т.е.
узнать какую стратегию принимает соперник в каж-
Введем важное определение, которым будем пользо-
дый момент времени. Предложенный подход основан
ваться дальше:
на использовании алгоритма Баума-Велша и поиска
Определение 1. Ход игрока — это выбор действия смешанного равновесия Нэша.
из некоторого множества возможных действий игрока, В нашей работе мы хотим развить данный подход,
определяемых правилами игры. предложив альтернативный метод, основанный на при-

15
менении алгоритма Витерби для получения цепочки В нашей работе мы рассмотрим альтернативный ме-
скрытых состояний и выбора наиболее вероятного хо- тод нахождения оптимальной стратегии, разработан-
да вместо решения марковской игры и использования ный на основе предложенного в статье [9].
равновесия Нэша.
Работу нашего алгоритма мы проиллюстрируем на
двух демонстрационных примерах: игры в теннис и III. ОПРЕДЕЛЕНИЕ МОДЕЛИ СММ
игры в “Камень, ножницы, бумага”.
Определение 2. Скрытая марковская модель с па-
II. СВЯЗАННЫЕ РАБОТЫ раметрами λ = (A, B, π) — это модель марковского
процесса, в котором неизвестно, в каком состоянии
Основополагающей работой в теории игр является находится система (состояния скрыты), в то же время
книга Джона фон Неймана и Оскара Моргенштерна каждое состояние может с некоторой вероятностью
“Теория игр и экономическое поведение” [2]. Большая произвести некоторое событие, которое можно наблю-
часть данной книги посвящена играм с нулевой сум- дать (наблюдение).
мой. Игры с нулевой суммой — игры, в которых вы-
игрыш одной стороны равен проигрышу другой. Игры В нашей работе мы рассматриваем однородные цепи
с нулевой суммой с участием 2–х игроков называются маркова, то есть такие, матрица переходных вероятно-
антагонистическими. К таким играм также можно стей которых не зависит от номера шага: Aij (t) = Aij .
отнести игры с постоянной суммой, при которых сумма Скрытую марковскую модель с параметрами λ =
общего выигрыша всех игроков фиксирована, и по- (A, B, π) можно описать следующим образом:
этому увеличение выигрыша одного из них возможно
1) конечное множество состояний S = {s1 , . . . , sn };
только за счет уменьшения выигрышей других игро-
2) состояние вероятностей переходов, стохастиче-
ков.
ская матрица A:
В конце 1960–х годов Джон Харшаньи ввел понятие
игр с неполной информацией и разработал концепцию
байесовских равновесий. Д. Харшаньи рассматривал A = {aij |aij = P (St = j|St−1 = i)}.
ситуации, когда у одного игрока нет информации о
возможных выигрышах другого игрока, и выигрыши Вероятностные характеристики марковского про-
приходится оценивать вероятностно. цесса в следующий момент времени зависят толь-
На практике часто встречаются ситуации, кото- ко от вероятностных характеристик в текущий
рые в теории игр принято называть повторной игрой момент времени;
(repeated game) т.е. игрой, которая состоит в неко- 3) конечное множество наблюдений O = o1 , . . . , ok ;
тором числе повторений некоторых игровых стадий 4) состояние конкретного распределения вероятно-
(stage game). Впервые повторные игры с неполной стей, матрица B:
информацией были введены Ауманом и Машлером в
1960г. [3]. Рассматривались игры, в которых начальное B = {bil |bil = P (Ot = l|St = i)}.
состояние выбиралось с вероятностью p, и только игрок
1 знает это состояние, в то время как игрок 2 знает
Значение наблюдаемого вектора Ot , взятого в
все возможные состояния, но не знает фактического
момент времени i, зависит только от скрытого
состояния. После каждого хода, оба игрока знают исход
состояния в момент времени i;
предыдущего хода и продолжают играть.
5) вектор начала состояний π
В [10] рассматриваются игры с двумя игроками с
нулевой суммой, заданные цепью Маркова над конеч-
ным множеством состояний и семейством матричных π = {πi |πi = P (S1 = i)}.
игр. Последовательность состояний подчиняется цепи
Маркова. В начале каждого этапа только игроку 1 со- Популярным примером, иллюстрирующим использо-
общается о текущем состоянии, затем воспроизводится вание CMM, является “Задача о нечестном казино”:
соответствующая матричная игра, после чего выбран- Имеется 2 кубика: один честный с вероятностью вы-
ные действия наблюдаются обоими игроками. Такие падения каждой грани = 16 и нечестный с вероятностью
игры можно охарактеризовать играми с отсутствием выпадения 6–ки = 12 , а остальных граней = 101
. Кру-
информации с одной стороны. пье подменяет кубики с определенной вероятностью
В [9] описана модель Скрытой Марковской Игры в зависимости от того, какой кубик был брошен в
(СМИ), при которой второй игрок не знает не только данный момент. Мы можем наблюдать, что выпадает
скрытых состояний в определенные моменты времени, на кубиках, но мы не знаем, какой из кубиков был
но так же не знает матрицу переходов из состояния в использован. Таким образом, требуется определить по-
состояние. следовательность скрытых состояний.

16
Скрытые состояния времени, после чего делать выбор наиболее вероятного
A[1,1] A[2,2] хода.
A[1,2] Таким образом, решение поставленной задачи будет
строиться по следующим шагам:
Честный Нечестный  1) составляющие игры и описание СММ:
кубик кубик
• 2 игрока, один из которых описывается СММ
A[2,1]
B[1,k]  B[2,k]  (будем называть его первым игроком);
k = (1:6) k = (1:6) • функции выигрыша в виде матрицы выплат.
2) вычисляем элементы матрицы B, находя смешан-
ные стратегии для первого игрока;
3) используем алгоритм Баума–Велша для вывода
параметров первого игрока на каждом шаге игры;
Видимые наблюдения 4) находим скрытые состояния, используя алгоритм
Витерби;
P(k|нечестный) = 1/10 5) зная текущее состояние противника, выбираем
P(k|честный) = 1/6
k = (1:6) 
k = (1:5) для игрока 2 наиболее выигрышных ход;
P(6|нечестный) = 1/2  6) игроки делают ход. Сравниваем наблюдения и
вычисляем результат хода;
Рис. 1. Иллюстрация модели для задачи о нечестном казино. 7) добавляем результат последнего хода к цепоч-
ке наблюдений, подаваемой на вход алгоритму
IV. ПОСТАНОВКА ЗАДАЧИ И ПОШАГОВЫЙ АЛГОРИТМ Баума–Велша и Витерби;
РЕШЕНИЯ 8) повторяем шаги 2)-6) после каждого хода до окон-
В рассматриваемой нами статье ([9]) ставилась зада- чания игры.
ча: для игрока i найти вероятность того, что Otl+1 = Oj
V. ОПИСАНИЕ АЛГОРИТМОВ И ИНСТРУМЕНТАРИЙ
при 1 ≤ j ≤ k, используя последовательность наблюде-
ний Ot0 , . . . , Otl . В то же время, в рамках рассматривае- Все описанные выше методы реализованы в языке
мой задачи, нам неизвестны ни последовательности со- программирования R. Выбор данного языка обуслов-
стояний, ни элементы матриц A (перехода из состояния лен наличием большого количества пакетов с откры-
в состояние) и B (перехода из конкретного состояния в тым кодом, позволяющих решать задачи описанные
наблюдение). скрытыми марковскими моделями. Для реализации
Авторы рассматриваемой статьи на каждом шаге предложенного нами алгоритма был использован пакет
игры выводили оценки параметров модели СММ с “HMM”[11] (код пакета “HMM” можно посмотреть в
помощью алгоритма Баума-Велша, и затем решали [12]), а конкретно функции из него:
марковскую игру. initHMM — инициализация СММ
simHMM — генерация цепочки наблюдений и состо-
яний по заданной СММ
baumWelch — алгоритм Баума-Велша
viterbi — алгоритм Витерби
Рассмотрим подробнее алгоритмы Баума-Велша и
Витерби:
Алгоритм Баума-Велша используется для нахож-
дения неизвестных параметров СММ. Пусть дана вы-
ходная последовательность (или несколько) с дискрет-
ными значениями, требуется “потренировать” СММ на
данном выходе. Задача обучения параметров в СММ
состоит в том, чтобы, с учетом выходной последова-
тельности или набора таких последовательностей, най-
ти наилучший набор вероятностей для A — матрицы
переходов из состояние i в состояние j, B — матрицы
вероятности появления наблюдений в зависимости от
состояния и π — вектора начальных состояний. Фор-
Рис. 2. Пример модели с двумя состояниями и двумя наблюдениями. мальное описание алгоритма можно посмотреть в [13],
[14].
В нашей работе мы предлагаем вместо решения мар- Реализация алгоритма Баума-Велша, осуществлен-
ковской игры использовать алгоритм Витерби для на- ная в пакете “HMM” не предусматривает оценку век-
хождения состояния другого игрока в текущий момент тора π. В связи с этим, код алгоритма Баума-Велша

17
был доработан с учетом специфики нашей задачи. А Таблица I
именно, была добавлена оценка вектора π и убрана МАТРИЦА ВЫПЛАТ (АГРЕССИВНЫЙ ИГРОК)
оценка матрицы B в целях уменьшения количества Открытый Центр
свободных переменных. Открытый 0.35 , 0.65 0.89 , 0.11
Алгоритм Витерби позволяет построить наиболее Центр 0.98 , 0.02 0.15 , 0.85
вероятную последовательность предыдущих состояний
скрытой марковской модели на основе последователь-
ности наблюдений (см. [13], [14]). Таблица II
МАТРИЦА ВЫПЛАТ (УМЕРЕННЫЙ ИГРОК)
VI. ТЕСТИРОВАНИЕ
Открытый Центр
Протестируем наш алгоритм на примере игры опи- Открытый 0.15 , 0.85 0.8 , 0.2
санной в [9], сравним с результатами, полученными Центр 0.9 , 0.1 0.15 , 0.85
авторами статьи, а так же проведем дополнительные
тесты.
В рассматриваемой работе приведен пример игры в Таблица III
теннис, в которой есть 2 игрока (подающий и принима- МАТРИЦА ВЫПЛАТ (ЗАЩИТНЫЙ ИГРОК)
ющий). Набор стратегий для каждого из них:
Открытый Центр
1) подающий может подать мяч в центр (Центр) или Открытый 0.1 , 0.9 0.55 , 0.45
в открытую зону (Открытый); Центр 0.85 , 0.15 0.05 , 0.95
2) принимающий должен быть готов к одному из
этих действий. VI-A. Вычисление элементов матрицы B
У подающего есть 3 состояния: Агрессивный, Спо- Для вычисления элементов матрицы B ищем рав-
койный или Защитный. Для каждого состояния име- новесие в смешанных стратегиях. Подробное решение
ются свои вероятности подать мяч в центр или в от- будет приведено для матрицы выплат агрессивного
крытую зону (состояния меняются согласно цепи мар- игрока (для остальных матриц выплат аналогично).
кова). Наша задача состоит в том, чтобы предсказать Рассмотрим нашу матрицу выплат:
направление подачи (центр или открытая зона).
Прежде чем перейти к непосредственно к вычисле-
Таблица IV
ниям и тестированию, введем несколько определений: МАТРИЦА ВЫПЛАТ (АГРЕССИВНЫЙ ИГРОК)
Определение 3. Матрица выплат — это таблица, в Открытый Центр
которой отображены выплаты каждому из участников Открытый 0.35 , 0.65 0.89 , 0.11
в игре двух лиц за определенный ход. Строки таблицы Центр 0.98 , 0.02 0.15 , 0.85
показывают результаты каждого выбора хода первым
игроком, а столбцы –– результаты выбора второго иг- Наша игра является игрой с постоянной суммой.
рока. При игре с постоянной суммой на каждом шаге игры
общая сумма выплат игрокам фиксирована. Таким
Определение 4. Смешанная стратегия — заданное
образом, на каждом шаге игры зная выигрыш первого
вероятностное распределение ходов.
игрока, мы с точностью можем сказать о выигрыше
Определение 5. Равновесие в смешанных стратеги- второго игрока. В таком случае для поиска равновесия
ях — ситуация, когда ни одному из игроков не выгодно в смешанных стратегиях нам достаточно рассматри-
отклоняться от своей смешанной стратегии. вать матрицу выплат в которой представлены выплаты
только для первого игрока:
Определение 6. Чистая стратегия — частный слу-
чай смешанной стратегии, в котором одна из вероятно-
Таблица V
стей равна 1, а остальные 0. МАТРИЦА ВЫПЛАТ ПЕРВОГО ИГРОКА (АГРЕССИВНЫЙ ИГРОК)
Определение 7. Седловая точка — вид равновесия
Открытый Центр
в чистых стратегиях, характеризующий тем, что соот- Открытый 0.35 0.89
ветствующий элемент матрицы является одновременно Центр 0.98 0.15
наибольшим в своем столбце и наименьшим в своей
строке [7]. Ситуация равновесия для игры с постоянной суммой
Матрицы выплат для каждого из состояний в пред- описывается следующими неравенствами:
ложенной игре использовались следующие:
Обозначения: H(x, ȳ) ≤ H(x̄, ȳ) ≤ H(x̄, y), ∀x ∈ S1 , ∀y ∈ S2 , (1)
“Открытый”— открытая зона
“Центр”— центральная зона где

18
• S1 , S2 — множество стратегий (наблюдений в на- Оценим работу нашего алгоритма на примере двух
шем случае) для игрока 1 и игрока 2; матриц: посчитанной нами и представленной в статье.
• x̄ = {x1 , x2 } , ȳ = {y1 , y2 } — смешанные стратегии,
где x1 , x2 — вероятности подать мяч в открытую и VI-B. Тестирование по данным представленным в
центральную зоны первым игроком, а y1 , y2 — ве- статье
роятности принять мяч в открытой и центральной
зонах вторым игроком; Рассмотрим для начала сценарий “Агрессивный иг-
• H(x, y) — функция выигрыша игрока 1 в ситуации рок”.
(x, y), которая определяется как математическое
ожидание его выигрыша [16].
Неравенства (1) можно интерпретировать следую-
щим образом: игрок 1 стремится найти стратегию,
которая будет приносить ему максимальный выигрыш.
В то же время игрок 2 ищет стратегию при которой у
него будет минимальный проигрыш.
Прежде чем искать равновесие в смешанных стра-
тегиях необходимо определить есть ли равновесие в
чистых стратегиях (есть ли седловая точка).
В нашем случае ситуации равновесия в чистых стра-
тегиях нет.
Таким образом, нам необходимо найти равновесие в
смешанных стратегиях для игрока 1, для чего необхо-
димо решить задачу линейного программирования:
Рис. 3. Оригинальная СММ (Агрессивный игрок)

µ −→ sup
На каждом шаге игры применяем алгоритм Баума-
x 1 , 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 Рис. 4. Тренированная СММ (Агрессивный игрок) на 1000 шаге игры
Умеренный игрок 0.54 0.46
Защитный игрок 0.64 0.36
После чего применив алгоритм Витерби для полу-
ченной СММ, получаем последовательность предпо-
Для сравнения представим матрицу B, полученную
лагаемых состояний первого игрока. Теперь, зная все
в рассматриваемой статье ([9]) без учета равновесия
необходимые сведения об игроке 1, выбираем наиболее
смешанных стратегий:
вероятное наблюдение для игрока 2. Сравнив получен-
ные наблюдения, считаем результат хода и повторяем
Таблица VII
МАТРИЦА B ИЗ СТАТЬИ “USING HMM IN STRATEGIC GAMES” алгоритм Баума-Велша и Витерби, но уже на наблюде-
ниях количество которых на единицу больше.
Открытая Центральная
зона зона
Используя матрицы выплат, мы посчитали результа-
Агрессивный игрок 0.9 0.1 ты игры после каждых 200 ходов из 10000 (то есть в 50-
Умеренный игрок 0.6 0.4 ти партиях) и получили 47 выигрышей, что составляет
Защитный игрок 0.2 0.8 94% от общего количества игр.

19
Таблица VIII VI-C. Тестирование на данных, найденных нами
СРАВНЕНИЕ РЕЗУЛЬТАТОВ (СЦЕНАРИЙ АГРЕССИВНЫЙ ИГРОК)
Аналогичным образом алгоритм был протестирован
Предложенная Модель, предложенная для этой же игры, при тех же сценариях (агрессив-
нами модель в статье [9] ный игрок и защитный игрок), но уже с матрицей
Количество
94% 78% B, найденной нами. Оригинальная СММ совпадает с
побед
представленной на рис. 3 за исключением матрицы B.
Рассмотрим теперь аналогичным образом сценарий Использовалась матрица B из таблицы VI. Результаты
“Защитный игрок”. Оригинальная СММ совпадает с представлены в таблице:
представленной на рис. 3 за исключением вектора на-
чальных состояний: π = (0.3, 0.13, 0.57). Тренирован- Таблица XI
РЕЗУЛЬТАТЫ ПРИ ТЕСТИРОВАНИИ НА НАШИХ ДАННЫХ
ная СММ, после применения алгоритма Баума-Велша:
Результат, посчитанный Количество
по матрицам выплат отраженных ударов
Сценарий
агрессивный 62% 59.24%
игрок
Сценарий
защитный 62% 61.34%
игрок

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


отраженных ударов:
Для сценария агрессивного игрока: 56, 16% < x <
63, 88%.
Для сценария защитного игрока: 55, 79% < x <
63, 52%.
Видим, что результаты, полученные при тестирова-
Рис. 5. Тренированная СММ (Защитный игрок) на 1000 шаге игры нии алгоритма на данных, использующих матрицу вы-
плат найденную в разделе VI-A, оказались значительно
Результат представлен в таблице: хуже результатов, полученных при тестировании алго-
ритма на данных из статьи [9]. Это можно объяснить
Таблица IX тем, что в матрице B, посчитанной в данной работе,
СРАВНЕНИЕ РЕЗУЛЬТАТОВ (СЦЕНАРИЙ ЗАЩИТНЫЙ ИГРОК) вероятности подать в открытую зону и центральную
Предложенная Модель, предложенная очень близки друг к другу. При таких условиях доста-
нами модель в статье [5] точно большую роль в игре играет “случай”, который
Количество невозможно контролировать. Таким образом, можно
92% 71%
побед
сделать следующий вывод: чем равномернее матрица
B, тем хуже работает алгоритм, и наоборот.
Из полученных результатов, видим, что наш алго-
ритм сработал лучше, чем представленный в [9]. VII. ПРИМЕНЕНИЕ МОДЕЛИ К ДРУГОЙ ИГРЕ СО
Особый интерес представляет количество ударов, от- СХОЖИМИ ХАРАКТЕРИСТИКАМИ
раженных принимающим игроком т.е. сколько ходов из
В данном разделе, в порядке демонстрации неплохой
10000 оказались выигрышными для него.
эффективности и универсальности нашего алгоритма,
проиллюстрируем его работу на примере другой игры
Таблица X
КОЛИЧЕСТВО ОТРАЖЕННЫХ УДАРОВ со схожими характеристиками. В качестве примера
возьмем известную игру “Камень, ножницы, бумага”.
Сценарий Сценарий Правила игры следующие:
агрессивный игрок защитный игрок
Количество 1) игроки одновременно делают ход, в котором мо-
74,53% 73,67%
отраженных ударов гут поставить камень, ножницы или бумагу;
2) побеждает в ходе тот, кто выставил более выиг-
Так же были построены 95−ти% доверительные ин- рышную фигуру;
тервалы для двух сценариев: 3) камень побеждает ножницы, ножницы побежда-
Для сценария агрессивного игрока: 71, 42% < x < ют бумагу, бумага побеждает камень. Рис.6.;
76, 24%. 4) после чего считается результат хода;
Для сценария защитного игрока: 71, 18% < x < 5) далее ход может повторяться, то есть игра явля-
76, 64%. ется повторной.

20
Таблица 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
МАТРИЦА ВЫПЛАТ (ВЫГОДНО СТАВИТЬ БУМАГУ)
Рис. 6. Игра “Камень, ножницы, бумага”
Камень Ножницы Бумага
Камень 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
1) два игрока, один из которых не знает скрытых
состояний и переходов между состояниями и на- В данной игре множество наблюдений состоит из
блюдениями другого; трех элементов: O = {Камень, Ножницы, Бумага}.
2) первый игрок может принимать одно из трех
Применяем алгоритм Баума-Велша на каждом шаге
состояний:
игры:
a) выгоднее ставить “камень”;
b) выгоднее ставить “ножницы”; 0.0916
c) выгоднее ставить “бумагу”;
0.1327
3) начальное состояние зависит от личных интересов 0.6634
игрока, мы будем проверять алгоритм при равно-
мерном векторе начала состояний π = ( 13 ; 13 ; 13 ); 0.1181 0.2185

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


Ставить Ставить Ставить
0.7844
0.185 0.124
блюдениями представлены на рис.7. камень ножницы бумагу
0.296 0.2894 0.4146
0.17 0.33
0.33 0.17 0.5 0.33 0.5
0.5 0.17
0.1

0.1

0.7

0.1 0.2
Камень Бумага
0.7 0.8
Ставить Ставить Ставить Ножницы
0.2 0.1
камень ножницы бумагу
1/3 1/3 1/3
0.33
0.17
0.17 0.5 0.33
0.33
0.5
Рис. 8. Тренированная СММ игры “Камень, ножницы, бумага”на
0.5 0.17 1000 шаге игры

После применения алгоритма Витерби сравнив по-


лученные последовательности состояний для оценки
Камень Бумага эффективности алгоритма Витерби, количество “уга-
Ножницы дываний” составило 79%.
Далее повторяем действия из раздела VI с разницей
Рис. 7. Оригинальная СММ игры “Камень, ножницы, бумага”.
в том, что мы для игрока 2 выбираем не наиболее
вероятный ход (фигуру), а тот ход, который побеждает
наиболее вероятный (побеждает наиболее вероятную
Использованы следующие матрицы выплат: фигуру).
Был посчитан результат игры по матрицам выплат
Таблица XII после каждых 200 шагов (т.е. в 50-ти партиях), и так-
МАТРИЦА ВЫПЛАТ (ВЫГОДНО СТАВИТЬ КАМЕНЬ) же посчитано количество выигрышей (количество си-
Камень Ножницы Бумага
туаций, при которых игрок 2 выставил более выигрыш-
Камень 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 ставлены в следующей таблице:

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

Количество

40
по матрицам Количество
ситуаций
выплат ”выигрышей”
”ничья”
Результат 76.7% 74.3% 15.2%

30
Frequency
Полученные результаты, оказались неплохими, но

20
можем ли мы на этом основании утверждать, что наш
алгоритм примени к любой игре со схожими характе-
ристиками? Для ответа на этот вопрос был проведен

10
еще один тест на модели игры “Камень, ножницы,
бумага” со следующими шагами:

0
• игра была запущена 100 раз;
8 10 12 14 16 18 20 22
• при каждом запуске игры генерировалась рандом-
ная матрица A, матрицы выплат по которым вы- Draw
числялись элементы матрицы B и вектор начала
состояний π;
Рис. 10. Количество ситуаций “ничья”
• каждая игра содержала 10000 шагов;
• после каждой игры вычислялось количество выиг-
рышей и ситуаций “ничья”. VIII. ЗАКЛЮЧЕНИЕ
В нашей работе было представлено решение для
По результатам проведенного теста были построены частных случаев стохастической игры с отсутствием
гистограммы (рис.9 и рис.10), в которых: полной информации. В качестве инструмента описания
данного процесса(стохастической игры) мы использо-
Cреднее количество выигрышей составило: 72.3%
вали СММ (скрытую марковскую модель). Нами был
Среднее для ситуации “ничья” составило: 14.9% разработан алгоритм позволяющий предсказывать сле-
дующее действие соперника (описанного СММ) в игре
двух лиц.
В порядке иллюстрации работы нашего алгоритма
мы рассмотрели два демонстрационных примера: игру
в теннис и игру “Камень, ножницы, бумага”. Экспе-
риментальные результаты показывают неплохую эф-
20

фективность (по результатам проведенных тестов) и


универсальность (применимость алгоритма к другим
играм со схожими характеристиками) разработанного
15

алгоритма.
Нашей ближайшей задачей является адаптация и
Frequency

применение других подходов к решению такого класса


10

игр.

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

[1] Петросян, Л. Зенкевич, Н. Шевкопляс, Е. Теория игр. — 2-е изд.


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

Наука, 1970.
[3] Aumann Robert J, Maschler Michael, Stearns Richard E. Repeated
40 50 60 70 80 90 100 games with incomplete information. –– Cambridge, MA. : MIT
press, 1995.
Win
[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-Run
Рис. 9. Количество выигрышей Collaboration On Long-Run Games. – 2009. – С. 209-230.

22
[6] Харшаньи Д. Игры с неполной информацией //Мировая эко-
номическая мысль. Всемирное признание (лекции нобелевских
лауреатов). – 2005. – Т. 5. – С. 44-63.
[7] Оуэн Гильермо. Теория игр. Пер. с англ. И. Н. Врублевский, Г.
Н. Дюбина, А. Н. Ляпунова / Под ред. А. А. Корбута. — 2-е изд.
— М. : Едиториал УРСС, 2004. — 216 с.
[8] Dymarski Przemyslaw. Hidden Markov Models, Theory and
Applications / 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 International
Workshop on Developments in Computational Models, Buenos
Aires, Argentina, 26 August 2013 / Ed. by Mauricio Ayala-Rinc´on,
Eduardo Bonelli, Ian Mackie. –– Vol. 144 of Electronic Proceedings
in Theoretical Computer Science. –– Open Publishing Association,
2014. –– P. 73–84
[10] Renault, Jérôme. The value of Markov chain games with lack of
information 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, computational
linguistics, and speech recognition. –– Pearson/Prentice Hall, 2009.
–– P. 122–141.
[14] Rabiner Lawrence R. A tutorial on hidden Markov models and
selected applications in speech recognition // Proceedings of the
IEEE. –– 1989. –– Vol. 77, no. 2. –– P. 257–286.
[15] Theussl Stefan, Hornik Kurt, Buchta Christian, Schwendinger
Florian. 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 of


information
Ekaterina Bakshinskaia
This article describes a statistical approach to a solution
of problems related to strategic games with incomplete
information. The main idea of the approach is to use
hidden Markov models (HMM) to describe the states of
the game at different instants of time. In our work, we
consider a model that displays the behavior of players as a
set of states with predetermined probabilities of transitions
between them. The algorithm consists of a combination of
algorithms that effectively solve the problems described by
the CMM. The work of this algorithm is illustrated by the
examples of the simplest games with two players.

23
Оценка эффективности извлечения признаков
из изображений для построения
рекомендательных систем в социальных сетях
Александр Карачев Дмитрий Бугайченко
Математико-механический факультет Математико-механический факультет
Санкт-Петербургский Государственный Университет Санкт-Петербургский Государственный Университет
Санкт-Петербург, Российская Федерация Санкт-Петербург, Российская Федерация
[email protected] [email protected]

Аннотация—В современном мире объемы данных обладающими похожим поведением: предполагает-


растут экспоненциально, поэтому появляется пробле- ся, что у клиентов, обладающих близкими реак-
ма избыточной информации. В частности, средне- циями на одни и те же объекты будет примерно
статистический пользователь социальной сети не в
состоянии просмотреть все содержимое новостной одинаковая реакция и на прочие объекты;
ленты за короткий промежуток времени, поэтому • Социальные рекомендательные системы — реко-
разрабатываются рекомендательные системы, сорти- мендации строятся на основе реакции друзей поль-
рующие публикации по степени интересности. В рам- зователя на объект, при этом учитывается сила
ках данной работы будут рассмотрены ранжирующие связи в социальном графе для данных пользова-
модели, определяющие степень релевантности публи-
кации на основе признаков, извлеченных из изобра- телей [1];
жений. Будет проведено сравнение полученных ре- • Гибридная схема — является смесью фильтрации
зультатов с показателями не учитывающих содержи- по содержимому и коллаборативной.
мое публикации моделей, работающих на признаках
социально- демографического и статистического ха-
рактера. На основании этих результатов будет выде-
лена граница применимости и оценен потенциальный При использовании фильтрации по содержимому
эффект дальнейшего использования подобных мето- или гибридной схемы крайне важную роль играет вы-
дов в реальных задачах. бор характеристик, описывающих объект. В рекомен-
Ключевые слова—изображения, извлечение при- дательных системах социальных сетей зачастую в ка-
знаков, рекомендательные системы, нейронные сети
честве признаков используются, например, социально-
I. ВВЕДЕНИЕ демографические признаки пользователя, статистиче-
ские сведения о публикации (оценки “друзей”, пока-
Проблему перенасыщенности информацией пытают- затель кликабельности — click-to-rate) [3], сведения о
ся решить довольно давно. Рекомендательные системы группах. Однако признаки, из медиафайлов, прикреп-
из совокупности всех доступных объектов пытаются ленных к посту, зачастую не извлекаются. В частности,
выделить те, которые релевантны для данного пользо- в ряде социальных сетей существенную роль игра-
вателя [1]. Например, такая концепция активно исполь- ют изображения. В данной работе будут рассмотрены
зуется в интернет-магазинах (рекомендации товаров) различные способы извлечения признаков и оценена
и развлекательных сайтах. В частности, во многих со- эффективность этих признаков с точки зрения ранжи-
циальных сетях (Одноклассники, Вконтакте, Facebook) рования новостной ленты.
помимо сортировки пользовательскихc публикаций по
времени существует возможность упорядочивания их Целью данной работы является проверка потенциа-
по степени спрогнозированной интересности для дан- ла улучшения эффективности прогноза при наличии
ного пользователя. действующей системы рекомендаций. Для этого про-
Рассмотрим одну из распространенных классифика- изводится включение в уже существующую систему
ций рекомендательных систем [2]: рекомендаций социальной сети ”Одноклассники” при-
• Фильтрация по содержимому — рекомендации ос- знаков, извлеченных из изображений, имеющихся в
новываются на оценке сходства между предпочте- публикациях, и построение новой рекомендательной
ниями пользователя и важными характеристиками сиситемы на основе полученной комибнации, с последу-
(признаками) объекта; ющей оценкой прироста эффективности, и выделения
• Коллаборативная фильтрация — рекомендации границ применимости, в рамках которых использова-
основываются на сходстве между пользователями, ние данного подхода наиболее целесообразно.

24
II. СВЯЗАННЫЕ РАБОТЫ них по отдельности. В ряде работ было показано, что
гибридный подход позоволяет улучшить качество реко-
Рекомендательные системы широко используются в мендаций, в частности, на таких наборах данных как
индурстрии для построения индивидуальный предло- MovieLens и Douban [12] [13].
жений содержимого сервиса для пользователя. Колла- В рамках данной работы будет построена гибридная
боративные рекомендательные системы являются рас- рекомендательная система социальной сети, являюща-
пространенным методом решения подобных задач. Ра- яся на комбинации социального и основанного на содер-
боты, описывающие данные методы и их применение жимом подходов. При этом, в отличие от ряда других
публиковались в конце XX века. Примером может исследований [10] признаки будут извлекаться непо-
служить почтовый сервис Tapestry [4], либо система средственно из изображений с помощью сверточных
GroupLens [6]. Соверменным примером может служить сетей, а не заменяться пользовательскими аннотация-
рекомендательная система сервиса Amazon [5]. ми. Также важным фактором является исследование
Однако у данной концепции есть существенный недо- в данной работе именно социальной сети со специфи-
статок — проблема холодного старта [2]. Реакцию ческими для таких систем факторами как высокая ча-
на элемент, о взаимодействии с которым остутвуют стота появления новых объектов и существенная роль
сведения, либо их количество недостаточно велико (на- социальных связей.
пример, новый товар), спрогнозировать невозможно.
В социальной сети, где постоянно появляются новые III. ИЗВЛЕЧЕНИЕ ПРИЗНАКОВ ИЗ ИЗОБРАЖЕНИЙ
пользователи и публикации, проблема холодного стар- Попытки работать с графическими объектами пред-
та является весьма серьезной. принимались еще на заре машинного обучения. Так,
Схожей проблемой является большая разреженность предполагалось, что персептрон (дальнейшим разви-
данных — пользователь реагирует лишь на чрезвычай- тием которого стали нейронные сети с полносвязной
но малую их часть. Улучшить качество предсказаний в архитектурой) сможет эффективно работать с ними,
подобных сервисах могут социальные рекомендатель- однако было показано, что такая архитектура не под-
ные системы [7], учитывающие связи пользователя с ходит для этого. В частности, персептрон и его аналоги
другими через явное их взаимодействие — ”дружбу” были восприимчивы к операциям переноса и налицо
в социальных сетях, интенсивность общения друг с было существенное увеличение размерности при работе
другом, наличие общих друзей, членство в одинаковых с большими входными векторами.
группах и другие подобные признаки. Такая схема при- Существенные изменения произошли с появлением
меняется во многих социальных сетях и дргих онлайн- сверточных сетей. Их отличительной чертой является
сервисах, например, при построении умной ленты но- локальность работы с объектом, поэтому даже большая
востей в социальной сети ”Одноклассники” [3], либо входная размерность не приводит к увеличении тако-
рекомендаций по выбору объекта для скачивания в вой в сети, помимо этого ликвидируется привязанность
файлообменном клиенте Tribler [8]. признака к конкретной зоне. Рассмотрим алгоритм
Другим способом решения подобных задач является работы сверточных сетей подробнее.
фильтрация по содержимому. Исследования на данную Тремя главными составляющими в сверточных ней-
тему проводились в том числе и на основе онлайн- ронных сетях являются локальное рецепторное поле
сервисов Last.fm и Delicious, где в качестве содержимо- (local receptive field), разделяемые веса (shared weights)
го рассматривались текстовые аннотации, состоящие из и подвыборка (subsampling) [14].
набора слов, заданных пользователем (тэги — tags) [9]. • Локальное рецепторное поле — каждый нейрон по-
Аналогичным образом (на основе текстовых аннотаций следующего слоя связан в предыдущем слое только
объекта, а не самого объекта) строились рекомендации с малой его областью. Она называется локальным
и в работе с изображениями, примером может служить рецепторным полем. Локальными рецепторными
исследование на основе сервиса Flickr [10]. Тем не ме- полями замощается весь слой, каждому из них
нее, не стоит забывать что с увличением вычислитель- ставится в соответствие нейрон в следующем слое;
ных мощностей все чаще проводятся поптыки извле- • Разделяемые веса — все веса у нейронов, описан-
чения признаков из самих объектов. Примером этого ных в предыдущем пункте, совпадают. Эвристиче-
могут служить основанная на применении сверточных ски считается, что это позволяет искать наличие
сетей система рекомендации музыки [11]. Важным во- конкретной характеристики на всем изображении.
просом в подобных подходах является определение эф- Такая конструкция называется картой признаков
фективного метода извлечения признаков из объекта, (feature map). Зачастую используется набор из
частный случай этой задачи для изображений будет нескольких карт признаков;
рассмотрен далее в данной работе. • Подвыборка — операция уменьшения размерности.
Гибридный подход сочетает в себе указанные вы- При ее применении каждая карта признаков пере-
ше методы. Применение данного подхода позволяет ходит в более плотное свое представление с утра-
компенсировать часть недостатков, характерных для той несущественной части информации. Довольно

25
распространено применение операции max-pooling, 2) Прогноз коллаборативной рекомендательной си-
являющейся частным случаем подвыборки. При стемы социальной сети “Одноклассники” [3] по
данной операции карта признаков разбивается на релевантности данного поста;
части с последующим выбором максимального зна- 3) Наличие положительных оценок, поставленных
чения нейрона в каждой из них. В итоге сохраня- друзьями пользователя.
ется информация о наличии признака в локальной Все данные были выгружены в файловую систему
области. HDFS (Hadoop distributed file system).
Сейчас весьма эффективно используются многослой-
ные (глубокие) сверточные архитектуры. Одной из V. ЭКСПЕРИМЕНТ
стандартных задач является задача классификации
изображений. На протяжении нескольких лет суще- Для скачивания объектов и предварительной под-
ственным вызовом является весьма разнообразный на- готовки данных использовался язык Python, как об-
бор данных ImageNet. Высокоэффективным решением ладающий широким спектром реализованных библио-
данной задачи стала глубокая сверточная архитектура тек, упрощающих работу с данными. Для работы с
VGG-16 [15]. Помимо нее в данной работе рассматрива- нейронными сетями использовалась библиотека Keras
лась сверточная сеть архитектуры ResNet-50 [16]. Из-за с вычислительной основой Tensorflow. Выбор данной
широты спектра представленных классов признаки, ко- библиотеки обусловлен простотой реализации сложных
торые извлекаются при решении данной задачи, хоро- нейросетевых структур в ней, и высокой производи-
шо описывают произвольные изображения. Обучение тельности Tensorflow при вычислениях на графическом
на большом наборе изображений требует больших вы- процессоре.
числительных и временных затрат, поэтому в данной Для непосредственной работы с подготовленными
работе воспользуемся уже вычисленными весами для данными была выбрана платформа Spark, отличаю-
указанной архитектуры, находящимися в публичном щаяся своим быстродействием при работе с большими
доступе. объемами информации. Также на ней существует ряд
инструментов, позволяющих строить обучающиеся мо-
IV. ДАННЫЕ дели и оценивать их качество.
Рассматриваются публикации в социальной сети “Од- Для реализации поставленной цели был построен ряд
ноклассники”. Были рассмотрены публикации с одним бинарных классификаторов, предсказывающих тип ре-
и более изображениями, опубликованные с 1 июня по акции пользователя. Качество каждого из них проверя-
16 июля 2017 года в ряде сообществ данного ресурса. ется на валидационном множестве с помощью одного из
Были скачаны все доступные изображения из указан- стандартных показателей — площади под ROC-кривой
ных публикаций. Пригодными к дальнейшему анализу (area under receiver operating characteristic curve — ROC
оказались 7932744 объектов. AUC). ROC-кривая отображает соотношение между
Все изображения были обрезаны до квадратных про- долей верных положительных ответов классификатора
порций с сохранением центра, затем их размер был от всех имеющихся объектов положительного класса
приведен к формату 224 на 224 пикселя, с сохранением (true positive rate) с долей ошибочных положительных
трех цветовых уровней (этот формат является стан- ответов классификатоа от общего числа имеющихся
дартным для архитектуры VGG-16 и ResNet-50). объектов отрицательного класса (false positive rate) при
Было осуществлено извлечение признаков из обрабо- варьировании порога решающего правила. Площадь
танных изображений путем применения к ним сверточ- под ROC-кривой описывает качество классификатора,
ной части сети VGG-16 (либо ResNet-50) с весами, полу- чем ближе это значение к 1, тем качественнее класси-
ченными на наборе данных ImageNet. Таким образом, фикатор [17].
каждому изображению была сопоставлена трехмерная Рассмотрим построение бинарного классификатора
матрица размерности 7 на 7 на 512 (либо матрица без использования данных об изображениях.
размерности 1 на 2048). С помощью встроенных в платформу Spark инстру-
Были собраны сведения о показах этих публика- ментов реализуется логистическая регрессия. Обучение
ций пользователям. В каждом из показов присутству- проводится на показах в июне (98137604 прецедентов),
ет реакция: либо положительная (поставлена оценка валидация на показах за 16 дней в июле (48061228 пре-
“Класс!”), либо нет (игнорирование публикации, нега- цедентов). Вектор признаков образуют три характери-
тивная оценка, жалоба на публикацию). Из всех воз- стики, указанные выше. Построенную модель назовем
можных характеристик были выбраны следующие: базовой.
1) Показатель кликабельности публикации на мо- Заметим, что в данной работе валидация не про-
мент показа пользователю — отношение количе- изводится в реальном промышленном процессе из-за
ства положительных оценок, которые пользова- экономической несообразности. Улучшения на статич-
тели дали этой публикации к числу показов этой ном валидационном множестве позволяют говорить о
публикации; сравнительной эффективности тех или иных подходов.

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

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

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

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


Полносвязный
жениями. Извлечем признаки из изображений двумя (1)
способами: sigmoid
1) Поскольку выходной вектор VGG-16 слишком ве-
лик, уменьшим его размерность с помощью мето-
да главных компонент. Имеется возможность за- Рис. 2. Архитектура первого этапа нейросетевого подхода
дать параметр размерности выходных векторов;
2) С помощью применения к изображениям ней-
росетевой архитектуры ResNet-50 получим век- зователей довольно много, однако их активность огра-
тор размерности 2048. Затем с помощью метода ничивается несколькими просмотрами за большой вре-
главных компонент уменьшается размерность до менной интервал — их поведение не может отразить их
указанной в параметре. настоящие предпочтения. Поэтому для валидационно-
Было выбрано несколько репрезентативных значе- го и обучающего множеств зададим в качестве нижней
ний для размерности векторов. Полученные в обоих границы 0, 25 квантиль и 0, 95 в качестве верхней (см.
методах вектора конкатенируются с вектором призна- Рис. 1). Сдвиг в сторону более активных пользователей
ков базовой модели. Тем самым получается вектор обусловлен тем, что их поведение более информативно,
признаков для логистической регрессии. Модели, по- чем у малоактивных пользователей, поэтому они пред-
лученные на основе методов (1) и (2) назовем VGG- ставляют большую ценность. В качестве представителя
моделью и ResNet-моделью соответственно. В данной классификаторов с признаками изображений выбраны
работе используется нотация VGG:n или ResNet:n, где модели архитектуры “ResNet:20” и “VGG:20”. Для них
первая часть обозначения — тип модели, а число n — была проведена валидация по просмотрам, случившим-
параметр, задающий размерность вектора признаков, ся в определенном временном интервале после разме-
полученных из изображений. Обучение и валидация щения публикации. В качетве обучающей выборки бы-
моделей происходит на тех же множествах, что и в ба- ли выбраны просмотры, случившиеся в течение первых
зовой модели. Воспроизводимость данного эксперимен- 24 часов после публикации. Воспроизводимость обеспе-
та подтверждается с помощью случайного разбиения чивалась аналогично предыдущему абзацу. Результаты
обучающей выборки на 5 частей с последующей оцен- данного подхода приведены в таблице II.
кой качетва полученных моделей на валидационном Поскольку подход с логистической регрессией пока-
множестве (просмотры в июле). Вычисляется среднее зал приемлемые результаты, было решено применить
значение показателей качества и строятся доверитель- более сложную модель — нейросетевой классификатор.
ные интервалы с уровнем доверия 0, 95. Результаты Помимо признаков, извлеченных из изображений,
данного эксперимента приведены в таблице I. используются признаки социально демографической
Среди множества всех пользователей имеются те, группы реагирующего пользователя: было выделено 10
поведение которых нерепрезентативно. Это могут быть возрастных категорий и 2 пола. Эти данные были пере-
как чрезмерно активные пользователи, так и напро- ведены в вектор размерности 20 с помощью унитарного
тив — клиенты с крайне небольшим количеством про- кодирования (one-hot encoding).
смотров. Излишне активных пользователей небольшое Обучение нейросетевого классификатора проходило
количество — их удаление не скажется отрицательно на в три этапа.
качестве прогнозов. В то же время малоактивных поль- Разбиение на три этапа было мотивировано высо-

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

Полносвязный
Полносвязный (100)
(100) relu
relu
Dropout (0.5)
Dropout (0.5)
Полносвязный
Вход(соц-дем)
Полносвязный (20)
Вход(соц-дем) (20)
(20) relu
(20)
relu

Dropout (0.5)
Dropout (0.5)

Полносвязный
(1)
Обычный relu
Полносвязный
(1) Регуляризация
sigmoid Неизменяемый

Рис. 3. Архитектура второго этапа нейросетевого подхода Вход(базовый)


Конкатенация
(3)

кой эффективностью базовых признаков, вследствие


которой в процессе обучения игнорировались прочие Обычный
Полносвязный
характеристики. Поэтапное обучение позволяет извле- (1) Регуляризация
кать признаки и находить зависимости, которые при sigmoid Неизменяемый
одношаговом подходе были бы нивелированы базовыми
характеристиками. Этапы обучения перечислены ниже: Рис. 4. Архитектура третьего этапа нейросетевого подхода
• Обучение бинарного нейросетевого классификато-
ра с полносвязной архитектурой с использованием ции AUC-метрики в третьем знаке на валидационном
признаков, извлеченных из изображений с помо- множестве. В качестве оценки качества изначальной
щью архитектуры ResNet50. Подробное описание рекомендательной системы используется полносвязная
полученной сети представлено на Рис. 2; однослойная нейронная сеть, использующая только ба-
• Веса, полученные в первом пункте используются зовые признаки.
для начальной инициализации весов в верхних сло- Обучение проходило на множестве показов в июне,
ях сети. Параллельно ветви с данными признаками валидация — на множестве показов в июле. Нижняя
обучается ветвь с социально-демографическими и верхняя границы допустимой активности пользо-
признаками. Самые верхние слои зафиксированы, вателей были выбраны аналогично вышеописанному
часть промежуточных, полученных из предыду- подходу — 0,25 и 0,95 квантили соответственно. Только
щего шага имеют регуляризацию в виде суммы случившиеся не позднее 24 часов с момента публикации
квадратов разностей между изначальными весо- просмотры включены в обучающую выборку. Воспро-
выми коэффициентами и текущими. Подробное изводимость обеспечивается аналогично предыдущим
описание полученной сети представлено на Рис. 3; пунктам — путем случайного разбиения обучающей
• Полученные в предыдущем пункте веса использу- выборки 5 частей, вычиления среднего значения каче-
ются для начальной инициализации весов в верх- ства полученных моделей и построения доверительного
них слоях сети, используемой на данном этапе. интервала с уровнем доверия 0,95.
К ним присоединяются базовые признаки. Часть Обучение велось с помощью стохастического гради-
весов, полученных на прошлом шаге, неизменяема, ентного спуска [14], со скоростью обучения (learning
часть имеет регуляризацию, описанную в предыду- rate) 0,01; размером батча 10000; моментом Нестерова
щем пункте. Подробное описание полученной сети 0.9 и параметром регуляризации 10−6 .
представлено на Рис. 4. Оценка качества данного подхода приведена в таб-
Обучение на каждом этапе ведется до стабилиза- лице II.

28
VI. РЕЗУЛЬТАТ но, и при более глубоком исследовании существенно
улучшит качество рекомендаций.
В таблице I приведены показатели качества рабо-
ты применения различных наборов признаков при по- СПИСОК ЛИТЕРАТУРЫ
строении моделей на основе логистической регресии. [1] Shapira, B., Ricci, F., Kantor, P. B., & Rokach, L. ”Recommender
В качестве этого показателя используется показатель systems handbook”, Springer US, 2011.
ROC AUC на валидационном множестве (просмотры в [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_
Выигрыш есть, однако составляет менее 1%. Базо- and_back.pdf
вая модель основывается на статистике по действиям [4] Goldberg, David, et al. ”Using collaborative filtering to weave an
пользователей, поэтому можно предположить, что для information tapestry.” Communications of the ACM 35.12 (1992):
61-70.
показов, которые произошли в небольшой промежуток [5] Linden, Greg, Brent Smith, and Jeremy York. ”Amazon.com
времени такая модель предсказывает хуже, чем для recommendations: Item-to-item collaborative filtering.” IEEE
тех, у которых успели накопиться сведения. Internet computing 7.1 (2003): 76-80.
[6] Konstan, Joseph A., et al. ”GroupLens: applying collaborative
В таблице II приведена валидация на июльских по- filtering to Usenet news.” Communications of the ACM 40.3 (1997):
казах, случившихся на определнном временном ин- 77-87.
тервале. Прочерками указаны комбинации временного [7] He, Jianming, and Wesley W. Chu. ”A social network-based
recommender 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‐peer
описывается с помощью показателя ROC AUC. Нетруд- system.” Concurrency and computation: Practice and experience
20.2 (2008): 127-138.
но видеть, что увеличение эффективности интенсивнее [9] Cantador, Iván, Alejandro Bellogín, and David Vallet. ”Content-
(на самых ранних просмотрах на порядок выше, чем based recommendation in social tagging systems.” Proceedings of
при обучении на всем множестве). При расширении the fourth ACM conference on Recommender systems. ACM, 2010.
[10] Sigurbjörnsson, Börkur, and Roelof Van Zwol. ”Flickr tag
временного интервала выполняется предположение о recommendation based on collective knowledge.” Proceedings of the
сокращении разницы между качеством моделей. 17th 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 neural
нии нейросетевого подхода. Можно сделать предполо- information processing systems. 2013.
жение о потере части информации при проходе через [12] Strub, Florian, Romaric Gaudel, and Jérémie Mary. ”Hybrid
recommender system based on autoencoders.” Proceedings of the
слой, выходная размерность которого существенно ма- 1st 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”, Determination
Press, 2015.
показывает необходимость дальнейшего исследования [15] Simonyan, Karen, and Andrew Zisserman. ”Very deep convolutional
данного вопроса. networks for large-scale image recognition.” arXiv preprint
Итак, на основании проведенных экспериментов arXiv:1409.155 (2014)
[16] He, Kaiming, et al. ”Deep residual learning for image recognition.”
можно сделать вывод, что гибридные рекомендатель- Proceedings of the IEEE conference on computer vision and pattern
ные системы дают наибольший выигрыш по сравне- recognition. 2016.
нию с коллаборативной фильтрацией при обработке [17] Донцова Юлия Сергеевна. ”Анализ методов бинарной класси-
фикации” Известия Самарского научного центра Российской
контента, опубликованного незадолго до построения академии наук, 16.6-2, (2014): 434-438.
рекомендаций.

VII. ЗАКЛЮЧЕНИЕ
В рамках данной работы было проведено построение
ряда моделей рекомендательных систем. Была прове-
дена сравнительная оценка прироста эффективности
при включении сведений об изображениях в модель,
на основании чего был сделан вывод о сравнительных
характеристиках рекомендательных систем. Были вы-
явлены способы усиления эффекта использования дан-
ных признаков. Из сказанного выше можно заключить,
что построение рекомендательной системы на основе
признаков из изображений в социальной сети возмож-

29
Таблица 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, 007
0 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 extracting


features from images for building social
network recommender systems
Alexander Karachev, Dmitry Bugaychenko
Volumes of data are growing exponentially nowadays,
thus there is a problem of the redundant information. In
particular, an average social network user can not examine
news feed in a short period of time, therefore various
recommender systems are built, which sort publications
by relevance. In this work, ranging models, which calculate
relevance with features, extracted from images, are built.
Comparison between those models and ones that are
based on socialdemographic and statistical features only, is
calculated. The limits of applicability and potential effects
of further usage of such methods in real problems are
estimated.

30
Тексто-независимая идентификация по голосу
Даниил Никулин Владимир Тутыгин
Санкт-Петербургский Санкт-Петербургский политехнический
Академический университет университет Петра Великого
Email: [email protected] Email: [email protected]

Аннотация — В статье произведен обзор и анализ На рисунке 1 представлена общая схема работы
методов и алгоритмов биометрической аутентификации на системы в каждом из режимов. Как можно заметить, эти
основе тексто-независимой идентификации на динамических режимы весьма похожи. Обоим для работы необходимо
голосовых характеристиках. Предложен набор методов и захватить речевой аудио поток и вычислить его основные
алгоритмов, способный решать задачу тексто-независимой признаки. Отличие же состоит в механизмах работы с
идентификации в условиях сильных шумов, реализованный этими признаками. При регистрации, признаки
в среде MATLAB. Произведено тестирование методов в необходимо запомнить для использования в будущем, так
наборе и проанализированы результаты. как гораздо эффективнее работать с уже извлеченными
признаками, чем с исходными сырыми данными. При
I. ВВЕДЕНИЕ
идентификации ничего сохранять нельзя, так как система
В настоящее время особую важность приобретают на данном этапе не имеет обратной связи и не может
задачи защиты информации. Среди задач защиты достоверно знать принадлежность голоса.
выделяются задачи аутентификации. Одними из активно
развивающихся методов являются методы биометрической
аутентификации.
Методы биометрической аутентификации могут быть
по статическим (неизменяемым) данным человека или по
динамическим. К статическим характеристикам человека,
можно отнести отпечатки пальцев, радужную оболочку,
геометрию лица, сетчатку глаза. К динамическим
характеристикам можно отнести голос, подчерк,
сердечный ритм, походку. Преимуществом методов на
статических характеристиках является относительная
простота организации процесса аутентификации и низкая
вероятность ошибки. Однако недостатками статических
методов являются необходимость в специализированной
Рис. 1: Общая схема работы
аппаратуре, а также неизменяемость и открытость
статических биометрических характеристик человека.
Такие недостатки можно преодолеть с помощью III. ИЗВЛЕЧЕНИЕ ПРИЗНАКОВ
динамических методов биометрической аутентификации,
как например аутентификация по особенностям голоса Недостатки статических методов идентификации,
человека. Эти методы, обладают большей вероятностью зачастую, связаны с дороговизной аппаратуры. В связи с
ошибок первого и второго рода, на их функционирование этим основное преимущество динамических методов
влияет психофизиологическое состояние человека, однако именно в возможности работы с дешевым и
они дают возможность изменять измеряемый образ, что низкокачественным оборудованием. Именно поэтому
делает такие системы предпочтительными при актуальной является задача робастной идентификации, т.е.
аутентификации личности по открытому каналу, и дешевы устойчивой работы системы вне зависимости от
в реализации, т.к. для них не нужно специализированное возможных шумовых составляющих, вызванных
оборудования для измерения характеристик. оборудованием.
В данной работе описывается создание и анализ
системы биометрической аутентификации, основанной на A. Предварительная фильтрация
тембре голоса. Целью предварительной фильтрации является
улучшение аудиосигнала для избавления от артефактов,
II. ОБЩАЯ СХЕМА вызванных низкокачественной аппаратурой записи.
Работу системы распознавания можно глобально 1) Выбросы
разделить на два режима: режим регистрации и режим Некачественная аппаратура записи звука может
идентификации. Другими словами, чтобы узнавать приводить к кратковременным мощностным выбросам.
человек, системе необходимо иметь данные об этом Данные шумовые явления могут предоставить большие
человеке. трудности для алгоритма нахождения активности голоса.

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

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

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


выбран эллиптический ФВЧ 3-го порядка с частотой среза,
равной 40Гц. Выбор эллиптического фильтра был сделан
Рис. 2: Сигнал с выбросами
из-за того, что эллиптические фильтры обеспечивают
более крутой (по сравнению с фильтрами Баттерворта и
Идея алгоритма заключается в последовательном Чебышева) спад АЧХ в переходной зоне между полосами
вычислении энергии коротких участков файла, сравнении пропускания и задерживания. Платой за это является
со средним значением энергии и подавлении с помощью наличие равномерных пульсаций АЧХ как в полосе
перемножении с инвертированным окном Тьюки1 в случае пропускания, так и в полосе задерживания. Частота среза
превышения энергии участка среднего значения на была выбрана по той причине, что частота
некоторый порог. Окно Тьюки были выбрано по причине воспринимаемого голоса находится в районе 20-40Гц.
наличия широкого плоского пика и гладких краев. Для На рисунках 4 и 5 видно применение ФВЧ для сигнала,
более гладкой фильтрации и точного детектирования содержащего низкочастотный шум.
промежуточные участки аудиофайла выбирались с
перекрытием.
После обработки представленная выше звуковая
дорожка выглядит вот так:

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

B. Voice Activity Detection


Целью алгоритма VAD является выделение участков
активности голоса и удаление из аудиосигнала прочих
Рис. 3: Отфильтрованный от выбросов сигнал участков. Это необходимо, так как на дальнейших этапах
строится спектрограмма, и оцениваются её
2) Низкочастотный шум характеристики. В этом случае, участки, содержащие
Низкочастотные гармоники опасны тем, что создают только шум, вносили бы весомое искажение.
постоянную энергетическую составляющую на коротком 1) Вычисление мощностных характеристик
промежутке времени, которая может быть ошибочно В качестве мощностных характеристик сигнала и шума
признана как активность голоса. использовались следующие формулы:

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


 – мощность шума -го участка
1
https://www.mathworks.com/help/signal/ref/tukeywin.html  – вектор значений амплитуды -го участка

32
2) Сглаживание характеристик и нормализация было решено считать, что работа алгоритма на не
Сначала сигнал фильтровался с помощью фильтра зашумленных данных за образец и сравнивать уже с ним.
Гаусса, после чего оценивалась и вычиталась мощность
фоновых шумов. Отчищенный от фоновых шумов сигнал
нормировался до единицы.
В изначальной версии дополнительно вычислялся
спектр фонового шума, который мог быть, например,
звучащей на фоне сигнализацией, и вычитался из
исходного сигнала. Однако полученные результаты
оказались таковыми, что пришлось полностью избавиться
от данной стадии.
3) Нахождение границ фраз Рис. 6: SNR = 40
Для нахождения границ фраз массив мощностей
сигнала проходится в обоих направлениях. В каждом Далее для оценки работы на зашумленных данных,
случае ищется спад энергии, а так как массив проходится в брался эталонный сигнал и добавлялся шум различной
двух направлениях, то находятся как начало, так и конец мощности, что можно наблюдать на Рис. 8.
фраз.
4) Объединение фраз
Зачастую длительность вычисленных фраз оказывается
менее 100мс. В связи с этим, разработан алгоритм,
объединяющий короткие близко расположенные фразы в
одну. Для этого сравниваются энергии соседних участков,
и если они отличаются менее чем на установленный порог,
то данные участки объединяются. При этом происходил
перерасчет энергии объединенных фраз соразмерно
длительности и мощности каждого. Рис. 7: SNR = 5
5) Расширение фраз во времени и перемножение с Для сравнения и нахождения ошибки брался эталон, и
оконными функциями находилось расстояние Хемминга между индексами
Для плавного перехода между периодами активности и эталонов и тестовым множеством. Таким образом, получив
затишья массивы фраз расширяются на 50мс в каждую большие эталонные и тестовые множества, был составлен
сторону (если это возможно). статистический график ошибки алгоритма (по Хеммингу)
После того, как найдены все участки активности голоса в зависимости от SNR, представленный на рисунке 8.
и посчитаны начальные и конечный индексы каждой из Здесь синей линией отмечен график среднего значения,
фраз, создаётся массив, который будет содержать полный а красными — первый и третий квартили.
аудиосигнал участков активности. Данные участки
умножаются на оконную функцию Кайзера2 для
уменьшения растекания спектра. Окно Кайзера выбрано
из-за малых значений перегиба.
6) Результаты тестирования алгоритма VAD
На этом работа системы VAD можно считать
оконченной. На выходе имеем массив, содержащий
исключительно голосовой сигнал, что можно наблюдать на
Рис. 6.
 Голубым цветом отмечен входной аудиосигнал.
 Красным цветом — мощность речевого сигнала
 Зеленым цветом — мощность шума
Для того, чтобы проверить валидность, точность и
устойчивость работы системы VAD, система была
протестирована примерно на 80 аудиозаписей различных
людей общей продолжительностью более 6 часов. В
изначальном варианте разметка аудиозаписей Рис. 8: Зависимость ошибки алгоритма VAD от мощности
производилась вручную. При этом было обнаружено, что шума
ошибка алгоритма при SNR3 > 50dB менее 1%. По этой
причине, в связи с большим объёмом исходных данных,
C. MFCC
Так как необработанный массив спектра несет в себе
2
https://en.wikipedia.org/wiki/Kaiser_window много излишней и шумовой информации, то было решено
3
SNR – Signal to Noise Ratio использовать MFCC значения для выделения главных

33
признаков. Мел-частотные кепстральные коэффициенты 2) Нормализация магнитуды спектра
(MFCC) основаны на идее логарифмического закона Из-за громкости аудиозаписи и количества точек в
чувствительности человеческого уха к частоте звука. буфере, абсолютная мощность голосовых компонент
Кепстр - энергетический спектр функции . По может сильно варьироваться на несколько десятков
сути, кепстр есть обратное отображение логарифма децибел и более. Для преодоления данной проблемы было
энергии спектра во временную область. Он определяется решено ограничиться мощностью спектра в 25 децибел.
выражением: Находился максимум массива частот, сопоставлялся
уровню 25 децибел, т.е ко всему массиву прибавлялось
значение 25 децибел и отнималось значение найденного
максимума массива. В итоге, всё, что отличалось от
Отличие от основного метода MFCC в том, что в максимума более, чем на 25 децибел, считалось равным
данном случае не использовалось обратное нулю.
преобразование во временную область по соображениям
вычислительной эффективности, а также вместо мел- 3) Вычисление статистических параметров
свертки используется логарифмическая децимация. Значения главных компонент по своей сути являются
реализацией случайного процесса, зависящего от
1) Логарифмическая децимация интонации и конкретной фразы. Однако можно сделать
Для задачи логарифмической децимации создавался предположение, что данный процесс является реализацией
массив из меньшего количества точек, содержащего весь суммы многомерных гауссовых процессов со своими
промежуток частот в логарифмическом масштабе. Таким значениями среднеквадратичного отклонения (СКО) и
образом, выбирая точки для выборки из созданного математического ожидания (МО). Для оценки
массива, и усредняя значения исходной функции между правомочности данного подхода были построены ряд
точками, выделялся массив значительно меньшей гистограмм плотности случайного процесса, график
размерности. одного которых представлен на Рис. 10.
В листинге 1 представлен псевдокод выбора точек в
логарифмической шкале для дальнейшей децимации.
function [ indexes ] =
log_indexes ( outp_n, inp_n )

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


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

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

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


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

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


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

34
IV. КЛАССИФИКАТОРЫ логарифмической шкале. В данном случае нулевой
Что представляют собой "признаки"? На самом деле гипотезой было предположение, что голос мужской. В
это всего лишь набор чисел, характеризующих человека — этом случае FAR будет соответствовать ошибке второго
вектор в многомерном пространстве. А задача рода, а FRR – ошибке первого рода. EER – такое значение,
классификатора заключается в том, чтобы построить при котором FAR = FRR.
функцию отображения этого многомерного пространство в На Рис. 13. представлены те же данные, но в виде ROC
пространство действительных чисел. Другими словами, кривых.
его задача состоит в получении числа, которое бы
характеризовало меру схожести.
В итоге в качестве классификаторов рассматривались
следующие функции:
1. Евклидово расстояние
2. SMV
3. MLP
V. ЭКСПЕРИМЕНТАЛЬНЫЕ РЕЗУЛЬТАТЫ
A. Бинарная классификация
Для бинарной классификации была выбрана задача
распознавания пола оратора. Таким образом, существует
всего 3 четко определенных возможных результата:
мужской голос, женский голос, неизвестно.
Был проведен эксперимент, в рамках которого система
обучалась на выборке из 25 человек (12 женщин и 13 Рис. 13. ROC кривая для случая бинарной классификации
мужчин), после чего было проведено тестирование на
контрольной выборке данных 60 других человек (31
Для сравнения результатов с имеющимися аналогами,
женщин и 29 мужчин). Большинство данных были взяты
был взят результат из статьи [2], где также на данных
из тренировочного набора для конкурсов NIST SRE4.
В результате были получены результаты, NIST SRE решалась задача бинарной классификации по
представленные на рисунке 12. половому признаку. К сожалению, в статье не
представлены численные результаты для EER или AUC,
однако представлен FAR/FRR график, изображенный на
Рис. 14.

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


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

На рисунке 12 представлен традиционный для систем


идентификации график зависимости вероятности ложного
отказа (False Rejection Rate FRR) от вероятности ложного
совпадения (False Acceptance Rate FAR) в Рис. 14. График FAR/FRR из статьи [2]

4
www.nist.gov

35
B. Задача аутентификации В статье победителей NIST SRE12 [3] приводятся
Для решения задачи аутентификации, она результаты, где они смогли добиться уровня ошибки EER
представлялась как объединение задач бинарной в пределах 2,5-3,0% на тестовой выборке. Также в статье
классификации, где каждая из выделенных задач отвечала построена FAR/FRR кривая для тренировочной выборки,
на вопрос, принадлежит ли данный голос определенному представленная на Рис. 17.
человеку, информация о котором имеется в системе.
При тестировании все множество голосов было
разделено на 3 подмножества. Первое, размером 25,
использовалось для обучения системы и регистрации
пользователей в ней. Второе, размером 10, также
участвовало в обучении в качестве негативных примеров.
Третье, размером 50, использовалось исключительно для
тестирования и проверки системы на работоспособность.
В результате получились результаты, представленные
на Рис. 15.

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


статья [3]
Рис. 15. График FAR/FRR для задачи аутентификации
VI. ЗАКЛЮЧЕНИЕ
AUC значения для кривых равны соответственно: Наиболее заметными результатами, полученными в
0.981, 0.9994 и 0.9972. ходе экспериментов являются низкий уровень точности
В статье [4] приводится пример решения данной метода, основанного на классификации по Евклидову
задачи, где они смогли получить на расстоянию и очень высокие вычислительные затраты на
тренировочной выборке NIST SRE и на настройку многослойного персептрона: длительность
закрытой тестовой выборки NIST SRE, что можно настройки MLP превышала длительность настройки SVM
наблюдать на рисунке 16. в несколько сотен раз на одном и том же наборе данных.
Для предложенного алгоритма распознавания
результаты бинарной классификации по половому
признаку оказались значительно хуже тех, что были
приведены в [2]. Это оказалось вполне ожидаемо, так как
алгоритм был разработан для идентификации людей, а не
специально для определения пола. В то же время значения
AUC и EER оказались достаточными, чтобы можно были
использовать классификатор с вероятностью ошибки
около 15% при помощи MLP.
Для задачи аутентификации, наоборот, результаты
тестирования предложенной системы оказались
значительно лучше тех, что были представлены в статьях.
В первую очередь это связано ограниченностью тестового
набора для тестирования предложенной системы. Тестовая
выборка NIST SRE содержит аудиосигнала более 600
различных человек, в то время как предложенная система
тестировалась на выборке из 85 человек. Во-вторых,
отличие заключается в схеме проведения тестирования.
Если в данной статье решалась задача биометрической
идентификации, то в конкурсе NIST SRE помимо
Рис. 16. График FAR/FRR из статьи [4] идентификации, в первую очередь тестировалась
способность системы к диаризации в реальном времени,

36
т.е. определении, кто в данный момент из собеседников [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
[1] Homayoon Beigi. Fundamentals of Speaker Recognition. New York. – Universal Back-ground Model in Automatic Speaker Verification //
Springer 2011 International Conference on Web and Infor-mation Technologies 2012
[2] Karam Z.N., Campbell W.M. (2013) Graph Embedding for Speaker [11] Md. Rashidul Hasan, Mustafa Jamil, Md. Golam Rabbani Md. Saifur
Recognition. In: Fu Y., Ma Y. (eds) Graph Embedding for Pattern Rahman Speaker Identification Using Mel Frequency Cepstral
Analysis. Springer, New York, NY Coefficients // 3rd International Conference on Electrical & Computer
[3] Kozlov A., Kudashev O., Matveev Y., Pekhovsky T., Simonchik K., Engineering ICECE 2004
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 Text-Independent Speaker Recognition
8113. Springer, Cham Daniil Nikulin, Vladimir Tutygin
[4] Tomi Kinnunen, Haizhou Li. An Overview of Text-Independent Speaker
Recognition: from Features to Supervectors // Speach Communication.
The article reviews and analyzes the methods and
52(1): 12-40 2010 algorithms of biometric authentication based on text-
[5] Айвазян С.А., Бухштабер В.М., Енюков И.С., Мегиалкин Л Д. independent identification on dynamic voice
Прикладная статистика: Классификация и снижение размерностей / characteristics. Was proposed set of methods and
Справочное издание под ред. С.А. Айвазяна. М.: Финансы и algorithms that can solve text-independence in conditions
статистика, 1989. 607 с. of strong noises, implemented in the MATLAB
[6] Дьяконов В. Современные цифровые анализаторы спектра // environment. Testing methods in the set and analyzed
Компоненты и технологии – 2010. - № 5. - С.185-195.
results.

37
Построение прогностических моделей поведения
нефтяных котировок на основе методов опорных
векторов (SVM) и ARIMA.
Андрей Расторгуев Дмитрий Григорьев
Санкт-Петербургский Санкт-Петербургский
Государственный Университет, Государственный Университет,
Санкт-Петербург, Россия Санкт-Петербург, Россия
[email protected] [email protected]

Аннотация—Производство и потребление нефти являют- На данный момент исследователям не удалось прийти


ся критическими факторами для экономики ряда стран, к консенсусу о степени влияния макроэкономической
поэтому возможность прогнозирования поведения ее це- статистики на нефтяные котировки [2]. Несмотря на то,
ны весьма актуальна. Существует множество работ, ко-
торые исследуют различные методы машинного обучения: что [3] было обнаружено влияние монетарной политики
SVM, ANN, kNN, а также статистические методы ARIMA, на долгосрочное поведение рынка нефти, до сих пор
GARCH и другие инструменты анализа временных рядов. не выявлено корреляции выхода макроэкономических
Обзор литературы показывает преимущество методов SVM новостей на результаты дневных торгов [4]. Этот факт
и ARIMA при прогнозировании финансовых рынков. В дан- поощряет исследователей прогнозировать результаты
ной работе описана методика построения прогностических
моделей на базе этих двух методов. Кроме того делается торгов по сырой нефти на основе торговых данных за
вывод о лучших показателях модели SVM при предсказа- прошлые периоды.
нии ценовых приращений котировок на энергоресурсы. В данной работе описана методика построения про-
Index Terms—финансовые временные ряды, цены на гностических моделей на базе двух популярных ме-
нефть, метод опорных векторов (SVM), ARIMA, прогно-
тодов - опорных векторов (SVM) и интегрированной
зирование финансовых котировок
модели авторегрессии скользящего среднего (ARIMA),
после чего делается вывод о лучших показателях мо-
I. Введение
дели SVM на ценовых данных сырой нефти (BRENT),
Влияние котировок нефти на экономику и благосо- легкой нефти Light и газа Natural Gas за период с 1991
стояние нефтедобывающих стран сложно переоценить. по 2018 гг.
Курс национальной валюты, уровень безработицы, а Остальная часть работы организована следующим
также политический вес такой страны на международ- образом. Раздел II содержит обзор актуальных пуб-
ной арене зависят от ее экспортных нефтяных доходов. ликаций по теме прогнозирования финансовых рядов
Все это приводит к тому, что нефть является одним и нефтяных котировок в частности. В Разделе III
из самых популярных сырьевых товаров и опережаю- представлена методология по построению прогности-
щим индикатором развития нефтедобывающих стран. ческой системы на основе методов SVM и ARIMA, в то
Основными факторами, влияющими на ее мировое по- время как результаты экспериментов и их обсуждение
требление, являются: погодные условия, общий эконо- приведены в Разделе IV. С реализацией экспериментов
мический рост, развитие энергосберегающих техноло- на языке R можно ознакомиться в Разделе V. Заклю-
гий и т.п. В свою очередь предложение нефти на рынке чительные положения содержатся в Разделе VI.
зависит от общего объема ее производства, развития
добывающих технологий, картельных договоренностей II. Обзор существующих моделей и публикаций
и степени напряженности в нефтеносных регионах.
Глобальный интерес к нефтяным котировкам приво- Совокупность методов прогнозирования финансовых
дит к их высокой волатильности и хаотическому по- рядов можно разделить на статистические модели и
ведению [1], особенно в моменты выхода важной фун- методы машинного обучения [5]. К первым относятся
даментальной информации: ежедельные запасы сырой такие традиционные модели, как экспоненциальное
нефти в США по данным Американского института сглаживание, интегрированная модель авторегрессии
нефти (API), количество буровых установок в США от скользящего среднего (ARIMA), а также для работы с
Baker Hughes, запасы нефти и нефтепродуктов в США волатильностью - обобщенная модель авторегрессион-
(EIA), результаты переговоров стран ОПЕК+ и т.д. ной условной гетероскедастичности (GARCH) [6].

38
ARIMA (Autoregressive Integrated Moving Average, Korean Stock Price Index. Аналогичная ситуация была
модель Бокса – Дженкинса, методология Бокса – получена при предсказании трендов на рынке акций
Дженкинса) — интегрированная модель авторегрессии Индии [14]. Однако в работах [5], [15], [16] удалось
– скользящего среднего является одной из распро- спроектировать нейронные сети, которые при пред-
страненных моделей, что обусловлено независимостью сказании поведения различных биржевых индексов
от природы и взаимозависимостей данных временного оказались лучше ARIMA. Таким образом, отсутствует
ряда. В работе [7] показано, что для предсказаний на однозначное мнение о преимуществе статистических
коротком интервале данный метод более устойчив и методов над машинным обучением и наоборот.
эффективен по сравнению с более сложными струк- С другой стороны, когда речь заходит о сравни-
турными моделями. Преимущество ARIMA над non- тельном анализе методов машинного обучения друг с
ARIMA (AR, MA, ARMA и GARCH) подтверждается другом, то большое число публикаций признает превос-
при прогнозировании ценовых приращений биржевых ходство SVM при прогнозировании финансовых рядов,
индексов стран БРИКС [8]. Формальная запись модели в том числе и нефтяных котировок. Впервые это было
ARIM A(p, d, q) имеет вид [9]: обнаружено в работе по исследованию возможности
p
X q
X предсказания недельных приращений рынков облига-
d
4 Xt = c + d
ai 4 Xt−i + bj εt−j + εt (1) ций и фьючерсов на биржевой индекс S&P 500 [17].
i=1 j=1 При этом на вход классификаторов на базе SVM и
ANN подавались значения простейших индикаторов
где εt - белый шум, p - порядок полиномов авторе-
технического анализа EMA и RDP. В качестве других
грессии AR с соответствующими коэффициентами ai ,
входных данных можно использовать опережающие
q - порядок полиномов скользящего среднего MA с
макроэкономические индикаторы. Как показано в ра-
коэффициентами bi , а d - порядок интегрируемости,
боте [18], приращения индекса S&P 500 и валютного
который определяет степень долговременнсости памя-
курса USD/JPY могут с помощью SVM предсказывать
ти процесса. С использованием оператора задержки
направление движения индекса NIKKEI225 лучше, чем
L : Lxt = xt−1 модель может быть записана на языке
ANN. Может показаться, что SVM-классификатор бу-
линейных операторов:
дет работать лучше, если на вход подавать макси-
p q
X X мально доступное число разнородных данных, однако
(1−L)d Xt = c+( ai Li )(1−L)d Xt +(1+ bj Lj )εt (2) они не должны иметь корреляцию друг с другом [19].
i=1 j=1
Общую картину дополняют работы [20], [21], в которых
Для того, чтобы иметь возможность обработать вре- демонстрируются способы повышения качества про-
менной ряд с помощью ARIMA, необходимо проверить гнозирования SVM путем оптимизации ее параметров
его стационарность, то есть обнаружить наличие еди- и использования в индикаторах технического анализа
ничных корней (например, при помощи теста Дики – длины окна равного горизонту предсказания. В той
Фуллера [10]). При необходимости, ряд диффиренциру- же работе [21] было показано, что при прогнозирова-
ют d раз, получая стационарную последовательность, нии курсов акций, SVM лучше ANN, которая в свою
которая хорошо описывается моделью ARIMA, а исход- очередь эффективней kNN.
ный процесс называют стационарно интегрированным Рассмотрим метод SVM, которому отдает предпо-
порядка d. чтение большинство источников, проанализированных
Отличиями финансовых серий цен от традиционных авторами.
временных рядов является наличие шумовой компо- В основе SVM (Support Vector Machine) лежит прин-
ненты, нестационарность и хаотичная природа дан- цип преобразования вектора входных данных в про-
ных [11]. В то же время для того, чтобы смоделиро- странство большей размерности (kernel trick) и осу-
вать поведение временного ряда с помощью ARIMA ществления линейной регресии в этом пространстве (в
необходима его стационарность. Наиболее часто это до- случае бинарной классификации) [22]. Для n-мерной
стигается путем логарифмирования приращения цены классификации могут использоваться n∗(n−1) 2 моделей
финансового актива [12]. SVM, которые будут определять итоговый класс.
В свою очередь методы машинного обучения могут Классификатор работает следующим образом
принимать на вход нестационарные данные и могут [23], предположим, что точки ряда имеют вид:
эффективно обнаруживать нелинейные зависимости {(x1 , c1 ), (x2 , c2 ), ..., (xn , cn )} , где ci принимают
между входными данными. Примерами могут служить значения из {−1, 1} (метка класса, которому
методы опорных векторов (SVM), нейронных сетей принадлежит точка xi ), а xi - это p-мерный
(ANN) и k-ближайших соседей (KNN). Несмотря на вещественный вектор (обычно, нормализованный
свою универсальность, нейронные сети при сравнении с значениями [0, 1] или [−1, 1]). Теперь можно
ARIMA в задачах прогнозирования финансовых рядов рассматривать эту совокупость, как обучающий
не всегда обладают преимуществом. Этот факт был набор данных. Далее необходимо, чтобы SVM
замечен в работе [13] при предсказании поведения классифицировала его указанным образом (а в

39
дальнейшем, классифицировала и новые вектора III. Методика построения прогностической системы
xn+1 , xn+2 , ...). Для этого строится оптимальная
Как следует из Раздела II, прогнозировать пове-
разделяющая гиперплоскость, уравнение которой
дение финансовых рядов можно разнообразными спо-
имеет вид
собами и на основе разнотипных данных. В данной
w∗x−b=0 (3) работе будет исследована применимость наиболее по-
пулярных методов SVM и ARIMA. Несмотря на то, что
Для граничных гиперплоскостей выполняется метод ANN также может быть очень эффективен [24],
разработка подходящей архитектуры нейронной сети
w ∗ x − b = 1, w ∗ x − b = −1 (4)
является нетривиальной задачей и поэтому в данной
В случае линейной разделимости обучающей выборки, работе не рассматривается.
мы можем выбрать две гиперплоскости таким образом,
A. Данные и их подготовка
чтобы между ними не было точек и затем макси-
мизировать расстояние между ними. Ширина полосы Для обучения и тестирования моделей был исполь-
в таком случае равна kwk2
. Таким образом, задача зован набор дневных показателей цен закрытия нефти
заключается в минимизации kwk. Для этого у каждого марки BRENT, взятый с сайта finam.ru за период
i, нужно проверить, что времени с 17 мая 1991 года по 28 января 2018 года, что
в итоге составляет 9101 наблюдение. Данный подход
w ∗ xi − b ≤ 1, ci = 1 и w ∗ xi − b ≥ −1, ci = −1 (5) похож на применение месячных ценовых данных в
работе [25] для успешного прогнозирования поведения
Или, что то же самое нефтяного рынка на следующий месяц. Однако там
был применен ограниченный набор в 408 значений,
ci ∗ (w ∗ xi − b) ≥ 1, 1 ≤ i ≤ n (6) заканчивающийся 2003 годом. Поэтому отличиями на-
шей работы являются модели, предсказывающие днев-
Получаем задачу квадратичной оптимизации:
ные цены закрытия (которые считаются более зашум-
kwk2 → min ci ∗ (w ∗ xi − b) ≥ 1, 1 ≤ i ≤ n (7) ленными) на более обширном и актуальном наборе
котировок. Весь набор данных был разделен на две
По теореме Куна - Таккера, эта задача эквивалентна последовательных части: обучающую выборку (80%,
двойственной задаче поиска седловой точки функции или 7281 значение) и тестовую выборку (20%, или 1820
Лагранжа значений). Классический подход кросс-валидации не
 Pn применялся, так как данные имеют хронологический
 L(w, b; λ) = 12 kwk2 − i=1 λi (ci (wi − b) − 1) порядок, что не позволяет обучать модель на данных
→ minw,b maxλ (8) из будущего. В данной работе была проведена кросс-

λi ≥ 0, 1 ≤ i ≤ n валидация со скользящим окном фиксированного раз-
мера в 5 дней, в то время как прогноз строится только
где λ = (λ1 , ..., λn ) - вектор двойственных переменных. на один день вперед (аналогично [26]). Исходный гра-
Путем сведения этой задачи к эквивалентной задаче фик зависимости цены от времени представлен на рис.
квадратичного программирования (содержащей толь- 1, а соответствующие графики автокорреляционной и
ко двойственные переменные), получается следующий частичной автокорреляционной функций на рис. 2 и 3
алгоритм классификации: соответственно.
Xn
a(x) = sign( λi ci xi ∗ x − b) (9)
i=1

При этом суммирование ведется не по всей выборке, а


только по опорным векторам, для которых λi 6= 0 (от-
сюда и название метода). В общем случае, обучающая
выборка не обязана быть линейно разделимой, поэтому
алгоритму дана возможность ошибаться и вводится
штраф C за ошибки:
 1 Pn
 2 kwk2 + C i=1 ξi → minw,b,ξi
ci (wi − b) ≥ 1 − ξi , 1 ≤ i ≤ n (10)

ξi ≥ 0, 1 ≤ i ≤ n
Рис. 1. График зависимости цены на нефть марки BRENT от
Далее такая задача решается методами квадратичного времени
программирования.

40
Рис. 2. График автокорреляционной функции для цены на нефть Рис. 4. График зависимости приращений логарифмов цены на
марки BRENT нефть марки BRENT от времени

Рис. 3. График частичной автокорреляционной функции для Рис. 5. График автокорреляционной функции для приращений
цены на нефть марки BRENT логарифмов цены на нефть марки BRENT

Как можно заметить, такие данные не являются строится новая модель, и делает прогноз на следующий
стационарными – график функции автокорелляции день. Таким образом, совершается обход всего выбран-
показывает сильную зависимость между ценами. Такие ного периода.
данные непригодны для модели ARIMA, поэтому ис- Чтобы определить параметры ARIMA, можно вос-
пользуется метод взятия приращений логарифмов: (log пользоваться графиками функции автокорреляции и
returns) r(t) = log P (t)−log P (t−1), где P (t) обозначает функции частичной автокорреляции. По ним опреде-
цену закрытия в день t. Временной ряд, составлен- ляются параметры p = 1 и q = 1. Так как ряд
ный из таких приращений, становится стационарным. из приращений логарифмов является стационарным,
Соответствующие графики приращений логарифмов, на вход модели подается логарифм цены закрытия, а
а также графики автокорреляционной и частичной
автокорреляционной функций представлены на рис.
4, 5 и 6 соответственно. График автокорреляционной
функции подтверждает предположение о стационарно-
сти приращений логарифмов. С другой стороны, для
проверки временного ряда на стационарность можно
использовать тест Дики – Фуллера, который в этом
случае отвергает гипотезу о нестационарности с веро-
ятностью более чем 99%.

B. Построение моделей
Для построения прогноза на следующий день ис-
пользуется скользящее окно размером 5 дней, на кото-
ром строится соответствующая модель с выбранными
параметрами для составления прогноза на текущий Рис. 6. График частичной автокорреляционной функции для
день. После этого, окно сдвигается на один день вперед, приращений логарифмов цены на нефть марки BRENT

41
параметр d выбирается равным единице. На выходе
модель также прогнозирует логарифм цены закрытия.
В качестве ядра  для SVM было выбрано гауссово
kx − yk2
ядро: K(x, y) = exp − . Исходя из того, что
2γ 2
модель SVM сильно зависит от выбора параметров (в
особенности от параметра C – штрафа за ошибку), для
определения оптимальных параметров был использо-
ван метод Grid Search, описанный в [27]. Параметр ε
выбирался из множества {10−5 , ..., 10−1 }, параметр C
– из {10−3 , ..., 102 }, параметр γ – из {10−5 , ..., 102 }.
На вход SVM получает вектор из 5 предыдущих
логарифмов цен закрытия. Специальные преобразо-
вания входных данных, вроде взятия разностей, не
требуются, достаточно нормализовать входной вектор.
Соответственно, модель также прогнозирует логарифм
цены закрытия. Рис. 8. График ошибок модели ARIMA
Для построения гибридной модели, был использо-
ван метод взвешенного суммирования прогнозов обеих
моделей, предложенный в [28], суть которого заключа-
ется в следующем. Обозначим реальное значение цены
закрытия за y, значение, спрогнозированное моделью
ARIMA за yarima , а моделью SVM – за ysvm ; за
errarima и errsvm обозначим ошибки моделей ARIMA
и SVM на обучающем наборе соответственно. После,
присвоим моделям веса, обратно пропорциональные
errsvm
их ошибкам, то есть: ωarima = , а
errarima + errsvm
errarima
ωsvm = . В итоге, прогноз гибридной
errarima + errsvm
модели будет равен yhybrid = yarima ∗ωarima +ysvm ∗ωsvm ,
то есть, чем лучше модель показала себя на обучающем
наборе, тем с большим весом она будет влиять на
итоговый прогноз в гибридной модели.
IV. Результаты экспериментов
Рис. 9. Прогноз модели SVM

Рис. 7. Прогноз модели ARIMA

На рис. 7 и 8 представлены результаты прогноза


модели ARIMA с параметрами p = 1, d = 1, q = 1
на тестовом наборе данных. Среднеквадратическое от-
Рис. 10. График ошибок модели SVM
клонение (RMSE) составило 0.02781246, в то время как
на обучающем наборе оно составляло 0.02931581.

42
На рис. 9 и 10 представлены результаты прогноза Параметры моделей были выбраны аналогично моде-
модели SVM с параметрами  = 10−5 , C = 10, лям для прогноза нефти BRENT. Результаты представ-
γ = 0.01. Среднеквадратичное отклонение (RMSE) лены в таблице III. Видно, что для этих котировок
составило 0.02181642, в то время как на обучающем модель SVM также опережает ARIMA, хоть и с менее
наборе оно составляло 0.02411648. заметным преимуществом. Гибридная модель анало-
гично улучшает прогнозы ARIMA, но не превосходит
прогнозы SVM.

Таблица I
Формулы метрик качества прогнозов

Показатель Формула
p Pn
Среднеквадратическая ошибка (RMSE) 0
i=1 (y − y)
2
Pn 0
Средняя квадратичная ошибка (MSE) i=1 (y − y)
2
Pn
Cредняя абсолютная ошибка (MAE) i=1 ky 0 − yk
Pn
ky 0 − yk2
Коэффициент детерминации (R2 ) 1 − Pi=1
n 2
i=1 ky − yk

Таблица II
Значения метрик качества прогнозов по сырой нефти BRENT

Model RMSE MSE MAE R2


Рис. 11. Прогнозы моделей за промежуток 50 дней 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
делей на промежутке в 50 дней можно на рис. 11. Веса
гибридной модели были выбраны исходя из описания
выше и составили в процентном соотношении 44% и Таблица III
56% соответственно. Среднеквадратическое отклоне- Сравнение моделей на котировках нефти Light и газа Natural
ние (RMSE) гибридной модели составило 0.0240049. Gas
Стоит отметить, что, очевидно, гибридная модель
Model RMSE MSE MAE R2
пронгозирует цену закрытия лучше других моделей,
когда прогнозы SVM и ARIMA лежат по разные сто- Natural Gas (ARIMA) 0.02613 0.000659 0.017813 0.99619
роны от реального значения. Но, в виду того, что дней, Natural Gas (SVM) 0.02296 0.000527 0.015978 0.99655
когда прогнозы SVM и ARIMA лежат по одну сторону Natural Gas (HYBRID) 0.02551 0.000597 0.016852 0.99643
от реального значения больше, на всем тестовом пери- Light (ARIMA) 0.02791 0.000779 0.02014 0.99203
оде гибридная модель не опережает SVM. Light (SVM) 0.02482 0.000619 0.018339 0.99264
Как можно заметить, лучше всех себя показала
Light (HYBRID) 0.02645 0.000707 0.019612 0.99229
модель SVM, заметно опережая ARIMA (0.02181642
против 0.02781246). Применение гибридной модели не
принесло улучшения по сравнению с моделью SVM V. Реализация экспериментов на языке R
(0.0240049 против 0.02181642), хотя заметно умень- Разработка велась на языке программирования R с
шило среднеквадратичную ошибку модели ARIMA использованием пакетов arfima [29] и e1071 [30], кото-
(0.0240049 против 0.02781246). Из этого можно сделать рые содержат необходимые для построения и тести-
вывод, что применение метода опорных векторов пред- рования моделей функции. Ниже представлены клю-
почтительнее в прогнозировании цены на нефть марки чевые фрагменты кода, при помощи которых были
BRENT. С остальными метриками качества прогноза получены результаты.
можно ознакомиться в таблицах I и II. Также было Функция rolling_abstract [Листинг 1] осуществля-
произведено сравнение методов SVM и ARIMA на ет проход по заданному набору данных с указан-
двух других инструментах: нефти Light и газа Natural ным окном обучения (window.size). Если параметр
Gas, с целью тестирования полученных результатов prediction.depth равен 1, то прогноз осуществляется на
на большем объеме данных. Данные были взяты с следующий день. Модель строится при помощи фаб-
сайта finam.ru с момента появления котировок по 28 ричной функции model.f actory (см. ниже), прогнозы
января 2018 года. Для нефти Light это составило 6180 осуществляются при помощи функции predict.f actory,
наблюдений, для газа Natural Gas – 4608 наблюдений. описание которой также имеется далее.

43
r e t u r n ( f u n c t i o n ( t r a i n , params ) {
r o l l i n g_a b s t r a c t <- f u n c t i o n ( name , s e t , # r e t u r n f a c t o r y f o r ARIMA
params , window . s i z e = 5 , # with s p e c i f i e d p a r a m e t e r s p , d , q
p r e d i c t i o n . depth = 1 ) # c o n v e r t i n g CLOSE t o o b j e c t o f
{ # t s ( time s e r i e s ) c l a s s
max_l e n <- l e n g t h ( s e t $CLOSE) - r e t u r n ( a r f i m a : : a r f i m a ( a s . t s ( t r a i n $CLOSE) ,
p r e d i c t i o n . depth + 1 o r d e r=c ( params $p , params $d ,
r e s <- l i s t ( ) params $q ) , q u i e t = TRUE) )
f o r ( i i n ( ( window . s i z e+1 ) : max_l e n ) ) { })
# make p r e d i c t i o n on day with i n d e x } e l s e i f ( name == "SVM_AND_ARFIMA" ) {
# ( i + p r e d i c t i o n . depth - 1 ) r e t u r n ( f u n c t i o n ( t r a i n , params ) {
p r e d i c t e d <- NULL # c r e a t e both models
t e s t_i n d e x <- i + p r e d i c t i o n . depth - 1 # and remember e r r o r s t o c a l c u l a t e
t e s t <- s e t [ t e s t_index , ] weights
return ( l i s t (
# t a k e p r e v i o u s window . s i z e days SVM = model . f a c t o r y ( "SVM" ) ( t r a i n ,
# as t r a i n i n g s e t params ) ,
t r a i n_s t a r t <- i - window . s i z e ARFIMA =
t r a i n_end <- i - 1 model . f a c t o r y ( "ARFIMA" ) ( t r a i n ,
t r a i n <- s e t [ c ( t r a i n_s t a r t : t r a i n_end ) , ] params ) ,
we = params $we
# c r e a t e a model ))
model <- model . f a c t o r y ( name ) ( t r a i n , })
params ) } ...
}
# make a p r e d i c t i o n
p r e d i c t e d <- Листинг 2. Код функции создания моделей
p r e d i c t . f a c t o r y ( name ) ( model , t e s t )
i f ( ! i s . null ( predicted ) ) { Функция predict.f actory [Листинг 3] осуществляет
# remember p r e d i c t i o n on t h i s day прогнозирование для переданной модели на указанном
r e s $CLOSE [ t e s t_i n d e x ] <- p r e d i c t e d [ 1 ] наборе данных. Для получения прогноза гибридной мо-
r e s $DATE[ t e s t_i n d e x ] <- t e s t_i n d e x
дели используется функция svm_and_arf ima, прин-
}
} цип работы которой был описан в разделе III-B.
p r e d i c t . f a c t o r y <- f u n c t i o n ( name ) {
# i n c a s e o f NAs i f ( name == "SVM" ) {
d e f i n e d I n d e x e s <- which ( ! i s . na ( r e s $CLOSE) ) r e t u r n ( f u n c t i o n ( model , s e t ) {
a c t u a l <- ( s e t $CLOSE) [ d e f i n e d I n d e x e s ] # svm has o v e r l o a d f o r p r e d i c t f u n c t i o n
p r e d i c t e d <- ( r e s $CLOSE) [ d e f i n e d I n d e x e s ] r e t u r n ( p r e d i c t ( model , s e t ) )
})
# c a l c u l a t e some m e t r i c s ( rmse , mse , mae , } e l s e i f ( name == "ARFIMA" ) {
R2 , . . . ) r e t u r n ( f u n c t i o n ( model , s e t ) {
r e s $ m e t r i c s <- g e t_m e t r i c s ( a c t u a l , # c o n v e r t s e t t o number o f days i f
predicted ) needed
return ( res ) n . ahead <- i f e l s e ( i s . numeric ( s e t ) ,
} s e t , l e n g t h ( s e t $DATE) )
Листинг 1. Код функции прогнозирования со скользящим окном r e t u r n ( p r e d i c t ( model , n . ahead =
n . ahead , do . p l o t =
Функция model.f actory [Листинг 2] возвращает FALSE) [ [ 1 ] ] $ F o r e c a s t )
})
функцию-конструктор, которая по переданным пара- } e l s e i f ( name == "SVM_AND_ARFIMA" ) {
метрам (train – тестовый набор и params – параметры r e t u r n ( f u n c t i o n ( model , s e t ) {
модели) создает конкретную модель, которая затем r e t u r n ( svm_and_a r f i m a ( model , s e t ) )
будет передана в функцию predict.f actory. })
} ...
model . f a c t o r y <- f u n c t i o n ( name ) { }
i f ( name == "SVM" ) { svm_and_a r f i m a <- f u n c t i o n ( model , s e t ) {
r e t u r n ( f u n c t i o n ( t r a i n , params ) { svm_model <- model $SVM
# r e t u r n f a c t o r y f o r SVM a r f i m a_model <- model $ARFIMA
# with s p e c i f i e d p a r a m e t e r s e p s i l o n , we <- model $we
c o s t , gamma
# p r e d i c t i n g CLOSE by o t h e r f e a t u r e s # g e t both p r e d i c t i o n s
r e t u r n ( svm (CLOSE ~ . , t r a i n , e p s i l o n = svm_p r e d i c t <-
params $ eps , c o s t = params $ c o s t , p r e d i c t . f a c t o r y ( "SVM" ) ( svm_model , s e t )
gamma = params $gamma) ) a r f i m a_p r e d i c t <-
}) p r e d i c t . f a c t o r y ( "ARFIMA" ) ( a r f i m a_model ,
} e l s e i f ( name == "ARFIMA" ) { set )

44
[9] Wikipedia. Autoregressive-moving average model. http://en.
# c a l c u l a t e weights wikipedia.org/wiki/Autoregressive_moving_average_model,
svm_w e i g h t <- ( sum ( we ) - we [ 2 ] ) / sum ( we ) 2018. [Online; accessed 21-January-2018].
a r f i m a_w e i g h t <- ( sum ( we ) - we [ 1 ] ) / [10] Dickey D. A. and Fuller W. A. Distribution of the estimators
sum ( we ) for autoregressive time series with a unit root. Journal of the
American statistical association, (366a):427–431, 1979.
[11] Chan T. H. Lye, C. T. and C. W. Hooy. Nonlinear analysis
# r e t u r n r e s u l t a s w e i g h t e d sum
of chinese and malaysian exchange rates predictability with
p r e d i c t e d <- svm_p r e d i c t * svm_w e i g h t + monetary fundamentals. Journal of Global Business and
a r f i m a_p r e d i c t * a r f i m a_w e i g h t Economics, (5):38–49, 2012.
return ( predicted ) [12] Tsay R. S. Analysis of financial time series. John Wiley & Sons,
} 2005.
[13] Y. Sehwan C. K. Lee and J. Jongdae. Neural network model
Листинг 3. Код функций осуществления прогнозов и построения
versus 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 comparison
VI. Заключение и дальнейшие исследования between hybrid approaches of ann and arima for indian stock
trend 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 technical
прогнозирования, а также используя дополнительные analysis: a study on klci. International Journal of Theoretical
and Applied Finance, vol. 2, (2):221–241, 1999.
технические индикаторы для построения модели SVM. [16] S. Kom Y. B. Wijaya and T. A. Napitupulu. Stock price
Стоит отметить, что модель ARIMA, как статисти- prediction: Comparison of arima and artificial neural network
ческий инструмент исследования временных рядов, methods—an indonesia stock’s case. 2nd International
Conference on Advances in Computing, Control and
такую возможность не предусматривает и имеет ряд Telecommunication Technologies (ACT ’10), Jakarta, Indonesia,
фундаментальных ограничений [31]. Также, предпола- pages 176–179, 2010.
гается исследовать практическую выгоду от подбора [17] Tay F. E. H. and Cao L. Application of support vector machines
параметров SVM другими алгоритмами (например, in financial time series forecasting. Omega, (4):309–317, 2001.
[18] Nakamori Y. Huang W. and Wang S. Y. Forecasting stock
генетическим алгоритмом). market movement direction with support vector machine.
В данной работе исследованы возможности и описа- Computers & Operations Research, (10):2513–2522, 2005.
на методика построения прогностической системы на [19] Duan W. Q. and Stanley H. E. Cross-correlation and the
predictability of financial return series. Physica A: Statistical
базе метода машинного обучения SVM и метода ста- Mechanics and its Applications, (2):290–296, 2011.
тистического исследования временных рядов ARIMA [20] Das S. P. and Padhy S. A novel hybrid model using
для прогнозирования логарифмов цен сырой (BRENT) teaching–learning-based optimization and a support vector
и легкой (Light) нефти, а также газа Natural Gas. Опи- machine for commodity futures index forecasting. International
Journal of Machine Learning and Cybernetics, (1):97–111, 2018.
саны необходимые предварительные преобразования [21] Shynkevich Y. et al. Forecasting price movements using
входных данных. Сделан вывод о превосходстве метода technical indicators: Investigating the impact of varying input
SVM над ARIMA. Рассмотрен метод комбинирова- window length. Neurocomputing, pages 71–88, 2017.
[22] Vapnik V. The nature of statistical learning theory. Springer,
ния моделей, который улучшает показатели метода New York (ISBN 0-387-94559-8), 1995.
ARIMA. [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 Ö. K. Predicting
[1] E. Panas and V. Ninni. Are oil markets chaotic? Energy direction of stock price index movement using artificial neural
Economics, (5):549–568, 2000. networks and support vector machines: The sample of the
[2] L.H. Ederington, C.S. Fernando, T.K. Lee, S.C. Linn, and A.D. istanbul stock exchange. Expert systems with Applications,
May. Factors influencing oil prices: A survey of the current pages 5311–5319, 2011.
state of knowledge in the context of the 2007-08 oil price
[25] Xie W. et al. A new method for crude oil price forecasting
volatility. Working Paper, Energy Information Administration,
based on support vector machines. International Conference on
Department of Energy, Washington, DC, 2011.
Computational Science. – Springer, Berlin, Heidelberg, pages
[3] Lombardi M. J. Anzuini, A. and P. Pagano. The impact of
444–451, 2006.
monetary policy shocks on commodity prices. Working Paper,
European Central Ban, 2010. [26] Rob J Hyndman. Cross-validation for time series. https://
[4] L. Kilian and C. Vega. Do energy prices respond to U.S. robjhyndman.com/hyndsight/tscv/, 2016. [Online; accessed 21-
macroeconomic news? A test of the hypothesis of predetermined January-2018].
energy prices. Review of Economics and Statistics, 2009. [27] Hsu C. W. et al. A practical guide to support vector
[5] Adewumi A. O. Adebiyi A. A. and Ayo C. K. Comparison of classification. 2003.
ARIMA and artificial neural networks models for stock price [28] Shou-Yang Wang Wei Huang, Yoshiteru Nakamori. Forecasting
prediction. Journal of Applied Mathematics, 2014. stock market movement direction with support vector machine.
[6] Z.G. Zhang J. J.Wang, J. Z. Wang and S. P. Guo. Stock Computers & Operations Research 32, page 2513–2522, 2005.
index forecasting based on a hybrid model. Omega, vol. 40, [29] CRAN. arfima: Fractional ARIMA (and Other Long Memory)
(6):758–766, 2012. Time Series Modeling. https://cran.r-project.org/package=
[7] G. Kenny A.Meyler and T. Quinn. Forecasting irish inflation arfima, 2018. [Online; accessed 21-January-2018].
using arima models. Technical Paper 3/RT/1998, Central Bank [30] CRAN. e1071: Misc Functions of the Department of Statistics,
of Ireland Research Department, 1998. Probability Theory Group (Formerly: E1071), TU Wien. https:
[8] Aye G. C. et al. Predicting brics stock returns using arfima //cran.r-project.org/package=e1071, 2018. [Online; accessed
models. Applied Financial Economics, (17):1159–1166, 2014. 21-January-2018].

45
[31] Petrică A. C. et al. Limitation of arima models in financial
and monetary economics. Theoretical and Applied Economics,
pages 19–42, 2016.

Developing forecasting models of oil price behaviour


using support vector machine (SVM) and ARIMA
Abstract—Production and consumption of oil are critical
factors for the economics of a number of countries, so the ability
to predict the behavior of its price is very important. There are
many 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 literature
review shows the advantages of SVM and ARIMA methods
in forecasting financial markets. In this paper, a technique for
constructing predictive models based on these two methods is
described. Conclusion is made that SVM model outperforms
ARIMA, that make it a good candidate for the energy prices
return prediction.
Index Terms—financial time series, oil prices, support vector
machine (SVM), ARIMA, financial prices forecasting

46
Recurrent Neural Network for Code Clone
Detection
Arseny Zorin Vladimir Itsykson
Peter the Great St.-Petersburg Peter the Great St.-Petersburg
Polytechnic University Polytechnic University
St.Petersburg, Russia St.Petersburg, Russia
E-mail: [email protected] E-mail: [email protected]

Abstract—Code clones are a duplicated code which degrades Significant efforts in writing reusable code: It is hard and
the software quality and hence increases the maintenance cost. time consuming to write reusable code. Perhaps, it is easier
Code clone detection is an important problem for software to maintain two cloned fragments than the efforts to produce
maintenance and evolution. Many researches have investigated
different techniques to automatically detect duplicate code in a general but probably more complicated solution [2].
programs exceeding thousand lines of code. In this article we Lack of ownership of the code to be reused: Code may be
propose an AI-based approach for detection of method-level borrowed or shared from another subsystem which may not be
clones in Java projects. This approach uses a recurrent neural modified because it may belong to a different department or
network with Siamese architecture for clone detection. A tool has even may not be modifiable (access not granted and/or stored
been developed in Java and Python to support the experiments
carried out and to validate the proposed approach. Finally, we in nonvolatile memory). In such situations, the only way of
provide some evaluation results and share the key stages of our reusing the existing code is to copy and paste with required
future work. adaptations [2].
Index Terms—code clone detection, machine learning, neural There are not all causes of clones occurrence.
networks, abstract syntax trees. Detecting clones is an important problem for software
maintenance. Despite the fact that previous research has
I. I NTRODUCTION demonstrated harmful impacts of code cloning, this is not
always the case. Also, it is not always necessary to refactor
A code fragment that was copied and pasted with major clones. Nonetheless, the ability to automatically detect two
or minor edits is called software duplicate or code clone. It similar fragments of code is critical in many areas, e.g.
has been studied that 30% of code in most of the software code simplification, code maintainability, plagiarism detection,
companies are code clones [1]. The most common complica- copyright infringement detection, malicious software detection
tion of code clones is software maintenance. Specifically, there and detection of bug reports. There are few clones detection
could be a bug present in one of the duplicated fragments, techniques known and used in practice. We favor Roy and
in this case, that bug has to be detected and fixed in other Cordys classification by their “internal source code repre-
identical fragments. The presence of duplicated but identical sentation” e.g. text-, token-, tree-, graph- and metric-based
bugs in many locations within a piece of software increases techniques [2].
the difficulty of software maintenance. The purpose of our project is to develop an AI-based method
Code clones can emerge in a software system due to various for clone detection. Our approach has several steps, firstly we
reasons (Fig. 1) [2]. One of them is copying and pasting of a are generating an Abstract Syntax Tree (AST). After that we
code fragment that could provide a reasonable starting point remove all nodes from AST that are not interesting to us.
for the implementation. Forking could be another cause of Next step is creating representations of tree tokens for feeding
clones occurring. The term forking is used by Kapser and them to pre-trained recurrent neural network. Last step of our
Godfrey[3] to mean the reuse of similar solutions with the approach is answer representation in human-readable format.
hope that they will be diverged significantly with the evolution This article contains five sections. Section II presents the re-
of the system. For example, when creating a driver for a search background and the related work. Section III describes
hardware family, a similar hardware family may already have the tool that has been developed. Section IV discusses the
a driver, and thus can be reused with slight modifications [2]. results obtained using our tool. Finally, Section V concludes
Merging of two similar systems: Sometimes two software the article.
systems of similar functionalities are merged to produce a new
II. BACKGROUND AND R ELATED W ORK
one. Although these systems may have been developed by
different teams, clones may produce in the merged system A. Basic definitions
because of the implementations of similar functionalities in Each article defines clones in its own ways. Below are the
both systems [2]. common definitions which are used throughout this article.

47
Type I - III clones indicate textual similarity, whereas Type
IV - semantic similarity. Our tool supposed to detect first three
types 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 which
consists of transformation and comparison phases. First part
is a source text transformation into an internal format, which
allows usage of more efficient comparison algorithm. Actual
matches were detected during the second phase.
The clone detection process begins from transforming
source code into representations suitable for accessing sim-
Fig. 1. Tree-diagram for the reasons of cloning
ilarity. As it has been already mentioned in Introduction,
detection techniques can be classified by their source code
representation.
Code fragment is a part of a source code needed to run Text-based techniques. Approaches of this type use little
a program. It can contain a function or a method, blocks or or no transformation of a source code before an actual compar-
sequences of statements [4]. ison. In most cases, a raw source code is used directly in the
Code clones two or more fragments of code that are similar clone detection process. Techniques in this category differ in
with respect to a clone type [4]. underlying string comparison algorithm. Comparing calculated
Code class is a set of clone pairs where each pairs is related signatures per line is one possibility to identify for matching
by the same relation between the two code fragments [4]. substrings.
Clone candidate is a clone pair reported by a clone detector Token-based techniques. This approach begins by trans-
[4]. forming a source code into a sequence of tokens and then
scanned for duplicated sub-sequences of tokens, and the
B. Types of clones corresponding original code is returned as clones. Matching
subsequences of tokens generally improves recognition power,
Generally there are four types of clones. but token abstraction has a tendency to admit more false
Type-I. Fragments that are identical to each other except positives [6].
for variations in comments and layout [2][5]. Tree-based techniques. This approach measures similarity
Type-II. Fragments that are identical to each other except of subtrees in syntactic representations. First of all, source
for variations and in identifiers name and literal values in programs are converted into parse trees or abstract syntax
addition to Type-I [2][5]. trees, which can then be processed using either tree matching
Type-III. Syntactically similar fragments that differ at the or structural metrics to find clones.
statement level. The fragments have statements added, modi- Graph-based techniques. This type of approach refers
fied or removed with each other with respect to each other in to semantic approaches and uses a static program analysis
addition to clone Type-II [2][5]. to provide more precise information than a simple syntactic
Type-IV. Fragments that are syntactically dissimilar, but similarity. In some approaches, a program is represented
implement the same functionality [2][5]. with a program dependency graph (PDG). The nodes of this

48
graph represent expressions and statements, while the edges estimating normalized probability distributions over the input
represent control and data dependencies. space. The absence of normalization saves us from computing
Metric-based techniques. This approach gathers a number partition functions that may be intractable. It also gives us
of metrics for code fragments, and then compare metrics vec- considerably more freedom in the choice of architectures for
tors rather than code or ASTs directly. Such technique involves the model [10].
fingerprinting functions, metrics calculated for syntactic like a
class, function, method or statement that provides values that
can be compared to find clones of these syntactic units. In
most cases, a source code is first parsed to an AST or Control
Flow Graph (CFG) representation to calculate the metrics.
Metrics are calculated from names, layouts, expressions and
control flow of functions. A clone is defined as a pair of whole
function bodies with similar metrics values.
D. Neural Networks
A neural network is a series of methods that attempt to
identify underlying relationships in a set of data by using
a process that mimics the way the human brain operates.
Neural networks have achieved state of the art performance
on similarity tasks, e.g. searching for similar pictures, photos
and text, this is the main reason why we are using neural
Fig. 3. Siamese RNN
networks in our approach.
Recurrent neural networks (RNN) can use their feedback
connections to store representations of recent input events in E. Related Work
form of activations. RNNs are naturally suited for variable-
length inputs like sentences, especially the Long Short-Term Neural network usage for clones detection tools is not a
Memory model [7]. LSTM sequentially updates a hidden-state new approach. Martin White et al. [11] developed an approach
representation, but these steps also rely on a memory cell based in part on language models. In their work they cast
containing four components: a memory state, an output gate clone detection as a recursive learning procedure designed to
that determines how the memory state affects other units, as adequately represent fragments that serve as constituents of
well as an input gate (and forget gate) that controls what is higher-order components. The purpose of deep learning is to
being stored in memory based on each new input and a current synchronize the source code representation that was used in
state. the clone detection process with the manner in which the code
Standard RNNs suffer from the vanishing gradient problem is conceptually organized. In other words, Martin White et al.
in which the backpropagated gradients become vanishingly use deep learning on preprocessing step.
small over long sequences [8]. The LSTM model is a solution Hui-Hui Wei and Ming Li [12] proposed an end-to-end
to this problem. Like the standard RNN, the LSTM sequen- deep feature learning framework for clone detection, namely
tially updates a hidden-state representation, but it introduces CDLH (Clone Detection with Learning to Hash), which si-
a memory state ct and three gates that control the flow of multaneously learn hash functions and representations of code
information through the time steps [9]. fragments via AST-based LSTM to take into account both the
Siamese architecture of RNN was used for clone detection lexical and syntactical aspects of source codes.
purposes [9]. This model is applied for assessing semantic S. Carter et al. [13] proposed a solution in the form of the
similarity between sentences. The Manhattan LSTM model is “Self-Organizing Map”. This performs a classification using an
outlined in Fig. 3 [9]. There are two LSTM networks, each unsupervised training phase. It had the additional advantage of
of them process one of the sentences in a given pair. This preserving any topological relationships between input vectors.
model uses LSTM to read in word-vectors representing each
III. M ETHODS
input sentence and employs its final hidden state as a vector
representation for each sentence. Subsequently, similarity be- This section describes the proposed approach for clone
tween these representations is used as a predictor of semantic detection in Java source code. Our tool has been developed
similarity. in Java and Python. It accepts Java project as the input and
Siamese architecture is an architecture of energy-based separates the functions/methods presented in it. Having defined
models (EBM). EBMs are used in situations where the en- the methods, we are building vector representations of tokens
ergies for various configurations must be compared in order for every method. These vectors are input vectors for pre-
to make a decision (classification, verification, etc.) [9]. The trained neural network that analyzes a project for clones.
advantage of EBMs over traditional probabilistic models, The overall process is carried out in three major stages:
particularly generative models, is that there is no need for pre-processing, detection and post-processing. All stages of

49
our approach are presented with a process illustrated on fig.
4.

Fig. 5. Mutation stages

of mutator we have mutated methods represented as token


sequence. 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 large
project (3507,5 KLOC) was used for network training. All
Fig. 4. Stages of work methods in selected projects were mutated for the subsequent
datasets generation.
The training set for a Siamese network consists of triplets
A. Pre-processing (x1 , x2 , y), where x1 and x2 are sequences and y ∈ {0, 1}
This stage includes the process of comments and whitespace indicates whether x1 and x2 are similar (y = 1) or dissimilar
removal. All files are being scanned for AST creation. During (y = 0). The aim of training is to minimize the distance in
the first step we are looking for useless tokens (such as an embedding space between similar pairs and maximize the
comments, white spaces etc.) and removing them. At the final distance between dissimilar pairs.
step we are creating vector representation of tokens (word2vec For effective training counterexamples are needed. In that
model) [14]. As another neural network was used for vector case, it was considered that source code of the project and
representation, it has to be trained. We used a project with code obtained from mutator are clones. On the other hand,
1953 KLOC (number of thousand lines of code, LOC). source codes of currently used project (part of it) and another
Another part of pre-processing is dataset selection. There project were considered as not clones (counterexamples).
are some benchmarks of known clones for testing detection
B. Detection
tools (for example, BigCloneBench[15]). BigCloneBench is a
collection of eight million validated clones within IJaDataset- The granularity of our approach is method-level. Methods
2.0, a big data software repository containing 25,000 open- can have different length, it means that vector representations
source Java systems. BigCloneBench contains both intra- for different methods can have different dimensions. In order
project and inter-project clones of the four primary clone to make “word embeddings” fixed-dimensional, a sequence-
types [15][16]. Despite the fact that there are few benchmarks to-sequence (seq2seq) model was used [17]. Sequence-to-
for our purposes, was decided to generate our own dataset. sequence models have enjoyed great success in a variety of
This decision was made to avoid behavior copying of already tasks, such as machine translation, speech recognition, and
existing tools. Self-written, so-called code mutator was used. text summarization.
Its essence is to generate an artificial clone, i.e. copy and paste The idea behind a seq2seq model is to use one LSTM to
lines of code, or delete them (Fig. 5). read the input sequence, one timestep at a time, to obtain
First step of our mutator is to generate a random number large fixed-dimensional vector representation, and then to use
from 0 to 2. This step allows us to figure out what type of another LSTM to extract the output sequence from that vector
mutation we will make. For example, if we obtained 0 as (fig. 6). The second LSTM is essentially a recurrent neural
mutation type we will select deleting lines, 1 - copying lines network language model except that it is conditioned on
and for 2 - we will stay method unchanged. After that we the input sequence. State of LSTMs hidden cells at the last
randomly decide how many lines will be modified and what moment of the encoder roll-out was used as fixed-dimensional
lines will be modified. No more than 10 percent of method vectors.
are mutated. The last step is mutation. On that step we delete Dataset for training seq2seq model is the same dataset as for
selected lines or copy selected lines and paste them to the Siamese neural network. We are using vector representations
randomly selected place inside method. As a returned type of 3507,5 KLOC project. Softmax cross entropy was used as

50
Each model was trained at least 10 epochs on one compute
node of Nvidia DGX-1. The average training time per epoch
for seq2seq model is 20 minutes and for Siamese network - 5
minutes.
The model that is being trained searches code clones on
the selected projects in few minutes. As a result, we found
approximately 83% of clones in each project. Searching for
clones in large projects, at the moment, is very labor-intensive
and resource-consuming. For example, it will require about 54
billion iterations to scan the whole project with 3507,5 KLOCs
clones.
Fig. 6. Sequence-to-sequence Current state of our project is a work in progress. In the next
phase of our project we will solve the problem of iterations
for a large amount of code. To solve this, we decided to use
loss function. Optimization of the parameters is done using Locality- Sensitive Hashing (LSH). LSH is an algorithm for
Adam optimization [18] and loss minimization. solving the approximate or exact Near Neighbor Search in high
Our Siamese network contains 10 layers of Bidirectional dimensional spaces. The nearest neighbor search problem is:
LSTM nodes. The output obtained from the final BLSTM layer given a set of n points P = {p1 , ..., pn } in a metric space
is projected through a single densely connected feedforward X with distance function d, pre-process P so as to efficiently
layer. To learn the input pair similarity, euclidean based answer queries for finding the point in P closest to a query
contrastive loss is used. Loss function is shown in equation point q ∈ X [7].
1. Basic LSH idea [20]:
• use LSH: a special hash function that would put points
2
(1 − y) ∗ Dw − y ∗ max2 {0, m − Dw } that are close together to the same point
L(x1 , x2 , y, w) = • if two points are close together in high-dimensional
2
(1) space, then they should remain close together after some
, where projection to a lower-dimensional space
• m > 0 — a margin, that defines a radius around Gw (x). This idea can be easily understood using the example show-
Gw is a parametric function ing in fig. 7. The picture shows how four items (represented
• Dw — euclidean distance between x1 and x2 . by the different colors) are located into buckets after applied a
• x1 , x2 , y — the labeled sample pair. hash function. As the green and the red item are placed in the
• w — parameter [19]. same bucket, we can conclude that those items are neighbors
or similar. Calling hash function only once opens the door to
C. Post-processing
possible errors due to the random nature of it. In the lower
The output from the previous phase is presented in the part of the image all items are placed in different buckets, so
form of clone pairs. Obtained clone pairs are pairs of vector it is impossible to conclude the similarities between them.
representations. To present results in a human-readable format,
obtained representations are fed into decoder (second LSTM
in 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 classes
or clusters, so that clone pairs within a cluster are highly
similar to one another, but very dissimilar to clone pairs in
other clusters.
IV. R ESULTS
To evaluate the proposed approach, a source code of several
Java projects has been used. The experimental analysis has
been carried out with a small-sized project of 2 KLOC to a
medium-sized project of 14 KLOC. In total, for testing we
selected five projects: three of them were fully mutated and Fig. 7. LSH example
other two were kept unchanged. On the current level of our
approach we are mutating the projects and testing them for We foresee on more stage in our future research where we
clones. will be improving dataset for Siamese RNN training. At the

51
moment datasets generated through a self-written “mutator” [12] Huihui Wei and Ming Li Supervised Deep Features for Software Func-
and obtained datasets have not got a high accuracy. To improve tional Clone Detection by Exploiting Lexical and Syntactical Information
in Source Code, Twenty-Sixth International Joint Conference on Artificial
the results of Siamese RNN working we have to generate Intelligence, 2017
datasets with a higher accuracy. [13] Clone detection in telecommunications software systems : a neural net
As was previously mentioned BigCloneBench is a clone approach, Technical report, University of Hertfordshire, 1994
[14] Thomas Mikolov and Ilya Sutskever and Kai Chen and Greg S Corrado
detection benchmark of clones. It was created for testing clone and Jeff Dean Distributed Representations of Words and Phrases and their
detection tools. This dataset is suitable for our tool testing. Compositionality, Advances in Neural Information Processing Systems
26, 2013.
V. C ONCLUSION [15] Jeffrey Svajlenko, Judith F. Islam, Iman Keivanloo, Chanchal K. Roy
and Mohammad Mamun Mia, Towards a Big Data Curated Benchmark
In this article we have proposed an AI-based approach to of Inter-Project Code Clones, IEEE International Conference on Software
detect method-level code clones. Our approach uses several Maintenance and Evolution, 2014.
recurrent neural networks on different stages of clones de- [16] Jeffrey Svajlenko and Chanchal K. Roy Evaluating clone detection
tools with BigCloneBench, IEEE International Conference on Software
tection. We could improve the precision and reduce the total Maintenance and Evolution, 2015.
comparison cost by increasing datasets accuracy and neural [17] Ilya Sutskever and Oriol Vinyals and Quoc V. Le Sequence to Sequence
network parameters changing. Learning with Neural Networks, NIPS, 2014.
[18] Diederik P. Kingma, Jimmy Ba Adam: A Method for Stochastic Op-
The main distinguishing feature of proposed method is timization, 3rd International Conference for Learning Representations,
using neural networks for clone detection. Comparing the 2015.
proposed method with the methods from the literature, it can [19] Raia Hadsell, Sumit Chopra, Yann LeCun Dimensionality Reduction by
Learning an Invariant Mapping, IEEE Computer Society Conference on
be concluded that neural networks were not used at the clone Computer Vision and Pattern Recognition, CVPR 2006.
search level, but only at the level of data preparation and [20] Piotr Indyk and Rajeev Motwani Approximate Nearest Neighbors:
response processing. Towards Removing the Curse of Dimensionality, Theory of Computing,
2000
We have implemented the above mentioned method in
practise to scan a small and medium sized project for code
clones, and the obtained results indicate that the proposed
method is not at the final stage and can be improved. The early
experiments prove that with help of this method we could find
more than 80% of clones. However, for more accurate results
it is necessary to conduct more experiments, especially on real
projects.
This article was written with the support of the Siemens
Grant for Masters and PhD students.
R EFERENCES
[1] Chanchal K. Roy and James R. Cordy, An Empirical Study of Function
Clones in Open Source Software, WCRE ’08 Proceedings of the 2008
15th Working Conference on Reverse Engineering. Pages 81-90
[2] Chanchal K. Roy and James R. Cordy A Survey on Software Clone
Detection 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 on
Reverse Engineering, 2006
[4] Abdullah Sheneamer and Jugal Kalita A Survey of Software Clone
Detection Techniques, International Journal of Computer Applications
137, 2016.
[5] Marat Akhin and Vladimir Itsykson Clone detection: Why, what and
how?, 6th Central and Eastern European Software Engineering Confer-
ence, 2010
[6] Chanchal K. Roy and James R. Cordy and Rainer Koschke Comparsion
and evaluation of code clone detection techniques and tools: A qulitative
approach, 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 training
recurrent neural networks. Journal of Machine Learning Research, 2013.
[9] Jonas Mueller and Aditya Thyagarajan Siamese Recurrent Architectures
for 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 Workshop
on Artificial Intelligence and Statistics, 2005
[11] Marti nWhite and Michele Tufano and Christopher Vendome and Denys
Poshyvanyk Deep Learning Code Fragments for Code Clone Detection,
Proceedings of the 31st IEEE/ACM International Conference on Auto-
mated Software Engineering, 2016.

52
Автоматизация проверки корректности
использования программных библиотек

Максим Гусев Владимир Ицыксон


Санкт-Петербургский политехнический Санкт-Петербургский политехнический
университет Петра Великого университет Петра Великого
Email: [email protected] Email: [email protected]

Аннотация. В статье описывается метод II. ОБЗОР МЕТОДОВ ТЕСТИРОВАНИЯ НА ОСНОВЕ


автоматизированной динамической проверки корректности МОДЕЛЕЙ
протоколов использования программных библиотек.
Основная идея метода состоит в сравнении разработанных Динамические методы проверки корректности
спецификаций программных библиотек с трассами протоколов использования библиотек на основе
выполнения инструментированной программы. Результатом спецификаций имеют непосредственное отношение к
сравнения является отчет с найденными несоответствиями тестированию на основе моделей (Model Based Testing) и
программы спецификации программной библиотеки. тестированию спецификаций.
Разработанный метод был реализован в виде прототипа
инструмента для анализа Java-программ, который был В рамках подхода к тестированию на основе моделей и
апробирован на ряде тестовых и реальных программных спецификаций существует определенное количество
проектов. Эксперименты показали работоспособность методов и инструментов, каждый из которых предлагает
подхода и инструмента. собственный подход к решаемой задаче.
I. ВВЕДЕНИЕ SibylFS [1] — инструмент, использующий формальную
Современные библиотеки достаточны сложны и их спецификацию в качестве тестового оракула для
использование становится нетривиальной задачей. тестирования POSIX-совместимых и других файловых
Разработчикам необходимо абсолютное понимание всех систем. Операционные системы критически зависят от
аспектов работы с библиотекой: сценарии работы с поведения файловых систем, но их поведение отличается во
библиотекой, подготовка входных данных, интерпретация многих деталях как между реализациями, так и в рамках
результатов, влияние на окружение и т.п. разных версий одной реализации. SibylFS предоставляет
математически строгую модель поведения файловой
Для правильного использования библиотеки системы, которая определяет диапазон допустимых
необходимо иметь формализованное описание протокола действий файловой системы для любой
общения с библиотекой — спецификацию, позволяющую последовательности системных вызовов в пределах
контролировать корректность взаимодействия основного рассматриваемой области, и которая может использоваться
приложения и библиотеки. в качестве тестового оракула, чтобы решить, допустима ли
В данной работе мы представляем подход, основанный рассматриваемая трасса с точки зрения модели.
на автоматизированной динамической проверке SPEST [2] (SPEcification based teSTing) — инструмент
корректности протокола использования программной тестирования по стратегии “черного ящика”, который
библиотеки, и его реализацию в виде инструмента для использует простой язык создания формальных
анализа Java-программ. Под корректностью здесь спецификаций для генерации модульных тестов.
понимается следование приложением протоколу доступа к Спецификации хранятся в виде аннотированных
библиотеке, заложенного в ее спецификации. комментариев. Синтаксис инструмента позволяет
Оставшаяся часть статьи организована следующим пользователю создавать логические выражения, которые
образом. Во втором разделе представлен обзор состояния описывают ожидаемое поведение кода. Пользователь также
дел в предметной области, рассмотрены методы описания может провести валидацию на синтаксическую
моделей и инструменты, реализующие эти методы. В корректность и корректность типов благодаря возможность
третьем разделе представлено краткое описание компиляции спецификации.
формализма, используемого для описания программной GraphWalker [3] – инструмент, принимающий в качестве
библиотеки. В четвертом разделе описан разработанный входных данных описание программы как конечного
подход. В пятом разделе описана реализация автомата. Модель впоследствии используется для
предложенного подхода для языка Java. В заключении генерации тестов (трасс). Подходит для онлайн и офлайн
представлены результаты и сформированы направления тестирования. Разработан на языке Java.
дальнейших исследований.

53
JSXM [4] – инструмент, который использует модели Таким образом, обзор показал, что для решения задачи
JSXM. Они представляют собой специальный тип проверки корректности протокола взаимодействия с
расширенных конечных автоматов, называемых Stream X- произвольными библиотеками не существует подходящих
Machines (SXM). SXM позволяют описать как поток инструментов. То есть представленная работа актуальна.
управления, так и данные системы. Наиболее важным
преимуществом SXM является тот факт, что при достаточно III. ФОРМАЛИЗМ ДЛЯ СПЕЦИФИКАЦИИ БИБЛИОТЕК
хорошем описании условий, можно гарантировать, что
сгенерированные тестовые примеры показывают все В данной работе для задания спецификаций библиотек
функциональные несоответствия в реализации. используется формализм, описанный в [9]. Формальная
Сгенерированные абстрактные тесты могут быть спецификация библиотеки в соответствии с ним
переведены в JUnit-тесты. определяет:

Инструмент Modbat [5] базируется на использовании  описание API библиотеки, то есть сигнатуру
расширенных конечных автоматов и специализируется на функций, состоящую из имен функций, перечня
тестировании API. Пользователь определяет и компилирует параметров и их типов и типа возвращаемого
модель, которая затем исследуется Modbat и выполняется значения;
на тестируемой системе. Ошибочные тестовые прогоны  поведенческую модель библиотеки, задаваемую
фиксируются как трассы с наличием ошибок. Modbat системой взаимодействующих расширенных
предоставляет язык моделирования DSL, основанный на конечных автоматов;
языке Scala, с функциями для вероятностных и
недетерминированных переходов, компонентных моделей с  описание окружения.
наследованием и исключениями. Модель, используемая
Поведенческая модель библиотеки является
Modbat, совместима с Java-байткодом.
определяющей для данной работы, поэтому рассмотрим ее
ModelJUnit [6] представляет собой набор Java-классов и подробней.
является расширением JUnit. ModelJUnit позволяет создать
Все объекты библиотеки, имеющие свой жизненный
модели на базе конечных автоматов и расширенных
цикл, задаются с помощью расширенных конечных
конечных автоматов (в виде Java-классов) и генерировать
автоматов.
тесты на основе этих моделей, затем вычислять различные
метрики. Состояния автомата определяют текущую позицию в
Инструмент TestOptimal [7] поддерживает жизненном цикле. Каждый объект имеет начальное
моделирование на базе конечных автоматов и расширенных состояние, также может специфицироваться финальное
конечных автоматов с применением нескольких состояние, в котором объект прекращает существование
алгоритмов генерации тестовых примеров. Он имеет (например, при закрытии файла дескриптор файла
различные плагины для онлайн-тестирования веб- уничтожается).
приложений, приложений Windows, баз данных и веб- Переходы автомата из одного состояния в другое
сервисов и т. д. инициируются вызовами функций API библиотеки.
UniTESK [8] — технология тестирования, основанная на Возможность вызова функции API в текущем состоянии
формальных моделях (или спецификациях) требований к определяется охраняемыми условиями (guarded conditions).
поведению программных или аппаратных компонентов. В Некоторые вызовы API могут оставлять автомат в том же
UniTESK моделируется поведение тестируемой системы. состоянии, например, функции read/write при работе с
Основной вид моделей, используемый в этой технологии — файлами.
программные контракты, однако для генерации Помимо перевода автомата в новое состояние вызов
нетривиальных тестовых последовательностей в ней функции API может также порождать дочерний автомат,
используются автоматные модели. если такое предусмотрено логикой функционирования
В приведенном обзоре представлено лишь несколько библиотеки. Например, вызов socket(…) создает новый
методов и практических инструментов, позволяющих дочерний автомат для библиотеки bsd-socket.
организовывать тестирование, управляемое моделями Для более глубокого задания семантики библиотеки в
(model-based testing — MBT). Отметим, что только подход, поведенческом описании присутствуют также
используемый в SibylFS, использует формальную семантические действия, связывающие конкретные вызовы
спецификацию библиотеки именно для проверки API с семантическим доменом, в котором функционирует
корректности протокола взаимодействия с файловыми библиотека.
системами. Остальные инструменты предлагают либо
работать с моделью исследуемой программы, либо Для разработчика поведенческое описание библиотек
использовать контракты для тестирования. Отметим, что нагляднее представлять не в алгебраическом, а в
нерассмотренный в обзоре подход learning-based testing (и графическом виде. На рис. 1 представлен фрагмент
соответствующие инструменты), является лишь развитием поведенческого описания Java-классов FileReader и
подхода MBT, и инструменты на его базе так же не решают BufferedReader, представленных в пакетах java.io.FileReader
задачу проверки следования программы протоколу и java.io.BufferedReader соответственно.
библиотеки.

54
IV. ПОДХОД К ПРОВЕРКЕ КОРРЕКТНОСТИ ПРОТОКОЛА ними. В листинге 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 — автомат создан;
Рис. 1: Фрагмент поведенческой модели Java-классов
FileReader и BufferedReader  Final — автомат завершил свой жизненный цикл.

Трасса отдельного объекта — это протокол всех


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

55
C. Формирование трасс
На этом этапе инструментированная программа
запускается с целью формирования трассы. Информация,
имеющаяся в трассе, позволяет идентифицировать типы
объектов, конкретные объекты, соответствующие
автоматам модели, а также вызовы API, соответствующие
конкретным переходам. Полный анализ трассы позволяет
соотнести протокол поведения программы с моделью
библиотеки.
D. Проверка корректности трасс
Последний этап — проверка корректности трасс на
Рис. 2: Этапы разработанного метода модели в соответствии с формальной спецификацией. Эта
Для описания библиотеки также используются четыре проверка заключается в анализе соответствия полученной
типа переходов: трассы спецификации библиотеки. В ходе проверки
контролируется:
 CallEdge — вызов метода;
 корректность завершающих состояний всех
 ConstructorEdge — вызов конструктора автомата; созданных объектов программы. Для этого
проверяется достижение всеми созданными
 AutoEdge — неявный переход, используется, если
объектами библиотеки состояний соответствующих
сущность может изменять свое состояние без явного
автоматов, помеченными как Final;
внешнего воздействия;
 корректность выполнения переходов автоматов из
 LinkedEdge — связанный переход, предназначен
одного состояния в другое. Для этого для каждого
создания дочернего автомата. Используется, когда
изменение состояния объекта, инициированного
вызов функции API приводит к созданию нового
вызовом API, ищется соответствующий переход в
автомата определенного типа.
спецификации библиотеки. Если соответствующий
Подробное описание предметно-ориентированного переход является с точки зрения библиотеки
языка можно найти в [10]. недопустимым, то фиксируется нарушение
протокола использования библиотеки.
Разработчик, анализирующий корректность
функционирования программного проекта с точки зрения V. СОЗДАНИЕ ИНСТРУМЕНТА ПРОВЕРКИ
соответствия протоколу использования библиотеки, для КОРРЕКТНОСТИ ПРОТОКОЛА ИСПОЛЬЗОВАНИЯ
начала создает формальное описание библиотеки на основе БИБЛИОТЕКИ
документации или использует спецификацию, созданную Сформулируем требования к разрабатываемому
ранее авторами библиотеки или другими разработчиками. инструменту, который реализует предложенный подход.
Разрабатываемый инструмент должен:
B. Инструментирование программы
Второй этап — подготовка исходного текста проекта к  корректно обрабатывать многофайловые проекты
формированию трасс. Для этого исходный код на языке Java версии 8;
специальным образом инструментируется.  поддерживать формат DSL для языка спецификаций
Инструментирование происходит таким образом, чтобы библиотек, описанного в [10];
при формировании трассы была возможность получить всю
необходимую при анализе информацию о действиях со  Обеспечивать автоматизацию анализа программы:
всеми объектами целевой библиотеки: o инструментирование программы,
 место вызова функции в программном коде; управляемое моделью библиотеки;

 принадлежность вызова к объекту и библиотеке; o запуск инструментированной программы и


формирование трассы;
 идентификатор объекта;
o анализ трассы на соответствие
 тип вызова функции. спецификации;
Процесс инструментирования управляется o формирование отчета.
спецификацией библиотеки для того, чтобы
результирующий протокол был компактным и содержал  быть кроссплатформенным и работать под
информацию, касающуюся только целевой библиотеки. управлением операционных систем Windows, Linux
и macOS.
В качестве языка разработки инструмента авторами
выбран современный объектно-ориентированный язык

56
Kotlin, так как используемый в подходе DSL [10] В строке 5 задается конечное состояние автомата,
реализован на языке Kotlin. которое он должен принять к моменту завершения работы,
в противном случае анализатор выдаст предупреждение. В
Рассмотрим реализацию каждого этапа в приведенном примере таким состоянием является
разрабатываемом инструменте анализа. closedBufferedReader.
Первый этап — создание формальной спецификации Оставшаяся часть спецификации задает переходы
Java-библиотеки на внутреннем DSL языка Kotlin. автомата. В приведенном примере имеется 3 перехода:
В листинге 2 представлен фрагмент описания строки 6–15, 16–21 и 21–27.
спецификации библиотеки java.io.BufferedReader. Первый переход (строки 6–15) отражает
Приведенный программный код является фрагментом DSL, инициализацию объекта типа BufferedReader и имеет тип
отвечающим за описание конечного автомата и ConstructorEdge. Параметр src задает исходное состояние, а
отражающим набор его состояний и корректных переходов dst — следующее состояние автомата.
между этими состояниями.
1 val bufferedReader = StateMachine(name = Дополнительно, каждый переход может
"BufferedReader") характеризоваться параметрами param, описывающими
2 val specifiedBufferedReader = State(name = особенности перехода в новое состояние. Анализ
3 "SpecifiedBufferedReader", machine = bufferedReader)
4 val closedBufferedReader = State(name = "closed", параметров в текущей реализации не осуществляется, его
machine = bufferedReader) включение планируется в следующие версии.
5 bufferedReader.ending = closedBufferedReader.name
6 ConstructorEdge( Пример перехода представлен в листинге 5.
7 machine = bufferedReader,
8 src = bufferedReader.getConstructedState(), BufferedReader in;
9 dst = specifiedBufferedReader, …
10 param = listOf(EntityParam( in = new BufferedReader(
11 machine = inputStreamReader, new InputStreamReader(fromclient.getInputStream()));
12 state = specifiedInputStreamReader
13 ) Листинг 5: Инициализация объекта путем вызова
14 )
15 )
конструктора
16 CallEdge(
17 machine = bufferedReader, Второй переход (строки 16–21) имеет тип CallEdge и
18 src = specifiedBufferedReader, описывает поведение автомата при вызове метода readLine.
19 dst = specifiedBufferedReader, После вызова метода автомат остается в прежнем
20 methodName = "readLine"
21 ) состоянии (например, при вызове функции из листинга 6).
22 CallEdge(
in.readLine();
23 machine = bufferedReader,
24 src = specifiedBufferedReader,
25 dst = closedBufferedReader, Листинг 6: Вызов метода, не меняющий состояние
26 methodName = "close" автомата
27 )
Листинг 2: Пример описания java.io.BufferedReader Третий переход (строки 22-27) также имеет тип
CallEdge и задает поведение автомата при вызове метода
В строке 1 создается новый конечный автомат, а также close().
задается название автомата, отвечающего за объекты
класса BufferedReader. В строках 2–4 задаются состояния, Второй этап — инструментирование программы. В
в которых может находиться автомат bufferedReader: текущей реализации для этого используется аспектно-
specifiedBufferedReader и closedBufferedReader. Состояние ориентированный подход, реализованный в AspectJ [11].
автомата specifiedBufferedReader соответствует такому Инструментированию подвергается рабочий проект
состоянию экземпляра класса BufferedReader, когда задан совместно с имеющимися тестами. Для удобства
источник, из которого будет проводиться чтение. последующего анализа в инструменте используется
Примером перехода в такое состояние может служить, формат JSON для хранения трасс программы.
например, код из листинга 3. Третий этап — формирование трассы.
BufferedReader br = Инструментированная программа запускается на
new BufferedReader(new FileReader(args[i]));
имеющихся тестах с целью формирования набора трасс.
Листинг 3: Пример кода, переводящий автомат в Фрагмент полученной трассы в формате JSON представлен
состояние specifiedBufferedReader в листинге 7.
Строка 4 задает закрытое состояние автомата Последний этап — анализ полученных трасс с
closedBufferedReader, названное closed. Примером использованием формальной спецификации библиотеки и
перехода в такое состояние может служить код из листинга выдача отчета пользователю.
4. Разработанный инструмент позволяет находить
bufferedReader.close(); нарушения в использовании библиотек, такие как:
Листинг 4: Пример кода, переводящего автомат в  отсутствие корректного завершения работы с
финальное состояние объектом библиотеки (например, незакрытый
файловый дескриптор или сокет);

57
 ошибочный повторный вызов функции библиотеки Второй тип ошибок — некорректный повторный вызов
(например, повторная последовательная функции библиотеки. Он также обнаруживается
инициализация файла); инструментом, хотя в реальных проектах встречается
 нарушение порядка использования функций только при очень сложной логике программ, когда
(например, запись в файл до инициализации причиной повторного вызова является не результат
дескриптора); опечатки, а объединение нескольких ветвей управления.
 и т.п. Пример простейшего кода представлен в листинге 10,
{ диагностика инструмента — в листинге 11. Логика работы
"name" : "<init>", инструмента строится по следующему принципу. В
"filename" : "test.java",
"line" : 14, строках 4 и 6 приведено последовательное определение
"type" : "java.io.BufferedReader", экземпляра класса Socket без промежуточных вызовов,
"callerName" : "socketIO",
"kind" : "constructor-call", переводящих объект fromserver в другое состояние. Таким
"args" : [ "java.io.FileReader@47e58f66" ], образом объект после первого определения попадает в
"id" : "java.io.BufferedReader@535dc0ca", состояние, в котором повторное определение не описано в
"place" : "before"
}, { качестве возможного перехода, и инструмент сообщает об
"name" : "readLine", этом в отчете.
"filename" : " test.java",
"line" : 15, 1 public class client {
"type" : "java.io.BufferedReader", 2 try{
"callerName" : "socketIO", 3 Socket fromserver;
"kind" : "method-call", 4 fromserver = new Socket (“localhost”, 44444);
"args" : [ ], 5 ...
"id" : "java.io.BufferedReader@535dc0ca", 6 fromserver = new Socket (“localhost”, 33333);
"place" : "before" 7 ...
}, { 8 fromserver.close();
"name" : "close", 9 ...
"filename" : " test.java",
"line" : 18, Листинг 10: Ошибочный повторный вызов функции
"type" : "java.io.BufferedReader", библиотеки
"callerName" : "socketIO",
"kind" : "method-call", Row 4 belongs to Socket in test.java should not be after
"args" : [ ], row 6
"id" : "java.io.BufferedReader@535dc0ca",
"place" : "before" Листинг 11: Диагностическое сообщение инструмента
}
при обнаружении повторного вызова
Листинг 7: Возможный фрагмент трассы объекта
Был создан ряд искусственных примеров для оценки
BufferedReader
работоспособности инструмента. Спецификация для
Рассмотрим примеры таких ошибок и реакцию на них следующих примеров приведена в [].
разработанного инструмента. 22 BufferedReader in;
23 PrintWriter out;
Одной из самых распространённых ошибок является 24
некорректное завершение жизненного цикла объекта (как, 25 ServerSocket servers = null;
26 Socket fromclient = null;
например, экземпляры классов BufferedReader и FileReader 27
в листинге 8 [12]). В листинге 9 показан фрагмент отчета 28 try {
инструмента с обнаруженными ошибками. 29 servers = new ServerSocket(10123);
30 } catch (IOException e) {
43 public class Test6{ 31 System.out.println("Couldn't listen to port
44 public String method (String name) throws 44444");
FileNotFoundException, MalformedURLException { 32 System.exit(-1);
45 FileReader fr = new FileReader (“a.b”); 33 }
46 BufferedReader br = new Buffered Reader(fr); 34
47 if (name == null) return null; 35
48 String s = null; 36 try {
49 try { 37 System.out.print("Waiting for a client...");
50 s = br.readLine(); 38 fromclient = servers.accept();
51 } catch (IOException ioe){ 39 System.out.println("Client connected");
52 } 40 } catch (IOException e) {
53 URL u = new URL(s); 41 System.out.println("Can't accept");
54 return s; 42 System.exit(-1);
55 }} 43 }
44
Листинг 8: Пример кода, с некорректным завершением 45 in = new BufferedReader(new
InputStreamReader(fromclient.getInputStream()));
жизненного цикла объекта 46 out = new PrintWriter(fromclient.getOutputStream(),
Object belongs to FileReader in row 45 of Test6.java should true);
be closed. 47 String input;
Object belongs to BufferedReader in row 46 of Test6.java 49 System.out.println("Wait for messages");
should be closed. 50 while ((input = in.readLine()) != null) {
51 if (input.equalsIgnoreCase("exit")) break;
52 out.println("S ::: " + input);
Листинг 9: Диагностическое сообщение инструмента 53 System.out.println(input);}
при обнаружении объектов с незавершенным жизненным Листинг 12: Пример кода с ошибками типа
циклом “Незавершенный жизненный цикл объекта”

58
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\ объекту, но и коллекции (см. листинг 19).
test1.java should be closed
...
Object belongs to BufferedReader in row 49 of C:\testLM\1\
98 FileWriter fw1 = null;
test1.java should be closed
99
Object belongs to PrintWriter in row 51 of C:\testLM\1\
100 fw1 = new FileWriter(FILENAME1);
test1.java should be closed
101
Листинг 13: Ошибки, найденные во фрагменте из 102 FileWriter fw2 = null;
листинга 12 103
104 fw2 = new FileWriter(FILENAME2);
В листинге 12 представлен простейший пример Java- 105
106
сервера, в котором было найдено 4 ошибки (см. листинг 107 BufferedWriter bw1 = new BufferedWriter(fw1);
13). 108 BufferedWriter bw2 = new BufferedWriter(fw2);
109
Искусственно внесем ошибку в спецификацию: теперь 110 bw1.close();
111 bw2.close();
финальным состоянием будет specifiedBufferedReader (см. 112 fw1.close();
листинг 14). Так как объект будет попадать в финальное 113 fw2.close();
состояние, то инструмент не выдаст предупреждений. 114
115 Vector<BufferedWriter> list = new Vector<>();
val bufferedReader = StateMachine(name = "BufferedReader") 116 bw1 = new BufferedWriter(fw1);
val specifiedBufferedReader = State(name = 117 bw2 = new BufferedWriter(fw2);
"SpecifiedBufferedReader", machine = bufferedReader) 118 list.add(new BufferedWriter(new
val closedBufferedReader = State(name = "closed", machine = FileWriter(FILENAME1)));
bufferedReader) 119 list.add(new BufferedWriter(new
bufferedReader.ending = specifiedBufferedReader.name FileWriter(FILENAME2)));
...
Листинг 14: Добавление искусственной ошибки в
спецификацию Листинг 18: Корректное завершение жизненного цикла
объектов
После добавления в программу строк из листинга 15 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\
55 out.close(); test6.java should be closed
56 in.close(); Object belongs to BufferedWriter in row 118 of C:\testLM\6\
57 fromclient.close(); test6.java should be closed
58 servers.close(); Object belongs to BufferedWriter in row 119 of C:\testLM\6\
Листинг 15: Корректное завершение жизненного цикла test6.java should be closed
объектов Листинг 19: Корректное завершение жизненного цикла
объектов
Внесем другую ошибку в спецификацию: теперь при
вызове функции accept() в соответствии со спецификацией 7 Socket soc = null;
8 String str = null;
сокет должен переходить в закрытое состояние (см. 9 BufferedReader br = null;
листинг 16). 10 DataOutputStream dos = null;
11 BufferedReader kyrd = new BufferedReader(new
LinkedEdge( InputStreamReader(System.in));
src = socket.getConstructedState(), 12 try {
dst = specifiedSocket, 13 soc = new Socket(InetAddress.getLocalHost(),
edge = CallEdge( 11095);
machine = serverSocket, 14 br = new BufferedReader(new
src = specifiedServerSocket, InputStreamReader(soc.getInputStream()));
dst = closedServerSocket, 15 dos = new DataOutputStream(soc.getOutputStream());
methodName = "accept" 16 } catch (UnknownHostException uhe) {
) 17 System.out.println("Unknown Host");
) 18 System.exit(0);
Листинг 16: Добавление искусственной ошибки в 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) {
сокета (см. листинг 17), так как после строки 38 листинга 23 str = kyrd.readLine();
24 dos.writeBytes(str);
12 сокет будет находиться в закрытом состоянии, то вызов 25 dos.write(13);
функции close() в строке 58 будет пытаться повторно 26 dos.write(10);
перевести его в закрытое состояние, что противоречит 27 dos.flush();
28 String s;
спецификации. 29 s = br.readLine();
30 System.out.println("From server :" + s);
Row 59 belongs to ServerSocket in C:\testLM\5\test5.java
31 if (s.equals("exit")) {
can not be used after row 38
32 break;
Листинг 17: Ошибка при повторном вызове функции 33 }
close() 34 }
Листинг 20: Фрагмент кода клиентской части
Рассмотрим листинг 18. В результате работы приложения
инструмента ожидаем получить 4 ошибки, связанные с
некорректным завершением жизненного цикла Спецификацию можно было бы улучшить и считать
экземпляров класса BufferedReader. Программа корректно поведение программы ошибочным, когда экземпляры

59
классов BufferedWriter и FileWriter не используются перед экземпляры классов BufferedReader (169), ServerSocket (2)
вызовом метода close(). и FileReader (131) не были “закрыты”, то есть не перешли в
финальное состояние в соответствии со спецификацией. В
Рассмотрим результаты работы инструмента для связи с тем, что тестирование проводилось на хорошо
интерактивного клиент-серверного взаимодействия (см. отлаженных проектах, то серьезных ошибок, которые
листинги 20, 21 и 22). Клиент отправляет сообщения на позволяет обнаружить инструмент с текущим языком
сервер, сервер в свою очередь отображает их до тех пор, описания спецификаций, найдено не было.
пока не получит сигнал завершения работы. Инструмент
ожидаемо показал правильный результат: 2 ошибки, Эксперименты на реальных проектах показали
связанные с некорректным завершением жизненного цикла работоспособность подхода и инструмента.
экземпляров классов ServerSocket и BufferedReader. Интерес
представляла оценка правильности сбора трассы для VI. ЗАКЛЮЧЕНИЕ
такого рода приложений. В ходе проведения работы был предложен подход,
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) {
способный анализировать Java-программы, использовать
148 System.out.println("Server failed to accept"); спецификации библиотек, написанные на внутреннем DSL
149 System.exit(1); языка Kotlin, и обнаруживать определенный класс
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 случая, когда позволяет разработчику более глубоко понимать

60
процессы, происходящие в программном [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.
Разработанный прототип инструмента на базе Kotlin- [5] Artho C. V. et al. Modbat: A model-based API tester for event-driven
DSL и AspectJ для анализа Java-программ показал свою systems //Haifa Verification Conference. – Springer, Cham, pp. 112-128,
2013.
работоспособность. Основным достоинством реализации с
использованием AspectJ для динамического сбора трассы [6] Utting M. et al. The ModelJUnit model-based testing tool, 2007.
является полная поддержка всех особенностей языка и Java- [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.
Простота используемого DSL накладывает
[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
внешнему DSL для спецификации библиотек, интеграции с
другими инструментами обеспечения качества
программных систем и расширению спектра DEVELOPMENT OF THE METHOD FOR VERIFYING
поддерживаемых языков. LIBRARY PROTOCOL USAGE CORRECTNESS

Работа проведена при поддержке стипендиальной Maxim Gusev, Vladimir Itsykson


программы компании Siemens в Санкт-Петербургском 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
[1] Tom Ridge, David Sheets, Thomas Tuerk, Andrea Giugliano, Anil execution trace. The result of the comparison is produced report
Madhavapeddy, and Peter Sewell. SibylFS: formal specification and
oracle-based testing for POSIX and real-world file systems. In with list of violations of library specification. The developed
Proceedings of the 25th ACM Symposium on Operating Systems method was implemented as a pilot tool for analysis of Java-
Principles (SOSP), Monterey, CA, October 2015. programs. The tool was successful tested on series of artificial
[2] Corrigan Johnson. SPEST - A Tool for Specification-Based Testing. and industrial projects. An evaluation shows applicability of
англ., url: http://digitalcommons.calpoly.edu/cgi/ approach to real projects.
viewcontent.cgi?article=2675&context=theses.
[3] O lsson N., Karl K. Graphwalker: The open source model-based testing
tool., 2015.

61
NOTES
seim-conf.org

You might also like