Продолжая изучать последний пост, мы рассмотрим следующие темы в этом посте:

  • Свертка по объему
  • Несколько фильтров одновременно
  • Один слой сверточной сети
  • Понимание изменения размеров

Я постарался как можно больше объяснить большинство тем с помощью иллюстраций. Если что-то непонятно, пожалуйста, напишите мне.

Приступим!

Свертка по объему

Не бойтесь читать «объем», это просто способ обозначить изображения с более чем одним каналом, то есть RGB или любыми другими каналами.

До сих пор у нас был только один канал, поэтому нас беспокоили только height и width изображения. Но с добавлением более одного канала нам нужно позаботиться об используемых фильтрах, так как они также должны охватывать свертку по всем каналам (здесь 3).
Итак, если размер изображения равен n x n x #channels, значит, фильтр, который был ранее f x f также теперь требовалось иметь размер f x f x #channels.

Интуитивно наши входные данные являются не более двумерными, а на самом деле трехмерными, если вы рассматриваете каналы и, следовательно, название объем.

Ниже приведен простой пример свертки по объему изображения, имеющего размер 6 x 6 x 3, где 3 обозначают 3 канала R, G и B. Точно так же фильтр имеет размер 3 x 3 x 3.

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

Несколько фильтров одновременно

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

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

В приведенном ниже примере рассматривается изображение 6 x 6 x 3, как указано выше, но мы используем 2 фильтра (для вертикального и горизонтального края) размера 3 x 3 x 3. Полученные изображения 4 x 4 каждое складываются вместе, чтобы получить выходной объем 4 x 4 x 2.

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

Здесь nc - количество каналов во входном изображении, а nf - количество используемых фильтров.

Один слой сверточной сети

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

Важно понимать, что, как и в любой другой нейронной сети, сверточная нейронная сеть также имеет входные данные x, которые здесь являются изображением, и веса модели, заданные фильтрами F1 и F2, то есть W. После свертки весов и входного изображения мы получаем взвешенный выход W * x, а затем добавляем смещение b.

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

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

Понимание изменения размеров

Теперь, когда у нас есть концептуальное понимание того, что происходит на одном слое, давайте сформулируем схему для любого данного слоя l сверточной сети.

После вычисления размеров отдельных компонентов окончательный размер n слоя l можно рассчитать с помощью:

Заключение

Мы начали этот пост с изучения свертки по объему, а затем продолжили обсуждение сразу с несколькими фильтрами. Легко понять, что объем здесь просто относится к трем цветовым каналам данных изображения. Обсуждение одного уровня сверточной сети очень важно для понимания всей сетевой архитектуры, поэтому убедитесь, что эти концепции (relu, функции активации) ясны. В последнем разделе говорилось о том, как мы можем оценить размер слоя нашей модели в соответствии с количеством отступов и шагов, используемых в свертке с фильтром.

В следующем посте я подробно объясню различные архитектуры CNN и оценю их уникальные особенности.

Первоначально опубликовано на сайте mandroid6.github.io 18 ноября 2017 г.

Https://twitter.com/mandroid_6

Ознакомьтесь с моими другими сообщениями о машинном обучении и глубоком обучении: https://medium.com/@razzormandar