Обсуждение статьи "Нейронные сети - от теории к практике"

 

Опубликована статья Нейронные сети - от теории к практике:

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

Понятие о нейронных сетях

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

Нейронная сеть состоит, как это ни странно, из нейронов.

Нейронные сети - от теории к практике

Автор: Дмитрий

 

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

необходим пример работы  с многослойной НС, а то на рисунках многослойная НС, а пример лишь для сети с одним нейроном -  или статью переименуйте или пишите часть 2 

удачи! 

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования - Документация по MQL5
 

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

 
vspexp:

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

вот тут посмотрите, там в первых картинках показан процесс что происходит с весами при обучении
Рецепты нейросетей - Статьи по MQL4
  • www.mql5.com
Рецепты нейросетей - Статьи по MQL4: особенности автоматических торговых стратегий
 
Интересное совпадение, за 1 час до выхода этой статьи я создал новую тему про нейросети https://www.mql5.com/ru/forum/8158
Искусственные нейронные сети.
Искусственные нейронные сети.
  • www.mql5.com
Потенциал их практически безграничен, туда можно прописать сколько-угодно любых индикаторов с любым количеством параметров… и делать это можно оказывается на чистом MQL5.
 
papaklass:Поддержу IgorM , нужно продолжение. Вторая хорошая статья. Думаю МК пора брать у Вас интервью, хочется узнать о Вас по-больше. 

в свою очередь поддержу Вас!!! ну и будем постить друг за другом ))))))

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

Тогда взял написал для себя скрипт который учил НС таблице умножения онлайн и печатал с помощью Comment() результаты на экран, и ... о чудо... у меня в "глазах слезы стояли" от счастья, я увидел как НС обучается, действительно обучается, а не сухие формулы заставляют получить требуемый результат. Было бы неплохо в статье в качестве примера показать пример 2х2 =4,1   2х3=5,9 ..... 9х9= 80,2  , а вот 11х2 = 10,3 т.к. таблицу умножения на 11 НС не изучала,  воткактотак )))))) 

 

 

ЗЫ: про меня: учился, учился, служил, работал, женился, живу счастливо, и умерли в один день и помирать пока не собираюсь - есть еще не оконченные дела !!! 

 

Хорошая статья для начального уровня, тоже хочется продолжения.

IgorM 2012.10.06 19:10 

Тогда взял написал для себя скрипт который учил НС таблице умножения онлайн и печатал с помощью Comment() результаты на экран, и ... о чудо... у меня в "глазах слезы стояли" от счастья, я увидел как НС обучается, действительно обучается, а не сухие формулы заставляют получить требуемый результат. Было бы неплохо в статье в качестве примера показать пример 2х2 =4,1   2х3=5,9 ..... 10х10= 10,2  , а вот 11х2 = 10,3 т.к. таблицу умножения на 11 НС не изучала,  воткактотак )))))) 

Хорошая постановка вопроса.

Хотя таблица умножения мало общего имеет с трейдингом, все равно интересно, удалось научить сеть таблице умножения?

Возможно ответив на вопрос, почему сеть не может выучить таблицу умножения?, появится понимание как учить сеть торговать. 

 
her.human:

Хорошая постановка вопроса.

1.Хотя таблица умножения мало общего имеет с трейдингом, все равно интересно, удалось научить сеть таблице умножения?

2.Возможно ответив на вопрос, почему сеть не может выучить таблицу умножения? 

3.появится понимание как учить сеть торговать. 

1.да, НС обучалась таблице умножения от 1х1 и до 9х9 включительно , на видео вроде видно результаты с точностью до 2-го знака после запятой

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

3. понимание есть, но была надежда на разработчиков  "Новый нейронный" - проект Open Source движка нейронной сети для платформы MetaTrader 5. , но как говорится "а воз и ныне там" (Крылов) . В одного поднимать проект многослойной НС трудоемкая задача - проще .dll прикрутить , хотя, наверное, на чистом mql5 будет проигрыш по скорости обучения в сравнении с готовыми реализациями НС пакетов/.dll .

ЗЫ: Можно в топике с пожеланиями МТ5 попросить встроенную реализацию многослойной НС, но как водится у разработчиков - ответят нет не предусмотрено, а через полгода анонсируют такое обновление, два раза у меня уже "прокатило": желал перегрузку операторов и канвас для рисования на чарте :)

ЗЫЗЫ: мне для экспериментов  с НС хватает такого импорта:

#import "fannmql.dll"
   void     fannmql_build(string NN_config);                   // создаёт FANN нейронную сеть, свойства слоев нейронов в NN_config
                                                               // можно использовать разделители: ', . ; -' или пробел 
   void     fannmql_unbuild();                                 // удаляет FANN нейронную сеть
   double   fannmql_train(double &input[],double &output[]);   // обучение FANN нейронной сети, возвращает значение СКО
   void     fannmql_run  (double &input[],double &output[]);   // вычисление FANN нейронной сети
   void     fannmql_savetofile  (string File_name);            // сохранение FANN нейронной сети в файл
   void     fannmql_loadfromfile(string File_name);            // загрузка FANN нейронной сети из файла
#import

string s = "8-10-10-2"; // НС с 8-ю входами, 2-мя скрытыми слоями по 10 нейронов в каждом слое и 2-мя выходами
double inp[8],out[2];
//________________________________________________
int init(){
   fannmql_build(s);
..............
но,  по видимому встроить такие ф-ции в штатные функции МТ5 грандиозная_и_труднореализуемая_задача ;)))))

 

 
her.human:

Возможно ответив на вопрос, почему сеть не может выучить таблицу умножения?, появится понимание как учить сеть торговать. 

Самое интересное в том, что сеть невозможно научить таблице умножения (в широком смысле). То есть, конечно, можно научить умножению с 1*1 по 9*9, а дальше... картина Репина - "Фиг Вам".

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


 
joo:

Самое интересное в том, что сеть невозможно научить таблице умножения (в широком смысле). То есть, конечно, можно научить умножению с 1*1 по 9*9, а дальше... картина Репина - "Фиг Вам".

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


Насчет фигвам не согласен.

Разве нейросеть не из области  искусственного интеллекта? 

Если есть желание продолжать эту тему, предлагаю перейти сюда  "Новый нейронный" - проект Open Source движка нейронной сети для платформы MetaTrader 5.

Или через личку, думаю здесь будет лишнее.

 
joo:

Самое интересное в том, что сеть невозможно научить таблице умножения (в широком смысле). То есть, конечно, можно научить умножению с 1*1 по 9*9, а дальше... картина Репина - "Фиг Вам".

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


Юра Решетов даже писал, что можно НС научить таблице умножения, где 2*2 = 5, а все остальные вариации будут арифметически правильными. В этом суть подгонки, кстати. А насчет того, почему НС начнет врать, если ее обучить на 1-9, а подавать 10-20, ответ тоже есть. Дело в том, что сеть может работать правильно только и только если данные вне выборки будут лежать в том же интервале, что и на обучающем множестве. Грубо говоря, наши входы будут в диапазоне [1;9]. А мы потом дадим НС данные в другом диапазоне, что вызовет нестационарность входных данных, а нестационарность даст ложные ответы. Попробуйте обучить сеть на выборочных примерах в диапазоне [1;20], а потом дайте ей другие примеры в том же диапазоне, и, о чудо, она будет реально работать. Можно проверить.

Вот я и проверил. Отлично работает вне выборки )

 

 НС училась таблице умножения 1-20. Обучение и остановка обучения проводилась на случайно выбранных примерах (1/3 и 1/3 от объема выборки). Валидация - оставшиеся 1/3 объема выборки, но самое главное - из того же диапазона. Результаты на валидации не хуже, чем на обучающих выборках. Ошибка в пределах +-0,1. 

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

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