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

Глава 205: Лотерейный билет в трейдинге

1. Введение: Гипотеза лотерейного билета

В 2019 году Джонатан Франкл и Майкл Карлин опубликовали знаковую работу «The Lottery Ticket Hypothesis: Finding Sparse, Trainable Networks», которая фундаментально изменила представления исследователей об архитектурах нейронных сетей. Центральное утверждение одновременно простое и глубокое: случайно инициализированная плотная нейронная сеть содержит разреженные подсети (выигрышные билеты), которые при обучении изолированно с той же инициализацией могут достичь точности исходной плотной сети за сопоставимое число итераций обучения.

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

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

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

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

2.1 Формальное определение

Пусть $f(x; \theta)$ обозначает нейронную сеть с входом $x$ и параметрами $\theta \in \mathbb{R}^d$. Параметры инициализируются как $\theta_0 \sim \mathcal{D}\theta$, где $\mathcal{D}\theta$ — распределение инициализации (например, Xavier или Kaiming). После обучения в течение $T$ итераций оптимизатором $\mathcal{A}$ мы получаем $\theta_T$.

Маска $m \in {0, 1}^d$ определяет подсеть $f(x; m \odot \theta)$, где $\odot$ обозначает поэлементное умножение. Разреженность маски составляет $s = 1 - \frac{|m|_0}{d}$, представляя долю обрезанных параметров.

Гипотеза лотерейного билета: Существует маска $m^$ с разреженностью $s \gg 0$ такая, что $f(x; m^ \odot \theta_0)$, обученная не более $T$ итераций, достигает точности на тесте $\geq$ точности $f(x; \theta_0)$, обученной за $T$ итераций.

2.2 Идентификация выигрышного билета

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

Формально, для обученных параметров $\theta_T$ мы строим маску:

$$m^*j = \begin{cases} 1 & \text{если } |\theta{T,j}| \geq \text{quantile}(|\theta_T|, s) \ 0 & \text{иначе} \end{cases}$$

Это означает, что мы сохраняем верхнюю долю $(1-s)$ весов по величине и обрезаем остальные.

2.3 Итеративный прунинг по величине (IMP)

Вместо обрезки всех весов за один раз алгоритм IMP обрезает долю $p$ за раунд в течение $n$ раундов, достигая конечной разреженности $1 - (1-p)^n$. Этот итеративный подход находит лучшие билеты, чем однократный прунинг.

Алгоритм: Итеративный прунинг по величине

Вход: Сеть f(x; θ), коэффициент обрезки p, число раундов n
1. Инициализировать θ₀ ~ D_θ
2. Сохранить начальные веса θ₀
3. Для раунда i = 1 до n:
a. Обучить f(x; mᵢ₋₁ ⊙ θ₀) за T итераций → θ_T
b. Вычислить оценки по величине: sⱼ = |θ_{T,j}| для всех j, где mᵢ₋₁,ⱼ = 1
c. Обрезать нижнюю долю p: mᵢ,ⱼ = mᵢ₋₁,ⱼ · 𝟙[sⱼ ≥ quantile(s, p)]
d. Вернуть веса к θ₀
4. Вернуть маску mₙ (маска выигрышного билета)

Ключевой шаг — откат: после каждого раунда прунинга, вместо продолжения с обученных весов, мы возвращаемся к исходной инициализации $\theta_0$. Это отличает идентификацию лотерейного билета от стандартного прунинга — мы ищем подсети, которые могут обучаться с нуля, а не просто сжимаем уже обученную модель.

3. Поиск лотерейных билетов

3.1 Цикл «обучение — прунинг — откат — переобучение»

Практический рабочий процесс поиска лотерейных билетов состоит из четырёх шагов, повторяемых итеративно:

  1. Обучение: Обучить текущую подсеть (изначально полную сеть) до сходимости или за фиксированное число эпох.
  2. Прунинг: Удалить долю оставшихся весов с наименьшими величинами. Типичные коэффициенты обрезки составляют 20% за раунд.
  3. Откат: Сбросить все выжившие веса к их значениям при инициализации (или на ранней эпохе обучения — см. раздел 5 о позднем откате).
  4. Переобучение: Обучить обрезанную подсеть с откатных весов для проверки достижения полной точности.

Этот цикл продолжается до достижения желаемого уровня разреженности или до существенного ухудшения производительности.

3.2 Ранние билеты (Early-Bird Tickets)

Существенная практическая проблема IMP — его вычислительная стоимость: каждый раунд требует полного обучения сети. You et al. (2020) ввели концепцию ранних билетов — выигрышных билетов, которые можно идентифицировать на ранних этапах обучения, обычно в первые 10-30% тренировочных эпох.

Феномен ранних билетов использует наблюдение, что структура маски (какие веса важны) стабилизируется задолго до схождения самих весов. Отслеживая расстояние Хэмминга между масками последовательных ранних контрольных точек, можно обнаружить стабилизацию маски и прекратить обучение досрочно.

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

3.3 Стабильность маски и качество билета

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

4. Торговые приложения

4.1 Поиск минимальных экстракторов торговых сигналов

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

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

4.2 Устойчивые разреженные модели

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

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

4.3 Преимущества по задержке

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

4.4 Адаптация к режимам

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

5. Поздний откат и линейная связность мод

5.1 Поздний откат

Frankle et al. (2020) обнаружили, что для больших сетей откат к итерации 0 часто не работает — выигрышный билет не может успешно обучаться с точной инициализации. Однако откат к ранней итерации обучения $k$ (обычно $k$ соответствует 0.1-7% общего обучения) восстанавливает свойство лотерейного билета. Это называется поздний откат или откат к итерации $k$.

Модификация позднего отката меняет алгоритм:

  • Вместо сохранения $\theta_0$ сохраняем $\theta_k$ после $k$ шагов обучения.
  • После каждого раунда прунинга откатываем к $\theta_k$ вместо $\theta_0$.

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

5.2 Линейная связность мод

Frankle et al. далее показали, что успешные лотерейные билеты демонстрируют линейную связность мод с плотной моделью: для любого $\alpha \in [0, 1]$ линейно интерполированная модель $\alpha \cdot \theta_{\text{dense}} + (1-\alpha) \cdot \theta_{\text{sparse}}$ достигает потерь, сопоставимых с обоими конечными точками. Это означает, что выигрышный билет и плотная модель сходятся к одному бассейну ландшафта потерь.

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

6. Пошаговое руководство по реализации (Rust)

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

6.1 Сеть с поддержкой масок

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

// Маскированный прямой проход: output = activation(input * (W ⊙ mask) + b)
let masked_weights = weights * mask; // поэлементно
let output = (input.dot(&masked_weights) + bias).mapv(|x| x.max(0.0)); // ReLU

6.2 Откат весов

Сеть поддерживает сохранение и восстановление начальных весов:

// До любого обучения
let initial_weights = network.save_weights();
// После раунда прунинга
network.restore_weights(&initial_weights);
// Маска сохраняется — восстанавливаются только немаскированные веса

6.3 Итеративный прунинг по величине

Цикл IMP реализует полный поиск лотерейного билета:

for round in 0..num_rounds {
// Обучение с текущей маской
network.train(&data, epochs);
// Обрезка нижних p% оставшихся весов по величине
network.prune_by_magnitude(pruning_rate);
// Откат к начальным весам (с сохранением новой маски)
network.restore_weights(&initial_weights);
}
// Финальная маска определяет выигрышный билет
let winning_mask = network.get_mask();

6.4 Сравнение выигрышного и случайного билетов

Для проверки, что мы нашли подлинный выигрышный билет (а не просто любую разреженную подсеть), мы сравниваем со случайным билетом той же разреженности:

// Случайный билет: та же разреженность, случайная маска
let random_mask = generate_random_mask(network.param_count(), sparsity);
random_network.set_mask(&random_mask);
random_network.restore_weights(&initial_weights);
random_network.train(&data, epochs);
// Выигрышный билет должен значительно превосходить случайный
assert!(winning_accuracy > random_accuracy);

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

Реализация включает клиент API Bybit, который получает данные свечей OHLCV для любой торговой пары. Признаки вычисляются из сырых свечей (доходности, волатильность, индикаторы моментума), нормализуются и подаются в сеть.

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

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

Наша реализация подключается к публичному API Bybit для получения реальных рыночных данных. Используемый эндпоинт:

GET https://api.bybit.com/v5/market/kline

Параметры:

  • category: “linear” (для бессрочных контрактов USDT)
  • symbol: например, “BTCUSDT”
  • interval: например, “60” (1-часовые свечи)
  • limit: количество свечей (макс. 200)

Сырые данные OHLCV преобразуются в признаки, подходящие для нейронной сети:

  1. Логарифмические доходности: $r_t = \ln(C_t / C_{t-1})$, где $C_t$ — цена закрытия в момент $t$.
  2. Волатильность: Скользящее стандартное отклонение доходностей за окно наблюдения.
  3. Моментум: Скорость изменения цены за несколько периодов наблюдения.
  4. Коэффициент объёма: Текущий объём относительно скользящего среднего объёма.

Эти признаки нормализуются к нулевому среднему и единичной дисперсии перед подачей в сеть. Целевая переменная — знак доходности следующего периода (бинарная классификация: рост или падение).

Особенности данных для лотерейных билетов

При применении методологии лотерейного билета к финансовым данным учитывайте следующее:

  • Нестационарность: Рыночные данные нестационарны, поэтому выигрышные билеты могут со временем стать «проигрышными». Рекомендуется периодическая переидентификация билетов (ежемесячно или ежеквартально).
  • Эффективность по выборке: Финансовые наборы данных малы по сравнению с данными изображений или текста. Это фактически благоприятствует подходу лотерейного билета, так как разреженные модели лучше обобщают в режимах с малым объёмом данных.
  • Скользящая валидация: Всегда используйте walk-forward (расширяющееся или скользящее окно) валидацию вместо случайного разделения на обучающую и тестовую выборки, чтобы соблюдать временную структуру данных.

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

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

  2. Итеративный прунинг по величине (IMP) — основной алгоритм поиска выигрышных билетов. Он чередует обучение, обрезку весов с наименьшей величиной и откат к начальным весам. Несколько раундов умеренного прунинга превосходят однократный агрессивный прунинг.

  3. Выигрышные билеты — это не просто любая разреженная сеть. Они значительно превосходят случайные подсети той же разреженности, подтверждая, что конкретная структура, выявленная IMP, имеет значение.

  4. Для трейдинга лотерейные билеты предлагают три ключевых преимущества: (a) структурная регуляризация, снижающая переобучение на рыночном шуме, (b) интерпретируемость модели через структуру сохранившихся связей, и (c) сниженная задержка инференса для чувствительных ко времени стратегий.

  5. Поздний откат (к ранней итерации обучения, а не к итерации 0) часто необходим для больших сетей и более сложных задач. Это практическое соображение при реализации поиска лотерейных билетов для продуктовых торговых систем.

  6. Ранние билеты могут быть идентифицированы в первые 10-30% обучения, радикально снижая вычислительные затраты на поиск лотерейных билетов и делая возможным периодическую переидентификацию при изменении рыночных условий.

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

  8. Реализация на Rust, представленная в этой главе, демонстрирует полный рабочий процесс: получение рыночных данных от Bybit, обучение плотной сети, применение IMP для поиска выигрышных билетов и сравнение выигрышных билетов со случайными базовыми линиями.

Ссылки

  • Frankle, J., & Carlin, M. (2019). The Lottery Ticket Hypothesis: Finding Sparse, Trainable Networks. ICLR 2019.
  • Frankle, J., Dziugaite, G. K., Roy, D. M., & Carlin, M. (2020). Linear Mode Connectivity and the Lottery Ticket Hypothesis. ICML 2020.
  • You, H., Li, C., Xu, P., Fu, Y., Wang, Y., Chen, X., Baraniuk, R. G., Wang, Z., & Lin, Y. (2020). Drawing Early-Bird Tickets: Towards More Efficient Training of Deep Networks. ICLR 2020.
  • Malach, E., Yehudai, G., Shalev-Shwartz, S., & Shamir, O. (2020). Proving the Lottery Ticket Hypothesis: Pruning is All You Need. ICML 2020.