Перейти к содержимому

Глава 319: Популяционное обучение (PBT) для трейдинга

1. Введение

Популяционное обучение (Population Based Training, PBT) — это мощная техника оптимизации гиперпараметров, представленная DeepMind, которая объединяет преимущества случайного поиска и ручной настройки с эффективностью эволюционных методов. В отличие от традиционных подходов к оптимизации гиперпараметров, таких как поиск по сетке или байесовская оптимизация, которые рассматривают обучение как независимые оценки чёрного ящика, PBT совместно оптимизирует популяцию моделей и их гиперпараметры в рамках одного процесса обучения.

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

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

Ключевое понимание PBT заключается в том, что гиперпараметры — это не статические величины, которые нужно определить перед обучением. Вместо этого они являются динамическими расписаниями, которые должны эволюционировать вместе с параметрами модели. Это особенно важно для трейдинга, где рыночные условия меняются, и оптимальная скорость обучения или сила регуляризации в начале обучения может существенно отличаться от оптимальной позднее.

2. Математические основы

2.1 Формулировка популяции

Рассмотрим популяцию из N агентов {(theta_i, h_i)} для i=1..N, где theta_i представляет параметры модели (веса), а h_i представляет гиперпараметры агента i. Каждый агент имеет связанную метрику производительности p_i = f(theta_i, h_i), которая в трейдинге может быть коэффициентом Шарпа, общей доходностью или любой мерой доходности с учётом риска.

2.2 Шаг эксплуатации (Exploit)

Шаг эксплуатации определяет, должен ли агент скопировать параметры более успешного агента. Для агента i определим операцию эксплуатации:

exploit(theta_i, h_i, p_i) =
(theta_j, h_j) если p_j > p_i * (1 + epsilon)
(theta_i, h_i) в противном случае

где j = argmax_k(p_k) — наиболее успешный агент в популяции, а epsilon — порог допуска, предотвращающий ненужное копирование при незначительных различиях в производительности.

Распространённые стратегии эксплуатации:

  • Усечённый отбор: Копирование весов от случайно выбранного агента из верхних 20% популяции.
  • Бинарный турнир: Случайная выборка другого агента; если он лучше, копируем его веса.
  • Пропорциональный отбор: Копирование весов от агента j с вероятностью, пропорциональной p_j.

2.3 Шаг исследования (Explore)

После эксплуатации шаг исследования возмущает гиперпараметры для внесения разнообразия:

h_i' = h_i * (1 + delta), delta ~ Uniform(-alpha, alpha)

где alpha контролирует величину возмущения. Для дискретных гиперпараметров (например, размер батча) мы пересэмплируем из заранее определённого набора:

h_i_discrete ~ Categorical({v_1, v_2, ..., v_m})

с вероятностью p_resample и сохраняем текущее значение в противном случае.

2.4 Асинхронная эволюция

В отличие от синхронных эволюционных методов, PBT работает асинхронно. Каждый агент обучается независимо, а шаги эксплуатации/исследования запускаются по расписанию (например, каждые T шагов обучения):

На шаге t: если t mod T = 0, то (theta_i, h_i) <- explore(exploit(theta_i, h_i, p_i))

Асинхронная природа означает, что агентам не нужно ждать друг друга, что критически важно для практической масштабируемости. В контексте трейдинга это означает, что разные агенты могут обрабатывать разные объёмы рыночных данных перед оценкой, позволяя более быстрым агентам эволюционировать быстрее.

2.5 Свойства сходимости

PBT сходится к области пространства гиперпараметров, которая обеспечивает хорошую производительность, потому что:

  1. Давление эксплуатации: Плохие конфигурации заменяются хорошими, концентрируя популяцию вокруг хороших решений.
  2. Разнообразие исследования: Возмущение гарантирует, что популяция не схлопнется в одну точку, сохраняя способность обнаруживать лучшие конфигурации.
  3. Обнаружение расписаний: Поскольку гиперпараметры могут меняться со временем, PBT неявно обнаруживает расписания гиперпараметров, а не фиксированные значения.

Баланс между эксплуатацией и исследованием определяется размером популяции N, величиной возмущения alpha и частотой оценки T.

3. Применения в трейдинге

3.1 Ансамбли торговых стратегий

PBT естественно создаёт ансамбль торговых стратегий при сходимости. Вместо выбора одной лучшей модели вся популяция может использоваться как ансамбль:

y_hat_ensemble = (1/N) * sum(w_i * y_hat_i)

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

  • Диверсификация: Разные агенты могут специализироваться на разных рыночных режимах.
  • Устойчивость: Ансамбль менее чувствителен к переобучению отдельного агента.
  • Адаптивное распределение: Веса могут динамически корректироваться на основе недавней производительности.

3.2 Популяции агентов обучения с подкреплением

В трейдинге на основе RL, PBT используется для одновременной оптимизации гиперпараметров алгоритма RL (скорость обучения, коэффициент дисконтирования gamma, коэффициент энтропии и т.д.) наряду с параметрами политики. Популяция агентов RL торгует параллельно, причём коэффициент Шарпа или PnL каждого агента служит метрикой приспособленности.

Ключевые гиперпараметры для торговых агентов RL:

ГиперпараметрТипичный диапазонСтратегия возмущения
Скорость обучения1e-5 до 1e-2Логарифмическое умножение
Коэффициент дисконтирования gamma0.9 до 0.999Линейное возмущение
Размер батча32, 64, 128, 256Категориальный ресэмплинг
Коэффициент энтропии0.001 до 0.1Логарифмическое умножение
Окно наблюдения10, 20, 50, 100Категориальный ресэмплинг
Штраф за риск lambda0.01 до 1.0Линейное возмущение

3.3 Адаптация к нестационарности рынка

Рынки демонстрируют смены режимов. PBT может запускаться непрерывно, позволяя популяции адаптироваться к меняющимся рыночным условиям. При смене режима ранее хорошие гиперпараметры могут стать неоптимальными. Механизм исследования гарантирует, что новые конфигурации постоянно тестируются, в то время как эксплуатация обеспечивает быструю сходимость агентов к конфигурациям, которые хорошо работают в новом режиме.

4. Детали алгоритма PBT от DeepMind

Оригинальный алгоритм PBT от Jaderberg et al. (2017) работает следующим образом:

Алгоритм: Популяционное обучение

Инициализировать популяцию P = {(theta_i, h_i)} для i=1..N случайно
Для каждого агента i параллельно:
Пока не сошлось:
1. Обучить: theta_i <- train(theta_i, h_i, data) // стандартное обновление градиентом
2. Оценить: p_i <- evaluate(theta_i, validation_data)
3. Если ready(i, t): // триггер по времени
a. ЭКСПЛУАТАЦИЯ:
j <- select_parent(P, p) // выбрать лучшего агента
если p_j > p_i:
theta_i <- copy(theta_j) // копировать веса
h_i <- copy(h_j) // копировать гиперпараметры
b. ИССЛЕДОВАНИЕ:
h_i <- perturb(h_i) // мутировать гиперпараметры
Вернуть лучшего агента из P

Ключевые проектные решения

  1. Размер популяции: Обычно 10-50 агентов. Большие популяции обеспечивают больше разнообразия, но требуют больше вычислений. Для трейдинга обычно достаточно 10-20 агентов.

  2. Частота оценки: Как часто выполнять эксплуатацию/исследование. Слишком часто — нестабильность; слишком редко — потеря вычислений на плохих конфигурациях. Типичный выбор — каждая эпоха или фиксированное количество обновлений градиента.

  3. Стратегия эксплуатации: Усечённый отбор (копирование из верхних 20%) — наиболее распространённый выбор благодаря простоте и эффективности.

  4. Факторы возмущения: Непрерывные гиперпараметры обычно умножаются на 0.8 или 1.2 (возмущение 20%). Это обеспечивает достаточное исследование без разрушения хороших конфигураций.

  5. Период разогрева: Агенты должны обучаться минимальное количество шагов перед первым эксплуатацией/исследованием для обеспечения значимых различий в производительности.

Преимущества перед альтернативами

МетодПараллелизмОбнаружение расписанийВычислительная эффективность
Поиск по сеткеДаНетНизкая
Случайный поискДаНетСредняя
Байесовская оптимизацияОграниченныйНетВысокая (на пробу)
PBTДаДаВысокая (в целом)

5. Реализация на Rust

Наша реализация на Rust предоставляет высокопроизводительный фреймворк PBT для торговых приложений. Основные компоненты включают:

  • Agent: Представляет одного члена популяции с весами модели и гиперпараметрами.
  • Population: Управляет коллекцией агентов и оркестрирует процесс PBT.
  • TradingEnvironment: Моделирует торговую среду с использованием ценовых данных.
  • BybitClient: Получает реальные рыночные данные с биржи Bybit.

Реализация использует характеристики производительности Rust для эффективной параллельной оценки агентов и ndarray для численных операций. Ключевые проектные решения:

  • Агенты используют простые линейные модели для прогнозирования цен, сосредоточив внимание на самом механизме PBT.
  • Шаг эксплуатации использует усечённый отбор (верхние 20%).
  • Шаг исследования возмущает непрерывные гиперпараметры на настраиваемый коэффициент и пересэмплирует дискретные.
  • Производительность измеряется упрощённым коэффициентом Шарпа, вычисленным по доходностям агента.

Полную реализацию см. в rust/src/lib.rs, а полный пример с использованием рыночных данных Bybit — в rust/examples/trading_example.rs.

6. Интеграция данных Bybit

Реализация интегрируется с публичным API Bybit для получения реальных рыночных данных криптовалют. Мы используем эндпоинт /v5/market/kline для получения OHLCV (Open, High, Low, Close, Volume) свечных данных для любой торговой пары.

Интеграция API

Структура BybitClient предоставляет методы для получения данных kline с настраиваемыми:

  • Символ: Торговая пара (например, BTCUSDT, ETHUSDT)
  • Интервал: Интервал свечей (например, 1m, 5m, 1h, 1d)
  • Лимит: Количество свечей для получения

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

Конвейер данных

Bybit API -> JSON ответ -> структуры Kline -> векторы цен -> TradingEnvironment -> оценка агентов

Этот конвейер позволяет PBT оптимизировать торговых агентов на реальных рыночных данных, обеспечивая реалистичную оценку производительности для решений эксплуатации/исследования.

7. Ключевые выводы

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

  2. Асинхронная эволюция практична и масштабируема. Агентам не нужна синхронизированная оценка, что делает PBT подходящим для распределённых обучающих установок, распространённых в количественных финансах.

  3. PBT обнаруживает расписания гиперпараметров, а не только фиксированные значения. Это критически важно для трейдинга, где рыночные режимы меняются и оптимальные гиперпараметры сдвигаются соответственно.

  4. Баланс эксплуатации/исследования отражает классический компромисс в обучении с подкреплением. Размер популяции и величина возмущения — ключевые регуляторы этого баланса.

  5. Ансамбли торговых стратегий возникают естественно из PBT. Финальная популяция предоставляет разнообразный набор стратегий, которые можно комбинировать для более устойчивых торговых решений.

  6. PBT особенно хорошо подходит для трейдинга на основе RL, потому что агенты RL имеют множество чувствительных гиперпараметров (скорость обучения, коэффициент дисконтирования, коэффициент энтропии), которые взаимодействуют сложным образом.

  7. Rust обеспечивает необходимую производительность для эффективного запуска больших популяций агентов. Сочетание абстракций с нулевой стоимостью и безопасности памяти делает его идеальным для производственных торговых систем, где важны как скорость, так и надёжность.

  8. Интеграция реальных рыночных данных через Bybit гарантирует, что оптимизация PBT отражает реальные рыночные условия, а не синтетические бенчмарки, что ведёт к более практичным торговым стратегиям.

Ссылки

  • Jaderberg, M., Dalibard, V., Osindero, S., et al. (2017). “Population Based Training of Neural Networks.” arXiv:1711.09846.
  • Li, A., et al. (2019). “Generalized Population Based Training.” arXiv:1902.01894.
  • Parker-Holder, J., et al. (2020). “Provably Efficient Online Hyperparameter Optimization with Population-Based Bandits.” NeurIPS 2020.