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

Сгруппированные свертки использовались в Alexnet, чтобы глубокая нейронная сеть могла быть обучена на менее мощных графических процессорах с меньшим объемом оперативной памяти, доступной в то время. Чтобы понять важность сгруппированных извилин, давайте представим мир без них и проблемы, с которыми мы можем столкнуться:

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

Мы можем начать понимать, насколько важны сгруппированные свертки для обучения глубоких сетей. На следующем изображении показано, как понимать сгруппированные свертки в архитектуре ResNext:

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

  • С помощью сгруппированных сверток мы можем создавать сети любой ширины. Возьмите один модульный блок группы фильтров и воспроизведите их.
  • Теперь каждый фильтр выполняет свертку только на некоторых картах характеристик, полученных из фильтров ядра в его группе фильтров, мы резко сокращаем количество вычислений для получения выходных карт характеристик. Конечно, вы можете возразить, что мы копируем группу фильтров, что приводит к большему количеству вычислений. Но, чтобы держать вещи в перспективе, если мы возьмем все фильтры ядра в сгруппированные свертки и не будем использовать концепцию сгруппированных сверток, количество вычислений будет расти экспоненциально.
  • Мы можем распараллелить обучение двумя способами:
  • - Параллелизм данных: мы разбиваем набор данных на фрагменты, а затем обучаемся на каждом фрагменте. Интуитивно каждый фрагмент можно понимать как мини-серию, используемую в мини-партии градиентного спуска. Чем меньше фрагменты, тем больше параллелизма данных, которые мы можем выжать из них. Однако меньшие фрагменты также означают, что для обучения мы делаем больше похоже на стохастический, чем на пакетный градиентный спуск. Это приведет к более медленной, а иногда и худшей сходимости.
  • - Параллелизм модели: здесь мы пытаемся распараллелить модель таким образом, чтобы мы могли принять как можно больше данных. Сгруппированные свертки обеспечивают эффективный параллелизм моделей настолько, что Alexnet был обучен на графических процессорах с оперативной памятью всего 3 ГБ.

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

Эта статья была вдохновлена ​​другой фантастической статьей Яни Иоанну под названием Учебное пособие по группам фильтров (групповая свертка), в которой представлен более подробный анализ.