28 Knowledge Distillation
Контекст
Лучшие модели большие или ансамблевые → дорого деплоить. Хинтон, Виньялс, Дин переносят знание в маленькую модель.
Идея и механизм
Большой учитель выдаёт не только класс, а полное РАСПРЕДЕЛЕНИЕ вероятностей, смягчённое температурой T в softmax. Маленький студент учится воспроизводить эти soft targets (часто плюс обычные жёсткие метки). «Тёмное знание» — в том, что «2» немного похожа на «3» и совсем не на «7»: эта структура есть в soft-вероятностях и отсутствует в one-hot метке.
теория вероятностей Температура, soft targets и «тёмное знание»
Softmax с температурой T сглаживает распределение:
При T = 1 — обычный softmax (часто почти one-hot); при T > 1 распределение «мягче», и ярче проявляются относительные шансы неверных классов — то самое «тёмное знание». Студент минимизирует расхождение со смягчённым учителем (KL) плюс обычную потерю на метках:
Множитель T² компенсирует то, что градиенты от смягчённого softmax масштабируются как 1/T² — чтобы оба слагаемых были сопоставимы. Студент учится не «какой класс», а «как учитель распределяет уверенность» — и это куда богаче сигнал.
PyTorch Лосс дистилляции
import torch.nn.functional as F
def distill_loss(student_logits, teacher_logits, y, T=4.0, alpha=0.7):
soft = F.kl_div(F.log_softmax(student_logits / T, -1),
F.softmax(teacher_logits / T, -1),
reduction='batchmean') * (T * T) # мягкая цель учителя
hard = F.cross_entropy(student_logits, y) # жёсткие метки
return alpha * soft + (1 - alpha) * hard
Почему это важно
Основа edge/мобильных моделей и сжатия LLM (DistilBERT и т.п.); концепция «учиться на распределении учителя» широко используется — вплоть до дистилляции огромных LLM в маленькие. Эффектный факт из статьи: студент, не видевший в обучении ни одной «3», классифицировал тройки почти идеально — из одних soft-вероятностей учителя на других цифрах.
Связи
Оба про ансамбли, но в обратные стороны: лес собирает много моделей в одну сильную; дистилляция сжимает большой/ансамблевый учитель в одну маленькую. Distillation часто и применяют, чтобы упаковать ансамбль в одну дешёвую сеть.
Современные малые открытые модели часто дистиллируют из больших: LLaMA-семейство и его потомки используют дистилляцию, чтобы перенести качество гигантов в модели, влезающие на одну GPU. Идея 2015-го стала ключевым инструментом эпохи LLM.
Дистилляция — это просто другой таргет для обычного обучения: вместо жёстких меток — мягкое распределение учителя, а механизм (backprop по KL-лоссу) тот же. Новизна — в сигнале, а не в способе обучения.
Вопросы пытливого ума
Почему студент на soft targets учится лучше, чем на тех же данных с жёсткими метками?
One-hot метка несёт ~log(K) бит на пример и ничего не говорит о сходстве классов. Soft target учителя — это плотный вектор по всем классам: он сообщает геометрию задачи («2 ближе к 3, чем к 7»), фактически давая студенту много «бесплатных» меток на каждый пример. Это богаче и менее шумный сигнал, особенно при ограниченных данных.
Может ли студент превзойти учителя?
Иногда да — в варианте self-distillation (учитель и студент одной архитектуры) или при «born-again networks» студент местами обгоняет учителя. Объяснения разные: soft targets регуляризуют, сглаживают метки и переносят «тёмное знание». Не магия и не всегда, но устойчиво наблюдаемый эффект, до конца теоретически не объяснённый.
Дистилляция требует прогонять учителя — не теряется ли смысл, если он дорогой?
Учитель нужен только на обучении; на инференсе работает лишь дешёвый студент — а инференс и есть основная стоимость в проде. Плюс soft targets можно посчитать один раз и закэшировать. Так что разовая трата на учителя окупается дешёвым деплоем — ровно ради этого дистилляция и придумана.
Что читать в оригинале
Конспекта + ключевых мест достаточно: температура, soft targets и эксперимент с «пропущенной» цифрой. Концепцию «тёмного знания» полезно прочувствовать на исходном примере.