Глава 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_teacher2. Для раунда 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М | Глубокий анализ |
| Клиент A | 2-слойный MLP (ученик) | 10К | HFT на FPGA |
| Клиент B | Малый LSTM (ученик) | 100К | Мобильный трейдинг |
| Клиент C | CNN (ученик) | 50К | Распознавание паттернов |
Каждая архитектура ученика оптимизирована для своей среды развёртывания, при этом используя комплексное понимание рынка учителем.
4. Торговые приложения
4.1 Высокочастотный трейдинг на периферии
В HFT каждая микросекунда на счету. Большая модель-учитель на GPU-серверах может анализировать сотни признаков — глубину книги заявок, дисбаланс торгового потока, кросс-активные корреляции — для генерации сложных торговых сигналов. Через дистилляцию крошечная модель-ученик (например, 2-слойный MLP с 1 000 параметрами) может уловить 90-95% предсказательной силы учителя, работая менее чем за 10 микросекунд на обычном оборудовании.
4.2 Мультиплощадочное развёртывание
Торговые фирмы работают на нескольких биржах (Bybit, Binance, CME и др.), каждая со своей микроструктурой рынка. FedMD обеспечивает:
- Специфичных для площадки учеников: Каждая биржа получает модель-ученика, адаптированную к её требованиям по задержке и признакам
- Кросс-площадочные знания: Учитель агрегирует паттерны со всех площадок, передавая кросс-рыночную аналитику каждому ученику
- Сохранение конфиденциальности: Необработанные данные заявок не покидают ни одну площадку
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+ | 500 | 100x |
| Время инференса | ~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. Ключевые выводы
-
Дистилляция знаний извлекает тёмные знания из больших моделей-учителей в компактных учеников через мягкие метки с температурным масштабированием
-
FedMD обеспечивает федеративное обучение с гетерогенными архитектурами, обмениваясь предсказаниями вместо параметров, достигая 97%+ экономии коммуникации
-
Температурное масштабирование ($T > 1$) раскрывает межклассовые отношения, которые жёсткие метки отбрасывают — критически важно для отражения нюансированных рыночных состояний
-
KL-дивергенция предоставляет принципиальную целевую функцию для согласования распределений учитель-ученик с хорошо обусловленными градиентами
-
Развёртывание в трейдинге: дистиллированные модели достигают 90-95% точности учителя при 100-кратном снижении вычислений, обеспечивая субмиллисекундный инференс на периферийных устройствах
-
Практические соображения: числовая стабильность (трюк log-sum-exp), адаптивное расписание температуры и непрерывная ре-дистилляция для нестационарных рынков
-
Фундаментальный компромисс: размер модели против точности предсказаний. Дистилляция знаний в 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