- Этот блог в основном основан на моих выводах из статьи: Knowledge Distilling: A Survey, и я пытаюсь представить свое резюме, которое, надеюсь, будет легче понять.
Проблема
Огромные модели глубокого обучения с миллиардами параметров очень сложно развернуть на устройствах с ограниченными ресурсами, таких как телефоны и встроенные устройства, или использовать для логического вывода или обслуживания в реальном времени, где типичные требования к задержке составляют миллисекунды (≤500 мс).
Решение
- Одним из популярных методов сжатия и ускорения модели является метод дистилляции знаний (KD), при котором мы переносим знания из большой модели в маленькую модель.
- Система KD состоит из 3 ключевых компонентов: знания, алгоритм дистилляции, архитектура учитель-ученик
Знание
Различные виды знаний могут быть
- Знания, основанные на ответах: эти знания имитируют окончательный прогноз модели учителя.
- Знания, основанные на функциях: хорошо известно, как глубокие нейронные сети используют различные уровни для различных видов представления функций. В то же время как выходные данные последнего слоя (знания, основанные на ответах), так и выходные данные промежуточных слоев используются в качестве знаний для контроля за обучением модели учащегося.
- Знания, основанные на отношениях (также называемые знаниями общего представления): эти знания исследуют отношения между промежуточными уровнями, например, используя внутренний продукт между функциями из 2 разных слоев в качестве знаний. Более конкретно, знания учителя о взаимосвязи между различными входными примерами переносятся в модель ученика:
Схемы перегонки
3 основные категории в зависимости от того, обновляются ли модели учителя и ученика одновременно или нет:
- Автономная дистилляция: ее проще всего реализовать. Сначала модель учителя предварительно обучается на обучающем наборе данных, а знания из модели учителя передаются для обучения модели ученика.
- Онлайн-дистилляция: модели учителя и ученика обновляются одновременно в одном и том же учебном процессе. Здесь мы можем распараллелить обучение, используя несколько стратегий распределения (данные и/или модель), что сделает этот процесс эффективным.
- Самоанализ: модели учителя и ученика имеют одинаковый размер и одинаковую архитектуру. Это может быть либо одна модель, представляющая учителя и ученика, либо у нас может быть два экземпляра одной и той же модели: один учитель и еще один ученик. Основная идея здесь заключается в том, что знания из более глубоких слоев могут быть использованы для обучения мелких слоев. Этот процесс обычно делает модель ученика более надежной и точной.
Архитектура «учитель-ученик»:
Наиболее распространенные студенческие архитектуры:
- квантованная версия модели учителя
- уменьшенная версия модели учителя с несколькими слоями и меньшим количеством нейронов на слой
- та же модель, что и учитель
Алгоритмы дистилляции
- Состязательная дистилляция:используется концепция генеративно-состязательных сетей (GAN), где модель генератора задает несколько сложных вопросов модели учителя, а модель ученика учится отвечать на эти вопросы от учителя.
- Дистилляция нескольких учителей: несколько моделей учителей используются для предоставления различных видов знаний модели ученика.
- Кросс-модальная (междисциплинарная) дистилляция: модель учителя, которая обучается в одной модальности (например, в области зрения), используется для обучения модели ученика в другой модальности (например, в текстовой области). Пример приложения: визуальный вопрос-ответ
- Дистилляция на основе графа²: информация о процедуре встраивания сети учителя преобразуется в граф, который, в свою очередь, используется для обучения модели ученика.
- Дистилляция на основе внимания: здесь карты внимания используются для передачи знаний о встраивании функций в модель учащегося.
- Дистилляция без данных: при отсутствии обучающего набора данных (из-за проблем с конфиденциальностью, безопасностью и т. д.) синтетические данные генерируются на основе модели учителя или используются GAN.
- Квантовая перегонка: передача знаний от высокоточной модели учителя (скажем, 32-разрядной) к модели ученика с низкой точностью (скажем, 8-разрядной).
- Дистилляция на протяжении всей жизни:непрерывно приобретаемые знания модели учителя переносятся на модель ученика (видео ссылка на Youtube)
- Дистилляция на основе поиска нейронной архитектуры (NAS).Используйте AutoML для автоматического определения подходящей модели ученика с точки зрения определения подходящего разрыва в емкости между моделями учителя и ученика.
Аспекты производительности и выводы
- автономная дистилляция выполняет передачу знаний на основе функций
- онлайн-дистилляция осуществляет передачу знаний на основе ответов
- производительность моделей учащихся может быть улучшена за счет передачи знаний от моделей учителей (высокопроизводительных)
Приложения КД
- KD нашел применение в визуальном распознавании, НЛП, распознавании речи и многих других приложениях.
Проблемы
- Сложно измерить качество знаний или качество архитектуры «ученик-учитель».
Будущие направления
- Было бы полезно интегрировать KD с другими схемами обучения, такими как обучение с подкреплением, состязательное обучение и т. д.