Tiedon distillointi

term_id: knowledge_distillation

Category: training_techniques

Definition

Tiedon distillointi on koneoppimismenetelmä, jota käytetään suuren, monimutkaisen neuroverkon (opettaja) purkamiseen pienemmäksi, tehokkaammaksi verkoksi (opiskelija). Opiskelijamallia koulutetaan

Summary

Tiedon distillointi on mallin purkamistekniikka, jossa pienempi opiskelijamalli oppii jäljittelemään suuremman opettajamallin käyttäytymistä.

Key Concepts

  • Opettaja-opiskelija-malli
  • Mallin purkaminen
  • Pehmeät kohdistukset (soft targets)
  • Tehokkuus

Use Cases

  • Mallien käyttöönotto reunalaitteissa (edge devices)
  • Johtopäätöksenteon viiveen vähentäminen
  • Pilvipalveluiden kustannusten alentaminen

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)