В этой статье я расскажу, что такое CNN, зачем она нужна, и подробно рассмотрю, как она работает.

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

Если сверточная нейронная сеть создает одномерный массив для другой нейронной сети, почему бы нам просто не сгладить изображение, а затем передать сведенное изображение в нейронную сеть? Здесь сведение представляет собой процесс преобразования матрицы в одномерный массив путем добавления каждой строки к предыдущей строке. Например, ниже приведены строки матрицы 3 x 3. Строка 1 = [a,b,c], Строка 2 = [d,e,f] и Строка 3 = [g,h,i]. Если мы сгладим эту матрицу, мы получим одномерный массив [a,b,c,d,e,f,g,h,i]. Так почему бы нам не сделать это с изображением, а затем передать его в нейронную сеть? Плоское изображение теряет корреляцию между разными пикселями. Например, если бы у нас был массив длиной 16, то исходная форма матрицы, из которой он был получен, была бы неоднозначной. Это была матрица 4 х 4? Как насчет матрицы 2 x 8 или 8 x 2? Мы бы не знали. Вот почему существуют сверточные нейронные сети — для создания функций на основе изображения таким образом, чтобы мы не теряли всей корреляции между отдельными значениями.

Как же работает сверточная нейронная сеть?

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

  1. Свертка. Здесь CNN сопоставляет каждую матрицу RGB с соответствующим фильтром. Размер фильтра будет варьироваться в зависимости от CNN, и из-за заполнения нулями нет необходимости, чтобы размер фильтров идеально работал с размером изображения. Математика для этого шага довольно проста и выполняется следующим образом: сначала мы берем внутреннее произведение нашего фильтра и значения, соответствующиепервым пяти элементам в первых 5 строках. Это возвращает скалярное значение, которое мы затем помещаем в первый элемент первой строки карты объектов, которую мы создаем. Затем мы добавляем размер шага к значению i в индексе каждого из наших элементов, вычисляем другой внутренний продукт и помещаем его скалярное значение в карту объектов. Мы продолжаем делать это как в направлении i, так и в направлении j, пока не отобразим всю матрицу. Когда мы закончим, размер нашей карты объектов обычно будет равен размеру нашего ввода минус размер фильтра плюс один. Пример: [92–5+1,92+5–1] = [88,88]
  2. Функция активации ReLU. Можно много говорить о функциях активации, но на высоком уровне она служит здесь для устранения отрицательных значений на карте функций. Вам может быть интересно, как на карте признаков могут быть отрицательные значения — это из-за примененного нами фильтра. Фильтры не всегда будут иметь положительные значения в каждом элементе, что может привести к отрицательному решению для нашего внутреннего продукта. Функция активации ReLU избавляется от этих отрицательных значений.
  3. Максимальное объединение.При максимальном объединении мы смотрим на первые m элементы в первыхn строках для максимального значения в этом сегменте нашего карту функций и вернуть ее скалярное значение. Итак, для приведенного выше примера мы рассмотрим первые 2 элемента первых 2 строк. При этом мы обычно будем использовать размер шага один, просматривая всю карту объектов. Когда этот шаг завершен, размер нашей карты объектов после максимального объединения обычно будет равен исходному размеру, деленному на размер фильтра максимального объединения. Конечно, это не 'типичный' способ вычисления, однако его можно представить следующим образом: [88 / m, 88 / n] ИЛИ [88 / 2, 88 / 2] =[ 44,44].
  4. Обратное распространение. Чтобы сохранить высокий уровень, я не буду вдаваться в подробности обратного распространения и предполагаю, что вы знакомы с этой концепцией. На этом этапе каждый фильтр для каждой отдельной матрицы, то есть фильтр для красных значений, фильтр для синих значений и фильтр для зеленых значений, будет подвергнут обратному распространению, и новый фильтр будет готов для применения к следующему слою. При выполнении обратного распространения на фильтрах они сохраняют свою форму.

После того, как CNN закончила повторяющиеся слои, она объединяет результаты слоев в одномерный массив. Затем одномерный массив вводится в другую нейронную сеть.