Teacher–student curriculum: как большая модель учит малую
Дистилляция знаний и curriculum learning дают связку: сильная модель-учитель размечает и упорядочивает данные, а компактный студент учится быстрее и дешевле. Разбираем, где это работает, а где ломается.

Зачем вообще связывать учителя, студента и учебный план
Обучить компактную модель с нуля на сырых данных — дорого и медленно: она долго барахтается на сложных примерах, которые ей ещё не по зубам, и переобучается на шуме. Связка teacher–student решает две задачи сразу. Сильная модель-учитель передаёт студенту не только правильные ответы, но и распределение вероятностей по классам (мягкие метки), а curriculum learning задаёт порядок: сначала простые примеры, потом сложные. На практике это сокращает число эпох до сходимости и даёт студенту качество, недостижимое при обучении в лоб на тех же данных.
Идея двухчастная, и её части часто путают. Дистилляция знаний отвечает на вопрос чему учить (сигнал от учителя вместо жёсткой метки). Curriculum отвечает на вопрос в каком порядке подавать примеры. Максимальный эффект даёт их сочетание, но каждую можно применять отдельно.
Дистилляция знаний: мягкие метки вместо жёстких
Классический подход из работы Хинтона и соавторов (2015) — учить студента воспроизводить не argmax учителя, а всё распределение логитов, сглаженное температурой T. Высокая температура выравнивает вероятности и подсвечивает "тёмное знание" — то, что учитель считает второй и третьей по вероятности гипотезой. Именно эти вторичные вероятности несут информацию о структуре задачи, которой нет в жёсткой метке.
Функция потерь обычно комбинированная: часть отвечает за совпадение с истинной меткой, часть — за близость к распределению учителя.
import torch.nn.functional as F
def distill_loss(student_logits, teacher_logits, targets, T=4.0, alpha=0.7):
# мягкая часть: KL между сглаженными распределениями
soft = F.kl_div(
F.log_softmax(student_logits / T, dim=-1),
F.softmax(teacher_logits / T, dim=-1),
reduction="batchmean",
) * (T * T)
# жёсткая часть: обычная кросс-энтропия по истинным меткам
hard = F.cross_entropy(student_logits, targets)
return alpha * soft + (1 - alpha) * hardМножитель T * T здесь не украшение: при делении логитов на T градиенты мягкой части масштабируются как 1/T², и множитель возвращает вклад к сопоставимому с жёсткой частью. Уберёте его — soft-часть почти перестанет влиять на обучение при больших T.
Что именно передаёт учитель
- Логиты или вероятности — самый распространённый сигнал, работает почти везде.
- Промежуточные представления — совпадение эмбеддингов скрытых слоёв (feature-based distillation). Требует, чтобы размерности студента и учителя совпадали или проецировались друг в друга.
- Отношения между объектами — студент воспроизводит не сами ответы, а их взаимное расположение в пространстве (relational distillation).
Curriculum learning: порядок решает
Идею формализовали Бенджио и соавторы (2009): если подавать примеры от простого к сложному, обучение сходится быстрее и к лучшему минимуму. Главный практический вопрос — как измерять сложность. Три рабочих подхода:
- Внешняя эвристика. Длина текста, число объектов на изображении, глубина синтаксического дерева. Дёшево, но грубо.
- Через саму модель. Сложность примера = его текущая ошибка (self-paced learning). Модель сама решает, что ей пока трудно.
- Через учителя. Уверенность учителя в примере становится оценкой сложности: то, в чём учитель уверен, считается простым. Это и есть точка сцепки двух методов.
Curriculum — это не "отсортировать датасет один раз". Порядок должен эволюционировать вместе со студентом: то, что было сложным на первой эпохе, к пятой становится тривиальным, и держать его в хвосте — терять время.
Anti-curriculum и почему он иногда работает
Не всегда "от простого к сложному" выигрывает. На зашумлённых данных обратный порядок или случайная подача устойчивее: если начать с самых "простых" примеров, а простыми окажутся размеченные с ошибкой дубли, студент выучит артефакт. Прежде чем строить curriculum, стоит проверить гипотезу на holdout — иначе вы рискуете зафиксировать смещение разметки как учебный план.
Сравнение подходов
| Подход | Что даёт | Цена | Главный риск |
|---|---|---|---|
| Только жёсткие метки | Простота, воспроизводимость | Больше эпох, ниже потолок качества | Переобучение на шуме |
| Дистилляция без curriculum | Богатый сигнал от учителя | Нужен обученный учитель + его инференс | Студент наследует ошибки учителя |
| Curriculum без дистилляции | Быстрее сходимость | Оценка сложности примеров | Неверная метрика сложности вредит |
| Teacher-driven curriculum | Порядок и сигнал из одного источника | Самая тяжёлая по инженерии | Каскадное усиление смещений учителя |
Где связка ломается на практике
Самая коварная проблема — наследование ошибок. Если учитель систематически ошибается на каком-то срезе данных, дистилляция передаёт это студенту как "уверенное знание", а curriculum ещё и ставит такие примеры в начало как "простые". Смещение усиливается каскадом. Лечится это тем, что часть жёстких меток (истинных, а не от учителя) всегда остаётся в лоссе — параметр alpha не должен уходить в единицу.
Второй момент — стоимость инференса учителя. Если учитель крупный, а датасет большой, прогон всего корпуса через учителя для получения логитов может стоить дороже, чем само обучение студента. Логиты учителя обычно считают один раз и кэшируют на диск, а не пересчитывают каждую эпоху.
Практический порядок действий
- Обучите или возьмите готового учителя, замерьте его качество на целевом срезе — студент не превзойдёт учителя по мягкому сигналу.
- Прогоните корпус через учителя один раз, сохраните логиты (или top-k логитов для экономии места).
- Начните с простой дистилляции без curriculum, зафиксируйте бейзлайн.
- Добавьте порядок подачи и проверьте прирост на holdout — если его нет, curriculum вам не нужен.
- Держите долю истинных меток в лоссе, чтобы не унаследовать слепые зоны учителя.
Мягкие метки — распределение вероятностей по всем классам, полученное от учителя, в отличие от жёсткой метки (one-hot вектор с единственной единицей). Именно ненулевые вероятности "неправильных" классов несут дополнительную информацию о структуре задачи.
Prompt-инженер: Идеальные запросы для Midjourney, ChatGPT и других моделей.
Спросить за 15 ₽Источники: Distilling the Knowledge in a Neural Network (Hinton et al., 2015), Curriculum Learning (Bengio et al., 2009)
Частые вопросы
Может ли студент превзойти учителя?
Какую температуру T выбрать?
Нужны ли одинаковые архитектуры у учителя и студента?
Curriculum всегда ускоряет обучение?
Как измерять сложность примера, если нет очевидной эвристики?
Стоит ли пересчитывать логиты учителя каждую эпоху?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.