🎓 Что такое дистилляция модели

Кратко

Дистилляция (knowledge distillation) — это метод обучения «студентской» модели (обычно более быстрой и простой) воспроизводить поведение «учительской» модели (обычно более сильной, но медленной).

Цель: получить модель, которая сочетает силу учителя с скоростью студента.

Как это работает

Классическая схема

  1. Учитель (например, KCP/Hunter с глубоким поиском) размечает позиции
  2. Студент (например, LightGBM или NNUE) учится приближать оценки учителя
  3. Студент внутри поиска играет сильнее учителя-статика — и может стать новым учителем

Цикл прогресса

учитель → студент → поиск → новый учитель

Каждая итерация может давать более сильную модель.

Наша архитектура

В Dice Chess:

  • Учитель: KCP/Hunter с expectimax поиском
  • Студент: LightGBM на rich/KCP-фичах или NNUE-сеть
  • Цель студента: приблизить оценки учителя, чтобы их можно было использовать в горячем пути (микросекунды на позицию)

Примеры из практики

Дистилляция KCP-учителя в rich-веса

NNUE как цель дистилляции

  • Данных теперь хватает: 1,5 млн партий ≈ десятки миллионов позиций
  • Плюс дистилляция позволяет разметить сколько угодно дополнительных
  • см. what-is-nnue

Ограничения

Когда дистилляция не работает

Вывод из замеров 2026-08-09

Offline-свип идеально плоский: AUC 0.7022–0.7025 на всех λ против контрольных 0.7023 (λ=0).

Сигнал учителя (его собственный AUC 0.7109) не переносится — mobility/king-safety не могут реконструировать вероятность взятия короля.

Причина: дистилляция помогает студенту, которому не хватает данных или оптимизации; здесь 9-фичевый GBDT на 1.2M строк упирается в ёмкость, а перелейблинг тех же фич ёмкости не добавляет.

Ключевой вывод

KCP это заменитель ГЛУБИНЫ поиска, а не ортогональный сигнал.

1-ply material 41.5%→1-ply KCP 60.8% (+19пп) — KCP дал одноплайному поиску форсайт, которого у него не было. Но 2-ply УЖЕ имеет форсайт (просмотр броска соперника + его лучшего ответа + LossValue на взятие короля), поэтому KCP-сигнал избыточен.

Это объясняет, почему обе попытки влить KCP в live 2-ply бот дали плоско:

  • A1 (дистилляция в фичи)
  • B1 (рескоринг на корне)

Обе не сработали по одной причине: сигнал учителя уже учтён в поиске студента.

Студент может превысить учителя

Учитель (57.8%) ограничивает одну ступень, а не лестницу. Студент может превысить учителя, если:

  1. Студент оборачивается в более глубокий поиск: search(eval_{t+1}) > search(eval_t)
  2. Дистилляция достаточно точна

Практический потолок — представительная ёмкость фич, и он общий для всей оси A.

Связанные понятия