Knowledge Distillation
Bilgi damıtma, küçük bir öğrenci modelini daha büyük bir öğretmen modelinin çıktılarını veya özelliklerini taklit edecek şekilde eğitir; böylece doğruluğunun büyük kısmını çok daha düşük hesaplama maliyetiyle korur.
Bilgi damıtma, küçük bir "öğrenci" sinir ağının daha büyük ve daha isabetli bir "öğretmen" modelinin davranışını taklit edecek şekilde eğitildiği bir model sıkıştırma tekniğidir. Öğrenci, gerçek etiketlere ek olarak veya onların yerine öğretmenin çıktı olasılıklarından ya da iç özelliklerinden öğrenir; bu daha zengin hedefler, aynı mimarinin yalnızca etiketlerle eğitilmesine kıyasla daha yüksek doğruluk elde etmesini sağlar. Sonuç, öğretmenin kalitesinin büyük bölümünü korurken telefonlarda, gömülü kartlarda ve diğer uç yapay zekâ donanımlarında çalışabilecek kadar hızlı ve küçük bir modeldir. Buciluǎ, Caruana ve Niculescu-Mizil, 2006'da bir topluluğun bilgisinin tek bir modele sıkıştırılabileceğini gösterdi. Hinton, Vinyals ve Dean ise 2015'te bu yaklaşıma bilgi damıtma adını verdi ve günümüzde çoğu yöntemin hâlâ kullandığı sıcaklıkla yumuşatılmış hedefleri tanıttı.
Bilgi Damıtma Nasıl Çalışır#
Bir etiket, görüntüde kurt olduğunu söyler. Eğitimli bir öğretmenin softmax çıktısı daha fazlasını anlatır: Görüntü biraz huskiye, az da kediye benzer ve arabaya hiç benzemez. Genellikle karanlık bilgi olarak adlandırılan yanlış sınıflara ait bu göreli olasılıklar, yumuşak hedefler olarak öğrenciye aktarılır. Softmax'tan önce logitleri 1'den büyük bir T sıcaklığına bölmek dağılımı düzleştirir ve küçük olasılıkların öğrenmede yeterince ağırlık taşımasını sağlar. Damıtma kaybı, öğretmenin ve öğrencinin yumuşatılmış dağılımları arasındaki Kullback-Leibler ayrışımıdır; gradyanlarının büyüklüğü sıradan etiket kaybının gradyanlarıyla karşılaştırılabilir kalsın diye T² ile çarpılır:
import torch
import torch.nn.functional as F
# Logits for one wolf photo over the classes [wolf, husky, cat, car]
teacher_logits = torch.tensor([[6.0, 4.0, 1.0, -2.0]])
student_logits = torch.tensor([[4.0, 1.0, 1.5, 0.0]])
# Dividing logits by a temperature T > 1 softens the teacher's distribution
for T in (1.0, 4.0):
probs = F.softmax(teacher_logits / T, dim=1)
print(f"T={T}: teacher probabilities {[round(p, 3) for p in probs[0].tolist()]}")
# Distillation loss: KL divergence between the softened distributions, scaled by T^2
T = 4.0
soft_targets = F.softmax(teacher_logits / T, dim=1)
student_log_probs = F.log_softmax(student_logits / T, dim=1)
loss = F.kl_div(student_log_probs, soft_targets, reduction="batchmean") * T**2
print(f"Distillation loss at T={T}: {loss.item():.3f}")T=1 olduğunda öğretmen kurt sınıfına 0.875 olasılık verir; kediye yalnızca 0.006, arabaya ise 0.0 bırakır. T=4 olduğunda aynı logitler 0.493, 0.299, 0.141 ve 0.067 değerlerine dönüşür. Bu değerler, öğrenciye kurdun huskiye kediden daha çok, kedinin de arabadan daha çok benzediğini gösterir. Öğrenci bu kaybı (burada 1.244) en aza indirir; genellikle gerçek etiketler üzerindeki normal görev kaybıyla ağırlıklı toplam olarak kullanılır. Öğretmen süreç boyunca sabit kalır ve yalnızca ileri geçiş yapar:
Damıtma Türleri#
- Yanıta dayalı: Öğrenci, yukarıdaki yumuşak hedef yönteminde olduğu gibi öğretmenin son çıktılarını eşleştirir ve logitlerinden başka bir şeye ihtiyaç duymaz. DistilBERT, BERT'i ön eğitim sırasında dil modelleme ve gizli durum kayıplarıyla birleştirerek %40 küçülttü ve dil anlama yeteneğinin %97'sini korurken %60 hızlandırdı.
- Özellik tabanlı: Öğrenci, öğretmenin ara özellik haritalarını eşleştirir; öğrenilmiş küçük bir projeksiyon katmanı, kanal sayısı farkını giderir. FitNets, bu "ipuçlarını" tanıttı ve öğretmeninden yaklaşık 10,4 kat daha az parametreye sahip olup CIFAR-10'da öğretmenini geride bırakan bir öğrenci eğitti.
- Dizi düzeyinde: Bir dil modeli öğretmeni metin üretir ve öğrenci bu çıktılar üzerinde ince ayar yapılarak eğitilir. DeepSeek, Qwen2.5 ve Llama 3 tabanlı R1 damıtılmış modellerini, DeepSeek-R1 ile derlenen 800.000 örnek üzerinde ince ayarla eğitti.
Özellik tabanlı damıtma, tek bir sınıf dağılımı yerine binlerce kutu ve skor üreten nesne dedektörleri için uygundur. Ultralytics YOLO, eğitim yapılandırmasına bir distill_model öğretmen modeli eklendiğinde bu yöntemi kullanır: ağırlıkları dondurulmuş daha büyük bir YOLO26 modeli, tespit başlığına girdi sağlayan boyun bölümündeki üç özellik haritasını sunar; öğrenci, bu haritaları 1×1 evrişim projeksiyonları aracılığıyla, öğretmen güvenine göre ağırlıklandırılmış ve dis ile ölçeklenmiş bir L2 kaybı kullanarak eşleştirir (varsayılan değer 6.0). COCO val2017 üzerinde damıtılmış YOLO26 nano modeli, öğretmen olmadan eğitilmiş aynı modelin 40.9 değerine kıyasla 41.5 mAP50-95 değerine aynı çıkarım maliyetiyle ulaşır.
from ultralytics import YOLO
# Öğrenci: Dağıtılacak kompakt YOLO26 nano modeli
model = YOLO("yolo26n.pt")
# Öğretmen: Eğitime rehberlik eden ve sonrasında atılan daha büyük bir YOLO26 kontrol noktası
results = model.train(data="coco8.yaml", epochs=5, distill_model="yolo26s.pt")Damıtma ve İlgili Terimler#
- Aktarım öğrenmesi: Yeni bir görev için başlangıç noktası olarak modelin kendi ağırlıklarını yeniden kullanır. Damıtma ise aynı görevde bir modeli taklit etmesi için genellikle daha küçük, farklı bir mimariyi eğitir.
- Model budama: Eğitilmiş bir ağdan ağırlıkları, kanalları veya katmanları kaldırır. Budanmış modeller, doğruluğu geri kazanmak için genellikle özgün modelden damıtma yoluyla ince ayar görür.
- Model niceleme: Ağırlıkları ve aktivasyonları INT8 gibi daha düşük bir hassasiyette saklar. Aynı mimariyi küçültür ve daha küçük bir mimari seçen damıtmayla birlikte kullanılabilir.
- Model topluluğu: Çıkarım sırasında birkaç modelin ortalamasını alır. Tek bir öğrenciye model topluluğu damıtmak, bu tekniğin ilk ortaya çıkış amacıdır.
- Veri kümesi damıtma: Adı benzer olsa da model yerine veri kümesini sıkıştırır. Wang ve diğerleri, MNIST'in 60.000 eğitim görüntüsünü, her sınıf için bir tane olmak üzere 10 sentetik görüntüye sıkıştırdı. Bu görüntüler, sabit bir başlangıç değerine sahip ağın birkaç gradyan adımında özgün doğruluğuna yaklaşmasını sağlar.










