Повышение качества предсказания нейросети

Повышение качества предсказания нейросети

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

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

Проектирование нейросетевой системы прогнозирования

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

Рис. 1. Структура искусственного нейрона

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

Многослойный персептрон относится к классу сетей, обучение которых осуществляется методом обратного распространения ошибки [4]. Для обучения системы используется обучающая выборка, состоящая из обучающих примеров, формирование которых основывается на исходных данных и специфике решаемой задачи. Так, для экстраполяции временного ряда исходные данные преобразуются в обучающую выборку с использованием метода скользящих окон [2], [3], [5]. Согласно этому методу, каждый обучающий пример выборки формируется из n значений временного ряда, называемого «окном», при этом очередной обучающий пример получается путем сдвига окна на одну единицу времени.

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

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

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

— увеличить количество нейронов выходного слоя, которое определяется количеством шагов прогнозирования;

— ввести связи между нейронами выходного слоя.

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


а) б)

Рис. 2. Структура многослойного персептрона а) без связей; б) со связями

между нейронами выходного слоя

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

, (1)

где , – выходные значения нейронов q и p соответственно, – функция активации,

– весовой коэффициент связи между нейронами p и q.

На втором этапе итерации обучения происходит пересчет весовых коэффициентов нейронных связей по формуле (2). Пересчет производится, начиная с последнего слоя и заканчивая первым:

Читайте также:  Лучшее предсказание будущего это создать его

, (2)

где – новое значение весового коэффициента связи между нейронами p и q; – старое значение весового коэффициента pq-связи; n – скорость обучения; – дельта-коэффициент нейрона q; – выходное значение нейрона p.

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

, (3)

, (4)

где – выходные значения нейронов q и p соответственно; – весовой коэффициент связи между нейронами p и q.

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

Для тестирования описанного выше решения было проведено экспериментальное моделирование, целью которого являлось определение эффективности введения дополнительных связей между нейронами выходного слоя для решения задачи многошагового прогнозирования. В каждом из экспериментов было проведено сравнение результатов прогнозирования с использованием обычного трехслойного персептрона и трехслойного персептрона со связями между выходными нейронами. Выбор именно трехслойного персептрона в качестве основы обусловлен тем, что персептрон является базовой архитектурой, реализацию которого достаточно легко впоследствии преобразовать к другим типам сетей, обучающимся на основе обратного распространения ошибки. Кроме того, из теорем Колмогорова – Арнольда – Хехт – Нильсона [5] следует, что трех слоев достаточно, чтобы решить практически любую задачу. В качестве исследуемых данных были взяты ряды разной природы и обладающие разными характеристиками: финансовые временные ряды и температурные временные ряды. Данные получены с сайтов компании Финам и Гидрометцентра России соответственно. Использование процессов, поведение которых значительно отличается, позволяет оценить эффективность исследований наиболее точно и разносторонне. Соблюдение одних и тех же условий проведения эксперимента для различных архитектур было выполнено для возможности равноценного сравнения качества получаемого прогноза. Ниже представлены описание условий одного из проведенных экспериментов и его результаты (табл. 1, рис. 3).

Приведем пример, когда в качестве временного ряда использовались метеорологические данные (температура воздуха). Объем обучающей выборки составил 8500 значений, длина временного ряда одного обучающего примера 75 значений. Прогнозирование осуществлялось на 7 шагов вперед, экспериментальное множество составило 100 примеров.

Источник

Прогнозирование цен с помощью нейронных сетей

Введение

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

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

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

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

Читайте также:  Как делать предсказания для инстаграм

Известно, что 99% всех сделок — спекулятивные, т.е. направлены не на обслуживание реального товарооборота, а заключены с целью извлечения прибыли по схеме «купил дешевле — продал дороже». Все они основаны на предсказаниях изменения курса участниками сделки. Причем, что немаловажно, предсказания участников каждой сделки противоположны друг другу. Так что объем спекулятивных операций характеризует степень различий в предсказаниях участников рынка, т.е. реально — степень непредсказуемости финансовых временных рядов.

Это важнейшее свойство рыночных временных рядов легло в основу теории «эффективного» рынка, изложенной в диссертации Луи де Башелье (L.Bachelier) в 1900 г. Согласно этой доктрине, инвестор может надеяться лишь на среднюю доходность рынка, оцениваемую с помощью индексов, таких как Dow Jones или S&P500 для Нью-Йоркской биржи. Всякий же спекулятивный доход носит случайный характер и подобен азартной игре на деньги (а что то в этом есть, не находите?). В основе непредсказуемости рыночных кривых лежит та же причина, по которой деньги редко валяются на земле в людных местах: слишком много желающих их поднять.

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

В 80-х годах неожиданную поддержку эта точка зрения нашла в незадолго до этого появившейся теории динамического хаоса. Эта теория построена на противопоставлении хаотичности и стохастичности (случайности). Хаотические ряды только выглядят случайными, но, как детерминированный динамический процесс, вполне допускают краткосрочное прогнозирование. Область возможных предсказаний ограничена по времени горизонтом прогнозирования, но этого может оказаться достаточно для получения реального дохода от предсказаний (Chorafas, 1994). И тот, кто обладает лучшими математическими методами извлечения закономерностей из зашумленных хаотических рядов, может надеяться на большую норму прибыли — за счет своих менее оснащенных собратьев.

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

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

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

Подготовка данных

Для начала работы нужно подготовить данные, от правильности этой работы зависит 80% успеха.

Гуру говорят, что в качестве входов и выходов нейросети не следует выбирать сами значения котировок Ct. Действительно значимыми для предсказаний являются изменения котировок. Поскольку эти изменения, как правило, гораздо меньше по амплитуде, чем сами котировки, между последовательными значениями курсов имеется большая корреляция — наиболее вероятное значение курса в следующий момент равно его предыдущему значению C(t+1)=C(t)+delta(C)=C(t).

Между тем, для повышения качества обучения следует стремиться к статистической независимости входов, то есть к отсутствию подобных корреляций. Поэтому в качестве входных переменных логично выбирать наиболее статистически независимые величины, например, изменения котировок delta(С) или логарифм относительного приращения log(C(t)/C(t+1)).

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

Читайте также:  Новогодние предсказания для друзей

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

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

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

Выбор программного обеспечения

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

1. Matlab – настольная лаборатория для математических вычислений, проектирования электрических схем и моделирования сложных систем. Имеет встроенный язык программирования и весьма богатый инструментарий для нейронных сетей – Anfis Editor (обучение, создание, тренировка и графический интерфейс), командный интерфейс для программного задания сетей, nnTool – для более тонкой конфигурации сети.

2. Statistica – мощнейшее обеспечение для анализа данных и поиска статистических закономерностей. В данном пакете работа с нейросетями представлена в модуле STATISTICA Neural Networks (сокращенно, ST Neural Networks, нейронно-сетевой пакет фирмы StatSoft), представляющий собой реализацию всего набора нейросетевых методов анализа данных.

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

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

5. Остальные программы являются менее распространенными.

Для первичной работы вполне подойдет Matlab, в нем и будем пытаться определить степень пригодности нейросетей для прогнозирования рынка Forex.

Ознакомиться с комплексом MatLab можно в википедии https://ru.wikipedia.org/wiki/MATLAB

Много материалов по программе предоставлено на сайте http://matlab.exponenta.ru/

Эксперимент

Подготовка данных

Данные очень удобно можно получить стандартными средствами MetaTrader:

Сервис -> Архив котировок -> Экспорт

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

Данные -> Импорт внешних данных -> Импортировать данные и указать подготовленный первичный файл. В мастере импорта все необходимые действия выполняются в 3 шага:

На 3 шаге необходимо поменять разделитель целой и дробной части на точку, делается это при нажатии кнопки Подробнее…

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

Сервис -> Параметры -> Международные -> Разделитель целой и дробной части.

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

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

Источник

Оцените статью