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

Глава 183: Дистилляция знаний в федеративном обучении для трейдинга

1. Введение

Федеративное обучение (FL) позволяет нескольким участникам торговли совместно обучать модели без обмена необработанными данными. Однако развёртывание FL в реальной торговой инфраструктуре создаёт фундаментальное противоречие: серверы могут размещать большие мощные модели с сотнями миллионов параметров, тогда как периферийные устройства — co-location серверы на биржах, мобильные терминалы или встроенные системы в торговом оборудовании — требуют лёгких моделей, способных принимать решения за микросекунды.

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

Эта глава посвящена Федеративной дистилляции моделей (FedMD) — фреймворку, который:

  • Допускает гетерогенные архитектуры моделей у участников (каждый трейдер может использовать свою модель)
  • Снижает коммуникационные затраты за счёт обмена мягкими метками вместо параметров модели
  • Сохраняет качество модели через распределения вероятностей с температурным масштабированием
  • Позволяет развёртывать торговые модели с субмиллисекундной задержкой на устройствах с ограниченными ресурсами

Мы реализуем полный конвейер на Rust, используя реальные рыночные данные из API Bybit.

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

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

В стандартной классификации (например, предсказание направления рынка: вверх, вниз, боковик) модель выдаёт логиты $z_i$ для каждого класса $i$. Стандартный softmax преобразует их в вероятности:

$$p_i = \frac{\exp(z_i)}{\sum_j \exp(z_j)}$$

Для дистилляции мы вводим температурный параметр $T > 1$, который смягчает распределение:

$$q_i^{(T)} = \frac{\exp(z_i / T)}{\sum_j \exp(z_j / T)}$$

При $T = 1$ это стандартный softmax. С увеличением $T$ распределение становится более мягким, раскрывая «тёмные знания» учителя — относительные вероятности, присвоенные неправильным классам. В трейдинге эти тёмные знания отражают нюансы рыночной структуры: модель-учитель может назначить 70% вероятности «вверх», 25% — «боковику» и 5% — «вниз». Относительное соотношение между «боковиком» и «вниз» содержит ценную информацию, которую жёсткие метки (просто «вверх») отбросили бы.

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

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

$$\mathcal{L}{KD} = T^2 \cdot D{KL}(q^{(T)}{\text{teacher}} | q^{(T)}{\text{student}})$$

где:

$$D_{KL}(P | Q) = \sum_i P(i) \ln \frac{P(i)}{Q(i)}$$

Множитель $T^2$ компенсирует уменьшение амплитуды градиентов из-за температурного масштабирования. Итоговая функция потерь объединяет дистилляцию со стандартной перекрёстной энтропией по жёстким меткам:

$$\mathcal{L}{\text{total}} = \alpha \cdot \mathcal{L}{KD} + (1 - \alpha) \cdot \mathcal{L}_{CE}$$

где $\alpha \in [0, 1]$ балансирует две цели. На практике $\alpha = 0.7$ и $T = 3$ хорошо работают для финансовых временных рядов.

2.3 Анализ градиентов

Градиент функции потерь KL-дивергенции по логитам ученика $z_i^s$:

$$\frac{\partial \mathcal{L}_{KD}}{\partial z_i^s} = \frac{1}{T} \left( q_i^{(T, s)} - q_i^{(T, t)} \right)$$

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

3. FedMD: Федеративная дистилляция моделей

3.1 Обзор алгоритма

FedMD, предложенный Ли и Вангом (2019), фундаментально отличается от FedAvg. Вместо усреднения параметров модели (что требует идентичных архитектур), FedMD обменивается распределениями вероятностей классов на общем публичном датасете.

Алгоритм: FedMD

Вход: K клиентов с гетерогенными моделями, публичный датасет D_pub, T раундов
1. Сервер инициализирует модель-учителя M_teacher
2. Для раунда t = 1 до T:
a. Сервер вычисляет мягкие метки на D_pub:
soft_labels = softmax(M_teacher(D_pub) / temperature)
b. Сервер отправляет soft_labels всем клиентам
c. Каждый клиент k:
- Обучает локальную модель-ученика на локальных данных с жёсткими метками
- Выполняет дистилляцию из soft_labels на D_pub через KL-дивергенцию
- Вычисляет обновлённые мягкие предсказания на D_pub
- Отправляет обновлённые предсказания обратно на сервер
d. Сервер агрегирует предсказания клиентов:
aggregated = (1/K) * sum(client_predictions)
e. Сервер обновляет учителя с использованием агрегированных предсказаний
3. Возвращает обученные модели-ученики

3.2 Эффективность коммуникации

Рассмотрим модель с $P$ параметрами (например, $P = 10^7$ для средней LSTM). FedAvg передаёт $O(P)$ чисел с плавающей точкой за раунд на клиента. FedMD передаёт только $O(|D_{pub}| \times C)$ чисел, где $C$ — количество классов, а $|D_{pub}|$ — размер публичного датасета. Для трейдинга с $C = 3$ (вверх/вниз/боковик) и $|D_{pub}| = 1000$ это всего 3 000 чисел против 10 000 000 — уменьшение в 3 333 раза.

3.3 Гетерогенные архитектуры

Ключевое преимущество FedMD — поддержка различных архитектур моделей у каждого клиента:

КлиентМодельПараметрыПрименение
СерверTransformer (учитель)50МГлубокий анализ
Клиент A2-слойный MLP (ученик)10КHFT на FPGA
Клиент BМалый LSTM (ученик)100КМобильный трейдинг
Клиент CCNN (ученик)50КРаспознавание паттернов

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

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

4.1 Высокочастотный трейдинг на периферии

В HFT каждая микросекунда на счету. Большая модель-учитель на GPU-серверах может анализировать сотни признаков — глубину книги заявок, дисбаланс торгового потока, кросс-активные корреляции — для генерации сложных торговых сигналов. Через дистилляцию крошечная модель-ученик (например, 2-слойный MLP с 1 000 параметрами) может уловить 90-95% предсказательной силы учителя, работая менее чем за 10 микросекунд на обычном оборудовании.

4.2 Мультиплощадочное развёртывание

Торговые фирмы работают на нескольких биржах (Bybit, Binance, CME и др.), каждая со своей микроструктурой рынка. FedMD обеспечивает:

  1. Специфичных для площадки учеников: Каждая биржа получает модель-ученика, адаптированную к её требованиям по задержке и признакам
  2. Кросс-площадочные знания: Учитель агрегирует паттерны со всех площадок, передавая кросс-рыночную аналитику каждому ученику
  3. Сохранение конфиденциальности: Необработанные данные заявок не покидают ни одну площадку

4.3 Адаптивное обновление моделей

Рынки нестационарны. FedMD поддерживает непрерывную дистилляцию:

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

4.4 Управление рисками

Дистиллированные модели могут работать как быстрые мониторы рисков:

  • Модель-учитель: комплексное вычисление VaR/CVaR с полной реконструкцией книги заявок
  • Модель-ученик: лёгкий прокси риска, работающий на частоте тиков
  • Ученик активирует автоматические выключатели при приближении к порогам риска, а учитель выполняет полную проверку асинхронно

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

Наша реализация состоит из трёх основных компонентов:

5.1 Основная библиотека (lib.rs)

Библиотека реализует:

  • TeacherModel: Многослойная нейронная сеть, генерирующая мягкие метки из рыночных признаков
  • StudentModel: Компактная сеть, обучающаяся как на жёстких метках, так и на мягких метках учителя
  • softmax_with_temperature: Softmax с температурным масштабированием для генерации мягких меток
  • kl_divergence: Вычисление KL-дивергенции между распределениями учителя и ученика
  • FederatedDistillation: Координатор FedMD, управляющий коммуникацией учитель-ученик между клиентами

5.2 Генерация мягких меток

pub fn softmax_with_temperature(logits: &[f64], temperature: f64) -> Vec<f64> {
let max_logit = logits.iter().cloned().fold(f64::NEG_INFINITY, f64::max);
let exp_vals: Vec<f64> = logits
.iter()
.map(|&z| ((z - max_logit) / temperature).exp())
.collect();
let sum: f64 = exp_vals.iter().sum();
exp_vals.iter().map(|&e| e / sum).collect()
}

Вычитание max_logit предотвращает числовое переполнение — критически важно для продакшн торговых систем, где одно значение NaN может привести к катастрофическим убыткам.

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

pub fn kl_divergence(p: &[f64], q: &[f64]) -> f64 {
p.iter()
.zip(q.iter())
.map(|(&pi, &qi)| {
if pi > 1e-10 {
pi * (pi / qi.max(1e-10)).ln()
} else {
0.0
}
})
.sum()
}

Мы ограничиваем значения снизу, чтобы избежать ln(0), сохраняя при этом поток градиентов для близких к нулю вероятностей.

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

Торговый пример (trading_example.rs) получает реальные данные OHLCV из API Bybit:

GET https://api.bybit.com/v5/market/kline?category=linear&symbol=BTCUSDT&interval=5&limit=200

Признаки конструируются из необработанных свечей:

  • Доходность цены: (close - open) / open
  • Соотношение тела: |close - open| / (high - low) — отражает форму свечи
  • Верхняя тень: (high - max(open, close)) / (high - low) — сигнал отвержения
  • Изменение объёма: volume[t] / volume[t-1] — индикатор активности

Метки генерируются на основе будущей доходности:

  • Класс 0 (Вниз): следующая доходность < -0.1%
  • Класс 1 (Боковик): следующая доходность в [-0.1%, +0.1%]
  • Класс 2 (Вверх): следующая доходность > +0.1%

7. Анализ производительности

7.1 Коэффициенты сжатия

МетрикаУчительУченикСоотношение
Параметры50 000+500100x
Время инференса~1мс~10мкс100x
Память400КБ4КБ100x
Точность100% (базовая)90-95%~5% потеря

7.2 Экономия коммуникации

Для 10 клиентов, 100 раундов, 3 классов, 200 общих примеров:

  • FedAvg: 10 клиентов x 50 000 параметров x 4 байта x 100 раундов = 200 МБ
  • FedMD: 10 клиентов x 200 примеров x 3 класса x 8 байт x 100 раундов = 4.8 МБ
  • Экономия: 97.6%

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

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

  2. FedMD обеспечивает федеративное обучение с гетерогенными архитектурами, обмениваясь предсказаниями вместо параметров, достигая 97%+ экономии коммуникации

  3. Температурное масштабирование ($T > 1$) раскрывает межклассовые отношения, которые жёсткие метки отбрасывают — критически важно для отражения нюансированных рыночных состояний

  4. KL-дивергенция предоставляет принципиальную целевую функцию для согласования распределений учитель-ученик с хорошо обусловленными градиентами

  5. Развёртывание в трейдинге: дистиллированные модели достигают 90-95% точности учителя при 100-кратном снижении вычислений, обеспечивая субмиллисекундный инференс на периферийных устройствах

  6. Практические соображения: числовая стабильность (трюк log-sum-exp), адаптивное расписание температуры и непрерывная ре-дистилляция для нестационарных рынков

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

Ссылки

  • Hinton, G., Vinyals, O., & Dean, J. (2015). Distilling the Knowledge in a Neural Network. arXiv:1503.02531
  • Li, D., & Wang, J. (2019). FedMD: Heterogeneous Federated Learning via Model Distillation. arXiv:1910.03581
  • McMahan, B., et al. (2017). Communication-Efficient Learning of Deep Networks from Decentralized Data. AISTATS
  • Lin, T., et al. (2020). Ensemble Distillation for Robust Model Fusion in Federated Learning. NeurIPS