Дистилляция знаний
Базовая идея
При использовании моделей глубокого обучения важна не только точность моделей, но и их вычислительная простота, обеспечивающая более быстрое построение прогнозов. Упрощение модели позволяет её применять на более простых вычислительных устройствах, таких как мобильный телефон, а также обрабатывать большее число пользовательских за просов за единицу времени.
Дистилляция знаний (knowledge distillation [1]) - процесс настройки простой модели, называемой учеником (student model) воспроизводить поведение уже настроенной сложной и точной модели, называемой учителем (teacher model). Впервые технология была развёрнуто описана в [2].
В базовом варианте дистилляция знаний для задачи классификации состоит из следующих шагов:
- Обучить простую модель восстанавливать вероятности классов сложной модели на трансферном датасете (transfer set).
Трансферный датасет может совпадать с тренировочным, на котором обучалась сложная модель, может составлять его подмножество, а может содержать и совсем другую выборку объектов.
Мотивация
Как правило, трансферный датасет мал, из-за чего возникают неоднозначности с обобщающей способностью - экстраполировать информацию об ограниченных наблюдениях можно по-разному. При этом известно, что сложная модель точна, т.е. обладает хорошей обобщающей способностью.
Поэтому, чтобы расширить объем получаемой информации с каждого объекта, простой модели даётся не просто информация о корректном классе (всего одно число), а предоставляется более полная информация о вероятностях каждого из классов по мнению сложной модели ( чисел), что позволяет простой модели учиться быстрее, перенимая не только вероятную метку, но и "образ мышления" модели-учителя.
Рассмотрим классификацию изображений:
В стандартном обучении простая модель видит только изображение и верный класс, например, "собака". Переобучившись, она легко может научиться её путать с классом "медведь" и "лось" из-за цветовой схожести.
В дистилляции знаний простая модель видит, что "собака" обладает максимальным рейтингом, но также высоким рейтингом обладают классы "волк" и "шакал", а класс "медведь" и "лось" обладают, наоборот, низким рейтингом. Это позволяет простой модели перенимать "образ мышления" сложной модели, который обладает высокой обобщающей способностью.
Настройка простой модели
В стандартной процедуре обучения [2] простая модель выдаёт рейтинги , которые трансформируются в вероятности классов через SoftMax-преобразование:
где - гиперпараметр температуры, влияющий на степень сглаживания вероятностей. Чем температура выше, тем выходные вероятности получаются более сглаженные.
Настройка модели производится, используя стандартную кросс-энтропию с :
В дистилляции знаний есть уже настроенная сложная модель , выдающая вероятности классов . Для простой модели эти вероятности представляют собой мягкую разметку (soft labels), к которой нужно приближать собственные прогнозы, для чего также используется кросс-энтропия:
Используя (2), можно настраивать простую модель на даже неразмеченном трансферном датасете, поскольку разметку осуществляет модель-учитель. Если же трансферный датасет содержит метки истинных классов, то настроить простую модель можно точнее (в силу того, что модель-учитель всё же иногда ошибается), используя взвешенную сумму потерь (1) и (2):
где - гиперпараметр, отвечающий за силу дистилляции знаний.
В [2] рекомендуется стандартные потери вычислять при , а дистиллированные потери - с увеличенным . Это упрощает перенос "образа мышления" учительской модели моделью-учеником за счёт разглаживания вероятностей. В противном случае учительские вероятности часто будут оказываться слишком сконцентрированными вокруг предсказываемых классов, что затруднит дистилляцию знаний.
Поскольку градиент по логитам потерь убывает по закону при увеличении (см. [1] и [2]), то, чтобы выровнять вклад потерь каждого типа, вторые потери домножаются на .
Другие варианты применения
Выше мы рассмотрели перенос знаний сложной модели только с её последнего слоя, этот подход называется дистилляцией, основанной на откликах (responce-based distillation).
Однако часто простую модель обучают воспроизводить активации сложной модели на промежуточном слое. Для этого при настройке простой модели используется регуляризатор в виде квадрата -нормы между картой признаков простой модели и сложной модели на слое :
Вместо квадрата -нормы может использоваться и другая функция расхождения.
Этот подход называется дистилляция, основанная на признаках (feature-based distillation, [3]), поскольку активации сложной модели имеют смысл промежуточных признаков, которыми оперирует оставшаяся часть модели.
Также существует дистилляция, основанная на взаимодействии признаков (relation-based distillation, [3]), при которой простая модель учится воспроизводить такую же взаимосвязь между представлениями с разных слоёв и , что и сложная модель. Пусть - функция взаимодействия между слоями. Например, это может быть матрица попарных корреляций между каждым признаком слоя с каждым признаком слоя . Тогда простая модель настраивается, используя следующую функцию потерь:
Здесь также вместо квадрата -нормы может использоваться и другая функция расхождения.