Скопирую код (для МТ5) проверки таблицы умножения сюда:
#include <Math\Alglib\dataanalysis.mqh> //+------------------------------------------------------------------+ #define _rand(min,max) ((rand()/(double)SHORT_MAX)*((max)-(min))+min) //+------------------------------------------------------------------+ void OnStart() { CMultilayerPerceptron net; CMLPReport rep; CMatrixDouble patterns; double vector[2], out[1]; int info; // подготовка данных patterns.Resize(100,3); int m=0; // first pattern for(int i=1; i<=10; i++) for(int j=1; j<=10; j++) { patterns[m].Set(0,i/10.0); // input 1 patterns[m].Set(1,j/10.0); // input 2 patterns[m].Set(2,(i*j)/100.0); // target m++; //next pattern } // создание сети с одним скрытым слоем(5 нейронов) CMLPBase::MLPCreate1(2,5,1,net); // обучение сети CMLPTrain::MLPTrainLM(net,patterns,100,1e-3,5,info,rep); //Levenberg-Marquardt //CMLPTrain::MLPTrainLBFGS(net,paterns,100,1e-3,10,0.001,1000,info,rep);//L-BFGS Print("Info=",info," Error=",CMLPBase::MLPError(net,patterns,100)); // проверка сети на целочисленных данных string s="Тест 1 >> "; for(int i=1; i<=10; i++) { int d1=(int)_rand(1,10), d2=(int)_rand(1,10); vector[0]=d1/10.0; vector[1]=d2/10.0; CMLPBase::MLPProcess(net,vector,out); s+=(string)d1+"*"+(string)d2+"="+DoubleToString(out[0]*100,0)+" // "; } Print(s); // проверка сети на дробныx данных s="Тест 2 >> "; for(int i=1; i<=5; i++) { double d1=NormalizeDouble(_rand(1,10),1), d2=NormalizeDouble(_rand(1,10),1); vector[0]=d1/10.0; vector[1]=d2/10.0; CMLPBase::MLPProcess(net,vector,out); s+=DoubleToString(d1,1)+"*"+DoubleToString(d2,1)+"="+DoubleToString(out[0]*100,2)+ "("+DoubleToString(d1*d2,2)+") // "; } Print(s); }
2012.10.13 12:44:31 Test_MLP(Alglib) (EURUSD,M30) Info=2 Error=0.0005349624857861839 2012.10.13 12:44:31 Test_MLP(Alglib) (EURUSD,M30) Тест 1 >> 3*6=18 // 1*1=0 // 7*8=56 // 1*5=5 // 4*6=24 // 7*6=42 // 8*2=16 // 1*5=5 // 3*2=6 // 6*7=42 // 2012.10.13 12:44:31 Test_MLP(Alglib) (EURUSD,M30) Тест 2 >> 6.3*8.2=51.83(51.66) // 7.0*8.1=57.04(56.70) // 9.0*8.1=73.36(72.90) // 4.1*9.6=39.05(39.36) // 6.3*8.8=55.63(55.44) //
В новостях, статьях и т.д. говорят о достижениях нейросетей, например, что они котят от щенят отличают, распознают лица и т.п. Но очевидно там оч. дорогие коммерческие или эксперементальные сети, которые обычным трейдерам не по карману и разработать не под силу.
А могут ли доступные нам НС (например или ALGLIB или из R) различать примитивные вещи, например треугольники, квадраты и окружности друг от друга?Прямо как из обучающих игр для детей 2-3 летнего возраста.
Смотря каким трейдерам, сторожам или водилам кто вечерами под пивко, мартином депо разгоняют, или трушным квантам с хедж-фондов, которые если бы не торговали, то ракеты бы запускали на Юпитер, или исследовали бы первые наносекунды большого взрыва, глюонную плазму там и тп.
Первым придется нейрошел покупать за три касаря баксов, или что то подобное, а вторым не нужно ничего покупать, достаточно шарахнуть по клавиатуре пару раз.
Хочется надеяться, что доступные нам НС справятся, ведь и в трейдинге все паттерны постоянно искажаются.
Я думаю что если паттерны искажены как эти геометрические фигуры, то это уже не паттерны. Допуск отклонений / погрешности геометрии можно учесть, а вот каковы параметры отклонений где они могут быть на паттерне а где при наличии отклонения паттерн перестаёт быть таковым можно узнать у профессионального трейдера освоившего теханализ.
Опираться на паттерны, искажённые как фигуры второго ряда очень недальновидно, ну согласитесь. Это всё равно что дать пьяному взаймы)))
Они не то, чтобы умны, а очень глупы. Объем оч. продвинутой НС эквивалентен по объему мозгу таракана. Однако таракан решает массу самых разнообразных задач. У НС только одна мысль в голове, и она ее думает.)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
В новостях, статьях и т.д. говорят о достижениях нейросетей, например, что они котят от щенят отличают, распознают лица и т.п. Но очевидно там оч. дорогие коммерческие или эксперементальные сети, которые обычным трейдерам не по карману и разработать не под силу.
А могут ли доступные нам НС (например или ALGLIB или из R) различать примитивные вещи, например треугольники, квадраты и окружности друг от друга?Прямо как из обучающих игр для детей 2-3 летнего возраста.
Я повторил пример проверки таблицы умножения на ALGLIB - получается неплохо. Но понятия не имею, как описать задачу с фигурами для НС, практического опыта маловато и знаний. Может кто-то из более опытных товарищей подскажет, как занести обучающие примеры с этими фигурами? Или проведет такой эксперимент и поделится результатами? Желательно с обучающей матрицей или кодом, чтобы можно было повторить эксперимент. И желательно на ALGLIB, т.к. он уже есть в МТ5, а с R не так просто оказалось на практике. Статьи по R были написаны под одну версию R, но теперь произошло обновление и в новой версии старые коды не работают, т.е. повторить примеры из статей не выходит. Не хочется снова потратить время на разработку, которая может перестать работать, если Майкрософт опять что-то изменит. Впрочем если ALGLIB не справится с такими задачами, а R справится, то будем заниматься и изучать то, что действительно работает.
Если получится решить простую задачу, то можно ее усложнить, - повернуть фигуры, изменить масштаб, исказить и сдвинуть в другую точку пространства. Еще можно добавить шумы и ложные фигуры, линии и т.п. как на капчах.
Хочется надеяться, что доступные нам НС справятся, ведь и в трейдинге все паттерны постоянно искажаются. А если не различат их, то возможно и нет смысла нам их использовать и оставить это хедж-фондам и банкам, которые могут позволить себе разработку сетей, которые с этим справятся, как с котятами)
Ну и совсем сложный вариант - объемные фигуры...
Может у вас есть примеры (с кодом) решения других не менее интересных и сложных задач?