🎓 Что такое дистилляция модели
Кратко
Дистилляция (knowledge distillation) — это метод обучения «студентской» модели (обычно более быстрой и простой) воспроизводить поведение «учительской» модели (обычно более сильной, но медленной).
Цель: получить модель, которая сочетает силу учителя с скоростью студента.
Как это работает
Классическая схема
- Учитель (например, KCP/Hunter с глубоким поиском) размечает позиции
- Студент (например, LightGBM или NNUE) учится приближать оценки учителя
- Студент внутри поиска играет сильнее учителя-статика — и может стать новым учителем
Цикл прогресса
учитель → студент → поиск → новый учитель
Каждая итерация может давать более сильную модель.
Наша архитектура
В Dice Chess:
- Учитель: KCP/Hunter с expectimax поиском
- Студент: LightGBM на rich/KCP-фичах или NNUE-сеть
- Цель студента: приблизить оценки учителя, чтобы их можно было использовать в горячем пути (микросекунды на позицию)
Примеры из практики
Дистилляция KCP-учителя в rich-веса
- Результат: +2.2пп (сглаженные метки вместо сырых 0/1)
- Веса oracle-3 обновлены (07-12)
- см. model-improvement-results-and-oracle-bots-roster
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%) ограничивает одну ступень, а не лестницу. Студент может превысить учителя, если:
- Студент оборачивается в более глубокий поиск: search(eval_{t+1}) > search(eval_t)
- Дистилляция достаточно точна
Практический потолок — представительная ёмкость фич, и он общий для всей оси A.
Связанные понятия
- what-is-nnue — крошечная квантованная сеть как цель дистилляции
- what-is-lightgbm — инструмент для студентов
- two-ply-expectimax-over-value-model — как студент используется в поиске
- model-improvement-results-and-oracle-bots-roster — результаты и арка усиления
- roadmap-value-model — план по дистилляции и NNUE