Обсуждение статьи "Возможности Мастера MQL5, которые вам нужно знать (Часть 79): Использование осцилляторов Gator и A/D в обучении с учителем"

 

Опубликована статья Возможности Мастера MQL5, которые вам нужно знать (Часть 79): Использование осцилляторов Gator и A/D в обучении с учителем:

В предыдущей статье мы завершили рассмотрение сочетания осцилляторов Gator и накопления/распределения при их обычном использовании на основе генерируемых ими необработанных сигналов. Эти индикаторы дополняют друг друга: Gator служит индикатором тренда, а осциллятор накопления/распределения – индикатором объема. Теперь мы продолжим эту тему и рассмотрим, как обучение с учителем может улучшить некоторые из ранее изученных сигнальных паттернов. В нашем подходе к обучению с учителем используется сверточная нейронная сеть (CNN), в которой ядерная регрессия и сходство по скалярному произведению применяются для выбора размеров ядер и количества каналов. Как всегда, мы реализуем это в пользовательском файле класса сигнала, который взаимодействует с Мастером MQL5 при сборке советника.

В качестве модели обучения с учителем мы выбрали CNN, использующую ядерную регрессию и сходство по скалярному произведению. Ядерная регрессия оценивает выходные представления каждого слоя CNN, взвешивая наблюдаемые входные данные по степени их сходства с конкретной точкой запроса. Это сходство количественно оценивается с помощью скалярного произведения, используемого в качестве ядерной функции. В нашей модели, код которой приведен в следующем разделе, метод _dot_product_kernel_regression вычисляет сходство между всеми временными позициями на карте признаков с помощью функции torch.bmm(x, x.T). Затем к результату применяется нормализация Softmax, во многом аналогичная механизму самовнимания.

Скалярное произведение выступает адаптивной к данным мерой сходства: его высокое значение означает, что две позиции имеют одинаковый паттерн активации по каналам и поэтому сильнее влияют на взвешенную сумму. Это можно представить так: каждая позиция получает "голоса", число которых пропорционально ее сходству с позицией запроса. Слой CNN можно представить как таблицу, в которой строки соответствуют временным шагам, а столбцы – признакам. В этой модели одна строка соответствует "позиции". Таким образом, "позиция запроса" – это текущая строка, которая обновляется. В процессе обновления эта строка сравнивается со всеми остальными позициями, чтобы количественно оценить степень их сходства. Такие обновления происходят в ходе обратного распространения ошибки.


Автор: Stephen Njuki