Knowledge Distillation

term_id: knowledge_distillation

Category: training_techniques

Definition

Knowledge distillation är en metod inom maskininlärning som används för att komprimera ett stort, komplext neuralt nätverk (läraren) till ett mindre, mer effektivt nätverk (studenten). Studentmodellen tränas för att efterlikna lärarens utdata.

Summary

Knowledge distillation är en teknik för modellkomprimering där en mindre ‘studentmodell’ lär sig att imitera beteendet hos en större ’lärarmodell’.

Key Concepts

  • Lärar-student-modell
  • Modellkomprimering
  • Mjukmål (soft targets)
  • Effektivitet

Use Cases

  • Distribuera modeller på kantenheter (edge devices)
  • Minska latens vid inferens
  • Sänka kostnader för molnberäkningar

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)