Известно, что нейронные сети появились  как попытка создания модели человеческого мозга.

Одним из первых примеров, является PERCEPTRON Розенблатта (F.Rosenblatt, 1957).

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

Как пишут в ВИКИПЕДИ: нейросеть представляет собой частный случай методов распознавания образов, дискриминантного анализа, методов кластеризации и т. п.

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

Кратко расскажу о моем экспериментальном роботе на основе нейросетей.

Данный робот является результатом разработанной автором технологии построения обучающихся роботов.

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

Вот некоторые начальные понятия данной технологии.

В каждый момент времени робот находится в некотором состоянии.

Состояние робота представляется в виде точки в N-мерном пространстве первичных признаков.

Основным понятием является событие.

На фондовом рынке событием является сделка.

Обезличенную сделку  можно описать тремя параметрами

p- цена, v- объем, t- время, либо n=t/dt -номер по порядку, где dt — шаг дискретизации

 

Структура робота представляет собой последовательно расположенные слои активных элементов.

Первый слой   — рецепторы, на выходе которых получаем первичные признаки.

Для описания первичных признаков применяется следующий алфавит.

Алфавит:  p,v,t,n, H,L,C,O,B,S,число, m,h,D,W,M,Y,[,]

Название каждого признака может содержать до 7 позиций

Допустимые символы в позициях наименования признака:

1 :        p,v,t,n, H,L,C,O,B,S

2 :        H,L,C,O,B,S,число, m,h,D,W,M,Y

3:         H,L,число,m,h,D,W,M,Y,[

4:         число,m,h,D,W,M,Y,[,]

5:         [,число,]

6:         число,]

7:         ]

Первичные признаки формируются как некие математические преобразования параметров события.

Второй слой — нейроны вторичных признаков.

С целью лианеризации пространства состояний первичные признаки преобразуются во вторичные.             Вторичные признаки формируются с учетом особенностей конкретного рынка (инструмента).

Успешность решения этой задачи позволяет существенно сократить процесс обучения.

Третий слой — нейроны первичных решений (генераторы первичных сигналов)

Четвертый слой — нейроны состояния робота

Последний из созданных роботов, называемый  новым роботом  имеет следующие параметры (числовые данные приведены для представления об их порядке, а не как точные значения) :

первичных признаков — 60

вторичных признаков — 120

нейронов первичных решений — 300

нейронов состояния -2

 

На выходе нейросети получаем три состояния: купить, продать,отдыхать.

Робот дообучается на скользящей выборке в 3000 свечей, получаемых с сервера QUIK.

Торгует на текущей выборке в 3000 свечей.

Используется тайм в 5 минут.

Торговлю робот совершает на постоянную сумму, без плеч , без реинвестирования прибыли.

Свой жизненный путь робот начал три месяца назад.

В качестве примера в предыдущих блогах ранее приведены результаты Нового робота.

Примечание:  Хочу заметить, что по последним данным в человеческом мозге 87 миллиардов нейронов (в 12 раз больше численности живущих на Земле).

Поэтому роботам еще предстоит долгий путь до соревнования с человеком, если оглупление человечества не будет ускоряться так быстро, как это происходит в 21 веке.

 

This entry was posted on Понедельник, 5 августа, 2013 at 09:52 and is filed under Нейросеть, торговые роботы (МТС). You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.

10 comments so far

roma095
 1 

Николай, а у Вас для лонга и для шорта разные признаки используются?

5 августа, 2013 at 19:31
Kamynin
 2 

нет.

5 августа, 2013 at 23:22
roma095
 3 

Можно еще задам вопросы:

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

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

5 августа, 2013 at 19:54
Kamynin
 4 

3000 свечей — это максимальная длина истории с сервера QUIK.
Это максимальная история, которую робот видит в реальном времени.
Сегодня 3000 свечей тайма 5 минут — это история с 26.06.2013
Т е история до 26.06.2013 сегодня роботу недоступна, но раньше он ее видел и на ней обучался (родился он в мае 2013)
Таким образом, в процессе своей жизни робот видит историю больше, чем 3000 свечей,
но переобучиться и торговать он может лишь используя признаки на истории 3000 свечей.

5 августа, 2013 at 23:28
roof
 5 

Спасибо! Все понятно и доступно.

5 августа, 2013 at 22:32
roma095
 6 

Здравствуйте Николай.
Не могли бы вы рассказать как вы ищите признаки? То есть это чисто визуальное наблюдение и поиск закономерностей на графике или как то по другому?
Может быть можете привести пример признака, который для Вас не значимый и вы его отсеили. Для ознакомления с принципом так сказать.

8 августа, 2013 at 12:35
Kamynin
 7 

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

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

….Сначала я применил полиномиально-гармоническую аппроксимацию к фильтрам низких частот для получения первого набора вторичных признаков, один фильтр для определения краткосрочной тенденции, второй для долгосрочной. В качестве вторичных признаков взял частоты, амплитуды cos и sin, коэффициенты P. … Сеть обучилась, но обобщением не обладала.

…Следующим шагом была новая модель: к цене закрытия применяем фильтр низких частот (я использовал фильтр Батерворта 2-го порядка), применяем полиномиально-гармоническую аппроксимацию, преобразуем A*cos(wx)+B*sin(wx) к виду M*sin(wx+f) и в качестве вторичных признаков берем M и f.
…. И вот с такой моделью мне удалось построить сеть, которая имела очень хорошие обобщающие свойства: новые данные почти все правильно распознавала.
Полиномиально-гармоническая аппроксимация требует много времени, потому я решил сделать другую модель: набор полосовых фильтров с равномерных распределением полос по частоте, применяем их к фильтру НЧ от цен закрытия, далее к ним применяем преобразование Гильберта. Для искусственной модели рынка также получилось сделать сеть, которая успешно распознавала новые данные.

После этого я применил такую модель к реальным котировкам:

— фильтруем цену закрытия адаптивным фильтром НЧ .
— для определения рыночных волн строим набор из полосовых фильтров.
— применяем преобразование Гильберта.
— первый набор вторичных признаков: значения полосовых фильтров, значения мгновенных амплитуд и фаз.
— строим фильтр НЧ от close цены.
— второй набор вторичных признаков – относительное отклонение значений close и low цены последней свечи, уровней поддержки и сопротивлений от значения фильтра НЧ, относительный объем в баре (по отношение к среднему значению).
— создаем обучающую выборку.

В результате получилось следующее: сеть обучается, но на новых данных работает плохо. Где-то точно предсказывает минимумы, а где-то вообще «забывает что ей нужно делать». По сравнению с тем, что я делал раньше результат кажется качественно на другом уровне, но это на мой субъективный взгляд. Да. Еще уточню, я везде соблюдал эмпирические правила: число входных признаков сети (в данном случае это вторичные признаки) < размер обучающей выборки/10, число нейронов в скрытом слое не больше числа входов сети..." Надеюсь, что эти вырезки из письма дают Вам представление о возможных подходах к поиску признаков.

8 августа, 2013 at 18:08
roof
 8 

разве что о неработающих:)

9 августа, 2013 at 08:13
amandra
 9 

здравствуйте, Николай Александрович!
При обучении НС с учителем необходимо указать к какому классу текущая комбинация признаков относится: покупка, продажа, ожидание. При этом возникает перекос между числом комбинаций признаков, которые относятся к классу «ожидание». Выходит, что НС обучается ждать…Как можно обойти эту ситуацию?

16 августа, 2013 at 19:35
Kamynin
 10 

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

16 августа, 2013 at 20:33