- •Выпускная квалификационная работа (магистерская диссертация)
- •Глава 1 Теоретические аспекты прогнозирования фондового рынка рф 9
- •Глава 2 Использование искусственных нейронных сетей для решения задач прогнозирования и анализа фондовых рынков 45
- •Глава 3 Прогнозирование фондового рынка с использованием информационных технологий 74
- •Введение
- •Глава 1 Теоретические аспекты прогнозирования фондового рынка рф
- •Основные подходы к прогнозированию состояния фондового рынка
- •Методы анализа фондового рынка
- •Прогнозирование и анализ фондового рынка
- •Обоснование метода прогнозирования состояния фондового рынка в рф
- •1.1.4 Преимущества и недостатки фундаментального и технического анализов
- •Состояние фондового рынка рф
- •1.2.1 Построение и описание прогнозной модели состояния фондового рынка Российской Федерации
- •Составление прогноза фондового рынка рф
- •Верификация прогноза фондового рынка рф
- •Исследование прогнозного состояния фондового рынка в рф
- •Характеристика фондового рынка как объекта исследования
- •Ретроспективный анализ фондового рынка в рф
- •Сценарии развития фондового рынка рф в долгосрочной перспективе
- •Глава 2 Использование искусственных нейронных сетей для решения задач прогнозирования и анализа фондовых рынков
- •Нейронная сеть. Основнын понятия и определения
- •Нейронная сеть
- •Формирование нейронной сети
- •Архитектура нейронных сетей
- •Размер нейронной сети
- •Обучение нейронной сети
- •Правила обучения
- •Неконтролируемое обучение
- •Торговые роботы: помощники или вредители
- •Риски и польза от использования биржевых роботов
- •Человеческая судьба на бирже
- •Глава 3 Прогнозирование фондового рынка с использованием информационных технологий
- •3.1 Алгоритмическая торговля на финансовых рынках.
- •3.1.1 Популярность торговых роботов
- •3.1.2 Эффективность торговых роботов
- •3.1.3 Преимущества торговых роботов:
- •3.1.4 Недостатки торговых роботов
- •Глава 3 Прогнозирование фондового рынка с использованием информационных технологий
- •3.2 Как на самом деле устроена торговля на бирже: Простой алгоритм
- •3.2.1 Механика hft
- •3.2.2 Как hft-трейдеры делают деньги
- •3.2.3 Hft как сетевая инфраструктура рынка
- •3.2.4 Статистика торговых роботов
- •3.3 Алгоритмическая торговля на фондовом рынке в России: тренды и технологии
- •Заключение
- •Библиографический список
Размер нейронной сети
После выбора архитектуры возникает вопрос, насколько большой или насколько небольшой должна быть нейронная сеть? Сколько должно быть «инпутов»? Сколько нужно использовать скрытых нейронов? Скрытых слоев (в случае с глубокой сетью)? Сколько «аутпутов» нужно нейронам? Если мы промахнемся с размером, сеть может пострадать от переобучения или недообучения. То есть не будет способна грамотно обобщать. Сколько и какие инпуты нужно использовать?
Число входных сигналов зависит от решаемой проблемы, количества и качества доступной информации и, возможно, некоторой доли креатива. Выходные сигналы – это простые переменные, на которые мы возлагаем некие предсказательные способности. Если входные сведения к проблеме не ясны, можно определять переменные для включения через систематический поиск корреляций и кросс-корреляций между потенциальными независимыми переменными и зависимыми переменными. С использованием корреляций есть две основные проблемы. Во-первых, если вы используете метрику линейной корреляции, вы можете непреднамеренно исключить нужные переменные. Во-вторых, две относительно не коррелированных переменных могут быть потенциально объединены для получения одной хорошо коррелированной переменной. Когда вы смотрите на переменные изолировано, вы можете упустить эту возможность. Здесь можно использовать основной компонентный анализ для извлечения полезный векторов в качестве входных сигналов.Другая проблема при выборе переменных – мультиколлинеарность. Это когда две или более переменных, загруженных в модель, имеют высокую корреляцию. В контексте регрессивных моделей это может вызвать хаотичные изменения регрессивного коэффициента в ответ на незначительные изменения в модели или в данных. Учитывая то, что нейронные сети и регрессионные модели схожи, можно предположить, что та же проблема распространяется на нейронные сети.Еще один момент связан с тем, что за выбранные переменные принимают пропущенные отклонения в переменных. Они появляются, когда модель уже сформирована, а за бортом осталась парочка важных каузальных переменных. Отклонения проявляют себя, когда модель получает неверное возмещение отсутствующим переменным через переоценку или недооценку других переменных.
Сколько необходимо скрытых нейронов?
Оптимальное число скрытых элементов – специфическая проблема, решаемая опытным путем. Но общее правило: чем больше скрытых нейронов – тем выше риск переобучения. В этом случае система не изучает возможности данных, а как бы запоминает сами паттерны и любой содержащийся в них шум. Такая сеть отлично работает на выборке и плохо за пределами выборки. Как можно избежать переобучения? Есть два популярных метода: ранняя остановка и регуляризация. Автор предпочитает свой, связанный с глобальным поиском.Ранняя остановка предполагает разделение процесса обучения на этапы самого обучения и валидации результатов. Вместо того чтобы обучать сеть на ограниченном числе итераций, вы обучаете ее пока производительность сети на этапе подтверждения не начинает падать. По-существу, это не дает сети использовать все доступные параметры и ограничивает способности к простому запоминанию паттернов. Регуляризация штрафует нейронную сеть за использования усложненной архитектуры. Сложность в данном случае измеряется размером и весом сети. Она устанавливается через добавление интервала к функции ошибки, который привязан к весу и размеру. Это то же самое, что добавление приоритета, который заставляет поверить нейронную сеть функцию на однородность. Параметры α и β контролируют уровень, после которого наступает недообучение или переобучение сети. Подходящие значения для них можно подобрать через Байесовский анализ и оптимизацию. Другая техника, довольно дорогостоящая в плане вычислений, — глобальный поиск. Здесь алгоритм поиска используется для дифференциации архитектуры сети и нахождения ее оптимального варианта. Обычно для этого берут алгоритм генерации, о котором будет сказано ниже. Что такое «аутпуты»?
Нейронную сеть можно использовать для регрессии или классификации. В первой модели мы работаем с единичным значением на выходе. То есть нужен всего один нейрон выхода. Во второй модели нейрон выхода нужен для каждого класса, к которому может принадлежать паттерн, в отдельности. Если классы не известны – используются самоорганизующиеся карты. Подытожим эту часть рассказа. Лучший подход для определения размера сети – следовать принципу Оккама. То есть для двух моделей с одинаковой производительностью, модель с меньшим количеством параметров будет генерализировать успешней. Это не значит, что нужно обязательно выбирать простую модель в целях повысить производительность. Верно обратное утверждение: множество скрытых нейронов и слоев не гарантирует превосходство. Слишком много внимания сегодня уделяется нейросетям, и слишком мало самим принципам их разработки. Больше – не всегда лучше. 5. К нейронной сети применимо множество обучающих алгоритмов
Обучающий алгоритм призван оптимизировать вес нейронной сети, пока не наткнется на некое условие остановки. Это может быть связано с появлением ошибки в тренировочном сете на приемлемом уровне точности (например, когда работа сети на этапе валидации начинает ухудшаться). Это может быть точка, когда израсходован некий вычислительный бюджет сети. Самый популярный вариант алгоритма – способ обратного распространения с использованием градиентного стохастического спуска. Обратное распространение состоит из двух шагов: Прямое прохождение: обучающие данные проходят через сеть, записывается выходной сигнал и подсчитываются ошибки.
Обратное распространение: сигнал ошибки протаскивается обратно через сеть, вес сети оптимизируется с использованием градиентного спуска.
С этим подходом может возникнуть несколько проблем. Подгонка всех весов одновременно может привести к чрезмерному перемещению сети в весовом пространстве. Алгоритм градиентного спуска довольно медленный и восприимчив к локальному минимуму. Локальный минимум – специфическая проблема для определенных нейронных сетей. Первая проблема решаема через применения разных вариантов градиентного спуска: (QuickProp), Nesterov's Accelerated Momentum (NAG), Adaptive Gradient Algorithm (AdaGrad), Resilient Propagation (RProp) или Root Mean Squared Propagation (RMSProp).
Но все эти алгоритмы не могут преодолеть локальный минимум, и менее полезны, когда пытаются одновременно оптимизировать архитектуру и нагрузку сети. Нужен алгоритм глобальной оптимизации. Это может быть способ роя частиц (Particle Swarm Optimization) или генетический алгоритм. Вот, как это работает.
Векторное
представление нейронной сети кодирует
нейронную сеть по вектору нагрузки,
каждый из векторов представляет вес
соединения в сети. Мы можем обучать
сеть, используя мета-эвристический
поисковой алгоритм. На слишком больших
сетях способ работает плохо, потому что
сами векторы становятся слишком
большими.
Рисунок 4 – Нейронная сеть в векторной нотации
На диаграмме показано, как нейронная сеть может быть представлена в векторной нотации Способ роя частиц обучает сеть через построение популяции/роя. Каждая нейронная сеть здесь представлена как вектор нагрузки и скорректирована по отношению к позиции глобальной лучшей частицы и ее собственной лучшей позиции. Эта функция приспособления просчитывается как сумма квадратов ошибок реконструированной нейронной сети после завершения одного прямого прохождения. Выгоду получаем на оптимизации скорости обновления весов связей. Если весы будут регулироваться слишком быстро, сумма квадратов ошибок стагнирует, обучение не происходит.
Генетический алгоритм строит популяцию вектора, представляющего нейронную сеть. Далее с ней проводятся три последовательные операции для улучшения работы сети:
Выборка: после каждого прямого прохождения подсчитывается сумма квадратов ошибок, популяция нейронной сети ранжируется. Верхний процент популяции выбирается для выживания и используется для кроссовера.
Кроссовер: верхний x% генов популяции соревнуется между собой, получаем некое новое потомство, каждое потомство представляет, по сути, новую нейронную сеть.
Мутация: этот оператор требует поддержки генетического разнообразия в популяции, небольшой процент ее отбирается для прохождения мутации, то есть некоторые весы сети будут регулироваться случайно.
Нейронным сетям не всегда нужен большой объем данных
Нейронные сети могут использовать три основных обучающих стратегии: контролируемое обучение, неконтролируемое и усиленное обучение. Для первой, нужны, по крайней мере, два обучающих сета данных. Один из них будет состоять из входных с ожидаемыми выходными сигналами, второй с входными без ожидаемых выходных. Оба должны включать маркированные данные, то есть паттерны с изначально неизвестным предназначением. Неконтролируемая стратегия обычно используется для выявления скрытых структур в немаркированных данных (например, скрытых цепей Маркова). Принцип работы тот же, что и у кластерных алгоритмов. Усиленное обучение основано на простом допущении о наличие выигрышных сетей и помещении их в плохие условия. Два последних варианта не подразумевают использование маркированных данных, поэтому правильный выходной сигнал здесь неизвестен.
