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

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

Основная концепция и мотивация CNN

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

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

Выражение «пространственная иерархия пикселей» относится к концепции, согласно которой расположение и взаимосвязь пикселей в изображении имеют значение и что это расположение помогает придать смысл изображению.

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

На самом низком уровне группы пикселей могут образовывать края, текстуры и градиенты. Вы можете думать о них как о «строительных блоках» изображений. На следующем уровне эти края и текстуры объединяются, образуя простые формы или части объектов, например угол окна или колесо автомобиля. Двигаясь дальше, эти формы объединяются, образуя опознаваемые части более крупных объектов, таких как окно дома или кузов автомобиля. На самом высоком уровне эти части объединяются, чтобы сформировать цельный объект или сцену, например, полный дом или автомобиль.

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

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

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

В контексте сверточных нейронных сетей (CNN) «фильтр», также называемый «ядром», представляет собой небольшую матрицу весов, которая используется в операции свертки. Эта операция является фундаментальным компонентом CNN и именно благодаря ей сеть получила свое название.

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

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

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

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

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

Сравнение нейронных сетей с прямой связью и CNN

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

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

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

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

Давайте разобьем эти концепции на более удобоваримые части:

  1. Векторный ввод по сравнению с необработанным пиксельным вводом. Обычные нейронные сети, такие как нейронные сети с прямой связью, нуждаются в одном входном векторе чисел. Это означает, что если мы имеем дело с изображениями, нам нужно сгладить изображение (превратить его из 2D-массива пикселей в 1D-массив) перед тем, как передать его в сеть. Это может привести к потере пространственной информации (например, связи между пикселями, расположенными близко друг к другу). С другой стороны, сверточные нейронные сети (CNN) могут принимать целые изображения в качестве входных данных, сохраняя пространственные отношения в изображении. Это означает, что они могут анализировать изображение как есть, без необходимости его предварительного сглаживания, что позволяет модели напрямую учиться на необработанных пиксельных данных изображения.
  2. Совместное использование параметров. CNN используют один и тот же набор весов (известный как фильтры или ядра) для всего изображения в процессе свертки. Это называется совместным использованием параметров. Это не только помогает уменьшить объем памяти, необходимый для хранения весов, но также позволяет CNN распознавать конкретную функцию (например, край или форму) в любом месте изображения, что делает их более эффективными при обработке больших изображений.
  3. Обработка больших изображений. В то время как обычные нейронные сети с прямой связью увеличиваются в размерах с увеличением размера изображения, CNN справляются с этим изящно. Размер CNN не зависит от размера изображения, потому что он использует сверточное ядро ​​фиксированного размера, которое скользит по изображению. Итак, независимо от того, анализируете ли вы маленькое изображение или большое, структура вашей CNN остается неизменной.
  4. Иерархический дизайн. Структура CNN часто включает слои операций свертки, за которыми следуют операции объединения (также называемые субдискретизацией) и заканчивающиеся полностью связанными слоями. Эта структура помогает CNN изучать шаблоны на разных уровнях абстракции. Например, ранние слои могут распознавать простые шаблоны, такие как края и текстуры, в то время как более глубокие слои могут распознавать более сложные шаблоны, такие как формы или объекты. Этот иерархический способ обучения на основе данных похож на то, как, как мы полагаем, работает зрительная кора человека, и он очень эффективен при работе со сложными и разнообразными данными, такими как изображения.