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

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

Компоненты CNN

Сверточный слой
Сверточный слой является ядром CNN и может рассматриваться как фильтр, выполняющий операции над входным изображением. Сверточный слой применяет этот фильтр к каждому пикселю изображения, создавая выходные данные с меньшими размерами, чем исходные входные данные. Например, если у вас есть изображение 32 x 32 x 3 и к нему применен фильтр 3 x 3 x 8 (это означает, что каждый пиксель будет обработан восемью разными фильтрами), то новый результат будет 16 x 16 x 8.
Функция активации
Функция активации применяется после каждого сверточного слоя, чтобы определить, должен ли какой-либо данный нейрон срабатывать, то есть выдавать выходное значение больше нуля. На жаргоне глубокого обучения этот процесс называется «активацией» нейронов, поэтому они могут вносить свои значения в прогнозирование новых точек данных на основе того, что они узнали из предыдущих, посредством обратного распространения во времени (BPTT). Функции активации обычно представляют собой сигмовидные кривые, которые возвращают значения от 0 до 1; однако существуют и другие функции, такие как tanh()! Эти функции позволяют нам контролировать, насколько быстро наши нейронные сети учатся на опыте, не подгоняя их под шум в обучающих наборах данных».

Приложения CNN

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

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

Как обучить CNN

Обучение CNN — это повторяющийся процесс, который включает в себя несколько шагов:

  • Данные для обучения. Первым шагом в обучении CNN является предоставление ей данных. Это можно сделать, подав сетевые изображения и соответствующие им метки, или это можно сделать, предоставив набор примеров, на которых модель научится предсказывать выходные данные для новых изображений.
  • Функция потери: после того, как вы предоставили CNN некоторые обучающие данные, вам нужно определить, что именно он должен делать с этой информацией. Другими словами, как мы можем измерить, насколько хорошо наша модель справляется со своими задачами? Здесь можно использовать множество различных функций потерь в зависимости от того, какой результат мы ищем (например, классификация или регрессия). Например, если бы мы хотели, чтобы наша сеть классифицировала рукописные цифры по категориям, таким как 0–9 или AF, тогда одной популярной функцией потерь была бы перекрестная энтропия, потому что она измеряет, насколько близко каждое предсказанное значение подходит к своей истинной метке, не наказывая нас слишком сильно, если мы получаем иногда что-то не так (что случается часто). Другим распространенным выбором является точность, которая просто подсчитывает все правильные прогнозы, полностью игнорируя неправильные!
  • Оптимизатор: еще раз, в зависимости от типа проблемы, которую мы пытаемся решить, могут также потребоваться некоторые дополнительные гиперпараметры, такие как график снижения скорости обучения (насколько быстро наша скорость обучения уменьшается с течением времени?) или весовые коэффициенты импульса, которые контролируют степень воздействия. предыдущие обновления градиента связаны с будущими».

Архитектуры CNN

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

  • AlexNet — это была первая успешная архитектура для классификации изображений с использованием глубокого обучения. Он состоит из 5 сверточных слоев, 3 полносвязных слоев и 2 слоев объединения (максимальное объединение). Последний слой — это softmax, который выводит вероятности для каждого класса в нашем наборе данных.

Сверточные нейронные сети в реальном мире

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

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

Заключение

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