Дистилляция знаний - это техника машинного обучения (ML), при которой меньшая, компактная модель ("ученик") обучается повторять поведение большей, более сложной модели ("учителя"). Основная цель - передать "знания", полученные большой моделью-учителем, меньшей модели-ученику, что позволяет ей достичь сопоставимой производительности, но при этом быть значительно более эффективной с точки зрения размера и вычислительных затрат. Это особенно полезно для развертывания моделей в средах с ограниченными ресурсами, таких как мобильные устройства или пограничные системы ИИ.
Как работает дистилляция знаний
Основная идея Knowledge Distillation заключается в том, чтобы обучать студенческую модель не только на метках (жестких целях), которые использовались для обучения исходной модели учителя, но и на выводах, сгенерированных самой моделью учителя. Часто эти выходы учителя представляют собой "мягкие цели" - вероятности или распределения классов, созданные на последнем слое учителя (например, после функции Softmax ). Эти "мягкие цели" содержат более богатую информацию о взаимосвязях между различными классами, чем только жесткие метки. Например, модель учителя может предсказать изображение грузовика как 70 % грузовиков, 25 % легковых автомобилей и 5 % автобусов, предоставляя более тонкую информацию, на которой может учиться ученик. Цель обучения студенческой модели обычно сочетает в себе стандартную функцию потерь (сравнение предсказаний студента с истиной) и дистилляционную потерю (сравнение предсказаний/мягких целей студента с мягкими целями учителя). Этот процесс, первоначально популяризированный в работе Хинтона, Виньялса и Дина, эффективно направляет ученика на подражание процессу рассуждений учителя.
Преимущества и применение
Дистилляция знаний предлагает несколько ключевых преимуществ:
- Сжатие моделей: Она позволяет создавать облегченные модели, которые требуют меньше памяти и хранилища, что крайне важно для развертывания моделей на устройствах с ограниченной емкостью.
- Более быстрый вывод: Маленькие модели, как правило, выполняют выводы гораздо быстрее, что позволяет проводить выводы в реальном времени для таких приложений, как обнаружение объектов с помощью Ultralytics YOLO модели на пограничных платформах. Изучи варианты развертывания приложений компьютерного зрения на пограничных устройствах ИИ.
- Снижение вычислительных затрат: Обучение и запуск небольших моделей потребляет меньше энергии и вычислительных ресурсов.
- Передача знаний: Он облегчает передачу сложных знаний, полученных большими моделями, потенциально обученными на массивных наборах данных, таких как ImageNet, в меньшие архитектуры.
Реальные приложения включают в себя:
- Edge Computing: Развертывание сложных моделей компьютерного зрения на устройствах вроде смартфонов или встраиваемых систем для решения таких задач, как классификация или обнаружение изображений, когда вычислительная мощность и время работы от батареи ограничены. Большая и точная модель, такая как YOLOv8x может выступать в роли учителя для меньшего ученика, например YOLOv8n.
- Ускорение выполнения сложных задач: Как было показано на YOLO Vision 2023, большие модели Foundation Models можно использовать для сложных задач вроде детальной аннотации данных, а их знания перегонять в более мелкие и быстрые модели для эффективного развертывания, значительно ускоряя такие процессы, как маркировка данных.
- Обработка естественного языка (NLP): Сжатие больших языковых моделей, таких как BERT или GPT, в более компактные версии для более быстрого анализа или перевода текста на пользовательских устройствах.
Смежные понятия
Knowledge Distillation связана с другими техниками оптимизации моделей, но отличается от них своим подходом:
- Обрезка модели: Уменьшает размер модели, удаляя лишние параметры (веса или связи) из уже обученной сети. KD обучает отдельную сеть меньшего размера.
- Квантование модели: Уменьшает размер модели и ускоряет вычисления за счет использования числовых форматов меньшей точности (например, INT8 вместо FP32) для весов и активаций. При этом сама архитектура модели не меняется, в отличие от KD. Эти техники(оптимизация модели) часто дополняют друг друга и могут использоваться вместе.
- Трансферное обучение: Более широкое понятие, когда знания, полученные в ходе выполнения одной задачи, применяются в другой, но связанной с ней. KD можно рассматривать как специфическую форму трансферного обучения, ориентированную на перенос знаний из большой модели в меньшую для той же задачи, в основном для сжатия.