Основы сверточной нейронной сети: что вам нужно знать

Опубликовано: 2024-09-10

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

Оглавление

  • Что такое CNN?
  • Как работают CNN
  • CNN против RNN и преобразователей
  • Приложения CNN
  • Преимущества
  • Недостатки

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

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

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

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

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

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

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

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

Работайте умнее с Grammarly
Партнер по написанию ИИ для всех, у кого есть работа

Как работают CNN

Давайте рассмотрим общую архитектуру CNN на примере определения числа (0–9) на изображении.

Прежде чем подавать изображение в модель, изображение необходимо преобразовать в числовое представление (или кодировку). Для черно-белых изображений каждому пикселю присваивается номер: 255, если оно полностью белое, и 0, если оно полностью черное (иногда нормализуется на 1 и 0). Для цветных изображений каждому пикселю присваивается три числа: одно показывает, сколько красного, зеленого и синего он содержит, известное как значение RGB. Таким образом, изображение размером 256×256 пикселей (65 536 пикселей) будет иметь 65 536 значений в черно-белой кодировке и 196 608 значений в цветовой кодировке.

Затем модель обрабатывает изображение через три типа слоев:

1 Сверточный слой:этот слой применяет фильтры к своим входным данным. Каждый фильтр представляет собой сетку чисел определенного размера (например, 3×3). Эта сетка накладывается на изображение, начиная с левого верхнего угла; будут использованы значения пикселей из строк 1–3 в столбцах 1–3. Эти значения пикселей умножаются на значения в фильтре, а затем суммируются. Затем эта сумма помещается в выходную сетку фильтра в строке 1, столбце 1. Затем фильтр сдвигается на один пиксель вправо и повторяет процесс до тех пор, пока не охватит все строки и столбцы изображения. Сдвигая по одному пикселю за раз, фильтр может найти объекты в любом месте изображения — это свойство известно как трансляционная инвариантность. Каждый фильтр создает свою собственную выходную сетку, которая затем отправляется на следующий слой.

2 Уровень объединения: этот слой суммирует информацию об объектах из слоя свертки. Сверточный слой возвращает выходные данные, превышающие входные данные (каждый фильтр возвращает карту объектов примерно того же размера, что и входные данные, и существует несколько фильтров). Слой объединения берет каждую карту объектов и применяет к ней еще одну сетку. Эта сетка принимает либо среднее, либо максимальное значения в ней и выводит их. Однако эта сетка не перемещается на один пиксель за раз; он перейдет к следующему фрагменту пикселей. Например, сетка объединения 3×3 сначала будет работать с пикселями в строках 1–3 и столбцах 1–3. Затем он останется в той же строке, но переместится в столбцы 4–6. После покрытия всех столбцов в первом наборе строк (1–3) он переместится к строкам 4–6 и займется этими столбцами. Это эффективно уменьшает количество строк и столбцов в выводе. Уровень объединения помогает снизить сложность, делает модель более устойчивой к шуму и небольшим изменениям, а также помогает модели сосредоточиться на наиболее важных функциях.

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

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

Архитектура сверточной нейронной сети (CNN)

Несколько дополнительных замечаний по процессу:

  • Каждый последующий сверточный слой находит функции более высокого уровня. Первый сверточный слой обнаруживает края, пятна или простые узоры. Следующий сверточный слой принимает в качестве входных данных объединенные выходные данные первого сверточного слоя, что позволяет ему обнаруживать композиции функций нижнего уровня, которые формируют функции более высокого уровня, такие как нос или глаз.
  • Модель требует обучения. Во время обучения изображение проходит через все слои (сначала со случайными весами), и формируются выходные данные. Разница между выходными данными и фактическим ответом используется для небольшой корректировки весов, что повышает вероятность того, что модель даст правильный ответ в будущем. Это делается с помощью градиентного спуска, при котором алгоритм обучения вычисляет, какой вклад каждый вес модели вносит в окончательный ответ (используя частные производные), и слегка перемещает его в направлении правильного ответа. Слой объединения не имеет весов, поэтому процесс обучения не влияет на него.
  • CNN могут работать только с изображениями того же размера, на которых они обучались. Если модель обучалась на изображениях размером 256×256 пикселей, то для любого изображения большего размера потребуется понижающая дискретизация, а для любого меньшего изображения потребуется повышающая дискретизация.

CNN против RNN и преобразователей

Сверточные нейронные сети часто упоминаются наряду с рекуррентными нейронными сетями (RNN) и преобразователями. Так чем же они отличаются?

CNN против RNN

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

CNN против трансформаторов

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

Приложения CNN

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

Классификация изображений

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

Распознавание речи

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

Сегментация изображений

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

Преимущества CNN

CNN широко используются в отрасли по нескольким причинам.

Высокая производительность изображения

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

Никакого ручного проектирования функций

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

Недостатки CNN

Конечно, есть компромиссы в использовании CNN.

Множество гиперпараметров

Обучение CNN включает в себя выбор множества гиперпараметров. Как и в любой нейронной сети, существуют гиперпараметры, такие как количество слоев, размер пакета и скорость обучения. Кроме того, для каждого фильтра требуется свой собственный набор гиперпараметров: размер фильтра (например, 3×3, 5×5) и шаг (количество пикселей, на которые необходимо перемещаться после каждого шага). Гиперпараметры нелегко настроить в процессе обучения. Вместо этого вам необходимо обучить несколько моделей с разными наборами гиперпараметров (например, набором A и набором B) и сравнить их производительность, чтобы определить лучший выбор.

Чувствительность к размеру ввода

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