Обсуждение статьи "Пишем глубокую нейронную сеть с нуля на языке MQL" - страница 2

 
Anddy Cabrera #:

Привет, Ли,

Я обновил статью, добавив 2 демо-файла. Один для MQL5 и один для MQL4. DeepNeuralNetwork.mqh можно использовать как для mql5, так и для mql4.


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


Дайте мне знать, если у вас есть еще вопросы.

Действительно очень хорошая статья, я попробовал на демо и заметил, что только yValues[1] может давать значения больше .5, yValues[0] и yValues[2] имеют максимальные значения .2 или .3. даже при оптимизации не открывается больше одной сделки, которая является одним ордером на продажу.
 
nail sertoglu #:

Спасибо за коды, которыми вы поделились. Пытался понять ваш способ.


У меня есть некоторые сомнения по поводу yValues[0], yValues[1], yValues[2], так как они НЕ меняются и всегда 0 ,33333, но_xValues[1,2,3] меняются с новым баром; поэтому, если торговля основана на yValues, я не видел НИКАКОЙ ТОРГОВЛИ, в то время как ТОРГОВЛЯ ИСЧЕЗАЕТ, когда условия основаны на _xValues.

Это моя ошибка или просто ошибка кодирования в вашем оригинальном коде?

Обновите следующую функцию, чтобы она возвращала `bool` вместо `void`, и вы увидите, что было задано неправильное количество весов.

bool SetWeights(double &weights[])
     {
      int numWeights=(numInput*numHiddenA)+numHiddenA+(numHiddenA*numHiddenB)+numHiddenB+(numHiddenB*numOutput)+numOutput;
      if(ArraySize(weights)!=numWeights)
        {
         printf("Bad weights length (%i), expected %i", ArraySize(weights), numWeights);
         return false;
        }

Обратите внимание, что вам также необходимо обновлять веса поверх файла (недостаточно обновлять их только при инициализации сети :P

#define  SIZEI 25 // вход * скрытый A
#define  SIZEA 25 // скрытый A * скрытый B
#define  SIZEB 15 // скрытый B * выход
 
Привет, Энди,

Это очень хорошая статья.
У меня есть несколько вопросов.
1) Могу ли я использовать для вывода в многослойном нейроне комбинацию сигмоидальной и тангенциальной активации?
2) Нужно ли обновлять значения wheights в верхней части файла, как предлагает Karlis Balcers?
#define  SIZEI 20 // (вход * скрытый A)+скрытый A
#define  SIZEA 25 // (скрытый A * скрытый B)+ скрытый B
#define  SIZEB 18 // (скрытый B * выход)+выход
Примечание: SIZEI должен быть 20, а SIZEB должен быть 18, правильно ли это?
3) Я приложил схему глубокой нейронной сети, как описано в этой статье, правильно ли это?

большое спасибо


EADNN

 
Он работает как генетический оптимизатор, выбирая значения, которые улучшают конечный результат.
 
<Удалено>
 

Красивая анимация.

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

Статья как пример программирования на МКЛ наверное полезна. Для ознакомления с темой MLP- безусловно нужная. Как пример применения нейросети - не полная и далеко отстающая от текущего состояния темы.

Как правило без оптимизации гиперпараметров нейросеть не дает удовлетворительного качества. 

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

 
Для понимания НС хорошо и понятно.
 

Поправка. В статье есть определение глубокой сети. Я не увидел ее.

Процесс оптимизации весов нейросети с помощью генетики не является в прямом смысле "обучением". Это все таки оптимизация. При обучении используются совсем другие методы. Хотя и такой вариант использования нейросети практикуется и довольно успешно.

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

Удачи 

 
Большое спасибо автору за статью. Мне, как человеку далёкому от нейросетей, она очень помогла вникнуть в суть дел и очень заинтересовала с точки зрения дальнейшего ознакомления с темой. Ещё раз спасибо!
 

как  то можно в эту сеть встроить обратное распространение ошибки

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

ведь Сеть с обратным распространением ошибки - это же ведь  не совсем другие сети?