Обсуждение статьи "Нейросети — это просто (Часть 27): Глубокое Q-обучение (DQN)"

 

Опубликована статья Нейросети — это просто (Часть 27): Глубокое Q-обучение (DQN):

Продолжаем изучение обучения с подкреплением. И в этой статье мы познакомимся с методом глубокого Q-обучения. Использование данного метода позволило команде DeepMind создать модель, способную превзойти человека при игре в компьютерные игры Atari. Думаю, будет полезно оценить возможности подобной технологии для решения задач трейдинга.

Вероятно, Вы уже догадались, что глубокое Q-обучение подразумевает использование нейронной сети для аппроксимации Q-функции. В чем же преимущество такого подхода? Давайте вспомним реализацию табличного метода кросс-энтропии в прошлой статье. Помните, в ней я акцентировал внимание, что реализация табличного метода предполагает конечное количество возможных состояний и действий. Мы, конечно, ограничили число возможных состояний с помощью кластеризации исходных данных. Но так ли это хорошо? Всегда ли кластеризация нам даст лучшие результаты? В то же время, использование нейронной сети перед нами не ставит ограничения по числу возможных состояний. И мне кажется, что в случае решения задач трейдинга это большой плюс.

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

Вначале давайте посмотрим на цель обучения нашего агента. В общем случае его цель максимизация совокупной награды. Посмотрите на рисунок ниже. Агенту предстоит перейти из клетки Start в клетку Finish. Награду агент получает одноразово при попадании в клетку Finish. Во всех остальных состояниях награда нулевая.

Фактор дисконтирования

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

Автор: Dmitriy Gizlyk

 

Для тестирования была создана сверточная модель следующей архитектуры:

  1. Слой исходных данных, 240 элементов (20 свечей, по 12 нейронов на описание одной свечи).
  2. Сверточный слой, окно исходных данных 24 (2 свечи), шаг 12 (1 свеча), на выходе 6 фильтров.
  3. Сверточный слой, окно исходных данных 2, шаг 1,  2 фильтра.
  4. Сверточный слой, окно исходных данных 3, шаг 1,  2 фильтра.
  5. Сверточный слой, окно исходных данных 3, шаг 1,  2 фильтра.
  6. Полносвязный нейронный слой на 1000 элементов.
  7. Полносвязный нейронный слой на 1000 элементов.
  8. Полносвязный слой из 3 элементов (слой результатов на 3 действия).

Кто-нибудь понял, как это сделать? 

Есть Трансфер Лернинг, работает, скомпилировался, но как на нём создать такую модель? 

Пробую модели из предыдущих статей, не подходят
 
Ivan Butko #:

Кто-нибудь понял, как это сделать? 

Есть Трансфер Лернинг, работает, скомпилировался, но как на нём создать такую модель? 

Пробую модели из предыдущих статей, не подходят

1. Запускаете TransferLearning.
2. Никакую модель НЕ открываете.
3. Просто накидываете новую модель, как добавление новые нейронные слои.
4. Нажимаете сохранить модель и указываете имя файла, который будете загружать из программы.

 
Dmitriy Gizlyk #:

1. Запускаете TransferLearning.
2. Никакую модель НЕ открываете.
3. Просто накидываете новую модель, как добавление новые нейронные слои.
4. Нажимаете сохранить модель и указываете имя файла, который будете загружать из программы.

Какие именно слои и что выбирать? У Вас там несколько видов и несколько параметров

 


Выбираешь любые, сохраняешь под "EURUSD_PERIOD_H1_Q-learning.nnw", запускаешь  Q-learning.mq5, тот в логе пишет


2022.10.14 15:09:51.743 Experts initializing of Q-learning (EURUSD,H1) failed with code 32767 (incorrect parameters)

А во во вкладке эксперты:

2022.10.14 15:09:51.626 Q-learning (EURUSD,H1) OpenCL: GPU device 'NVIDIA GeForce RTX 3080' selected
2022.10.14 15:09:51.638 Q-learning (EURUSD,H1) EURUSD_PERIOD_H1_Q-learning.nnw

 
Здравствуйте. Подскажите, как организовать слой исходных данных. Это полносвязный слой из 240 нейронов?
 
star-ik #:
Здравствуйте. Подскажите, как организовать слой исходных данных. Это полносвязный слой из 240 нейронов?

В качестве слоя исходных данных используется обычный полносвязный слой.

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