Distylacja wiedzy

term_id: knowledge_distillation

Category: training_techniques

Definition

Distylacja wiedzy to metoda uczenia maszynowego służąca do kompresji dużego, złożonego układu nerwowego (nauczyciela) w mniejszy, bardziej wydajny układ (uczeń). Model uczeń jest trenowany do naśladowania wyjść modelu nauczyciela.

Summary

Distylacja wiedzy to technika kompresji modelu, w której mniejszy model uczeń uczy się naśladować zachowanie większego modelu nauczyciela.

Key Concepts

  • Model Nauczyciel-Uczeń
  • Kompresja modelu
  • Miękkie etykiety (Soft targets)
  • Efektywność

Use Cases

  • Wdrażanie modeli na urządzeniach brzegowych (edge devices)
  • Redukcja opóźnień wnioskowania
  • Obniżenie kosztów obliczeniowych w chmurze

Code Example

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import torch
import torch.nn as nn

def distillation_loss(student_logits, teacher_logits, temperature=2.0):
    T = temperature
    student_probs = nn.functional.softmax(student_logits / T, dim=1)
    teacher_probs = nn.functional.softmax(teacher_logits / T, dim=1)
    return nn.functional.kl_div(
        nn.functional.log_softmax(student_logits / T, dim=1),
        teacher_probs,
        reduction='batchmean'
    ) * (T * T)