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

Краткий обзор нейронных сетей: вот серия статей с очень понятными пояснениями.

CNN, как и нейронные сети, состоят из нейронов с обучаемыми весами и смещениями. Каждый нейрон получает несколько входов, принимает по ним взвешенную сумму, передает ее через функцию активации и отвечает выходом. Вся сеть имеет функцию потерь, и все советы и приемы, которые мы разработали для нейронных сетей, по-прежнему применимы к CNN. Довольно просто, правда?

Итак, чем сверточные нейронные сети отличаются от нейронных сетей?

CNN работают в объемах!

Что мы имеем в виду под этим?

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

Есть и другие отличия, о которых мы поговорим позже.

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

Свертка

Мы берем фильтр 5 * 5 * 3, перемещаем его по всему изображению и попутно берем скалярное произведение между фильтром и фрагментами входного изображения.

Для каждого взятого скалярного произведения результатом является скаляр.

Итак, что происходит, когда мы сворачиваем все изображение с помощью фильтра?

Я предоставляю вам выяснить, как появляется число «28». (Подсказка: существует 28 * 28 уникальных позиций, в которые можно поместить фильтр на изображение)

А теперь вернемся к CNN

Сверточный слой является основным строительным блоком сверточной нейронной сети.

Сверточный слой состоит из набора независимых фильтров (6 в показанном примере). Каждый фильтр независимо сворачивается с изображением, и мы получаем 6 карт характеристик формы 28 * 28 * 1.

Предположим, у нас есть несколько последовательных сверточных слоев. Что тогда происходит?

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

Я покажу вам пример обученной сети.

Взгляните на фильтры в самом первом слое (это наши фильтры 5 * 5 * 3). Благодаря обратному распространению они настроились на то, чтобы стать сгустками разноцветных кусочков и краев. По мере того, как мы углубляемся в другие слои свертки, фильтры производят точечные произведения для входных данных предыдущих слоев свертки. Таким образом, они берут более мелкие цветные части или края и делают из них более крупные.

Взгляните на изображение 4 и представьте сетку 28 * 28 * 1 как сетку из 28 * 28 нейронов. Для конкретной карты признаков (результат, полученный при свертке изображения с определенным фильтром, называется картой признаков), каждый нейрон подключен только к небольшому фрагменту входного изображения, и все нейроны имеют одинаковые веса соединений. Итак, снова возвращаемся к различиям между CNN и нейронной сетью.

У CNN есть несколько концепций, называемых совместным использованием параметров и локальным подключением

Совместное использование параметров - это разделение весов всеми нейронами в определенной карте функций.

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

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

Я не буду здесь говорить о концепции нулевого заполнения, поскольку идея состоит в том, чтобы сделать ее простой. Желающие могут прочитать об этом отдельно!

Объединение слоев

Уровень объединения - еще один строительный блок CNN.

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

Наиболее распространенный подход, используемый в пуле, - это максимальный пул.

Типичная архитектура CNN

Мы уже обсуждали сверточные слои (обозначенные как CONV) и объединяющие слои (обозначенные как POOL).

RELU - это просто нелинейность, которая применяется аналогично нейронным сетям.

FC - это полностью связанный слой нейронов в конце CNN. Нейроны в полностью подключенном слое имеют полные соединения со всеми активациями на предыдущем слое, как это видно в обычных нейронных сетях, и работают аналогичным образом.

Надеюсь, теперь вы понимаете архитектуру CNN. У этой архитектуры много вариаций, но, как я упоминал ранее, основная концепция остается той же. Если у вас есть сомнения / отзывы, просьба прокомментировать.

Твоя любовь подпитывает меня! Итак, Если вам понравилась эта статья, нажмите маленькую зеленую кнопку в виде сердечка!

Следите за мной, чтобы читать больше статей о TechnologyMadeEasy!

И если вы хотите, чтобы ваши друзья тоже это прочитали, нажмите "Поделиться"!

Ссылки: http://cs231n.github.io/convolutional-networks/#overview