Recurrent Neural Network For Code Clone Detection
Recurrent Neural Network For Code Clone Detection
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
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
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
3
Message from the Editors
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
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]
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
объекта для данной задачи решалась сопоставлением зультаты применения предложенного метода оценки
в наборах данных ключевого поля 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
12
Рис. 3. Результаты оценки качества данных для эксперимента с футболистами
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%
игрок
20
Таблица XIII
МАТРИЦА ВЫПЛАТ (ВЫГОДНО СТАВИТЬ НОЖНИЦЫ)
Таблица 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
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 шаге игры
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
алгоритма.
Нашей ближайшей задачей является адаптация и
Frequency
игр.
СПИСОК ЛИТЕРАТУРЫ
5
Наука, 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.
23
Оценка эффективности извлечения признаков
из изображений для построения
рекомендательных систем в социальных сетях
Александр Карачев Дмитрий Бугайченко
Математико-механический факультет Математико-механический факультет
Санкт-Петербургский Государственный Университет Санкт-Петербургский Государственный Университет
Санкт-Петербург, Российская Федерация Санкт-Петербург, Российская Федерация
[email protected] [email protected]
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)
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 Неизменяемый
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
СРАВНИТЕЛЬНЫЕ ПОКАЗАТЕЛИ НА ЛОГИСТИЧЕСКОЙ РЕГРЕССИИ
Таблица II
ПОКАЗАТЕЛИ ПРИ ВАЛИДАЦИИ ПО ВРЕМЕНИ
30
Тексто-независимая идентификация по голосу
Даниил Никулин Владимир Тутыгин
Санкт-Петербургский Санкт-Петербургский политехнический
Академический университет университет Петра Великого
Email: [email protected] Email: [email protected]
Аннотация — В статье произведен обзор и анализ На рисунке 1 представлена общая схема работы
методов и алгоритмов биометрической аутентификации на системы в каждом из режимов. Как можно заметить, эти
основе тексто-независимой идентификации на динамических режимы весьма похожи. Обоим для работы необходимо
голосовых характеристиках. Предложен набор методов и захватить речевой аудио поток и вычислить его основные
алгоритмов, способный решать задачу тексто-независимой признаки. Отличие же состоит в механизмах работы с
идентификации в условиях сильных шумов, реализованный этими признаками. При регистрации, признаки
в среде MATLAB. Произведено тестирование методов в необходимо запомнить для использования в будущем, так
наборе и проанализированы результаты. как гораздо эффективнее работать с уже извлеченными
признаками, чем с исходными сырыми данными. При
I. ВВЕДЕНИЕ
идентификации ничего сохранять нельзя, так как система
В настоящее время особую важность приобретают на данном этапе не имеет обратной связи и не может
задачи защиты информации. Среди задач защиты достоверно знать принадлежность голоса.
выделяются задачи аутентификации. Одними из активно
развивающихся методов являются методы биометрической
аутентификации.
Методы биометрической аутентификации могут быть
по статическим (неизменяемым) данным человека или по
динамическим. К статическим характеристикам человека,
можно отнести отпечатки пальцев, радужную оболочку,
геометрию лица, сетчатку глаза. К динамическим
характеристикам можно отнести голос, подчерк,
сердечный ритм, походку. Преимуществом методов на
статических характеристиках является относительная
простота организации процесса аутентификации и низкая
вероятность ошибки. Однако недостатками статических
методов являются необходимость в специализированной
Рис. 1: Общая схема работы
аппаратуре, а также неизменяемость и открытость
статических биометрических характеристик человека.
Такие недостатки можно преодолеть с помощью III. ИЗВЛЕЧЕНИЕ ПРИЗНАКОВ
динамических методов биометрической аутентификации,
как например аутентификация по особенностям голоса Недостатки статических методов идентификации,
человека. Эти методы, обладают большей вероятностью зачастую, связаны с дороговизной аппаратуры. В связи с
ошибок первого и второго рода, на их функционирование этим основное преимущество динамических методов
влияет психофизиологическое состояние человека, однако именно в возможности работы с дешевым и
они дают возможность изменять измеряемый образ, что низкокачественным оборудованием. Именно поэтому
делает такие системы предпочтительными при актуальной является задача робастной идентификации, т.е.
аутентификации личности по открытому каналу, и дешевы устойчивой работы системы вне зависимости от
в реализации, т.к. для них не нужно специализированное возможных шумовых составляющих, вызванных
оборудования для измерения характеристик. оборудованием.
В данной работе описывается создание и анализ
системы биометрической аутентификации, основанной на A. Предварительная фильтрация
тембре голоса. Целью предварительной фильтрации является
улучшение аудиосигнала для избавления от артефактов,
II. ОБЩАЯ СХЕМА вызванных низкокачественной аппаратурой записи.
Работу системы распознавания можно глобально 1) Выбросы
разделить на два режима: режим регистрации и режим Некачественная аппаратура записи звука может
идентификации. Другими словами, чтобы узнавать приводить к кратковременным мощностным выбросам.
человек, системе необходимо иметь данные об этом Данные шумовые явления могут предоставить большие
человеке. трудности для алгоритма нахождения активности голоса.
31
Пример подобных «выбросов» представлен на рисунке
2.
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 )
end
Листинг 1. Алгоритм выбора точек для логарифмической
децимации.
На Рис. 9. приведен пример логарифмической
децимации. Здесь верхний график является Рис. 10: Гистограмма спектральных компонент
логарифмическим спектром от 0 до 5000Гц содержащий
более 16000 точек, а нижний – выделенный массив Визуальный просмотр данных графиков привел к
основных компонент размерностью 800 точек. мнению, что в первом приближении будет достаточно
представить случайный процесс в виде одного
многомерного гауссова с независимыми математическими
ожиданиями и дисперсиями каждой координаты, график
которых для гистограммы с Рис. 10 представлен на
рисунке 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.
4
www.nist.gov
35
B. Задача аутентификации В статье победителей NIST SRE12 [3] приводятся
Для решения задачи аутентификации, она результаты, где они смогли добиться уровня ошибки EER
представлялась как объединение задач бинарной в пределах 2,5-3,0% на тестовой выборке. Также в статье
классификации, где каждая из выделенных задач отвечала построена FAR/FRR кривая для тренировочной выборки,
на вопрос, принадлежит ли данный голос определенному представленная на Рис. 17.
человеку, информация о котором имеется в системе.
При тестировании все множество голосов было
разделено на 3 подмножества. Первое, размером 25,
использовалось для обучения системы и регистрации
пользователей в ней. Второе, размером 10, также
участвовало в обучении в качестве негативных примеров.
Третье, размером 50, использовалось исключительно для
тестирования и проверки системы на работоспособность.
В результате получились результаты, представленные
на Рис. 15.
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]
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
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
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
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.
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)
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.
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
Автоматизация проверки корректности
использования программных библиотек
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 инструментирование программы,
место вызова функции в программном коде; управляемое моделью библиотеки;
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
61
NOTES
seim-conf.org