Московский экономический журнал 6/2019

image_pdfimage_print

УДК 330.42

DOI 10.24411/2413-046Х-2019-16031

ГЕНЕРАТИВНО-СОСТЯЗАТЕЛЬНЫЕ НЕЙРОННЫЕ СЕТИ В ЗАДАЧАХ ОПРЕДЕЛЕНИЯ ТРЕНДОВ

APPLYING GENERATIVE ADVERSARIAL NETWORK TO THE PROBLEM OF TREND DETERMENITION

Сухань Андрей Александрович, аспирант 2го курса департамента анализа данных, принятия решений и финансовых технологий Финансового университета при правительстве РФ, suchan_andrei@mail.ru

Sukhan Andrei Aleksandrovich, graduate student of the 2nd course of the Department of Data Analysis, Decision Making and Financial Technologies of the Financial University under the Government of the Russian Federation

Аннотация: Глубинное обучение (DML) в последнее время достигло большого успеха во многих областях благодаря его хорошим результатам в обработке и принятии решения на больших данных. Оно широко используется в финансовых областях, таких как прогнозирование фондового рынка, оптимизация портфеля, обработка финансовой информации и стратегии исполнения сделок. Прогноз фондового рынка и построение эффективных торговых стратегий на нем – это самые популярные способы применения DML в области финансов. В этой статье автор предлагает новую архитектуру условной генеративно-состязательной нейронной сети (CGAN) с многоуровневым персептроном (MLP) в качестве дискриминатора и долговременной кратковременной памятью (LSTM) в качестве генератора для определения трендов. Генератор LSTM построен для извлечения зависимостей из данных на фондовом рынке и генерирования данных в тех же распределениях c индикацией тренда, в то время как дискриминатор, разработанный на MLP, стремится различать реальные данные от сгенерированных. Автор использует дневные данные по 696 акциям в широком диапазоне торговых дней и пытается найти начало и конец тренда по ходу движения цены. Экспериментальные результаты показывают, что CGAN может дать многообещающие результаты при решении подобных задач по сравнению с другими моделями машинного обучения.

Summary: Deep machine learning (DML) has recently achieved great success in many areas due to its good results in processing and decision making on big data. It is widely used in financial areas, such as stock market forecasting, portfolio optimization, financial information processing, and transaction execution strategies. Forecasting the stock market and building effective trading strategies on it are the most popular ways to use DML in the area of finance. In this article, the author proposes a new conditional generative adversarial neural network (CGAN) architecture with a multilevel perceptron (MLP) as a discriminator and a long-term short-term memory (LSTM) as a generator for trend detection. The LSTM generator is built to extract dependencies from data in the stock market and generate data in the same distributions with a trend indication, while the discriminator based on MLP seeks to distinguish real data from generated one. The author uses daily data of 696 stocks in a wide range of trading days and tries to find the beginning and end of the trend along the price movement. Experimental results show that CGAN can give promising results when solving similar problems compared to other machine learning models.

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

Keywords: machine learning, generative adversarial neural network, stock market, trend, asset management, LSTM.

Генеративно-состязательные сети (GAN) развиваются очень быстро для решения задач обучения с учителем, так и для без него. Этот метод был предложен в 2014 году Я. Гудфеллоу из Университета Монреаля [1]. Основная идея — это обучение пары сетей в постоянном соревновании друг с другом. Популярной аналогией может послужить конкуренция между фальшивомонетчиком и банкиром. Фальшивомонетчик, который выступает генератором (G) в GAN, хочет создать поддельные купюры, которые нельзя будет отличить от настоящих. Банкир в свою очередь, являющийся дискриминатором (D), пытается разобрать подделки и настоящие деньги друг от друга. В течении буквально пары лет этот метод нашел свое применение в задачах семантической сегментации изображений, анализа медицинской информации, распознавании материалов, анализе временных рядов.

Очень важно также то, что генератор никогда не получает реальные данные, на вход подается только случайный вектор (источник энтропии, иногда интерпретируется как пространство скрытых переменных, latent space). Единственный способ для него обучаться – это только взаимодействие с дискриминатором. Дискриминатор же получает на вход либо созданный генератором данные, либо объект реальной обучающей выборки. Ошибка обучения дискриминатора рассчитывается на знании того, откуда пришли данные. По идее, в процессе обучения (рис.1) генератор обучается распределению исходной выборки и начинает создавать данные все более близкие к реальным в то время, как дискриминатор становится все более точным в распознавании подделки от оригинала.

GAN сети обучаются одновременно, обновляя распределение дискриминатора (D, синяя прерывистая линия), которое показывает вероятность принадлежности распределения генератора (G, зеленая линия) к распределению реальных данных (черная точечная линия). Нижняя горизонтальная линия – это область определения, из которой выбирается z (в этом случае равновероятно). Горизонтальная линия выше – область определения для x. Стрелочки показывают сопоставление x = G (z). В последней итерации (d) дискриминатор не может отличить реальных данные от сгенерированных (т.е.

Сети, которые лежат в основе генератора и дискриминатора, обычно представляют собой многослойный сети, состоящие из сверточных и полносвязных слоев (рис. 2). D и G должны отличаться, так что не обязательно, чтобы они были полностью обратимыми. Так как задача генератора состоит в сопоставлении пространства скрытых переменных в пространство данных, то можно это записать в виде

где

это выборка из пространства скрытых переменных,

настоящие данные,

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

X – реальный объект предметной области (например, рисунок); Z – источник случайного шума; G – нейронная сеть генератора; X’ – искусственно сгенерированные данные, мимикрирующие реальные; OR – случайный выбор одного из двух входов; D – нейронная сеть дискриминатора;

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

Исследователи выделяют несколько вариаций изначальной идеи генеративно-состязательных сетей:

  • Полносвязные GAN – изначально предложенная архитектура, где генератором и дискриминатором служат многослойные сети прямого распространения;
  • Сверточные GAN (deep convolutional GAN, DCGAN) – используют многослойные сверточные сети. Являются логичным развитием идеи GAN в применении к задачам синтеза изображений. Недостатком сверточных генеративных состязательных сетей является более долгий процесс обучения модели;
  • Условные GAN (Conditional GAN, CGAN) – архитектура (рис. 3), в которой как генератору, так и дискриминатору на вход дополнительно подается вектор, указывающий на класс объекта. Такие сети могут генерировать условное распределение выборки, с указанием конкретного класса. Таким образом, они используются для моделирования мультимодальных распределений;
  • Состязательные автокодировщики (Adversarial Autoencoders, AAE). Автокодировщики – это сети, состоящие из двух частей – кодировщика и декодера, которые обучаются детерминистическому отображению из пространства данных в пространство скрытых переменных (обычно гораздо меньшей размерности) и обратному отображению. Состязательное обучение используется для оптимизации, схожей с вариационными автокодировщиками и обычно используется для придания пространству скрытых переменных осмысленной организации в терминах предметной области;
  • GAN с моделями вывода (ALI, BiGAN) – расширяют функциональность GAN механизмом вывода скрытых переменных из объекта предметной области. обычные GAN могут сгенерировать правдоподобный объект из случайного вектора в пространстве скрытых переменных (latent space). Две независимо предложенные архитектуры состязательного обучения выводу (adversarial learning inference) и двунаправленных GAN (Bidirectional GAN) предоставляют механизм нахождения обратного преобразования, что может быть полезно для задач выделения признаков. Однако, на сегодняшний день, надежность таких методов серьезно ограничена.

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

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

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

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

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

В среде высокочастотной торговли, понимание направления движения рынка очень важно для управления рисками портфеля [2]. Целью данного исследования является попытка определить нахождение в тренде в каждый конкретный момент времени. Задача можно сформулировать математически следующим образом. Пусть

– набор базовых индикаторов (цена открытия, цена закрытия, минимальная цена, максимальная цена, объем) и

– индикатор тренда (1 – тренд есть, 0 – тренда нет) на дневных интервалах за день t (t = 1,2,…,T). Факт нахождения в тренде или нет был размечен экспертными трейдерами. Имея данные за последние N дней

наша задача определить

Есть несколько исследований, оценивающих эффект от разной длины окна T = [7,12,40], но все они решали проблему предсказания цены [3, 4]. Мы все же введем это переменной, чтобы можно было протестировать различные значения на практике, так как у нас не прогнозирование, а классификация.

Для задачи определения трендов будем использовать условные GAN (CGAN), так как они очень хорошо справляются с задачей разделения данных на классы (есть тренд, нет тренда) [5]. Получить CGAN можно из путем добавления в генератор и дискриминатор дополнительной информации y (рис. 5). y может быть любой вспомогательной информацией, в нашей задаче же это будет индикатор наличия тренда.

В этом случае минимакс игра сетей может быть описана в виде:

Обучение G заключается в том, чтобы обмануть дискриминатор и приблизиться к реальным данным [6]. Поэтому генератор должен снижать функцию потерь таким образом, чтобы D не смог отличить сгенерированные данные

от настоящих

Таким образом

где

В случае обучения D задача состоит в понимании того, что пришло на вход –

или

тогда функция потери будет иметь вид:

Тренировка генератора и итератора проходит итеративно [7]. Весь процесс можно описать в алгоритме:

  1. Выбираем m элементов шума

из распределения

2. Выбираем m элементов реальных данных

из распределения

3. Обновляем дискриминатор путем максимизации градиента

4. Выбираем m элементов шума

из распределения

5. Обновляем генератор путем минимизации градиента

Для обучения модели нужно сначала подготовить данные [8]. В датасете данные представлены для 696 бумаг с 28 января 2005 года по 13 сентября 2017 года. Общее число строк составляет 1 648 918. Для каждой бумаги представлено 5 факторов:

  • Цена открытия
  • Цена закрытия
  • Максимальная цена внутри дня
  • Минимальная цена внутри дня
  • Объем торгов

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

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

Как видно из рисунка 6, не во всех местах тренд размечен правильно. Как было сказано выше, обучение будем проводить скользящими окнами в M дней (рис. 7), для которого будем определять факт наличия тренда в последней точке. Внутри окна данные нормализуем

и исключим первое значение, так как все факторы будут равны 1.

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

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

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

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

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

В результате такого обучения, тренд определяется очень «шумно» – слишком часто точки сменяют класс с трендовых на нетрендовые (рис. 9).

Дальнейшими шагами по улучшению могут быть:

  1. Определение тренда экспертами не по большинству голосов, а путем вероятностного подхода. Таким образом можно уйти от бинарности понятия тренда к вероятности его наличию, что в теории должно упростить обучение дискриминатора и генератора
  2. В качество нейронной сети использовать другую комбинацию слоев. Возможно лучший результат покажет комбинация LSTM сеть в качестве слоев
  3. В качестве функции ошибки использовать аккуратность определения направления движения (DPA)

где

Литература

  1. Goodfellow, I.J., Pouget-Abadie, J., Mirza, M., Xu, B., Warde-Farley, D., Ozair, S., Courville, A.C., Bengio, Y. Generative adversarial nets, in: Advances in Neural Information Processing Systems // 27-я Ежегодная конференция нейронных систем 2014, С. 2672–2680.
  2. Box G.E.P., Jenkins G.M. Time series analysis: Forecasting and control // Journal of Time, 31 (1976), С. 238-242.
  3. Kang Zhang, Guoqiang Zhong, Junyu Dong, Shengke Wang, Yong Wang. Stock Market Prediction Based on Generative Adversarial Network.
  4. Ding, X., Zhang, Y., Liu, T., Duan, J. Deep learning for event-driven stock prediction, in: Proceedings of the Twenty-Fourth International Joint Conference on Artificial Intelligence // IJCAI 2015, С. 2327–2333.
  5. Xingyu Zhou, Zhisong Pan, Guyu Hu, Siqi Tang, Cheng Zhao. Stock Market Prediction on High-Frequency Data Using Generative Adversarial Nets // Mathematical Problems in Engineering, 2018, С.7-10
  6. Shuntaro Takahashi, Yu Chen, Kumiko Tanaka-Ishii. Modeling financial time-series with generative adversarial networks
  7. Rather A.M., Agarwal A., Sastry V.N. Recurrent neural network and a hybrid model for prediction of stock returns // Expert Syst. Appl., 42 (2015), С. 3234-3241
  8. Tsantekidis, A., Passalis, N., Tefas, A., Kanniainen, J., Gabbouj, M., Iosifidis, A. Forecasting stock prices from the limit order book using convolutional neural networks // 19-я IEEE Конференция по бизнес информатике, CBI 2017, С. 7–12.