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