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

Глава 210: Дистилляция признаков

1. Введение

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

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

Дистилляция признаков охватывает несколько техник, разработанных за последнее десятилетие: FitNets ввели обучение на основе подсказок, где промежуточные слои ученика направляются к воспроизведению промежуточных слоёв учителя; методы передачи внимания сопоставляют карты пространственного внимания между учителем и учеником; сопоставление матриц Грама фиксирует статистики второго порядка признаков; а контрастивная дистилляция представлений (CRD) использует контрастивное обучение для выравнивания пространств признаков. Каждая техника предлагает различные компромиссы между вычислительной стоимостью, точностью представлений и качеством обобщения.

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

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

2.1 FitNets и слои подсказок

FitNets, представленные Romero и др. (2015), расширяют дистилляцию знаний, добавляя этап обучения на основе подсказок. Основная идея — выбрать «слой подсказки» из учителя и «направляемый слой» из ученика, затем обучить ученика так, чтобы выход его направляемого слоя совпадал с выходом слоя подсказки учителя.

Пусть $T_h(x)$ обозначает выход слоя подсказки учителя для входа $x$, а $S_g(x)$ — выход направляемого слоя ученика. Поскольку эти слои могут иметь разные размерности, вводится обучаемая проекция (регрессор) $r$:

$$\mathcal{L}_{\text{hint}} = \frac{1}{2} | T_h(x) - r(S_g(x)) |^2_2$$

где $r: \mathbb{R}^{d_s} \rightarrow \mathbb{R}^{d_t}$ — линейное или неглубокое нелинейное отображение, выравнивающее пространство признаков ученика с пространством признаков учителя.

Обучение проходит в два этапа:

  1. Обучение по подсказкам: минимизация $\mathcal{L}_{\text{hint}}$ для предварительного обучения нижних слоёв ученика
  2. Полное обучение: минимизация стандартной функции потерь дистилляции знаний с использованием мягких целей

2.2 Передача внимания

Передача внимания, предложенная Загоруйко и Комодакисом (2017), сопоставляет карты внимания, а не сырые активации. Для 3D-тензора активаций $A \in \mathbb{R}^{C \times H \times W}$ из слоя сети карта пространственного внимания определяется как:

$$Q(A) = \sum_{i=1}^{C} |A_i|^p$$

где $A_i$ — $i$-й канал, а $p$ — параметр степени (обычно $p = 2$). Функция потерь передачи внимания:

$$\mathcal{L}{\text{AT}} = \sum{j \in \mathcal{I}} \left| \frac{Q_S^j}{| Q_S^j |_2} - \frac{Q_T^j}{| Q_T^j |_2} \right|_2$$

где $\mathcal{I}$ индексирует сопоставленные пары слоёв, а $Q_S^j$, $Q_T^j$ — карты внимания ученика и учителя на паре слоёв $j$.

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

2.3 Сопоставление активаций

Прямое сопоставление активаций выравнивает сырые активации между слоями учителя и ученика. Для сопоставленной пары слоёв $(l_T, l_S)$:

$$\mathcal{L}{\text{act}} = \frac{1}{N} \sum{i=1}^{N} | \phi(F_T^{l_T}(x_i)) - \psi(F_S^{l_S}(x_i)) |^2_F$$

где $F_T^{l_T}$ и $F_S^{l_S}$ — активации на указанных слоях, $\phi$ и $\psi$ — опциональные функции проекции, а $| \cdot |_F$ — норма Фробениуса.

2.4 Сопоставление матриц Грама

Сопоставление матриц Грама захватывает статистики второго порядка представлений признаков. Для активации $A \in \mathbb{R}^{C \times D}$ (где $D$ — пространственная или временная размерность) матрица Грама:

$$G(A) = A \cdot A^T \in \mathbb{R}^{C \times C}$$

Каждый элемент $G_{ij}$ измеряет корреляцию между каналами $i$ и $j$. Функция потерь сопоставления матриц Грама:

$$\mathcal{L}{\text{Gram}} = \sum{j \in \mathcal{I}} \left| \frac{G(A_T^j)}{C_T^j \cdot D_T^j} - \frac{G(A_S^j)}{C_S^j \cdot D_S^j} \right|^2_F$$

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

2.5 Контрастивная дистилляция представлений (CRD)

CRD, предложенная Tian и др. (2020), формулирует дистилляцию признаков как задачу контрастивного обучения. Вместо прямого сопоставления признаков CRD максимизирует взаимную информацию между представлениями учителя и ученика.

Для представления учителя $t = f_T(x)$ и представления ученика $s = f_S(x)$ CRD оптимизирует:

$$\mathcal{L}{\text{CRD}} = -\mathbb{E}\left[\log \frac{h(t, s)}{\sum{s’ \in \mathcal{N}} h(t, s’)}\right]$$

где $h(t, s) = \exp(t^T W s / \tau)$ — билинейная функция сходства, $\mathcal{N}$ — множество негативных примеров, а $\tau$ — параметр температуры. Этот подход более гибок, чем прямое сопоставление, поскольку сохраняет структурные отношения в пространстве представлений без требования точного выравнивания.

3. Стратегии сопоставления признаков

3.1 Какие слои сопоставлять

Выбор слоёв учителя и ученика для сопоставления существенно влияет на качество дистилляции. Существует несколько стратегий:

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

Для торговых моделей практическая эвристика — сопоставлять на трёх уровнях: (1) после начального слоя извлечения признаков (обработка сырых рыночных признаков), (2) в середине сети (составные представления признаков) и (3) непосредственно перед финальной головкой предсказания (высокоуровневое представление рыночного состояния).

3.2 Проекционные головки для выравнивания размерностей

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

  • Линейная проекция: $r(x) = Wx + b$. Простая и эффективная при небольших различиях в размерности.
  • MLP-проекция: двуслойная сеть $r(x) = W_2 \cdot \sigma(W_1 x + b_1) + b_2$. Лучше при больших различиях в размерности.
  • Свёртка 1x1: для карт признаков свёртка 1x1 корректирует размерность каналов, сохраняя пространственную/временную структуру.
  • Адаптивный пулинг + линейная: сначала пулинг пространственной/временной размерности для сопоставления, затем линейное преобразование для размерности каналов.

Проекционная головка обучается совместно с учеником, но отбрасывается при инференсе — это чисто обучающий артефакт.

3.3 Взвешивание функций потерь

Итоговая функция потерь для обучения объединяет несколько целей:

$$\mathcal{L}{\text{total}} = \alpha \cdot \mathcal{L}{\text{task}} + \beta \cdot \mathcal{L}{\text{KD}} + \sum{j} \gamma_j \cdot \mathcal{L}_{\text{feature}}^j$$

где $\mathcal{L}{\text{task}}$ — стандартная функция потерь задачи (например, MSE для регрессии, кросс-энтропия для классификации), $\mathcal{L}{\text{KD}}$ — функция потерь дистилляции на уровне выходов, а $\mathcal{L}_{\text{feature}}^j$ — функция потерь сопоставления признаков на паре слоёв $j$.

Ключевые моменты при взвешивании потерь:

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

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

4.1 Дистилляция экстракторов признаков для микроструктуры рынка

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

  • Уровень 1: сырые статистики потока ордеров (спред bid-ask, длины очередей, частота прихода сделок)
  • Уровень 2: производные микроструктурные сигналы (дисбаланс потока ордеров, информативность сделок, риск неблагоприятного выбора)
  • Уровень 3: режимно-зависимые составные признаки (режим ликвидности, информационный режим, режим волатильности)

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

4.2 Передача представлений между таймфреймами

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

Это особенно ценно, потому что:

  • Тиковые модели дороги в эксплуатации
  • Минутные модели дешевле, но упускают микроструктурную информацию
  • Дистилляция признаков устраняет этот разрыв, обучая минутные модели неявно представлять микроструктурную динамику

4.3 Передача представлений между активами

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

5. Кросс-доменная передача признаков

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

Процесс включает:

  1. Обучение учителя на богатом данными исходном домене (например, акции США с данными за десятилетия)
  2. Выбор переносимых признаков: использование техник адаптации домена для определения доменно-инвариантных и доменно-специфичных признаков учителя
  3. Дистилляция признаков с адаптацией домена: сопоставление только доменно-инвариантных признаков, позволяя ученику развивать собственные доменно-специфичные признаки
  4. Тонкая настройка: после дистилляции признаков — тонкая настройка ученика на данных целевого домена

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

Практический пример: дистилляция признаков от учителя, обученного на составляющих S&P 500, к ученику, торгующему фьючерсами на криптовалюты. Универсальные признаки (обнаружение моментума, сигналы возврата к среднему, классификация режимов волатильности) хорошо переносятся, тогда как ученик осваивает крипто-специфичные признаки (динамика ставки финансирования, базис бессрочных контрактов, каскады ликвидаций) из данных целевого домена.

6. Обзор реализации

Наша реализация на Rust предоставляет полноценный фреймворк дистилляции признаков со следующими компонентами:

6.1 Архитектура сети

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

// Сеть учителя с 3 скрытыми слоями, раскрывающая промежуточные признаки
let teacher = TeacherNetwork::new(input_dim, &[128, 64, 32], output_dim);
let (output, features) = teacher.forward_with_features(&input);
// features: Vec<Array2<f64>> содержит активации каждого скрытого слоя
// Сеть ученика с 2 скрытыми слоями, меньшие размерности
let student = StudentNetwork::new(input_dim, &[32, 16], output_dim);
let (output, features) = student.forward_with_features(&input);

6.2 Функции потерь дистилляции признаков

Каждая функция потерь работает с сопоставленными парами карт признаков учителя и ученика:

// FitNet потери подсказок с проекцией
let hint_loss = fitnet_loss(&teacher_features[1], &student_features[0], &projection);
// Потери передачи внимания
let at_loss = attention_transfer_loss(&teacher_features, &student_features);
// Сопоставление матриц Грама
let gram_loss = gram_matrix_loss(&teacher_features[1], &student_features[0]);

6.3 Комбинированное обучение

Цикл обучения комбинирует потери задачи, выходную дистилляцию и сопоставление признаков:

let config = DistillationConfig {
alpha: 0.3, // вес потерь задачи
beta: 0.3, // вес потерь KD
gamma: vec![0.2, 0.2], // веса сопоставления признаков по слоям
temperature: 4.0,
feature_method: FeatureMethod::Combined, // FitNet + Attention + Gram
};

6.4 Анализ признаков

После обучения мы анализируем, насколько хорошо признаки ученика выровнены с признаками учителя:

let similarity = feature_similarity(&teacher_features, &student_features);
// Возвращает косинусное сходство, CKA и корреляционные метрики

7. Интеграция с Bybit

Реализация получает реальные рыночные данные с биржи Bybit для обучения и оценки. Мы используем публичный эндпоинт klines (свечи):

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

Данные предобрабатываются в признаки, подходящие для наших моделей:

  • Ценовые признаки: нормализованные OHLC значения, доходности, логарифмические доходности
  • Объёмные признаки: нормализованный объём, цена, взвешенная по объёму
  • Признаки волатильности: скользящее стандартное отклонение, диапазон (high-low)
  • Технические индикаторы: простые скользящие средние, приближение RSI

Эти признаки вычисляются из сырых данных kline и используются как вход для моделей учителя и ученика. Целевая переменная — направление закрытия следующей свечи относительно её открытия.

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

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

  2. Существует несколько дополняющих друг друга методов: FitNets сопоставляют сырые активации, передача внимания — паттерны пространственного фокуса, сопоставление матриц Грама — корреляции признаков, а CRD использует контрастивное обучение. Их комбинация часто даёт лучшие результаты.

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

  4. Взвешивание потерь требует тщательной настройки. Потери сопоставления признаков должны направлять представления ученика, не подавляя задачно-специфичное обучение. Отжиг весов потерь признаков в процессе обучения — практичная стратегия.

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

  6. Кросс-доменная передача использует универсальные рыночные динамики. Структурные признаки — моментум, возврат к среднему, кластеризация волатильности — проявляются на разных рынках, и сопоставление матриц Грама хорошо подходит для передачи этих структурных связей.

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

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