Машинное обучение - это новое модное слово в разных отраслях, джин 21 века. Он обещает все, от замены человеческого труда в кропотливой черной работе до предоставления высокоуровневых идей и анализа для принятия решений. Магия еще больше усиливается в сочетании с Интернетом вещей (IoT) и потенциально может создать мир, в котором наша среда является продолжением нашего мозга и разумно реагирует на наши прихоти и желания.

Однако чем мощнее джинн, тем больше требуется волшебная лампа для его размещения. Другими словами, программное обеспечение для машинного обучения часто может быть настолько ресурсоемким, что не подходит для легких устройств IoT. Здесь мы исследуем идею сверточных нейронных сетей, ключевой аспект машинного обучения в распознавании изображений и обнаружении объектов, и то, как они могут не быть такими массивными, как они есть.

Сверточные нейронные сети (CNN) работают, применяя N каналов фильтра к входному изображению (далее именуемым тензором). Предположим, что входной тензор имеет форму (высота, ширина, количество предыдущих каналов). Каждый канал фильтра можно представить себе как небольшую коробку весов, которая охватывает высоту и ширину входного тензора и выполняет поэлементное умножение со значениями в этом месте и их суммирование для вывода единственного значения в этом месте. В зависимости от размера блока канала фильтра и того, как он перемещается вокруг входного тензора, одно поле будет выводить тензор формы (new_height, new_width, 1). Применяя N каналов фильтра, выходной тензор будет иметь форму (new_height, new width, N). Таким образом, это составляет единый слой CNN.

Модели классификации изображений и обнаружения объектов обычно имеют большое количество уровней CNN (более 50 в MobilenetV2¹), и каждый уровень CNN может иметь количество каналов фильтрации от 10 до более 100. В результате многие параметры (веса) являются хранятся в модели, что делает модель сложной и дорогостоящей с точки зрения вычислений. Это побуждает нас искать способы уменьшить размер модели, не влияя на ее возможности.

Здесь мы обсуждаем сокращение обученной модели путем удаления параметров, которые считаются ненужными для модели. Метод обрезки основан на статье Хао Ли и др. «Фильтры обрезки для эффективных ConvNets».

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

Применяя эту идею, мы просматриваем слои CNN в модели, проверяем, какие каналы фильтров имеют веса, очень близкие к нулю, и полностью удаляем эти каналы из слоя. После этого мы соответствующим образом повторно подключаем отдельные слои CNN (используя слой, где необходимо дополнить тензор ввода / вывода нулями, чтобы получить правильную форму), чтобы гарантировать, что информация все еще может течь через модель должным образом. В результате получилась гораздо более компактная модель, которая по-прежнему может выполнять классификацию изображений / обнаружение объектов, для которых она была обучена.

Мы реализовали идею обрезки в версии SSDnet³, чтобы увидеть, как обрезка влияет на возможности модели (представленной mAP, показателем точности обнаружения объектов). Как показано на рисунке 3, мы можем удалить до 76% каналов CNN, и модель по-прежнему остается достаточно устойчивой, чтобы работать с оставшимися 24% каналов и сохранять исходный уровень точности. Это также говорит нам о том, что для эффективной работы модели принципиально требуется около 24% каналов, и любое дальнейшее сокращение серьезно влияет на ее возможности. Код доступен онлайн.

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

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

[1] Марк и др., MobileNetV2: инвертированные остатки и линейные узкие места, 2018 г., CVPR 2018

[2] Хао Ли и др., Фильтры сокращения для эффективных ConvNet, 2016 г., ICLR 2017

[3] Вэй Лю и др., SSD: Single Shot MultiBox Detector, 2016 г., ECCV 2016