Методы сжатия модели, которые работают лучше, чем исходная

Глубокая нейронная сеть - один из мощных методов машинного обучения. Он имеет потрясающую производительность во многих задачах, включая распознавание изображений, обработку естественного языка, а также распознавание речи. Построение глубокой нейронной сети, которая хорошо работает в последующих задачах, часто требует наличия миллионов или даже миллиардов параметров. Один пример из модели Крижевского, выигравшей конкурс ImageNet по классификации изображений, имеет более 60 миллионов параметров только с пятью сверточными слоями и тремя полносвязными слоями [1].

Развертывание модели с такими огромными параметрами требует больших ресурсов и затратных вычислений. Хотя иногда целевые устройства имеют ограниченные ресурсы, и их будет сложно вычислить, особенно для приложения реального времени или приложения с алгоритмом онлайн-обучения. Итак, как мы можем уменьшить размер модели, но в то же время достичь той же производительности, что и исходная более крупная модель? Можем ли мы каким-то образом передать знания от более крупных моделей к более мелким?

В этом посте мы рассмотрим методы сжатия модели для передачи знаний от огромной нейронной модели к меньшей без значительного снижения производительности. Сжатие модели на нейронной модели может быть выполнено с использованием совместного использования параметров и сокращения или с помощью дистилляции знаний. Мы рассмотрим их различия, преимущества и недостатки.

Совместное использование параметров и сокращение

Идея сокращения и совместного использования параметров заключается в исследовании избыточности параметров модели. Изучая параметры исходной модели, мы надеемся удалить избыточные, нечувствительные или несущественные параметры, сохранив при этом производительность исходной модели. После отказа от избыточных параметров ResNet-50 с 50 сверточными слоями, имеющими более 3,8 миллиарда параметров, может сэкономить более 75% параметров и 50% времени вычислений [1]. Три метода совместного использования и сокращения параметров - это квантование и бинаризация, сокращение и совместное использование параметров и структурная матрица.

  • Квантование и бинаризация. Идея этого метода заключается в уменьшении количества битов для хранения каждого веса. В крайнем случае этого метода выполняется бинаризация (с использованием значения веса 0–1), такая как BinaryConnect, BinaryNet и т. Д. Этот метод имеет недостатки при работе с большими CNN, такими как GoogleNet, что значительно снижает точность модели.
  • Удаление и совместное использование параметров. Как и в названии, этот метод пытается удалить избыточный и неинформативный вес в предварительно обученной CNN. Однако выполнение этой техники на полностью подключенном уровне может быть обременительным с точки зрения потребления памяти. Удаление веса может быть выполнено путем уменьшения общего количества параметров и операций во всей сети или путем использования хэш-функции для группировки весов для совместного использования параметров.
  • Структурная матрица. Чтобы обрезать полностью связанный слой, мы можем применить матричное умножение с гораздо меньшим количеством параметров. Это снизит затраты на память, а также ускорит этап вывода и обучения. Однако добавление матричного умножения может внести искажение в модель; таким образом, это может повлиять на производительность. Даже найти подходящую структурную матрицу сложно, поскольку нет теоретического способа ее получения.

Поскольку все методы пытаются удалить некоторые параметры модели, трудно поддерживать производительность, чтобы она не снижалась.

Кистилляция знаний

В отличие от обрезки и совместного использования параметров, которые пытаются уменьшить вес, дистилляция знаний пытается воспроизвести результат громоздкой модели (учитель) в более компактной модели (ученик). Так что модель ученика может быть обобщена так же, как модель учителя. Относительные вероятности неправильных ответов показывают, насколько модель имеет тенденцию к обобщению. Например, изображение автомобиля может иметь крошечную вероятность того, что его ошибочно примут за автобус, но эта вероятность все же выше, чем его по ошибке приняли за еду.

Поскольку вероятности говорят нам об эффективности модели учителя, мы можем использовать эти вероятности в качестве целевой метки для обучения модели ученика передаче способности к обобщению. Эти вероятности называются мягкими целями.

«Когда мягкие цели имеют высокую энтропию, они предоставляют гораздо больше информации для каждого обучающего примера, чем жесткие цели, и гораздо меньше отклонений в градиенте между обучающими примерами, поэтому небольшую модель часто можно обучить на гораздо меньшем количестве данных, чем исходная громоздкая модель и используя гораздо более высокая скорость обучения ». [2]

Для обучения модели ученика мы можем использовать тот же обучающий набор или использовать отдельный обучающий набор из модели учителя. На рисунке 1 показано, как работает дистилляция знаний. Мы обновляем модель ученика, используя мягкую потерю при обучении. Однако предоставление модели учащегося информации о жесткой метке может значительно улучшить ее производительность. Таким образом, вместо обновления модели ученика с помощью мягкой потери мы обновляем ее также с помощью жесткой потери. Серьезная потеря - это потеря энтропии в результате жесткого предсказания с меткой наземной истины. Мы используем средневзвешенное значение мягких потерь и жестких потерь при обучении модели ученика.

В наборе данных MNIST эта модель хорошо работает даже с данными обучения, используемыми для обучения студентов, не посещающих некоторые классы. Этот метод также хорошо работает с огромным набором данных. Он показывает, что выполнение дистилляции знаний может быть быстрее для внутреннего набора данных Google, называемого JFT, который содержит 15000 классов на 100 миллионах помеченных изображений для классификации изображений. Автор разбил набор данных на 61 специализированную модель (небольшие модели с подмножеством обучающих данных) по 300 классов в каждой модели. Вместо того, чтобы занимать много недель, обучение на более мелких специализированных моделях занимает всего несколько дней. Другим усовершенствованием этих специализированных моделей было повышение точности на 4,4% по сравнению с громоздкой моделью.

Увидев результат этой дистилляции знаний, может возникнуть вопрос: «будет ли этот метод работать с каждым набором данных?». Изучая частный случай мелкого линейного и глубокого линейного классификатора [3], можно выделить три критических фактора для успеха дистилляции знаний:

  • Геометрия данных. Первая характеристика - это геометрические свойства распределения данных, которые мы использовали для обучения модели, то есть разделение классов. Разделение классов оказывает непосредственное влияние на скорость сходимости рисков. И результат показывает, что данные с более высокой степенью полинома более эффективны, и учащийся может достичь меньшего риска.
  • Предвзятость оптимизации. Не только в отношении извлечения знаний, но и систематическая ошибка оптимизации в целом также влияет на скорость конвергенции на этапе обучения. В этом случае использование градиентного спуска очень полезно для минимизации цели студента.
  • Сильная монотонность. Что касается того, как обучение в нейронной сети обычно работает лучше, когда мы увеличиваем количество обучающих данных, он также применяется здесь. Извлечение знаний будет работать, если за счет увеличения объема обучающих данных снизить риск модели студента.

В результате этих экспериментов авторы предполагают, что аналогичные свойства имеют место и в нелинейных классификаторах. Несмотря на успех дистилляции знаний, у нее есть и недостатки. Одна из них заключается в том, что этот метод может быть применен только к задачам классификации с функцией softmax, что ограничивает его использование. Во-вторых, иногда допущения модели слишком строги, чтобы сделать производительность конкурентоспособной при использовании различных подходов.

Использованная литература:

[1] Cheng, Y., Wang, D., Zhou, P. and Zhang, T., 2017. Обзор сжатия и ускорения модели для глубоких нейронных сетей. Препринт arXiv arXiv: 1710.09282.
[2] Хинтон, Г., Виньялс, О. и Дин, Дж., 2015. Преобразование знаний в нейронную сеть. Препринт arXiv arXiv: 1503.02531.
[3] Фуонг, М. и Ламперт, К., 2019 г., май. На пути к пониманию извлечения знаний. В Международной конференции по машинному обучению (стр. 5142–5151).