Какие виды дистилляции моделей существуют?
Answer from AI
sobes.tech AI
Существуют несколько видов дистилляции моделей — методов передачи знаний от большой (teacher) модели к меньшей (student) с целью уменьшения размера и ускорения работы при сохранении качества:
-
Классическая (логит-дистилляция) — студент обучается на «мягких» выходах учителя (soft targets), то есть на вероятностях классов, а не на жёстких метках. Это помогает студенту лучше понять распределение вероятностей.
-
Дистилляция признаков (feature distillation) — студент пытается воспроизвести промежуточные представления (фичи) учителя, что помогает лучше захватить внутренние закономерности.
-
Дистилляция внимания (attention distillation) — студент обучается имитировать карты внимания учителя, что полезно в трансформерах и других архитектурах с механизмом внимания.
-
Дистилляция с помощью генеративных моделей — используется для создания дополнительных данных или для обучения студента на синтетических примерах.
-
Онлайн-дистилляция — учитель и студент обучаются одновременно, что позволяет более гибко передавать знания.
Пример классической дистилляции на PyTorch:
import torch
import torch.nn.functional as F
def distillation_loss(student_logits, teacher_logits, labels, T=2.0, alpha=0.5):
soft_targets = F.log_softmax(student_logits / T, dim=1)
soft_labels = F.softmax(teacher_logits / T, dim=1)
distill_loss = F.kl_div(soft_targets, soft_labels, reduction='batchmean') * (T * T)
student_loss = F.cross_entropy(student_logits, labels)
return alpha * distill_loss + (1 - alpha) * student_loss
Выбор метода зависит от задачи, архитектуры и требований к модели.