Узнайте, как дистилляция знаний передает интеллект от крупных учителей к компактным ученикам. Оптимизируйте 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)