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

ЧТО ТАКОЕ ГИПЕРПАРАМЕТРЫ?

  • Модель машинного обучения или глубокого обучения имеет параметры и гиперпараметры, которые помогают им в обучении. Параметры - это объекты, которые создают модель, а гиперпараметры - это объекты, которые контролируют процесс обучения.
  • Гиперпараметры также играют роль в увеличении объема данных. Как и в сверточных нейронных сетях, угол поворота можно рассматривать как гиперпараметр для оптимизации. Также посмотрите это видео.
  • В линейной регрессии вес (W) и смещения (B) являются параметрами модели при построении модели Y = WX + B. Гиперпараметры, такие как скорость обучения, размер пакета и т. Д., Помогают в обучении. В нейронных сетях каждый нейрон имеет вес и смещение, которые являются его параметрами.
  • Таким образом, в ванильных моделях гиперпараметры обычно жестко запрограммированы и постоянны на протяжении всего процесса обучения, а параметры градиентного спуска обновляются на каждой итерации.
  • Но гиперпараметры также могут быть частью процесса обучения. Как и в SAC (метод Soft-Actor Critic Version-3), коэффициент энтропии α извлекается из данных путем задания целевой функции для его настройки. Это называется сквозным обучением, поскольку не требуется никаких внешних усилий, все зависит исключительно от данных после создания экземпляра модели.

ОПТУНА

  • Optuna - это библиотека настройки гиперпараметров, которая работает во многих фреймворках. Для моделирования мы используем Stable baselines3, который использует Optuna для настройки.
  • Основные компоненты Optuna состоят из объективного, пробного предложения и оптимизации. Он начинается с предложения диапазона гиперпараметров, есть и другие распределения, отметьте здесь. Затем гиперпараметры настраиваются так, чтобы минимизировать или максимизировать цель.
  • Ознакомиться с основами можно из этого видео. Также попробуйте документацию и страницу часто задаваемых вопросов, она исчерпывающая.

FINRL

  • FinRL - это библиотека обучения с глубоким подкреплением для количественных финансов. Он предоставляет вам среду, модели из Rllib, Stable baselines3 и ElegantRL.
  • Вы можете проверить мою предыдущую статью. Он предоставит вам руководство по запуску FinRL. Это отличная и удобная библиотека, и если вам интересно, попробуйте.

ПОЧЕМУ НАСТРОЙКА ГИПЕРПАРАМЕТРА НЕОБХОДИМА ДЛЯ ОБУЧЕНИЯ УСИЛЕНИЮ?

  • В обучении с подкреплением, когда агент начинает обучение, он имеет очень шумные оценки окружающей среды. Гиперпараметры управляют процессом обучения. Плохо настроенные гиперпараметры могут привести к неоптимальной сходимости, поскольку они не смогут исправить эти ошибочные оценки.
  • Кроме того, алгоритмы RL чувствительны к гиперпараметрам и имеют хрупкую сходимость даже к начальным значениям. Исследователи должны протестировать широкий спектр гиперпараметров и исходных значений, чтобы подтвердить эффективность своей модели. Также для более сложных задач настройка является сложной задачей.
  • Когда вы жестко кодируете эти значения, возможности безграничны, поэтому исследователю будет сложно выбрать значения. А без хорошо настроенных гиперпараметров ваша модель может расходиться. Например, в FinRL иногда вы можете столкнуться с расхождением и получить странные результаты при тестировании на истории. Модель обучалась с гиперпараметрами по умолчанию для DDPG.

  • Вы получите ошибки значений, такие как нахождение логарифмической вероятности нуля при вычислении действия или деление на ноль. Следовательно, чтобы избежать таких результатов, нам необходимо настроить гиперпараметры.

РУКОВОДСТВО ПО НАСТРОЙКЕ ГИПЕРПАРАМЕТРА

  • Код для учебника по FinRL приведен ниже.


  • Это руководство основано на моем предыдущем руководстве FinRL, в котором описывался код, здесь я буду обсуждать только часть настройки.
  • Начните с установки Optuna

  • После этапа предварительной обработки и определения среды обучения и торговли мы перейдем к настройке. Во-первых, вам нужно указать, какие гиперпараметры вы хотите настроить. Его можно передать функции sample_ ‹model_name› _params.

  • Если вы хотите полностью протестировать все возможные гиперпараметры, которые вы хотите настроить, перейдите сюда. Просто возьмите те гиперпараметры, которые вам нужны. Я выбираю здесь buffer_size (размер буфера воспроизведения), скорость обучения и размер пакета в качестве 3 моих гиперпараметров (вы можете выбрать больше).
  • Предложить категориальный, поскольку название предлагает категориальные значения из списка значений, который мы предоставили. Униформа журнала предложит значения, взятые из области журнала минимальных и максимальных значений. Наконец, верните словарь
  • Здесь наша цель - коэффициент Шарпа. Итак, для настройки гиперпараметра вам нужна цель, которая будет максимизирована или минимизирована.

ОТЗЫВЫ

  • Обратные вызовы - это настраиваемые функции, которые контролируют процесс обучения. Как и при ранней остановке, когда у вас есть некоторые показатели, такие как функция потерь, и если убыток увеличивается, а не уменьшается, обратный вызов при ранней остановке прерывает процесс обучения.
  • Обратный вызов проверит целевую функцию и, если она не улучшится, остановит процесс обучения. Здесь мы используем обратный вызов журналирования, который принимает три параметра, (i) порог, который определяет допуск улучшения. Например, порог = 0,0005, поэтому, если разница целевых значений меньше предыдущего значения на пороговую величину, вызывается обратный вызов. (ii) trial_number, минимальное количество испытаний, после которых может быть вызван обратный вызов. (iii) терпение - это количество попыток выдержать порог.

  • Вам нужно передать только три значения, здесь мы используем порог 0,00005, терпение 20 и испытание номер 5. Таким образом, только после 5-го испытания, если порог достигается для непрерывных 20 итераций, остановитесь. исследование.

  • Теперь нам нужно определить цель и настроить нашу модель, чтобы найти лучшие параметры.

  • Таким образом, в целевой функции выбирается набор гиперпараметров. Здесь используется сэмплер TPESampler (Tree Parzen Sampler). Вы можете узнать об этом здесь.

  • Таким образом, TPESampler отбирает следующие лучшие гиперпараметры, увеличивая вероятность выбора лучших гиперпараметров по сравнению с текущими лучшими и отбрасывая возможность выбора худших гиперпараметров (вот почему l (x) в числителе и g (x) в знаменателе). Он сравнивает потери каждого набора и выбирает следующий лучший набор гиперпараметров.

  • Здесь y * - квантиль всех выходных значений. Таким образом, для выходных значений, которые имеют потери, чем y *, они принадлежат распределению l (x), а остальные - g (x).
  • Вы также можете использовать RandomSampler, но желательно не использовать с ним обратный вызов. Кроме того, вы можете изучить методы оптимизации байесовских гиперпараметров и другие семплеры от Optuna.
  • Кроме того, вы можете передать (multivariate = True) в сэмплер для многомерной гауссовской модели. В одномерном случае как для l (x), так и для g (x) использовались два GMM. Но в многомерном GMM используется для каждого гиперпараметра. Итак, у нас есть три гиперпараметра, следовательно, 3 GMM используются для l (x) и 3 для g (x). Узнай больше об этом здесь".
  • HyperbandPruner - еще один параметр. Секатор в основном сокращает нежелательные пути. Hyperband Pruner делает это, разделяя пробу на разные части. Затем после каждого фрагмента он берет только лучшие N (скажем,) наборов гиперпараметров и тренирует их для следующего, а в следующем он берет лучшие N / 2 набора и тренирует их дальше. Это продолжается до тех пор, пока у вас не будет наилучшего набора гиперпараметров.

  • Опытным путем вы можете указать, какая комбинация пробоотборника и секатора работает хорошо. Заходите сюда, чтобы найти лучшую комбинацию.

  • Итак, мы начинаем оптимизацию исследования, обратите внимание, что мы передали атрибут catch = (ValueError,). Это означает, что если набор гиперпараметров дает ValueError, игнорируйте и переходите к следующему.
  • Теперь гиперпараметры после и до настройки выглядят следующим образом

  • Посмотрите, есть разница в размере пакета и размере буфера. Это подтверждает тот факт, что полезны более высокий размер буфера и размер пакета. Теперь с вашими настроенными гиперпараметрами (study.best_params) полностью обучите модель

  • Теперь для настроенной модели результаты тестирования на истории

  • Это намного лучше, чем то, что мы достигли с помощью неопределенного коэффициента Шарпа. Так что гиперпараметрическая настройка эффективна. Вы также можете построить график истории оптимизации

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

ДАЛЬНЕЙШИЕ РАБОТЫ

  • Мы можем попробовать многокритериальную функцию вместо единственной целевой функции. Сведите к минимуму потери и максимизируйте коэффициент Шарпа, это повысит надежность и универсальность модели. Агент, увеличивающий коэффициент формы, может быть СЛЕПЫМ ПОКУПАТЕЛЕМ НАГРАДЫ, который может не подходить в финансовых условиях.
  • Настройте больше гиперпараметров и рассчитайте важность гиперпараметров. Это даст полезные сведения о процессе управления в обучении.

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