Google AI представила open source модель MorphNet, которая берет на вход любую нейронную сеть и оптимизирует ее так, чтобы она имела большую скорость, меньший размер и лучшую производительность без потери качества модели в решении поставленной задачи.
Принцип работы
MorphNet оптимизирует нейронную сеть через цикл сокращающихся и расширяющихся фаз. В фазе сокращения MorphNet выявляет неэффективные нейроны и удаляет их из сети, применяя разрежающий регуляризатор так, чтобы полная функция потерь сети включала в себя потери с каждого нейрона. Вместо единого штрафа на нейроны, MorphNet рассчитывает штраф в зависимости от стоимости нейрона по отношению к целевому ресурсу. Так, по ходу обучения рассчитывается, какие нейроны являются ресурсоэффективными, а какие могут быть удалены.
В качестве примера рассмотрим, как MorphNet вычисляет стоимость вычислений (например, FLOP ) нейронной сети. Для этого представим слой нейронной сети в виде матричного умножения. В этом случае слой имеет 2 входа ( xn ), 6 весов ( a , b , …, f ) и 3 выхода ( yn) — нейроны. Используя стандартный метод умножения строк и столбцов, вы можете определить, что для оценки этого слоя требуется 6 умножений. MorphNet считает это значение, как произведение количества входных данных на количество выходных.
В примере слева показана разреженность весов, где 2 из 6 весов равны 0, в таком случае все равно необходимо выполнить все умножения, чтобы оценить этот слой. Средний пример показывает структурированную разреженность, где все веса в строке для нейрона yn равны 0. MorphNet распознает, что новый размер выхода равен 2, а число умножений уменьшилось с 6 до 4. Используя эту идею, MorphNet определяет стоимость каждого нейрона в сети, чтобы создать более эффективную модель (справа), где нейрон y3 был удален.
На этапе расширения используется множитель ширины для равномерного расширения размеров всех слоев. Например, если произойдет расширение на 50%, то неэффективный слой, который начался со 100 нейронов и сократился до 10, расширится только до 15. В то же время время важный слой, который сократился только до 80 нейронов, расширится до 120 и будет иметь больше ресурсов для работы. Таким образом, происходит перераспределение вычислительных ресурсов из менее эффективных частей сети в более эффективные.
Особенности MorphNet
MorphNet содержит четыре основных особенности:
- Целевая регуляризация. Подход MorphNet нацелен на сокращение конкретного ресурса (например, FLOP на выходе или размер модели).
- Масштабируемость. MorphNet изучает новую структуру за один проход обучения и работает как с маленькими так и с очень большими сетями.
- Переносимость. MorphNet создает сети, которые являются «переносимыми» в том смысле, что они предназначены для повторного обучения с нуля, а веса не привязаны к процедуре обучения архитектуры. Вам не нужно беспокоиться о копировании контрольных точек или следовании специальным рецептам обучения. Просто тренируйте свою новую сеть, как обычно!
- Изменение топологии. Удаление ненужных нейронов.
Результаты
В качестве демонстрации модель применили к Inception V2, обученной на ImageNet, выбрав в качестве целевого ресурса FLOP. Базовый подход заключается в использовании множителя ширины для компромисса между точностью и значением FLOP путем равномерного уменьшения количества выходов для каждой свертки (красный тренд на графике ниже). Подход MorphNet дает лучшую кривую компромисса при сжатии модели (синий тренд на графике ниже). В этом случае стоимость FLOP снижается с 11% до 15% с той же точностью по сравнению с baseline-моделью.
Также тесты были проведены на других моделях. Результаты представлены в таблице ниже.