تعرف على كيفية نقل المعرفة من المعلمين الكبار إلى الطلاب الصغار. قم بتحسين Ultralytics من أجل نشر سريع وفعال.
تقطير المعرفة هو تقنية متطورة في التعلم الآلي حيث يتم تدريب شبكة عصبية مدمجة ، يشار إليها باسم "الطالب"، على إعادة إنتاج سلوك وأداء شبكة أكبر وأكثر تعقيدًا، تُعرف باسم "المعلم". الهدف الأساسي من هذه العملية هو تحسين النموذج، مما يسمح للمطورين بنقل القدرات التنبؤية للبنى الثقيلة إلى نماذج خفيفة الوزن مناسبة للنشر على أجهزة محدودة الموارد. من خلال التقاط المعلومات الغنية المشفرة في تنبؤات المعلم، غالبًا ما يحقق نموذج التلميذ دقة أعلى بكثير مما لو تم تدريبه على البيانات الأولية فقط، مما يسد الفجوة بين الأداء العالي والكفاءة بشكل فعال.
في التعلم التقليدي الخاضع للإشراف، يتم تدريب النماذج باستخدام "تصنيفات صارمة" من بيانات التدريب، حيث يتم تصنيف الصورة بشكل قاطع (على سبيل المثال، 100٪ "كلب" و 0٪ "قطة"). ومع ذلك، فإن نموذج المعلم المدرب مسبقًا ينتج مخرجات عبر وظيفة softmax التي تحدد الاحتمالات لجميع الفئات. تُعرف توزيعات الاحتمالات هذه باسم "العلامات اللينة" أو "المعرفة المظلمة".
على سبيل المثال، إذا قام نموذج المعلم بتحليل صورة ذئب، فقد يتنبأ بأنها 90% ذئب و9% كلب و1% قطة. ويكشف هذا التوزيع أن الذئب يشترك في السمات البصرية مع الكلب، وهو سياق تتجاهله التسمية الصارمة. أثناء عملية التقطير، يقلل الطالب من وظيفة الخسارة، مثل تباعد كولباك-ليبلر، لمواءمة تنبؤاته مع العلامات الناعمة للمعلم. تساعد هذه الطريقة، التي شاع استخدامها بفضل أبحاث جيفري هينتون، الطالب على التعميم بشكل أفضل وتقلل من الإفراط في الملاءمة على مجموعات البيانات الأصغر.
يعد تقطير المعرفة أمرًا محوريًا في الصناعات التي تكون فيها الموارد الحاسوبية نادرة ولكن الأداء العالي غير قابل للتفاوض.
من المهم التمييز بين تقطير المعرفة واستراتيجيات الضغط الأخرى، لأنها تعدل النماذج بطرق مختلفة تمامًا.
في سير العمل العملي، تختار أولاً بنية خفيفة الوزن لتكون بمثابة الطالب. يمكن استخدام Ultralytics لإدارة مجموعات track تجارب التدريب لهذه النماذج الفعالة. فيما يلي مثال على تهيئة نموذج YOLO26 المضغوط، وهو مثالي للنشر المتطور والعمل كشبكة طلابية:
from ultralytics import YOLO
# Load a lightweight YOLO26 nano model (acts as the student)
# The 'n' suffix denotes the nano version, optimized for speed
student_model = YOLO("yolo26n.pt")
# Train the model on a dataset
# In a custom distillation loop, the loss would be influenced by a teacher model
results = student_model.train(data="coco8.yaml", epochs=5, imgsz=640)