Нужен совет (нейросеть) - страница 3

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

Спасибо. Файлы дома. Буду изучать.

..................

Скажите возможно ли с помощью NS2 реализовать следующую модель работы?

_________________________________________________________________________

Цель:

...

Например: 1999-2000г на M15 по ценам открытия находим некие "закономерности", создаем набор обучающих примеров (ОП), обучаем сети, сохраняем их в файл.

...
А зачем козе баян? Т.е. зачем Вам нужна НС, если Вы умеете находить закономерности и без нее? Какой смысл обучать сеть, тому что уже и без нее заведомо известно?
 
lasso:

Спасибо. Файлы дома. Буду изучать.

..................

Скажите возможно ли с помощью NS2 реализовать следующую модель работы?

_________________________________________________________________________

Цель:

-- из очень простых классифицирующих НС формата 1:1-N-1:1, где N - кол-во нейронов в скрытом слое (от 3 до 7), каждая из которых отвечает за свою "закономерность",

создать комитет сетей, который выдавал бы взвешенный выход (прогноз), в какую сторону каким лотом двигаемся

-- советник должен быть построен по принципу "Всё в одном" + dll (типа FANN)

Например: 1999-2000г на M15 по ценам открытия находим некие "закономерности", создаем набор обучающих примеров (ОП), обучаем сети, сохраняем их в файл.

Далее запускаем эксперта на диапазоне 2001-2010.

При инициализации:

1. он загружает приготовленные в НШ2 сети из файла

2. загружает ОП на которых учились сети.

И все. На этом вмешательство пользователя заканчивается. Никаких оптимизаций.

.....................

В процессе работы эксперт:

-- выполняет торговые операции

-- параллельно накапливает новые ОП

-- при наступлении заданных событий, производит переобучение.

.....................

Оцениваем результаты.


Это всё можно сделать на НШ2 только прогаммировать нужно на MQL... И комитет собирается уже на MQL-е ...
 
Reshetov:
А зачем козе баян? Т.е. зачем Вам нужна НС, если Вы умеете находить закономерности и без нее? Какой смысл обучать сеть, тому что уже и без нее заведомо известно?

Цель использования НС - адаптация под изменяющиеся условия.

-----------------------------------

Попробую объяснить:

Допустим нашли и определились с параметрами "Закономерность_1".

Прогнали ее на имеющейся 11-летней истории, и видим, да в общем и целом "Закономерность_1" работает вполне успешно.

Но, нас, перфекционистов, это не устраивает.

Смотрим 2007 год по этой "Закономерность_1" и видим, что по итогам 2007 года она дает небольшой убыток.

Ну, так и что? "Закономерность_1" в топку?

Нет.

Анализируем 2007 и видим, что если сдвинуть параметры у "Закономерность_1" на другие значения, то снова всё очень хорошо.

Другими словами значения параметров "Закономерность_1" медленно плывут, как бы переливаются.

А сама "Закономерность_1" благополучно живет, но приспосабливается (мимикрирует).

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

-----------------------------------

НС должна помогать ТС адаптироваться, следовать контексту этой "Закономерность_1".

Отсюда и цель - ТС должно успешно отработать на 2001-2010 без всякого вмешательства со стороны пользователя.

 
StatBars:

Это всё можно сделать на НШ2 только прогаммировать нужно на MQL... И комитет собирается уже на MQL-е ...

Проще говоря, НШ2 позволит создать такую же библиотеку как, например, FANN?

Во что происходит экспорт из НШ2?

Ответьте, плз, в двух словах....

------------------

Просто хочется знать, чего можно ожидать от НШ2?

 

Почитал хелп, и разумею, что функции для переобучения сети у создаваемых НШ2 .dll -- отсутствуют.

Если это не так и есть какие-либо варианты, поправьте, пожалуйста.

================ Выдержка Из Справки =========================

Генератор автономных файлов - подробно

Эта возможность NeuroShell 2 позволяет Вам использовать натренированную сеть NeuroShell 2 из Visual Basic, Visual Basic для приложений, Access Basic, Паскаля, Си, Excel, или из других языков. Другими словами, Ваши сети могут использоваться в программах, написанных на этих языках.

После того, как Вы натренировали нейронную сеть в NeuroShell 2, Генератор автономных файлов дает Вам возможность сохранить сеть в файле таким образом, чтобы позднее можно было получить к ней доступ через динамическую библиотеку (DLL).

Применение натренированной сети представляет собой просто процесс подачи массива данных на входы сети и получения взамен соответствующего массива выходов. Это проделывает NSHELL2.DLL, являющаяся частью NeuroShell 2. Вы можете распространять NSHELL2.DLL вместе с созданными Вами приложениями, однако Вам не разрешается раскрывать детали ее работы, т.е. функции OpenNet, FireNet и CloseNet и т.д.

Замечание: Если Вы хотите использовать функции OpenNet, FireNet, CloseNet и Predict, описанные ниже, с Excel 7 или Excel 5 для NT, Вам необходимо будет в вызове заменить NSHELL2.DLL на файл под названием NS2-32.DLL. NS2-32.DLL представляет собой 32-битовую версию DLL NeuroShell 2, в процессе сборки NeuroShell 2 он устанавливается в каталог \WINDOWS\SYSTEM.

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

1. Воспользуйтесь меню Файл для выбора файла конфигурации той задачи NeuroShell 2, для которой Вы хотите создать .DEF-файл. По умолчанию именем .DEF-файла будет имя задачи. Чтобы выбрать другое имя, воспользуйтесь меню Файл.

2. Для создания .DEF-файла выберите пункт Начать генерацию автономного файла из меню Работа.

После того, как .DEF-файл создан, для его использования необходимы три функции из DLL:


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

FireNet - После того, как сеть подготовлена функцией OpenNet, функция FireNet используется для передачи значений входов сети и для получения от нее значений выходов. И те, и другие должны представлять собой массивы двойной точности с плавающей запятой, объявленные в Вашей программе. При использовании FireNet пропущенные данные не заменяются автоматически, как это делается, когда Вы указываете условия в модуле Параметры тренировки и критерии остановки в NeuroShell 2. Это происходит потому, что нет никакого способа отличить пропущенные данные от данных, равных нулю.

CloseNet - Вызовите эту функцию, когда Вам больше не надо будет использовать сеть. Она освободит всю память, занятую сетью. В следующий раз, когда Вашей программе понадобится использовать эту сеть, ей потребуется снова вызвать OpenNet.

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

Чтобы правильно записать в Вашей программе порядок вызова DLL, следуйте соглашениям конкретного языка относительно вызова библиотек DLL.

В Си этот процесс обычно включает в себя использование программы IMPLIB для создания .LIB-файла для NSHELL2.DLL, который можно было бы включить в Вашу программу. Затем воспользуйтесь для вызова функций описанными ниже прототипами для языка Си. Однако могут быть и другие методы.

В Visual Basic Вы можете просто вызвать эти функции, как любую другую функцию VB, после того, как в Ваш проект включен файл NSHELL2.BAS.

Замечание: Если Вы собираетесь использовать натренированную сеть на компьютере, отличном от того, на котором сеть тренировалась, Вы должны определить, есть ли на компьютере, на котором сеть будет использоваться, математический сопроцессор, и выбрать правильную версию DLL NeuroShell 2 для распространения вместе с Вашим приложением.

Когда Вы устанавливаете NeuroShell 2 на каком-либо компьютере, программа сборки автоматически определяет, есть ли на этой машине математический сопроцессор, и устанавливает правильную версию NSHELL2.DLL. Программа сборки выбирает либо NSHELL2.MCP для машин с математическими сопроцессорами, либо NSHELL2.NCP для машин без математических сопроцессоров, переименовывает выбранный файл в NSHELL2.DLL и копирует его в каталог \WINDOWS\SYSTEM. Неиспользованный файл (либо NSHELL2.NCP, либо NSHELL2.MCP) также копируется в каталог \WINDOWS\SYSTEM.

Когда Вы устанавливаете NeuroShell 2 на каком-либо компьютере, программа сборки автоматически определяет, есть ли на этой машине математический сопроцессор, и устанавливает правильную версию NSHELL2.DLL. Программа сборки выбирает либо NSHELL2.MCP для машин с математическими сопроцессорами, либо NSHELL2.NCP для машин без математических сопроцессоров, переименовывает выбранный файл в NSHELL2.DLL и копирует его в каталог \WINDOWS\SYSTEM. Неиспользованный файл (либо NSHELL2.NCP, либо NSHELL2.MCP) также копируется в каталог \WINDOWS\SYSTEM. Например, если Вы создаете приложение на Вашем компьютере, на котором есть сопроцессор, но хотите установить его на компьютере без сопроцессора, Вы должны перекопировать из каталога \WINDOWS\SYSTEM файл NSHELL2.NCP, переименовать его в NSHELL2.DLL и распространять эту версию NSHELL2.DLL вместе с Вашим .DEF-файлом. Если Вы хотите установить свое приложение на компьютере, использующем Excel 7 или Excel 5 для NT, Вам необходимо вместе с Вашим .DEF-файлом распространять копию файла NS2-32.DLL. Вы также должны изменить вызовы функций так, чтобы они обращались к NS2-32.DLL вместо NSHELL2.DLL.

Прототипы и полные описания функций DLL для языка Си

OpenNet


int far PASCAL _export OpenNet(char far *defpath, int far *netnumber, int far *inputs, int far *outputs);

*defpath - это указатель на строку символов, содержащую путь к .DEF-файлу. Если путь содержит только имя файла, то этот файл должен быть в текущем каталоге.

*netnumber - это указатель на целое число в Вашей программе, куда OpenNet поместит номер сети, который Вы будете использовать для указания на сеть в функциях FireNet и CloseNet.

*inputs - это указатель на целое число в Вашей программе, куда OpenNet поместит ожидаемое сетью количество входов.

*outputs - это указатель на целое число в Вашей программе, куда OpenNet поместит ожидаемое количество выходов сети.

Если код возврата OpenNet отличен от нуля, это обычно происходит потому, что OpenNet не смогла найти действительного .DEF-файла в месте, указанном переменной defpath.


FireNet


int far PASCAL FireNet(int far *netnumber, double far *inarray, double far *outarray);

*netnumber - это указатель на целое число, содержащее номер сети, полученный Вашей программой при создании сети с помощью функции OpenNet.

*inarray - это указатель на ряд последовательных чисел двойной точности с плавающей запятой. Этот ряд должен состоять из стольких чисел, сколько входов ожидается сетью. В этом массиве должны содержаться входные значения. Не изменяйте масштаб значений, так как FireNet сделает это за Вас.

*outarray - это также указатель на ряд последовательных чисел двойной точности с плавающей запятой. Этот ряд должен состоять из стольких чисел, сколько выходов ожидается у сети. FireNet поместит в этот массив выходные значения. Если Вы по ошибке зарезервируете меньше чисел двойной точности, чем окажется выходов, то Ваша программа, вероятно, аварийно прекратит свою работу, когда FireNet запишет оставшиеся выходы поверх части Вашей программы.

CloseNet


int far PASCAL _export CloseNet(int far *netnumber);

*netnumber - это указатель на целое число, содержащее номер сети, полученный Вашей программой при создании сети с помощью функции OpenNet.


=========================================================

Прототипы и полные описания функций DLL для других языков далее -- обрезал.

 
lasso:

Попробую объяснить:

Допустим нашли и определились с параметрами "Закономерность_1".

...

Прогнали ее на имеющейся 11-летней истории, и видим, да в общем и целом "Закономерность_1" работает вполне успешно.

...

Смотрим 2007 год по этой "Закономерность_1" и видим, что по итогам 2007 года она дает небольшой убыток.

...

Анализируем 2007 и видим, что если сдвинуть параметры у "Закономерность_1" на другие значения, то снова всё очень хорошо.

Если сдвинуть параметры у "Закономерность_1" на другие значения, то это уже будет "Закономерность_2". Чтобы такое работало, нейросеть не поможет, т.к. нам нужно заранее знать на какие значения сдвигать параметры "Закономерность_1" для того, чтобы получить "Закономерность_2". А если мы этого не знаем, то и ловить нечего.

Нейросеть - это черный ящик, а не тюнер с ручками и кнопочками для настроек.

 
Reshetov:

Если сдвинуть параметры у "Закономерность_1" на другие значения, то это уже будет "Закономерность_2". Чтобы такое работало, нейросеть не поможет, т.к. нам нужно заранее знать на какие значения сдвигать параметры "Закономерность_1" для того, чтобы получить "Закономерность_2". А если мы этого не знаем, то и ловить нечего.

Нейросеть - это черный ящик, а не тюнер с ручками и кнопочками для настроек.


Возможно, мы по разному представляем то, о чем говорим.

Попробую еще раз...

----------------------------------

На скрине ниже, график "мультибэктестирования" по формуле 5+0+1+1.

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


Видна некая цикличность. Видно как закономерность "плывёт".

С помощью НС хотелось бы плыть вместе с ней.

Без всяких предсказаний..... просто плыть.

 
lasso:

Проще говоря, НШ2 позволит создать такую же библиотеку как, например, FANN?

Во что происходит экспорт из НШ2?

Ответьте, плз, в двух словах....

------------------

Просто хочется знать, чего можно ожидать от НШ2?


Я не знаю что там в FANN ...

Да, то что выходит из НШ2 не сможет само переобучиться... Но, лично я считаю что это не нужно...

На выходе НШ2 просто формула... Все обученные веса уже подставлены...

В прикреплении то что можно получить на выходе... Ну и второй способ воспользоваться рез-ми НШ2 это подключиться их библиотеку...

Файлы:
nn.zip  9 kb
 
StatBars:


Я не знаю что там в FANN ...

Да, то что выходит из НШ2 не сможет само переобучиться... Но, лично я считаю что это не нужно...

На выходе НШ2 просто формула... Все обученные веса уже подставлены...

В прикреплении то что можно получить на выходе... Ну и второй способ воспользоваться рез-ми НШ2 это подключиться их библиотеку...

1) Fann2MQL имеет возможность переобучения, и там всё отлично + открытый код, просто у меня немного не сложилось с ней в этот раз.

2) Понятно. Подобные "формулы "Статистика" то же генерирует.

3) Второй вариант -- не понял? Переобучение возможно?

Причина обращения: