Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 609
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Выкиньте свою сеть в мусорку, раз она так реагирует на значения гпсч. Нормальная сеть работает и обучается при любых начальных значениях, даже при нулевых.
Как правило к гиперпараметрам нейросети относят количество скрытых слоев, количество нейронов в каждом скрытом слое, применяемые функции активации, инициализации и регуляризации, уровень обучения. Структура оптимизации гиперпараметров на рисунке ниже.
Рис.1. Структура гиперпараметров нейросети и способы оптимизации
Оптимизировать гиперпараметры можно тремя способами:
В первом случае для каждого гиперпараметра задается вектор с несколькими фиксированными значениями. Затем используя функцию caret::train() либо собственный скрипт обучают модель на всех комбинациях значений гиперпараметров. После чего выбирают модель с лучшими показателями качества классификации и ее параметры будут приняты как оптимальные. Недостаток этого способа в том, что задав сетку значений, мы с большой вероятностью пропустим оптимум.
Во втором случае используется возможность стохастического поиска лучших параметров с использованием генетических алгоритмов. Ранее в статье мы довольно подробно рассматривали несколько алгоритмов генетической оптимизации. Поэтому не будем повторятся.
В третьем случае используется байесовский подход (гауссовские процессы и МСМС), который мы и протестируем в этой статье. Будем использовать пакет rBayesianOptimization (version 1.1.0). Теория применяемых методов приведена в статье Jasper Snoek, Hugo Larochelle, Ryan P. Adams (2012) Practical Bayesian Optimization of Machine Learning Algorithms
Гиперпараметры нейросети в общем случае можно разделить на две группы : глобальные и локальные(узловые). К глобальным относятся количество скрытых слоев, количество нейронов в каждом слое, уровень обучения и момент, инициализация весов нейронов. К локальным - тип слоя, функция активации, dropout/dropconect и другие параметры регуляризации.
В общем опять же рекомендуется множество обучений на одних и тех же данных.
Я тут вручную несколько обучений сделал, и немного в замешательстве. Предполагал, что уменьшение ошибки будет идти стабильно, а она скачет.
Даже повторное обучение на одной и той же структуре сети может давать результаты с отличием в 3-5%, что так же может помешать правильному выбору структуры.
Можете подсказать еще каких то трейдеров, которые могут обучить? Мне знакомый посоветовал обучение (от Поликарпа Брехунова - изменено Artyom Trishkin), кто знает, может еще есть трейдера которые проводят курсы по обучению?
В общем опять же рекомендуется множество обучений на одних и тех же данных.
Я тут вручную несколько обучений сделал, и немного в замешательстве. Предполагал, что уменьшение ошибки будет идти стабильно, а она скачет.
Даже повторное обучение на одной и той же структуре сети может давать результаты с отличием в 3-5%, что так же может помешать правильному выбору структуры.
Так и должно быть. Начальная инициализация весов производится небольшими значениями случайных чисел (зависит от вида начальной инициализации). Для получения воспроизводимых результатов необходимо перед каждым запуском обучения устанавливать ГСЧ в одно и то же состояние. Для этого и служит set.seed().
Удачи
Так и должно быть. Начальная инициализация весов производится небольшими значениями случайных чисел (зависит от вида начальной инициализации). Для получения воспроизводимых результатов необходимо перед каждым запуском обучения устанавливать ГСЧ в одно и то же состояние. Для этого и служит set.seed().
Удачи
А, ну я в Darch-е RBM предобучение делал в 2 эпохи с learnRate = 0.3.
Во втором случае используется возможность стохастического поиска лучших параметров с использованием генетических алгоритмов.
Для трейдинга идея оптимизации модели (ТС) представляется крайне сомнительной, так как любая оптимизация ищет пики/впадины, а они нам не нужны. Нам нужны, в идеале, ровные плато, как можно большие по размеру. Эти плато должны обладать одним замечательным свойством: изменения параметров модели НЕ должно приводить к уходу с плато.
Это по поводу оптимизации.
По факту сюда же следует добавить проблему стабильности параметров модели, которые если и меняются, то внутри довольно узкого (5%) доверительного интервала. Как мне кажется, стабильность параметров модели и приводит к тому, что ее результативность находится на неком плато и если при тестировании модели мы внезапно получили очень хороший результат, то это значит мы выскочили на точку минимакса, мы получили неустойчивое состояние, которое на практике никогда больше не встретится, более того вокруг этой оптимальной точки будет располагаться стопаут.
ПС.
Кстати в тестере разработчики предоставили такую возможность поиска плато по цвету. Лично я использую тестер как финишный инструмент и беру параметры, которые относятся к квадратику, вокруг которого квадратики такого же цвета. Это наглядное выражение моего понятия "плато".
А, ну я в Darch-е RBM предобучение делал в 2 эпохи с learnRate = 0.3.
Это маленькое значение learnRate. Начните с learnRate = 0.7, numEpochs = 10 для RBM и NN. Но это потолочные данные. Нужно оптимизировать под конкретный набор данных.
Удачи
Внутри функции darch() есть параметр seed = NULL по умолчанию. установите его в какое то состояние, например seed = 12345.
Это маленькое значение learnRate. Начните с learnRate = 0.7, numEpochs = 10 для RBM и NN. Но это потолочные данные. Нужно оптимизировать под конкретный набор данных.
Удачи
Для трейдинга идея оптимизации модели (ТС) представляется крайне сомнительной, так как любая оптимизация ищет пики/впадины, а они нам не нужны. Нам нужны, в идеале, ровные плато, как можно большие по размеру. Эти плато должны обладать одним замечательным свойством: изменения параметров модели НЕ должно приводить к уходу с плато.
Это по поводу оптимизации.
По факту сюда же следует добавить проблему стабильности параметров модели, которые если и меняются, то внутри довольно узкого (5%) доверительного интервала. Как мне кажется, стабильность параметров модели и приводит к тому, что ее результативность находится на неком плато и если при тестировании модели мы внезапно получили очень хороший результат, то это значит мы выскочили на точку минимакса, мы получили неустойчивое состояние, которое на практике никогда больше не встретится, более того вокруг этой оптимальной точки будет располагаться стопаут.
ПС.
Кстати в тестере разработчики предоставили такую возможность поиска плато по цвету. Лично я использую тестер как финишный инструмент и беру параметры, которые относятся к квадратику, вокруг которого квадратики такого же цвета. Это наглядное выражение моего понятия "плато".
1. Вы об оптимизации чего говорите? О каком плато? О какой модели? Если Вы говорите о нейросети, то было бы странно не обучать(оптимизировать парметры) DNN перед использованием.
2. Каких параметры модели(?) должны быть стабильны?
Не понял Ваши мысли.
Я говорил об оптимизации гиперпараметров DNN которую нужно проводить обязательно и не в тестере.