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

Что такое сверточная нейронная сеть?

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

Почему Си-Эн-Эн? Почему бы не использовать простую нейронную сеть?

Чтобы ответить на этот вопрос, сначала нам нужно понять, как работает convNet.

Как работают сверточные нейронные сети?

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

Возьмем это изображение собаки. Как мы определяем, что это собака на изображении?

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

Итак, как мы можем заставить компьютер распознавать эти крошечные особенности? Мы используем концепцию фильтров. Мы передаем фильтр изображению, и этот фильтр перемещается по пикселям изображения и дает результат с обнаруженной функцией. Процесс перемещения этого фильтра по пикселям изображения известен как свертка или операция свертки, и это то, что «Свертка» представляет в CNN. Если вам интересно, как этот фильтр перемещается по изображению, взгляните на анимацию ниже, и вы поймете, как это работает.

Итак, возвращаясь к нашему вопросу, почему CNN вместо простых нейронных сетей? в чем проблема с полносвязными нейронными сетями?

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

Можете ли вы определить разницу между 1 и 2? без прав? Теперь посмотрите на изображения 3 и 4. 3-е — это обычное изображение собаки, а 4-е — обработанное изображение, где один глаз собаки заменен носом. Глядя на 2D- или 3D-форму, очень легко определить аномалии на изображениях, но в 1D-форме очень сложно идентифицировать аномалии на изображениях. Собака является собакой только тогда, когда глаза, уши, нос относительно присутствуют там, где они должны быть. CNN сохраняет пространственную ориентацию с помощью фильтров, принимает 2D- или 3D-ввод и работает над созданием объектов, которые не теряют пространственную ориентацию до тех пор, пока в этом нет необходимости.

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

Первое изображение имеет размер 32x32x3, поэтому если у нас есть один скрытый слой, содержащий всего 1000 нейронов, то количество параметров составляет около 3 миллионов. Второе изображение имеет размер 720X960X3, и с 1000 нейронами в скрытом слое количество параметров увеличивается примерно до 2 миллиардов, это будет кошмаром для любой компьютерной системы. Теперь представьте условие, при котором вам может понадобиться получить от 3 до 4 слоев в глубину, каждый из которых содержит 1000 нейронов. Эта проблема известна как взрыв параметров. CNN использует объединение для уменьшения размерности. Он использует локальное подключение вместо полного подключения.

Мы обсудим фильтры и объединение слоев в другой статье. А пока давайте посмотрим на базовую архитектуру CNN.

Архитектура Си-Эн-Эн

  • Входной слой — принимает входное изображение.
  • CNN — выполняет извлечение признаков.
  • Полностью подключенная нейронная сеть — объединяет функции, извлеченные CNN, для достижения результата.

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