▮ 4 основных метода

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

В основном существует 4 популярных метода сжатия моделей.

  1. Факторизация низкого ранга
  2. Дистилляция знаний
  3. Обрезка
  4. Квантование

Ссылка: [Проектирование систем машинного обучения]

▮ 1. Факторизация низкого ранга

Само название довольно пугающее, но то, что он делает, — это просто замена тензоров высокой размерности тензорами низкой размерности.

Вот несколько примеров.

Бывший. 1 Сожмите сеть

Заменив слои, такие как свертка 3x3, на свертку 1x1, эта сеть смогла достичь производительности уровня AlexNet с в 50 раз меньшим количеством параметров.

Бывший. 2 Мобильная сеть

Заменив стандартную свертку размера (KxKxC) на свертку по глубине (KxKx1) и точечную свертку (1x1xC), удалось уменьшить количество параметров с (K²*C) до (K²+C).

Например, если есть свертка размера (3x3x10), оригинал будет иметь 90 параметров, а новая версия будет иметь только 19.

▮ 2. Дистилляция знаний

Дистилляция знаний помогает уменьшить размер модели за счет «перегонки» знаний из огромной модели («родительской» модели) в меньшую модель («модель ученика»), которую гораздо проще развернуть.

3 Знания

Есть 3 разные формы знания

1. Знание, основанное на отношениях

В дополнение к знаниям, представленным в выходных слоях и промежуточных слоях нейронной сети, знания, которые фиксируют взаимосвязь между картами объектов, также могут использоваться для обучения модели ученика.

2. Знания, основанные на реакции

Это фокусируется на последнем слое вывода модели учителя. Гипотеза состоит в том, что модель ученика научится имитировать предсказания модели учителя.

3. Знания, основанные на функциях

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

▮ 3. Обрезка

«Обрезка» означает разрежение сети для более быстрого вывода. Большинство весов внутри сетей совершенно бесполезны, поэтому это может помочь уменьшить размер модели.

Методы

Есть в основном 2 метода обрезки модели.

1. Неструктурированное сокращение

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

2. Структурированное сокращение

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

▮ 4. Квантование

Квантование — это метод изменения типа данных, используемых для вычисления нейронных сетей, для более быстрого вывода.

После того, как вы развернули свою модель, нет необходимости в обратном распространении (которое чувствительно к точности). Это означает, что если допустимо небольшое снижение точности, мы можем снизить точность вычисления нейронной сети для более быстрого вывода, применив квантование.

Существует в основном 3 метода применения квантования.

1. Динамическое квантование

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

2. Квантование после обучения

Примените квантование после обучения и перед временем выполнения. Автоматически применяет квантование ко всем слоям.

3. Обучение квантованию

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