Эпоха 4 · Архитектуры и масштаб · 2015

28 Knowledge Distillation

Distilling the Knowledge in a Neural Network · Hinton, Vinyals & Dean · Google
🟧 оригинал выборочно~40 миноригинал ↗
Суть за 20 секунд. Маленький «студент» учится на смягчённых вероятностях «учителя», а не только на жёстких метках. «Тёмное знание» — в относительных вероятностях неверных классов — несёт больше информации, чем one-hot. Студент достигает качества учителя при кратно меньшем размере. Основа сжатия моделей.

Контекст

Лучшие модели большие или ансамблевые → дорого деплоить. Хинтон, Виньялс, Дин переносят знание в маленькую модель.

Идея и механизм

Большой учитель выдаёт не только класс, а полное РАСПРЕДЕЛЕНИЕ вероятностей, смягчённое температурой T в softmax. Маленький студент учится воспроизводить эти soft targets (часто плюс обычные жёсткие метки). «Тёмное знание» — в том, что «2» немного похожа на «3» и совсем не на «7»: эта структура есть в soft-вероятностях и отсутствует в one-hot метке.

теория вероятностей Температура, soft targets и «тёмное знание»

Softmax с температурой T сглаживает распределение:

pi = ezi/TΣj ezj/T

При T = 1 — обычный softmax (часто почти one-hot); при T > 1 распределение «мягче», и ярче проявляются относительные шансы неверных классов — то самое «тёмное знание». Студент минимизирует расхождение со смягчённым учителем (KL) плюс обычную потерю на метках:

L = α·T²·KL(pучительT ‖ pстудентT) + (1−α)·CE(y, pстудент)

Множитель 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
учитель (большой) студент (малый) soft targetssoftmax(z/T) студент ≈ учитель, но в разы меньше
Учитель выдаёт смягчённое распределение (soft targets); студент учится его воспроизводить — перенимая «тёмное знание» о сходстве классов.
Аналогия. Опытный врач не просто говорит ученику «это грипп», а добавляет: «похоже на грипп, но немного напоминает covid и совсем не похоже на аллергию». Эти оговорки о похожести и есть ценное знание — по ним ученик учится различать тонко, а не зубрить ярлыки. Температура T — это насколько подробно врач проговаривает свои сомнения.

Почему это важно

Основа edge/мобильных моделей и сжатия LLM (DistilBERT и т.п.); концепция «учиться на распределении учителя» широко используется — вплоть до дистилляции огромных LLM в маленькие. Эффектный факт из статьи: студент, не видевший в обучении ни одной «3», классифицировал тройки почти идеально — из одних soft-вероятностей учителя на других цифрах.

Связи

↔ родственник12. Random Forests

Оба про ансамбли, но в обратные стороны: лес собирает много моделей в одну сильную; дистилляция сжимает большой/ансамблевый учитель в одну маленькую. Distillation часто и применяют, чтобы упаковать ансамбль в одну дешёвую сеть.

→ применяется к50. LLaMA

Современные малые открытые модели часто дистиллируют из больших: LLaMA-семейство и его потомки используют дистилляцию, чтобы перенести качество гигантов в модели, влезающие на одну GPU. Идея 2015-го стала ключевым инструментом эпохи LLM.

← опирается на7. Backpropagation

Дистилляция — это просто другой таргет для обычного обучения: вместо жёстких меток — мягкое распределение учителя, а механизм (backprop по KL-лоссу) тот же. Новизна — в сигнале, а не в способе обучения.

Вопросы пытливого ума

Почему студент на soft targets учится лучше, чем на тех же данных с жёсткими метками?

One-hot метка несёт ~log(K) бит на пример и ничего не говорит о сходстве классов. Soft target учителя — это плотный вектор по всем классам: он сообщает геометрию задачи («2 ближе к 3, чем к 7»), фактически давая студенту много «бесплатных» меток на каждый пример. Это богаче и менее шумный сигнал, особенно при ограниченных данных.

Может ли студент превзойти учителя?

Иногда да — в варианте self-distillation (учитель и студент одной архитектуры) или при «born-again networks» студент местами обгоняет учителя. Объяснения разные: soft targets регуляризуют, сглаживают метки и переносят «тёмное знание». Не магия и не всегда, но устойчиво наблюдаемый эффект, до конца теоретически не объяснённый.

Дистилляция требует прогонять учителя — не теряется ли смысл, если он дорогой?

Учитель нужен только на обучении; на инференсе работает лишь дешёвый студент — а инференс и есть основная стоимость в проде. Плюс soft targets можно посчитать один раз и закэшировать. Так что разовая трата на учителя окупается дешёвым деплоем — ровно ради этого дистилляция и придумана.

Что читать в оригинале

Конспекта + ключевых мест достаточно: температура, soft targets и эксперимент с «пропущенной» цифрой. Концепцию «тёмного знания» полезно прочувствовать на исходном примере.