Введение
Искусственный интеллект (ИИ) за прошедшие годы значительно вырос и в будущем будет только развиваться. Эта технология сокращает разрыв между возможностями человека и машины. Энтузиасты и исследователи искусственного интеллекта постоянно работают над различными аспектами искусственного интеллекта, чтобы исследовать новые возможности. Одной из таких областей является компьютерное зрение.
Искусственный интеллект позволяет машинам воспринимать мир так, как это делают люди, и использовать собранные знания для выполнения различных задач, таких как анализ и классификация изображений, а также распознавание изображений и видео. Системы рекомендаций, воссоздание средств массовой информации и обработка естественного языка. Компьютерное зрение в машинном обучении и глубоком обучении демонстрирует большие успехи, в основном в одном конкретном алгоритме – сверточной нейронной сети в машинном обучении или алгоритме CNN.
В этом блоге мы подробно обсудим алгоритм CNN, его архитектуру и работу.
Что такое сверточная нейронная сеть?
Сверточная нейронная сеть (CNN) – это тип архитектуры глубокой нейронной сети, применяемый для анализа визуальных образов. Он используется в компьютерном зрении, которое является важной областью искусственного интеллекта и позволяет машинам и компьютерам понимать и интерпретировать визуальные данные или изображения. В машинном обучении искусственные нейронные сети известны своей превосходной производительностью. Они используются в разных наборах данных, таких как текст, изображения и аудио. Мы используем разные типы нейронных сетей для выполнения разных задач. Например, рекуррентные нейронные сети (RNN) используются для предсказания последовательностей слов, а CNN используются для классификации изображений.
В математике свертка – это операция, выполняемая над двумя функциями и создающая третью функцию, которая объясняет, как одна форма изменяется другой. Мы не углубляемся в математику, чтобы понять CNN в нейронных сетях. Сверточные нейронные сети в основном уменьшают размер изображений, поэтому их легче обрабатывать без потери их характеристик, которые важны для хороших прогнозов.
Архитектура и слои Сверточных Нейронных Сетей
Архитектура сверточной нейронной сети (CNN) специально разработана для задач, связанных с изображениями и пространственными данными. Вот обзор ключевых компонентов и уровней, составляющих типичную архитектуру CNN.:
- Входной слой:
Входной слой получает необработанные данные, которые обычно представляют собой изображение в виде сетки значений пикселей. Размеры входного слоя соответствуют размерам входного изображения.
- Сверточные слои:
Сверточные слои являются сердцем CNNs. Они состоят из множества фильтров (также называемых ядрами), которые скользят или сворачиваются по входному изображению для обнаружения таких объектов, как края и текстуры.
Каждый фильтр создает карту объектов, и для захвата различных объектов в различных масштабах используется несколько фильтров.
Сверточные слои изучают эти представления объектов посредством обучения.
- Слой функции активации (ReLU):
После каждой операции свертки функция активации выпрямленной линейной единицы (ReLU) применяется поэлементно, чтобы придать сети нелинейность.
ReLU помогает сети усваивать сложные шаблоны и ускоряет конвергенцию.
- Уровни объединения (подвыборки):
Слои объединения уменьшают пространственные размеры карт объектов, сохраняя при этом важную информацию. Распространенные методы объединения включают максимальное объединение и среднее объединение.
Объединение в пул помогает снизить вычислительную нагрузку, делает сеть более устойчивой к изменениям входных данных и помогает контролировать переоснащение.
- Полностью соединенные (плотные) Слои:
Полностью связанные уровни – это традиционные уровни нейронной сети, где каждый нейрон связан с каждым нейроном предыдущего уровня.
Эти слои выполняют высокоуровневое извлечение и классификацию объектов. Они учатся комбинировать низкоуровневые объекты, обнаруженные сверточными слоями.
Конечный полностью подключенный уровень обычно выдает выходные данные сети, часто с активацией softmax для задач классификации.
- Выравнивающий слой:
Перед подключением к полносвязным слоям карты объектов сглаживаются в одномерный вектор. Это делается для соответствия входной форме полносвязных слоев.
- Выпадающий слой (опционально):
Отсев – это метод регуляризации, применяемый к полностью связанным слоям для предотвращения переобучения. Он случайным образом удаляет часть нейронов во время каждой итерации обучения.
- Выходной слой:
Выходной уровень создает окончательные прогнозы сети. Количество нейронов в этом слое зависит от конкретной задачи (например, бинарная классификация, многоклассовая классификация, регрессия).
Функция активации в выходном слое зависит от задачи, например softmax для классификации или linear для регрессии.
- Функция потерь:
Выбор функции потерь зависит от задачи. Для классификации общие функции потерь включают кросс-энтропию, в то время как для регрессии используется среднеквадратичная ошибка.
- Алгоритм оптимизации:
CNN используют алгоритмы оптимизации, такие как stochastic gradient descent (SGD), Adam или RMSProp, чтобы минимизировать функцию потерь и корректировать веса сети во время обучения.
- Обратное распространение:
Обратное распространение используется для вычисления градиентов и обновления весов сетевых уровней во время обучения, позволяя сети извлекать уроки из обучающих данных.
- Несколько Сложенных слоев:
Архитектуры CNN часто состоят из нескольких многоуровневых уровней свертки, активации и объединения. Глубина сети помогает улавливать иерархические функции.
Как работают сверточные слои в CNN?
Давайте подробнее разберемся в работе сверточной нейронной сети.
Сверточные нейронные сети, также известные как Convets, представляют собой нейронные сети, которые совместно используют параметры. Предположим, что существует кубоид с длиной, шириной и высотой.
Теперь, допустим, вы берете небольшой фрагмент изображения и запускаете на нем небольшую нейронную сеть, известную как ядро, или фильтр с K выходами и представляете их вертикально. Когда вы проведете нейронной сетью по изображению, вы получите другое изображение с другой шириной, высотой и глубиной.
Вместо каналов R, G и B у вас больше каналов, но с меньшей шириной и высотой. Это называется сверткой. Если размер участка и изображения одинаковы, это обычная нейронная сеть. Небольшой участок приводит к уменьшению веса.
Вот краткое объяснение математики, лежащей в основе слоев сверточной нейронной сети, и всего процесса свертки.
- Слои представляют собой набор доступных для изучения фильтров с небольшими размерами ширины, высоты и глубины, аналогичными размеру входного объема.
- Во время прямого прохода мы перемещаем каждый фильтр по всему входному объему по одному шагу за раз, где каждый шаг называется шагом. Мы можем вычислить скалярное произведение между весами фильтров и участком из входного объема.
- Перемещая фильтры, мы получим 2D-вывод для каждого фильтра и сложим их в стопку. Мы получим объем вывода с глубиной, равной количеству фильтров. Сеть изучит фильтры.
Что такое объединяющий слой?
Слой объединения, аналогичный сверточному слою, заботится об уменьшении пространственного размера свернутого объекта. Это снижает вычислительную мощность, необходимую для обработки данных, за счет уменьшения размеров.
Объединение бывает двух типов – среднее объединение и максимальное объединение. Уровень объединения используется для уменьшения вычислительной мощности при обработке данных в сверточной нейронной сети. Следовательно, при максимальном объединении мы находим максимальное значение пикселя из области изображения, покрытой фильтром или ядром. Максимальное объединение также работает как средство подавления шума, устраняя любые шумные активации и устраняя шум при одновременном уменьшении габаритов.
Принимая во внимание, что объединение средних значений дает среднее значение для части изображения, покрытой фильтрами. Оно отвечает за уменьшение размеров в качестве механизма подавления шума. Это ясно указывает на то, что максимальное объединение обеспечивает лучшую производительность, чем среднее объединение.
Преимущества сверточных нейронных сетей
- Он предлагает комплексное обучение без ручного расширения функций.
- Он может обнаруживать закономерности и особенности в видео, изображениях и аудиосигналах.
- Он может легко обрабатывать огромные объемы данных и достигать высокой точности.
- Он устойчив к ротационной, трансляционной и масштабирующей инвариантности.
Недостатки сверточных нейронных сетей
- Требуется огромное количество помеченных данных.
- Обучение требует больших вычислительных затрат.
- Ограниченная интерпретируемость и трудное понимание того, что узнала сеть.
- Если данных недостаточно, это может привести к переоснащению.