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

Глава 201: Дистилляция знаний в трейдинге

1. Введение

Дистилляция знаний, представленная Джеффри Хинтоном, Ориолом Виньялсом и Джеффом Дином в их основополагающей статье 2015 года «Distilling the Knowledge in a Neural Network», — это техника сжатия моделей, которая переносит выученные представления из большой, сложной модели-«учителя» в маленькую, эффективную модель-«ученика». В контексте алгоритмической торговли эта техника решает фундаментальное противоречие: наиболее точные модели часто слишком велики и медленны для развёртывания в реальном времени, тогда как модели, достаточно быстрые для продакшена, часто не обладают достаточной сложностью для захвата комплексной рыночной динамики.

Торговые среды накладывают жёсткие ограничения по задержке. В высокочастотной торговле (HFT) решения должны приниматься за микросекунды. Даже в стратегиях с более низкой частотой вывод модели должен завершиться в пределах временного окна действующих рыночных сигналов. Глубокий ансамбль из градиентного бустинга и нейронных сетей может достичь превосходной альфы, но если он не может выдать прогноз до исчезновения возможности, его точность бесполезна.

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

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

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

2.1 Мягкие цели и масштабирование температурой

Ключевая идея дистилляции знаний заключается в том, что выходное распределение вероятностей обученной модели содержит гораздо больше информации, чем только жёсткие метки. Когда модель-учитель выдаёт вероятности [0.7, 0.2, 0.1] для [покупка, удержание, продажа], относительные величины непобеждающих классов (удержание 0.2 против продажи 0.1) кодируют ценную структурную информацию о входных данных — то, что Хинтон называет «тёмным знанием» (dark knowledge).

Для усиления этого тёмного знания мы применяем масштабирование температурой к функции softmax:

q_i = exp(z_i / T) / sum_j(exp(z_j / T))

где z_i — логиты (выходы до softmax), T — параметр температуры, а q_i — результирующие мягкие вероятности. При T = 1 это стандартный softmax. По мере увеличения T распределение становится мягче (более равномерным), раскрывая больше информации об относительных величинах логитов. Типичный диапазон температуры для дистилляции — T от 2 до 20.

2.2 KL-дивергенция

Ученик обучается соответствовать мягкому распределению вероятностей учителя с помощью дивергенции Кульбака-Лейблера:

L_soft = KL(p_teacher || p_student) = sum_i p_teacher_i * log(p_teacher_i / p_student_i)

где p_teacher и p_student — масштабированные по температуре распределения вероятностей учителя и ученика соответственно. KL-дивергенция измеряет, сколько информации теряется при использовании распределения ученика для аппроксимации распределения учителя.

2.3 Комбинированная функция потерь дистилляции

Общая функция потерь для обучения ученика объединяет потери по мягким целям со стандартными потерями по жёстким меткам:

L_total = alpha * L_hard(y_true, p_student(T=1)) + (1 - alpha) * T^2 * L_soft(p_teacher(T), p_student(T))

Ключевые компоненты:

  • alpha: Параметр балансировки между жёсткими и мягкими потерями, обычно от 0.1 до 0.5. Меньшие значения alpha придают больший вес мягким целям учителя.
  • Масштабирование T^2: Градиенты мягких потерь масштабируются на 1/T^2, поэтому мы умножаем на T^2, чтобы обеспечить сопоставимость величин градиентов мягких и жёстких потерь при изменении температуры.
  • L_hard: Стандартная кросс-энтропийная потеря по истинным меткам, вычисленная при T=1.
  • L_soft: KL-дивергенция между мягкими распределениями учителя и ученика при температуре T.

2.4 Тёмное знание

Тёмное знание — это информация, закодированная в вероятностях нецелевых классов. В трейдинге это особенно ценно:

  • Модель, предсказывающая «покупку» с мягкими выходами [0.6, 0.35, 0.05], предполагает, что ситуация близка к «удержанию» — сделка имеет маргинальную убеждённость.
  • Тот же прогноз «покупка» с [0.6, 0.05, 0.35] предполагает, что альтернативой является сильный сигнал «продажа» — рынок сильно направлен, но неопределён.

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

3. Почему дистилляция для трейдинга

3.1 Требования к задержке в HFT

Системы высокочастотной торговли работают в условиях экстремальных ограничений по задержке:

Бюджет задержкиСтиль торговлиОграничение модели
< 10 микросекундМаркет-мейкинг, HFTТаблицы поиска, линейные модели
10-100 микросекундСтатистический арбитражМаленькие нейронные сети
100 мкс - 1 мсМоментум, возврат к среднемуСредние нейронные сети
1-100 мсСвинг-трейдинг сигналыБольшие модели допустимы

Дистилляция знаний позволяет практикам обучить модель-учителя в категории «1-100 мс» и развернуть ученика в категории «10-100 микросекунд», получая преимущества точности сложной модели при соблюдении требований к задержке более быстрой стратегии.

3.2 Развёртывание на граничных устройствах

Торговля на коллоцированных серверах, FPGA или встраиваемых системах требует минимального размера модели. Ансамбль-учитель, потребляющий 500 МБ памяти и требующий GPU-вывода, непрактичен для граничного развёртывания. Дистиллированный ученик может требовать 1 МБ и работать на одном ядре CPU.

3.3 Сжатие моделей для вывода в реальном времени

Помимо задержки, дистилляция снижает:

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

Эмпирические результаты в различных областях показывают, что дистиллированные ученики обычно сохраняют 90-98% точности учителя при размере и скорости в 10-100 раз меньше.

4. Архитектуры учитель-ученик

4.1 Большой ансамбль-учитель и маленький ученик

Наиболее распространённая схема использует ансамбль-учителя:

Учитель: Ансамбль из N моделей
- Модель 1: Глубокая нейронная сеть (например, 8 слоёв, 512 нейронов)
- Модель 2: Ансамбль градиентного бустинга
- Модель 3: LSTM с вниманием
- ...
- Модель N: Трансформер-энкодер
Выход ансамбля: Среднее вероятностей всех моделей
Ученик: Компактная нейронная сеть
- 2-3 слоя, 32-64 нейрона
- Простая архитектура прямого распространения
- Спроектирована для целевой задержки вывода

Ансамбль-учитель захватывает разнообразные перспективы данных — модели деревьев улавливают взаимодействия признаков, LSTM — временные паттерны, трансформеры — дальние зависимости. Ученик учится аппроксимировать все эти поведения одновременно.

4.2 Кросс-архитектурная дистилляция

Особенно мощный подход для трейдинга — кросс-архитектурная дистилляция:

  • Трансформер-учитель в MLP-ученика: Учитель на основе трансформера захватывает сложные временные зависимости в данных книги ордеров. Ученик MLP, не способный моделировать такие зависимости нативно, учится аппроксимировать выходы трансформера, используя созданные вручную временные признаки.
  • GNN-учитель в линейного ученика: GNN-учитель моделирует межактивные корреляции. Линейный ученик узнаёт, какие пары активов наиболее важны, эффективно дистиллируя структуру графа в веса признаков.
  • RL-учитель в ученика с обучением с учителем: RL-агент обучает оптимальную торговую политику через взаимодействие. Ученик учится имитировать действия RL-агента через дистилляцию с учителем, избегая сложности и нестабильности RL при выводе.

5. Специфические техники для трейдинга

5.1 Дистилляция альфа-сигналов

Вместо дистилляции сырых прогнозов можно дистиллировать промежуточные альфа-сигналы:

  1. Обучить учителя выдавать альфа-факторы (ожидаемые доходности).
  2. Ученик учится воспроизводить эти альфа-факторы из сырых рыночных данных.
  3. Отдельный простой слой оптимизации портфеля конвертирует альфы в позиции.

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

5.2 Дистилляция из бэктестированных стратегий

Новый подход для трейдинга — использование доходностей бэктестированных стратегий как сигнала учителя:

  1. Запустить сложную стратегию в бэктесте, записывая её позиции на каждом временном шаге.
  2. Обучить ученика предсказывать позиции стратегии по рыночным признакам.
  3. Ученик эффективно выучивает сжатую версию стратегии.

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

5.3 Дистилляция с учётом временных рядов

Стандартная дистилляция предполагает независимые и одинаково распределённые выборки. Финансовые временные ряды нарушают это предположение. Дистилляция с учётом временных рядов решает это через:

  • Временное взвешивание: Более свежие мягкие цели получают больший вес, так как знания учителя о недавних рыночных режимах более актуальны.
  • Режимно-условная дистилляция: Раздельная дистилляция для различных рыночных режимов (трендовый, возврат к среднему, волатильный). Ученик выучивает режимно-специфичное поведение от учителя.
  • Последовательная дистилляция: Ученик обрабатывает данные последовательно (как он будет делать в продакшене), и функция потерь дистилляции учитывает эволюцию скрытого состояния ученика.
  • Дистилляция со скользящим окном: Учитель периодически переобучается на новых данных, а ученик непрерывно дистиллируется из обновлённого учителя, обеспечивая адаптацию к меняющимся рыночным условиям.

6. Описание реализации (Rust)

Реализация организована в нескольких компонентах в директории rust/. Основная библиотека (src/lib.rs) предоставляет:

Компоненты нейронной сети

TeacherModel — это многослойная нейронная сеть прямого распространения с настраиваемыми размерами скрытых слоёв (по умолчанию: 128 -> 64 -> 32 нейрона). Она использует активации ReLU и спроектирована для максимальной точности без ограничений по задержке.

StudentModel — компактная двухслойная сеть (по умолчанию: 16 -> 8 нейронов), спроектированная для минимальной задержки вывода при сохранении достаточной ёмкости для захвата тёмного знания учителя.

Softmax с масштабированием температурой

pub fn softmax_with_temperature(logits: &Array1<f64>, temperature: f64) -> Array1<f64> {
let scaled = logits / temperature;
let max_val = scaled.fold(f64::NEG_INFINITY, |a, &b| a.max(b));
let exp_vals = (scaled - max_val).mapv(f64::exp);
let sum = exp_vals.sum();
exp_vals / sum
}

Параметр температуры контролирует мягкость распределения. Более высокие температуры производят более мягкие распределения, раскрывающие больше тёмного знания.

Цикл обучения дистилляции

Цикл обучения вычисляет как жёсткие, так и мягкие потери:

  1. Прямой проход через учителя (замороженные веса) для получения мягких целей при температуре T.
  2. Прямой проход через ученика для получения прогнозов при T=1 (для жёстких потерь) и T (для мягких потерь).
  3. Вычисление комбинированных потерь: alpha * cross_entropy(y_true, student_T1) + (1-alpha) * T^2 * kl_div(teacher_T, student_T).
  4. Обратное распространение только через ученика (веса учителя заморожены).
  5. Обновление весов ученика через градиентный спуск.

Бенчмаркинг вывода

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

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

Реализация получает реальные рыночные данные из API биржи Bybit. Структура BybitClient предоставляет методы для:

  • Получения свежих данных свечей (kline) для любой торговой пары.
  • Разбора данных OHLCV в векторы признаков, подходящие для ввода в модель.
  • Вычисления производных признаков: доходности, волатильность, индикаторы моментума.

Используемая конечная точка API — https://api.bybit.com/v5/market/kline, которая предоставляет публичные рыночные данные без аутентификации. Данные преобразуются в векторы признаков, которые захватывают:

  • Ценовые доходности за несколько окон ретроспективного анализа (1, 5, 10, 20 периодов).
  • Реализованную волатильность.
  • Взвешенные по объёму ценовые изменения.
  • Диапазон максимум-минимум как долю от цены закрытия.

Эти признаки служат входами для моделей учителя и ученика для предсказания направления цены.

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

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

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

  3. Масштабирование температурой контролирует передачу информации: более высокие температуры раскрывают больше внутренних представлений учителя, а коэффициент масштабирования T^2 в комбинированных потерях обеспечивает сбалансированность величин градиентов.

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

  5. Кросс-архитектурная дистилляция особенно мощна для трейдинга, позволяя практикам объединять сильные стороны различных типов моделей (трансформеры, GNN, RL-агенты) в единого развёртываемого ученика.

  6. Комбинированная функция потерь L = alpha * L_hard + (1-alpha) * T^2 * L_soft балансирует обучение по истинным данным и по учителю. На практике меньшие значения alpha (больше веса на мягкие цели) часто лучше работают, когда учитель высокоточен.

  7. Реализация на Rust обеспечивает вывод на уровне микросекунд, делая дистиллированные модели жизнеспособными для HFT и коллоцированного развёртывания, где решения на Python слишком медленны.

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