AI Dictionary of Terms

Distillation

A training technique where a smaller “student” model learns to mimic the behavior of a larger “teacher” model, producing a compact model that retains much of the teacher’s performance at a fraction of the computational cost.

The Simple Version

Imagine a master chef (the teacher) who has spent 30 years perfecting their craft. They can look at a dish and instantly know what’s wrong, how to fix it, and why certain techniques work. Now imagine a culinary student (the student) who wants to learn quickly.

Instead of the student spending 30 years making every mistake themselves, the master chef teaches them directly — sharing not just the final recipes, but the intuition, the subtle judgments, the “why” behind each decision. The student learns in months what would have taken decades alone.

Knowledge distillation works the same way. A large, powerful AI model (teacher) trains a smaller, faster model (student) by sharing not just the correct answers, but the nuanced probability distributions — the “soft” knowledge about what’s almost-right, what’s close, what’s uncertain. The student becomes a mini-expert.

Detailed Explanation

Introduced by Hinton, Vinyals, and Dean in 2015, knowledge distillation transfers the “dark knowledge” embedded in a teacher model’s outputs to a smaller student model.

The Core Insight: A teacher model doesn’t just output “cat” for a cat image. It outputs probabilities like:

Those small probabilities (tiger, dog) contain valuable information about visual similarities. A student trained only on hard labels (cat=1, everything else=0) misses this nuance. Distillation captures it.

The Process:

  1. Train Teacher: Train a large model to high performance
  2. Generate Soft Labels: Teacher produces probability distributions on training data
  3. Train Student: Student learns from both:
    • Soft targets: Teacher’s probability distributions (weighted by temperature T)
    • Hard targets: Ground truth labels
  4. Loss Function: Combined loss = α × (soft loss) + (1-α) × (hard loss)

Temperature Scaling: A hyperparameter T “softens” the probability distribution. Higher T reveals more relationships between classes (e.g., at T=5, a cat image might show 30% cat, 20% tiger, 15% dog, etc.).

Types of Distillation:

Key Characteristics

Business Context

Distillation is critical for enterprise AI deployment at scale:

Why it matters:

Enterprise Applications:

ROI Example:

Popular Distilled Models:

Real-World Analogy

An experienced salesperson training a new hire. The veteran doesn’t just share the script — they share the intuition: “When the customer hesitates here, they’re worried about price, not features.” The new hire learns in weeks what took the veteran years. The distilled knowledge is more valuable than the raw script alone.

Code Example

# Knowledge Distillation using PyTorch
import torch
import torch.nn as nn
import torch.nn.functional as F

def distillation_loss(student_logits, teacher_logits, labels, temperature=4.0, alpha=0.7):
    """
    Combined distillation loss:
    - Soft target loss: KL divergence between student and teacher distributions
    - Hard target loss: Cross-entropy with ground truth labels
    """
    # Soft targets (teacher's knowledge)
    soft_loss = F.kl_div(
        F.log_softmax(student_logits / temperature, dim=1),
        F.softmax(teacher_logits / temperature, dim=1),
        reduction='batchmean'
    ) * (temperature ** 2)
    
    # Hard targets (ground truth)
    hard_loss = F.cross_entropy(student_logits, labels)
    
    # Combined loss
    return alpha * soft_loss + (1 - alpha) * hard_loss

# Training loop
teacher_model.eval()  # Teacher is frozen
for batch in dataloader:
    inputs, labels = batch
    
    # Teacher produces soft labels (no gradient needed)
    with torch.no_grad():
        teacher_outputs = teacher_model(inputs)
    
    # Student learns from both teacher and ground truth
    student_outputs = student_model(inputs)
    loss = distillation_loss(student_outputs, teacher_outputs, labels)
    
    loss.backward()
    optimizer.step()
    optimizer.zero_grad()

Common Misconceptions

Sources & Further Reading