Об архитектуре сверточных нейронных сетей - учебник

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

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

В сердце

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

Особенности обучения

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

  1. Свертка - применяйте фильтры для создания карт объектов.
  2. Нелинейное исправление - удаление отрицательных значений
  3. Пул - операция понижения дискретизации на сгенерированных картах признаков.

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

  1. Элемент выстраивается в линию над сегментом изображения.
  2. Каждый пиксель изображения умножается на соответствующий пиксель функции.
  3. Затем полученные продукты складываются и делятся на общее количество пикселей в элементе.

Примечание. Фильтр - это прямоугольная матрица, которая будет перемещаться по входному изображению шаг за шагом и может иметь любой размер. Для нашего примера представьте квадратный фильтр 3x3 пикселя - общее количество пикселей входного изображения, которое фильтр может видеть в любой момент, равно 9, но фильтр будет перемещаться вокруг входного изображения, пока не увидит каждый участок 3x3 пикселя. изображения.

Свертка

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

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

Сверточные нейронные сети включают многие из этих сверточных слоев, однако сверточные слои - только один из инструментов, используемых в CNN.

Нелинейное исправление

После создания каждой карты признаков (путем фильтрации входного изображения с помощью свертки) дальнейший метод обработки заключается в применении нелинейности локально к каждому значению свернутого пикселя. Наиболее распространенный метод применения нелинейности - это выпрямленная функция линейной активации или ReLU, которая сдвигает любые отрицательные значения в карте функций на ноль, не изменяя никаких значений, которые находятся в диапазоне от 0 до 1.

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

Объединение

Дополнительным методом обработки после свертки является объединение - метод уменьшения размерности слоев свертки . Мы берем наши сверточные слои в качестве входных данных в этом процессе и снова создаем фильтры (обычно 2x2 или 3x3), которые перемещаются вокруг нашего сверточного слоя с шагами (обычно 2). Из каждого раздела, к которому мы переходим, мы фиксируем одно значение, чтобы создать новый объединенный слой с меньшим разрешением, чем слой свертки, на который мы ссылаемся. Распространенные формы объединения включают максимальное объединение, среднее объединение и минимальное объединение. Результатом является слой, представляющий наши входные данные, с аналогичным рисунком и уменьшенным разрешением.

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

Иерархия функций посредством глубокого стекирования

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

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

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

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

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

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

Ресурсы и дополнительная литература

Орелиен Жерон, Практическое машинное обучение с помощью Scikit-Learn, Keras и TensorFlow, 2-е издание [книга] (oreilly.com)

Брэндон Рорер, Как работают сверточные нейронные сети - YouTube

Александр Амини, MIT 6.S191 (2020): сверточные нейронные сети - YouTube

deeplizard, объяснение сверточных нейронных сетей (CNN) - deeplizard

3blue1brown, Но что такое нейронная сеть? | Глубокое обучение, глава 1 - YouTube

Дафна Корнелез, Интуитивное руководство по сверточным нейронным сетям | FreeCodeCamp

Стэнфорд, Сверточные нейронные сети CS231n для визуального распознавания