Обсуждение статьи "Нейросети — это просто (Часть 30): Генетические алгоритмы"

 

Опубликована статья Нейросети — это просто (Часть 30): Генетические алгоритмы:

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

Тестирование процесса оптимизации осуществлялось с сохранением всех ранее используемых параметров. Обучающая выборка взята из истории инструмента EURUSD, таймфрейм H1. Для процесса оптимизации взята история за последние 2 года. Все внешние параметры советника использовались по умолчанию. В качестве модели для тестирования мы взяли архитектуры из предыдущей статьи с поиском оптимального вероятностного распределения принятия решений. Такой подход позволяет нам подставить оптимизированную модель в используемый ранее советник "REINFORCE-test.mq5". Как можно заметить, это уже третий подход в процессе обучения модели одной архитектуры. Ранее мы уже обучали аналогичную модель алгоритмами Policy Gradient и Актер-Критик. Тем интереснее становится наблюдать за результатами оптимизации.

Как вы помните, при оптимизации модели мы не использовали данные последнего месяца. Тем самым мы оставили немного данных для тестирования оптимизированной модели. Запустив оптимизированную модель в тестере стратегий на данных последнего месяца, мы получили ниже следующий результат её работы.

График тестирования оптимизированной модели

Как можно заметить из представленного графика, мы получили график растущего баланса. Но его доходность несколько ниже, полученной при обучении аналогичной модели методом Актер-Критик. При этом можно заметить и снижение количества торговых операций. Действительно, число трейдов сократилось в 2 раза.

График с торговой историей модели

Автор: Dmitriy Gizlyk

 

Любопытно, почему в результате именно трендовая направленность. Обычно, если стоит задача найти закономерности, то, учитывая зигзагообразный рост практически любого тренда, нейросеть должна находить прибыльной и использовать параллельно контртрендовую стратегию, открываясь на предполагаемых экстремумах, особенно при затяжном росте. У предыдущего опыта (ст. 29) как раз что-то похожее, там и кривая баланса растёт на протяжении всего периода, а здесь постепенно затухает. 


Dmitriy Gizlyk
Проведите свои эксперименты и будет интересно понаблюдать за их результатами.


Замечательно, что есть возможность покрутить реализацию в руках. 
К сожалению, не тестируется. Попробовал зайти в редактор, при компиляции ругается. Вроде копировал все файлы при просмотре всех статей. 
Подскажите, пожалуйста, что мне нужно сделать.

 
Удалил namespace Math и фигурные скобки в одном из включаемых файлов, 
Затем удалил в коде "Math::" перед проблемной функцией, и вроде перестал ругаться. 

Теперь другая проблема: возвращает Init 1. 
Попринтил откуда, оказалось на модель ругается в этой функции. Не пойму, что делать. 

Думал, надо создать её с помощью трансфера, но не нашёл в статьях, как именно для Генетика делать. 

Прошу помочь завести эту машину
 
Ivan Butko #:
Удалил namespace Math и фигурные скобки в одном из включаемых файлов, 
Затем удалил в коде "Math::" перед проблемной функцией, и вроде перестал ругаться. 

Теперь другая проблема: возвращает Init 1. 
Попринтил откуда, оказалось на модель ругается в этой функции. Не пойму, что делать. 

Думал, надо создать её с помощью трансфера, но не нашёл в статьях, как именно для Генетика делать. 

Прошу помочь завести эту машину

Для обучения в статье я использовал модель аналогичную обучаемой в статье актер-критик и policy gradient. Вы просто даете советнику обычную модель. А он дополняет её аналогичными по архитектуре моделями до заполнения популяции.

 
Дмитрий а сколько нужно учить модель? У меня прошло 300 эпох, а результат не изменился. Это нормально? И можно ли как либо быстро сбросить веса на случайные через Ваш NetCreator, не создавая вручную заново модель?