За последние пару недель я изучал различные архитектуры машинного обучения и то, как они используются в разных ситуациях. CNN был моим первым препятствием, чтобы понять, что происходит. Когда вы просматриваете тему, вам в лицо бросается тонна жаргона, весь процесс может разочаровать и даже заставить вас сдаться.

Мое первое знакомство с CNN было примерно таким:

Подождите, так как это снова работает ??

Основы нейронных сетей

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

В ANN (искусственной нейронной сети) есть три типа слоев:

  1. Входной слой
  2. Скрытый слой
  3. Выходной слой

Входной слой

Входной слой — это место, где данные вводятся в нейронную сеть. Он рассматривается как пассивный уровень, поскольку он ничего не делает с самими данными.

Скрытый слой

Скрытые слои — это слои, где он принимает взвешенную сумму и проходит через функцию активации. Функция активации работает, когда выход функции превышает определенный порог, тогда нейрон становится «активным».

Выходной слой

Этот слой является последним слоем ИНС, и именно он выводит окончательные вычисления.

Сверточные нейронные сети

Как я упоминал ранее, CNN — это тип глубокой сетевой архитектуры для визуальных образов. В CNN есть много компонентов, поэтому давайте рассмотрим их.

Сверточный слой

Слой после входного слоя является сверточным слоем. Цель сверточного слоя состоит в том, чтобы извлечь некоторые признаки из самого изображения. На рисунке ниже матрица 3x3 (которая является ядром) проходит по изображению 5x5 и выводит карту признаков. Каждый раз, когда ядро ​​перемещается, это называется шагом. Ядро само вычисляет скалярное произведение каждый раз, когда оно завершает шаг, и это значение появляется на свернутом признаке.

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

Заполнение

Первое, что определяет размер карты объектов, — это заполнение. Заполняя изображение, вы добавляете 0 вокруг границы изображения, чтобы карта объектов продолжала уклоняться, если используется слишком много ядер. Заполнение используется для того, чтобы вывод не уменьшался слишком быстро.

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

Шаги

Второй элемент, определяющий размер карты признаков, — шаг. Шаги определяют размер вывода после прохождения ядра. Чем больше шаг, тем меньше результат. Чем меньше точечных продуктов формируется, тем меньше выход.

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

Следующий слой, который мы рассмотрим, — это слой пула. Целью слоя объединения является пространственное объединение (также известное как подвыборка), и оно уменьшает размерность карт объектов, сохраняя при этом основную информацию. Целью объединения является

  • Уменьшите входное измерение, чтобы сделать его управляемым
  • Избавление от мелких искажений изображения
  • Снижает необходимую вычислительную мощность, а также контролирует переоснащение.

Таким образом, один из методов объединения известен как максимальное объединение.

Максимальное объединение

Берет наибольшее число в каждом разделе и использует только это число. Размер «раздела» можно выбрать вручную.

Полностью подключенный уровень (FC)

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

Заключение

Надеюсь, прочитав эту статью, вы узнали немного больше о CNN и о том, как она работает. Если вы хотите узнать больше об этом, вот пара ссылок:

Как работает алгоритм CNN (Convolutional Neural Networks — Deep Learning)…

Учебник по сверточной нейронной сети (CNN) | Как работает CNN…

Если вам понравилась эта статья, не стесняйтесь 👏👏 внизу и

  • Следите за мной на Средних
  • Напишите мне на [email protected], если вы хотите поговорить о чем-нибудь, связанном с машинным обучением, наукой о данных или просто поздороваться!