Дистилляция моделей
Материал из MachineLearning.
| Строка 1: | Строка 1: | ||
| - | {{well|Статья написана с использованием LLM ''' | + | {{well|Статья написана с использованием LLM '''DeepSeek-V3''' и проверена участником [[Участник:Mihail Mishin|М. Мишин]] 14:17, 17 июня 2026 (MSD) |
Промпт приводится полностью в [[Обсуждение:Дистилляция моделей]] | Промпт приводится полностью в [[Обсуждение:Дистилляция моделей]] | ||
}} | }} | ||
{{TOCright}} | {{TOCright}} | ||
| - | |||
| - | + | == Определение и основная идея == | |
| + | '''Дистилляция моделей''' (англ. ''knowledge distillation'') — метод обучения компактной модели ([[Student model|ученика]]), при котором целевыми значениями выступают не только истинные метки, но и выходы более мощной, предварительно обученной модели ([[Teacher model|учителя]]). В основе подхода лежит аналогия с педагогической передачей опыта: учитель, обладающий обширными знаниями о предметной области, снабжает ученика не просто верными ответами, а подробными объяснениями относительного правдоподобия всех альтернатив. В машинном обучении таким объяснениям соответствуют [[Soft labels|мягкие метки]] — векторы вероятностей классов, полученные применением сигмоиды или [[Softmax|softmax]] к выходам модели-учителя. | ||
| - | + | Ключевым понятием дистилляции является '''[[Dark knowledge|тёмное знание]]''' — информация о сходстве классов, закодированная в вероятностях, которые учитель назначает ошибочным классам. Например, если для изображения рукописной цифры «3» учитель отводит заметную вероятность классу «8», а для «8» — классу «3», это отражает геометрическую близость форм. Жёсткая метка (one-hot вектор) полностью уничтожает эти сведения, тогда как мягкие метки сохраняют структуру многообразия данных, позволяя ученику быстрее обобщать и избегать переобучения. | |
| - | + | ||
| - | + | Чтобы сделать тёмное знание более доступным, распределение вероятностей «сглаживают» с помощью параметра '''[[Softmax temperature|температуры]]''' <tex>T</tex> в функции softmax: | |
| + | <tex>p_i = \frac{\exp(z_i / T)}{\sum_j \exp(z_j / T)},</tex> | ||
| + | где <tex>z_i</tex> — [[Logit|логит]] для <tex>i</tex>-го класса. При <tex>T = 1</tex> получается стандартное распределение; при <tex>T \rightarrow \infty</tex> распределение стремится к равномерному; при <tex>T > 1</tex> вероятности нецелевых классов возрастают, и модель-ученик получает более «мягкую» цель. На этапе предсказания ученик всегда использует <tex>T = 1</tex>. | ||
| - | + | Формально дистилляция определяется как процесс обучения ученика путём совместной минимизации двух потерь: одной, основанной на истинных метках, и второй, измеряющей расхождение между выходами учителя и ученика при повышенной температуре. | |
| - | == | + | == Математическая формализация == |
| - | + | Пусть <tex>\mathbf{z}_t</tex> и <tex>\mathbf{z}_s</tex> — векторы логитов учителя и ученика соответственно; <tex>\mathbf{y}</tex> — истинная жёсткая метка (one-hot); <tex>\sigma(\mathbf{z})</tex> — стандартный softmax (<tex>T = 1</tex>); <tex>\sigma_T(\mathbf{z})</tex> — softmax с температурой <tex>T</tex>. Функция потерь ученика записывается как взвешенная сумма двух слагаемых: | |
| - | + | <tex>\mathcal{L} = (1 - \lambda) \, \mathcal{L}_{\text{CE}}(\mathbf{y}, \sigma(\mathbf{z}_s)) \;+\; \lambda \, T^2 \, \mathcal{L}_{\text{KD}}(\sigma_T(\mathbf{z}_t), \sigma_T(\mathbf{z}_s)),</tex> | |
| - | + | где <tex>\lambda \in [0,1]</tex> — коэффициент дистилляции, а <tex>\mathcal{L}_{\text{KD}}</tex> обычно выбирается как [[Дивергенция Кульбака-Лейблера|дивергенция Кульбака–Лейблера]]: | |
| - | + | <tex>\mathcal{L}_{\text{KD}} = D_{\text{KL}}\!\left( \sigma_T(\mathbf{z}_t) \,\|\, \sigma_T(\mathbf{z}_s) \right) = \sum_i \sigma_T(z_t)_i \log \frac{\sigma_T(z_t)_i}{\sigma_T(z_s)_i}.</tex> | |
| - | : <tex> | + | Множитель <tex>T^2</tex> компенсирует масштабирование градиентов: при больших <tex>T</tex> градиенты <tex>\partial \mathcal{L}_{\text{KD}} / \partial \mathbf{z}_s</tex> убывают пропорционально <tex>1/T^2</tex>, поэтому умножение на <tex>T^2</tex> сохраняет относительный вклад дистилляционной потери неизменным при изменении температуры. На практике иногда используют упрощённый вариант без <tex>T^2</tex>, подбирая <tex>\lambda</tex> эмпирически. |
| - | + | Выбор <tex>\lambda</tex> регулирует баланс между подражанием учителю и следованию истинным меткам. Часто полагают <tex>\lambda = 1</tex>, полностью полагаясь на мягкие метки, если учитель достаточно точен. Температуру обычно выбирают в диапазоне от 2 до 20, адаптируя её к количеству классов и уверенности учителя. | |
| - | + | == Классификация методов == | |
| + | === Офлайн-дистилляция === | ||
| + | Наиболее распространённый сценарий: большая модель-учитель предварительно обучена на полном наборе данных и зафиксирована. Ученик обучается на выходах учителя, не влияя на него. Процесс однонаправлен и прост в организации, однако качество ученика ограничено качеством учителя, а вычислительные затраты на обучение учителя не амортизируются. Офлайн-дистилляция лежит в основе таких широко известных моделей, как [[DistilBERT]]. | ||
| - | + | === Онлайн-дистилляция === | |
| - | + | Учитель и ученик обучаются одновременно, обычно в рамках одного цикла. Знания могут передаваться от ансамбля моделей к каждому участнику (ансамблевая дистилляция) или циркулировать между несколькими равноправными моделями (взаимное обучение, ''deep mutual learning''). Такой подход позволяет ученику влиять на учителя и часто приводит к взаимному улучшению, но требует больших вычислительных ресурсов во время обучения. Онлайн-дистилляция особенно полезна, когда заранее готового учителя нет, или требуется обучить несколько компактных моделей одновременно. | |
| - | + | ||
| - | + | === Самодистилляция === | |
| + | Ученик использует собственные предсказания или внутренние представления в качестве учительских сигналов. Распространённые приёмы: | ||
| + | * глубокая часть сети выступает учителем для мелкой («self-distillation from deeper layers»); | ||
| + | * модель на поздних эпохах обучения служит учителем для своих ранних состояний (''born-again networks''); | ||
| + | * агрегация предсказаний нескольких ветвей внутри одной модели. | ||
| + | Самодистилляция не требует отдельной модели-учителя и может улучшать качество без дополнительных данных, однако прирост часто скромнее, чем от внешней дистилляции, и требует тщательного подбора архитектурных решений. | ||
| - | + | == Связь с другими методами сжатия == | |
| + | Дистилляция направлена на уменьшение вычислительной сложности модели и занимает место в ряду техник [[Сжатие моделей|сжатия]] наряду с [[Pruning|прунингом]] и [[Quantization|квантизацией]], однако принципиально отличается от них по механизму и областям применения. | ||
| - | + | * '''Сравнение с прунингом.''' [[Pruning|Прунинг]] удаляет избыточные веса или нейроны в уже обученной модели, не меняя её архитектурного типа. Дистилляция переносит знания в модель произвольной, потенциально совершенно иной архитектуры, возможно, более эффективной для целевого оборудования. Прунинг часто не требует дорогостоящего переобучения с нуля, тогда как дистилляция — это полноценный процесс обучения ученика. Взаимодополнение: прунинг может применяться к ученику после дистилляции для дополнительного сжатия. | |
| + | * '''Сравнение с квантизацией.''' [[Quantization|Квантизация]] уменьшает разрядность весов и активаций, сокращая объём памяти и ускоряя инференс на аппаратуре с поддержкой низкой точности, но сохраняет топологию сети и количество операций. Дистилляция уменьшает именно количество операций за счёт меньшего числа параметров и слоёв. Квантизация практически не требует данных, тогда как дистилляция нуждается в обучающей выборке или синтезированных примерах. На практике дистилляцию часто комбинируют с последующей квантизацией ученика. | ||
| - | + | Дистилляция выигрывает в сценариях, где допустимо изменить архитектуру и важно сократить как память, так и вычислительную сложность, а также когда хотят использовать сильные стороны разных типов моделей (например, перенести знания из ансамбля в одиночную сеть). Прунинг и квантизация предпочтительнее, когда требуется сохранить исходную структуру модели или обучение ученика невозможно из-за ограничений на данные и вычислительные ресурсы. | |
| - | + | ||
| - | == | + | == Современные направления и прикладное значение == |
| - | + | Дистилляция стала стандартным инструментом при развёртывании нейросетевых моделей в промышленности. В обработке естественного языка эталонным примером служит '''[[DistilBERT]]''' — версия [[BERT (модель)|BERT]], обученная с использованием трёх сигналов: дистилляция на логитах (<tex>T</tex>), косинусное расстояние между эмбеддингами и расстояние между скрытыми состояниями. При 40%-м сокращении числа параметров DistilBERT сохраняет до 97% качества на задачах классификации и ответа на вопросы. Модели семейства [[TinyBERT]] развивают идею, применяя двухстадийную дистилляцию (общая и предметно-специфичная) и перенося знания не только на уровне выходов, но и на уровне матриц внимания и скрытых представлений. | |
| - | + | В компьютерном зрении активно применяются дистилляция признаков (''FitNets''), перенос внимания (''attention transfer'') и дистилляция отношений между объектами (''relational knowledge distillation''). Эти методы позволяют обучать компактные архитектуры типа [[MobileNet]] или [[EfficientNet]] от больших учителей, сохраняя точность в задачах классификации, детекции и сегментации. | |
| - | + | Дистилляция больших языковых моделей ([[LLM]]) сталкивается с особыми трудностями, вызванными авторегрессионным характером генерации текста. Стандартная дистилляция на уровне next-token prediction с teacher forcing возможна, но требует осторожного подбора температуры и часто приводит к накоплению ошибок. В последние годы распространение получила дистилляция инструктивных моделей: учитель генерирует пары «инструкция — ответ», а ученик обучается на этих синтетических данных, имитируя стиль и фактические знания учителя (''Alpaca'', ''Orca''). Активно исследуются методы дистилляции цепочек рассуждений (''chain-of-thought distillation''), направленные на перенос способности к многошаговым рассуждениям. Среди открытых проблем — сохранение фактической точности и предотвращение переноса галлюцинаций учителя, а также высокая стоимость инференса учителя при генерации больших датасетов. | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | В | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | Другие перспективные направления включают бесданную дистилляцию (''data-free knowledge distillation''), синтезирующую обучающие примеры без доступа к оригинальной выборке, кросс-модальную дистилляцию (перенос знаний между модальностями, например из изображений в текст) и дистилляцию задач (''task distillation''), где мягкие метки формируются ансамблем специализированных моделей для обучения многозадачного ученика. | |
| - | + | ||
| - | + | ||
| - | + | ||
== См. также == | == См. также == | ||
| - | * [[ | + | * [[Logit]] |
| - | * [[ | + | * [[Дивергенция Кульбака-Лейблера]] |
| - | * [[ | + | * [[Transfer learning]] |
| - | * [[Softmax]] | + | * [[Сжатие моделей]] |
| + | * [[Pruning]] | ||
| + | * [[Quantization]] | ||
| + | * [[DistilBERT]] | ||
| + | * [[Трансформер (архитектура)]] | ||
| + | * [[Teacher model]] | ||
| + | * [[Student model]] | ||
| + | * [[Soft labels]] | ||
| + | * [[Dark knowledge]] | ||
| + | * [[Softmax температура]] | ||
== Литература == | == Литература == | ||
| - | * | + | * Hinton G., Vinyals O., Dean J. Distilling the Knowledge in a Neural Network // NIPS Deep Learning and Representation Learning Workshop, 2015. [https://arxiv.org/abs/1503.02531 arXiv:1503.02531] — основополагающая работа, вводящая понятия дистилляции знаний, тёмного знания и температурного сглаживания softmax. |
| - | + | * Romero A., Ballas N., Kahou S. E., Chassang A., Gatta C., Bengio Y. FitNets: Hints for Thin Deep Nets // ICLR, 2015. [https://arxiv.org/abs/1412.6550 arXiv:1412.6550] — первая работа по дистилляции через промежуточные представления (hints), положившая начало дистилляции признаков. | |
| - | + | * Zagoruyko S., Komodakis N. Paying More Attention to Attention: Improving the Performance of Convolutional Neural Networks via Attention Transfer // ICLR, 2017. [https://arxiv.org/abs/1612.03928 arXiv:1612.03928] — метод переноса карт внимания, ставший стандартным подходом в дистилляции для компьютерного зрения. | |
| - | * | + | * Zhang Y., Xiang T., Hospedales T. M., Lu H. Deep Mutual Learning // CVPR, 2018. [https://arxiv.org/abs/1706.00384 arXiv:1706.00384] — формализация онлайн-дистилляции, где равноправные модели обучаются одновременно, обмениваясь мягкими метками. |
| + | * Furlanello T., Lipton Z. C., Tschannen M., Itti L., Anandkumar A. Born-Again Neural Networks // ICML, 2018. [https://arxiv.org/abs/1805.04770 arXiv:1805.04770] — строгая постановка самодистилляции, при которой модель последовательно переобучается, используя собственные предсказания как целевые. | ||
| + | * Chen H., Wang Y., Xu C., Yang Z., Liu C., Shi B., Xu C., Xu C., Tian Q. Data-Free Learning of Student Networks // ICCV, 2019. [https://arxiv.org/abs/1904.01186 arXiv:1904.01186] — первая эффективная техника бесданной дистилляции, породившая целое семейство методов генерации синтетических обучающих примеров. | ||
| - | [[Категория: | + | == Категории == |
| + | [[Категория:Методы машинного обучения]] | ||
[[Категория:Оптимизация нейронных сетей]] | [[Категория:Оптимизация нейронных сетей]] | ||
| - | |||
Текущая версия
| | Статья написана с использованием LLM DeepSeek-V3 и проверена участником М. Мишин 14:17, 17 июня 2026 (MSD)
Промпт приводится полностью в Обсуждение:Дистилляция моделей |
|
Определение и основная идея
Дистилляция моделей (англ. knowledge distillation) — метод обучения компактной модели (ученика), при котором целевыми значениями выступают не только истинные метки, но и выходы более мощной, предварительно обученной модели (учителя). В основе подхода лежит аналогия с педагогической передачей опыта: учитель, обладающий обширными знаниями о предметной области, снабжает ученика не просто верными ответами, а подробными объяснениями относительного правдоподобия всех альтернатив. В машинном обучении таким объяснениям соответствуют мягкие метки — векторы вероятностей классов, полученные применением сигмоиды или softmax к выходам модели-учителя.
Ключевым понятием дистилляции является тёмное знание — информация о сходстве классов, закодированная в вероятностях, которые учитель назначает ошибочным классам. Например, если для изображения рукописной цифры «3» учитель отводит заметную вероятность классу «8», а для «8» — классу «3», это отражает геометрическую близость форм. Жёсткая метка (one-hot вектор) полностью уничтожает эти сведения, тогда как мягкие метки сохраняют структуру многообразия данных, позволяя ученику быстрее обобщать и избегать переобучения.
Чтобы сделать тёмное знание более доступным, распределение вероятностей «сглаживают» с помощью параметра температуры в функции softmax:
где
— логит для
-го класса. При
получается стандартное распределение; при
распределение стремится к равномерному; при
вероятности нецелевых классов возрастают, и модель-ученик получает более «мягкую» цель. На этапе предсказания ученик всегда использует
.
Формально дистилляция определяется как процесс обучения ученика путём совместной минимизации двух потерь: одной, основанной на истинных метках, и второй, измеряющей расхождение между выходами учителя и ученика при повышенной температуре.
Математическая формализация
Пусть и
— векторы логитов учителя и ученика соответственно;
— истинная жёсткая метка (one-hot);
— стандартный softmax (
);
— softmax с температурой
. Функция потерь ученика записывается как взвешенная сумма двух слагаемых:
где — коэффициент дистилляции, а
обычно выбирается как дивергенция Кульбака–Лейблера:
Множитель компенсирует масштабирование градиентов: при больших
градиенты
убывают пропорционально
, поэтому умножение на
сохраняет относительный вклад дистилляционной потери неизменным при изменении температуры. На практике иногда используют упрощённый вариант без
, подбирая
эмпирически.
Выбор регулирует баланс между подражанием учителю и следованию истинным меткам. Часто полагают
, полностью полагаясь на мягкие метки, если учитель достаточно точен. Температуру обычно выбирают в диапазоне от 2 до 20, адаптируя её к количеству классов и уверенности учителя.
Классификация методов
Офлайн-дистилляция
Наиболее распространённый сценарий: большая модель-учитель предварительно обучена на полном наборе данных и зафиксирована. Ученик обучается на выходах учителя, не влияя на него. Процесс однонаправлен и прост в организации, однако качество ученика ограничено качеством учителя, а вычислительные затраты на обучение учителя не амортизируются. Офлайн-дистилляция лежит в основе таких широко известных моделей, как DistilBERT.
Онлайн-дистилляция
Учитель и ученик обучаются одновременно, обычно в рамках одного цикла. Знания могут передаваться от ансамбля моделей к каждому участнику (ансамблевая дистилляция) или циркулировать между несколькими равноправными моделями (взаимное обучение, deep mutual learning). Такой подход позволяет ученику влиять на учителя и часто приводит к взаимному улучшению, но требует больших вычислительных ресурсов во время обучения. Онлайн-дистилляция особенно полезна, когда заранее готового учителя нет, или требуется обучить несколько компактных моделей одновременно.
Самодистилляция
Ученик использует собственные предсказания или внутренние представления в качестве учительских сигналов. Распространённые приёмы:
- глубокая часть сети выступает учителем для мелкой («self-distillation from deeper layers»);
- модель на поздних эпохах обучения служит учителем для своих ранних состояний (born-again networks);
- агрегация предсказаний нескольких ветвей внутри одной модели.
Самодистилляция не требует отдельной модели-учителя и может улучшать качество без дополнительных данных, однако прирост часто скромнее, чем от внешней дистилляции, и требует тщательного подбора архитектурных решений.
Связь с другими методами сжатия
Дистилляция направлена на уменьшение вычислительной сложности модели и занимает место в ряду техник сжатия наряду с прунингом и квантизацией, однако принципиально отличается от них по механизму и областям применения.
- Сравнение с прунингом. Прунинг удаляет избыточные веса или нейроны в уже обученной модели, не меняя её архитектурного типа. Дистилляция переносит знания в модель произвольной, потенциально совершенно иной архитектуры, возможно, более эффективной для целевого оборудования. Прунинг часто не требует дорогостоящего переобучения с нуля, тогда как дистилляция — это полноценный процесс обучения ученика. Взаимодополнение: прунинг может применяться к ученику после дистилляции для дополнительного сжатия.
- Сравнение с квантизацией. Квантизация уменьшает разрядность весов и активаций, сокращая объём памяти и ускоряя инференс на аппаратуре с поддержкой низкой точности, но сохраняет топологию сети и количество операций. Дистилляция уменьшает именно количество операций за счёт меньшего числа параметров и слоёв. Квантизация практически не требует данных, тогда как дистилляция нуждается в обучающей выборке или синтезированных примерах. На практике дистилляцию часто комбинируют с последующей квантизацией ученика.
Дистилляция выигрывает в сценариях, где допустимо изменить архитектуру и важно сократить как память, так и вычислительную сложность, а также когда хотят использовать сильные стороны разных типов моделей (например, перенести знания из ансамбля в одиночную сеть). Прунинг и квантизация предпочтительнее, когда требуется сохранить исходную структуру модели или обучение ученика невозможно из-за ограничений на данные и вычислительные ресурсы.
Современные направления и прикладное значение
Дистилляция стала стандартным инструментом при развёртывании нейросетевых моделей в промышленности. В обработке естественного языка эталонным примером служит DistilBERT — версия BERT, обученная с использованием трёх сигналов: дистилляция на логитах (), косинусное расстояние между эмбеддингами и расстояние между скрытыми состояниями. При 40%-м сокращении числа параметров DistilBERT сохраняет до 97% качества на задачах классификации и ответа на вопросы. Модели семейства TinyBERT развивают идею, применяя двухстадийную дистилляцию (общая и предметно-специфичная) и перенося знания не только на уровне выходов, но и на уровне матриц внимания и скрытых представлений.
В компьютерном зрении активно применяются дистилляция признаков (FitNets), перенос внимания (attention transfer) и дистилляция отношений между объектами (relational knowledge distillation). Эти методы позволяют обучать компактные архитектуры типа MobileNet или EfficientNet от больших учителей, сохраняя точность в задачах классификации, детекции и сегментации.
Дистилляция больших языковых моделей (LLM) сталкивается с особыми трудностями, вызванными авторегрессионным характером генерации текста. Стандартная дистилляция на уровне next-token prediction с teacher forcing возможна, но требует осторожного подбора температуры и часто приводит к накоплению ошибок. В последние годы распространение получила дистилляция инструктивных моделей: учитель генерирует пары «инструкция — ответ», а ученик обучается на этих синтетических данных, имитируя стиль и фактические знания учителя (Alpaca, Orca). Активно исследуются методы дистилляции цепочек рассуждений (chain-of-thought distillation), направленные на перенос способности к многошаговым рассуждениям. Среди открытых проблем — сохранение фактической точности и предотвращение переноса галлюцинаций учителя, а также высокая стоимость инференса учителя при генерации больших датасетов.
Другие перспективные направления включают бесданную дистилляцию (data-free knowledge distillation), синтезирующую обучающие примеры без доступа к оригинальной выборке, кросс-модальную дистилляцию (перенос знаний между модальностями, например из изображений в текст) и дистилляцию задач (task distillation), где мягкие метки формируются ансамблем специализированных моделей для обучения многозадачного ученика.
См. также
- Logit
- Дивергенция Кульбака-Лейблера
- Transfer learning
- Сжатие моделей
- Pruning
- Quantization
- DistilBERT
- Трансформер (архитектура)
- Teacher model
- Student model
- Soft labels
- Dark knowledge
- Softmax температура
Литература
- Hinton G., Vinyals O., Dean J. Distilling the Knowledge in a Neural Network // NIPS Deep Learning and Representation Learning Workshop, 2015. arXiv:1503.02531 — основополагающая работа, вводящая понятия дистилляции знаний, тёмного знания и температурного сглаживания softmax.
- Romero A., Ballas N., Kahou S. E., Chassang A., Gatta C., Bengio Y. FitNets: Hints for Thin Deep Nets // ICLR, 2015. arXiv:1412.6550 — первая работа по дистилляции через промежуточные представления (hints), положившая начало дистилляции признаков.
- Zagoruyko S., Komodakis N. Paying More Attention to Attention: Improving the Performance of Convolutional Neural Networks via Attention Transfer // ICLR, 2017. arXiv:1612.03928 — метод переноса карт внимания, ставший стандартным подходом в дистилляции для компьютерного зрения.
- Zhang Y., Xiang T., Hospedales T. M., Lu H. Deep Mutual Learning // CVPR, 2018. arXiv:1706.00384 — формализация онлайн-дистилляции, где равноправные модели обучаются одновременно, обмениваясь мягкими метками.
- Furlanello T., Lipton Z. C., Tschannen M., Itti L., Anandkumar A. Born-Again Neural Networks // ICML, 2018. arXiv:1805.04770 — строгая постановка самодистилляции, при которой модель последовательно переобучается, используя собственные предсказания как целевые.
- Chen H., Wang Y., Xu C., Yang Z., Liu C., Shi B., Xu C., Xu C., Tian Q. Data-Free Learning of Student Networks // ICCV, 2019. arXiv:1904.01186 — первая эффективная техника бесданной дистилляции, породившая целое семейство методов генерации синтетических обучающих примеров.

