Distilação de Conhecimento

term_id: knowledge_distillation

Category: training_techniques

Definition

A distilação de conhecimento é um método de aprendizado de máquina utilizado para comprimir uma rede neural grande e complexa (o professor) em uma rede menor e mais eficiente (o aluno). O modelo aluno é treinado para replicar as saídas e o comportamento do modelo professor, permitindo que o modelo compacto mantenha alta precisão com menos recursos computacionais.

Summary

A distilação de conhecimento é uma técnica de compressão de modelos na qual um modelo menor (aluno) aprende a imitar o comportamento de um modelo maior (professor).

Key Concepts

  • Modelo Professor-Aluno
  • Compressão de Modelo
  • Alvos Suaves (Soft Targets)
  • Eficiência

Use Cases

  • Implantação de modelos em dispositivos de borda
  • Redução da latência de inferência
  • Diminuição dos custos de computação em nuvem

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)