Встречается на собеседованиях • сегодня

Что такое дистилляция нейронных сетей

Дистилляция нейронных сетей — это метод сжатия моделей, при котором большая (учитель) обучает меньшую (ученик), передавая знания через предсказания или скрытые слой. Ученик учится не только на исходных данных, но и на "мягких" вероятностях (soft targets) учителя, что часто дает лучшую обобщающую способность.

Пример с кодом (PyTorch):

python
# Учитель и ученик
teacher = LargeModel().eval()
student = SmallModel()

# Температура для смягчения вероятностей
T = 2.0

# Лосс: KL-дивергенция между soft targets учителя и ученика
loss_fn = nn.KLDivLoss()
optimizer = torch.optim.Adam(student.parameters())

for x, y in dataloader:
    with torch.no_grad():
        teacher_probs = F.softmax(teacher(x)/T, dim=1)
    student_probs = F.log_softmax(student(x)/T, dim=1)
    loss = loss_fn(student_probs, teacher_probs)
    loss.backward()
    optimizer.step()

Ключевые преимущества:

  • Сжатие модели без значительной потери качества
  • Улучшение обобщения ученика
  • Возможность использовать ансамбли учителей
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы