Четверг, 28.11.2024
Сайт города Апшеронска

Форум города Апшеронска

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Про нейронные сети (ответы пользователей)
OceanXДата: Среда, 23.02.2011, 12:04 | Сообщение # 1
Подполковник
Группа: Администраторы
Сообщений: 108
Репутация: 0
Статус: Offline
Часто пишут и задают вопросы по нейронным сетям на почту - буду выкладывать здесь.

http://www.shumisport.ru - сайт спортивной статистики
http://finstat.bozo.ru - сайт макроэкономики
 
OceanXДата: Четверг, 24.02.2011, 08:22 | Сообщение # 2
Подполковник
Группа: Администраторы
Сообщений: 108
Репутация: 0
Статус: Offline
Для фондового рынка действительно необходимо использовать разные индексы типа РТС, SnP и т.д. А вот сглаживание техническими индикаторами - здесь надо думать и крутить. С одной стороны часто считается, что временной ряд содержит всю необходимую информацию и шума на нем нет, то есть сглаживать не надо. С другой стороны - а как же без шума?:) И еще одна задача наклевывается - если использовать индикаторы на входе, то на выходе должны быть сигналы на покупку и продажу, согласно этим индикаторам. Что-то в этом духе...

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

2. имхо правильнее строить две отдельных сети. Одна для прогнозирования знака цены, другая для прогнозирования ценового диапазона. И еще одна для прогнозирования "теней", для постановки стоп-лоссов в реальной торговле.


http://www.shumisport.ru - сайт спортивной статистики
http://finstat.bozo.ru - сайт макроэкономики
 
OceanXДата: Четверг, 24.02.2011, 08:25 | Сообщение # 3
Подполковник
Группа: Администраторы
Сообщений: 108
Репутация: 0
Статус: Offline
Обучение сети в Экселе:
Здесь необходимо заходить в макросы Экселя и смотреть Module1.
А. Обучение:
в функции Backpropogation() зашит алгоритм обратного распространения ошибки - не самый быстрый, но самый надежный способ обучения нейросети. Обучение происходит следующим образом:
1. Большой цикл "For I = 0 To MaxStep Step 1" и далее, - это итерации обучения, MaxStep - ограничитель количества итераций обучения - нейросеть ведь может не обучиться и гонять процесс до бесконечности
2. Подсчет ошибки "If CountError() < Error Then" - если ошибка обучения нейросети меньше заданной, то прекращаем обучение и выходим, при этом выводим результаты в лист "0" функцией "PlotSuccessResult()"
3. Если ошибка больше заданной, то идет процесс обучения
"For j = 0 To GNeuro(num_layers) - 1 Step 1" - цикл по нейронам последнего слоя - считаем GError и GDelta, то есть ошибку и дельту на которую надо изменить

"For j = 0 To GNeuro(num_layers) - 1 Step 1
For Z = 0 To GNeuro(num_layers - 1) - 1 Step 1" - изменение весов последнего слоя

и далее по всем слоям - от последнего к первому. По сути - подсчет разницы и перемножение векторов на матрицы

Б. Посчет ошибки к функции CountError()
Здесь по сути два варианта подсчета ошибки - если есть валидационная выборка, то подсчет ошибки ведем по ней. Если нет валидационной выборки, то подсчет по всем примерам на которых обучаемся.
Валидационная выборка - это те примеры, которые нейросеть не видит во время обучения. То есть по ней мы проверяем - уловила ли нейросеть задачу или нет.
Валидационная выборка задается в функции SetParams() - переменные start_valid_pos и end_valid_pos, learning_number_example - это количество примеров для обучения (эти переменные - номера строчек в листе "0"). В данный момент сделано следующим образом - т к нейросеть затачивалась под котировки, то есть под столбцы с ценами Open[], Low[], High[], Close[] - в вверху листа самые последние котировки, то есть время убывает сверху вниз, но в принципе этими переменными можно рулить и остальные варианты.

В. Сам процесс прогнозирования
Процесс прогнозирования реализован следующим образом - в функции SetIO(num) устанавливаются значения входов нейросети в массив (точнее в вектор) GInputs и выходов в GOutputs . При этом используется относительное изменение между моментами времени num и (num-1) - так меньше ошибка выходит. Разберем строку установки входов:
"(Cells(num - 1, GOutputs(I)).Value - Cells(num - 2, GOutputs(I)).Value)/MaxValue"
Из значения ячейки с координатами строка/столбец (num-q)/номер_входного_столбца_листа_0 отнимается значение из того же столбца, но на строчку ниже. В терминах финансовых временных рядов, допустим High[i] - High[i-1], то есть относительное приращение - еще же делим на MaxValue - то есть масштабируем в единичный интервал, т к рабочая область тангенсоиды - функции активации нейрона от -1 до 1. MaxValue - это максимальное значение в столбце.
Выходы - аналогично.
Здесь главный момент - мы подаем на входы нейросети изменение за одну временную итерацию, то есть только значения изменения между num - (num-1). Но этих данных нейросети может не хватить, и нужно будет подавать "скользящее окно" - см. http://apsheronsk.bozo.ru/Neural/Lec9.htm
Это в принципе не трудно переделать.
Далее, нейросети, после того как обучилась, необходимо подать пример, пусть под номером К, посчитать функцией Calc(K), выход будет в векторе GOutputs(), его необходимо умножить на MaxValue, так как мы масштабировали и к этому числу прибавить значение в ячейке Cells(К, номер_столбца_выхода).Value. То есть нейросеть считает приращение от примера К и к нему добавлем откуда считается приращение.


http://www.shumisport.ru - сайт спортивной статистики
http://finstat.bozo.ru - сайт макроэкономики
 
OceanXДата: Четверг, 12.05.2011, 08:10 | Сообщение # 4
Подполковник
Группа: Администраторы
Сообщений: 108
Репутация: 0
Статус: Offline
Собственно комментарии к коду на странице:
http://apsheronsk.bozo.ru/Neural/NN.htm


http://www.shumisport.ru - сайт спортивной статистики
http://finstat.bozo.ru - сайт макроэкономики
 
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2024
Создать бесплатный сайт с uCoz

Макроэкономика
СпортСтат
История Кубани
ВМФ
Лаго-Наки
Апшеронск
Kuban Cossacks
Flora KK
Fauna KK
Forex
Photo
Озера Кубани
Apsheronka
GlobalChess
Bendy
Hotels
H.School
Грибы
NCAA
Черное море
Fauna KK
Forex
Photo
Озера Кубани


Апшеронск, Апшеронский район (где-то на юге России)