Базовая архитектура CNN: объяснение 5 уровней сверточной нейронной сети
Опубликовано: 2020-12-07Оглавление
Введение
В последние несколько лет в ИТ-индустрии возник огромный спрос на когда-то определенный набор навыков, известный как глубокое обучение. Глубокое обучение — подмножество машинного обучения, состоящее из алгоритмов, вдохновленных функционированием человеческого мозга или нейронных сетей.
Эти структуры называются нейронными сетями. Он учит компьютер делать то, что естественно для человека. Глубокое обучение, существует несколько типов моделей, таких как искусственные нейронные сети (ANN), автоэнкодеры, рекуррентные нейронные сети (RNN) и обучение с подкреплением. Но была одна конкретная модель, которая внесла большой вклад в области компьютерного зрения и анализа изображений, а именно сверточные нейронные сети (CNN) или ConvNets.
CNN — это класс глубоких нейронных сетей, которые могут распознавать и классифицировать определенные функции изображений и широко используются для анализа визуальных изображений. Их приложения варьируются от распознавания изображений и видео, классификации изображений, анализа медицинских изображений, компьютерного зрения и обработки естественного языка.
Термин «свертка» в CNN обозначает математическую функцию свертки, которая представляет собой особый вид линейной операции, в которой две функции умножаются для получения третьей функции, которая выражает, как форма одной функции изменяется с помощью другой. Проще говоря, два изображения, которые могут быть представлены в виде матриц, перемножаются, чтобы получить результат, который используется для извлечения признаков из изображения.
Изучайте машинное обучение онлайн в лучших университетах мира — магистерские программы, программы последипломного образования для руководителей и продвинутые программы сертификации в области машинного обучения и искусственного интеллекта, чтобы ускорить свою карьеру.
Узнайте: введение в глубокое обучение и нейронные сети

Базовая архитектура
Архитектура CNN состоит из двух основных частей.
- Инструмент свертки, который разделяет и идентифицирует различные элементы изображения для анализа в процессе, называемом извлечением признаков.
- Полносвязный слой, который использует выходные данные процесса свертки и предсказывает класс изображения на основе признаков, извлеченных на предыдущих этапах.
Источник
Слои свертки
Существует три типа слоев, которые составляют CNN: сверточные слои, слои объединения и полносвязные (FC) слои. Когда эти слои сложены, будет сформирована архитектура CNN. В дополнение к этим трем слоям есть еще два важных параметра: слой отсева и функция активации, которые определены ниже.
1. Сверточный слой
Этот слой является первым слоем, который используется для извлечения различных функций из входных изображений. В этом слое выполняется математическая операция свертки между входным изображением и фильтром определенного размера MxM. При перемещении фильтра по входному изображению скалярное произведение берется между фильтром и частями входного изображения относительно размера фильтра (MxM).
Выходные данные называются картой объектов, которая дает нам информацию об изображении, такую как углы и края. Позже эта карта объектов передается другим слоям для изучения некоторых других особенностей входного изображения.
2. Слой объединения
В большинстве случаев за сверточным слоем следует объединяющий слой. Основная цель этого слоя — уменьшить размер свернутой карты объектов, чтобы снизить вычислительные затраты. Это выполняется за счет уменьшения связей между слоями и независимо работает на каждой карте объектов. В зависимости от используемого метода существует несколько типов операций объединения.
В Max Pooling самый большой элемент берется из карты объектов. Пул среднего значения вычисляет среднее значение элементов в разделе изображения предопределенного размера. Общая сумма элементов в предопределенном разделе вычисляется в Sum Pooling. Слой пула обычно служит мостом между сверточным слоем и уровнем FC.
Обязательно к прочтению: идеи проекта нейронной сети
3. Полностью связанный слой
Слой Fully Connected (FC) состоит из весов и смещений вместе с нейронами и используется для соединения нейронов между двумя разными слоями. Эти слои обычно размещаются перед выходным слоем и образуют несколько последних слоев архитектуры CNN.
При этом входное изображение из предыдущих слоев сглаживается и подается на слой FC. Затем сглаженный вектор подвергается еще нескольким слоям FC, где обычно выполняются операции с математическими функциями. На этом этапе начинается процесс классификации.
4. Отсев
Обычно, когда все функции связаны со слоем FC, это может привести к переобучению в наборе обучающих данных. Переобучение происходит, когда конкретная модель так хорошо работает с обучающими данными, что оказывает негативное влияние на производительность модели при использовании с новыми данными.
Чтобы преодолеть эту проблему, используется слой отсева, при котором несколько нейронов удаляются из нейронной сети в процессе обучения, что приводит к уменьшению размера модели. При прохождении отсева 0,3 30% узлов случайным образом выпадают из нейронной сети.
5. Функции активации
Наконец, одним из наиболее важных параметров модели CNN является функция активации. Они используются для изучения и аппроксимации любых непрерывных и сложных отношений между переменными сети. Проще говоря, он решает, какая информация модели должна передаваться в прямом направлении, а какая не должна передаваться в конце сети.

Это добавляет нелинейность в сеть. Существует несколько часто используемых функций активации, таких как ReLU, Softmax, tanH и сигмовидные функции. Каждая из этих функций имеет определенное применение. Для модели CNN с бинарной классификацией предпочтительны сигмовидные функции и функции softmax, а для многоклассовой классификации обычно используется softmax.
LeNet-5 Архитектура CNN
В 1998 году архитектура LeNet-5 была представлена в исследовательской работе Яна Лекуна, Леона Ботту, Йошуа Бенжио и Патрика Хаффнера под названием «Обучение на основе градиента, применяемое к распознаванию документов». Это одна из самых ранних и основных архитектур CNN.
Он состоит из 7 слоев. Первый слой состоит из входного изображения размером 32×32. Он свернут с 6 фильтрами размером 5×5, что дает размер 28x28x6. Второй слой представляет собой операцию объединения, которая фильтрует размер 2 × 2 и шаг 2. Следовательно, результирующий размер изображения будет 14x14x6.
Точно так же третий слой также включает в себя операцию свертки с 16 фильтрами размером 5×5, за которым следует четвертый объединяющий слой с аналогичным размером фильтра 2×2 и шагом 2. Таким образом, результирующий размер изображения будет уменьшен до 5x5x16.
После уменьшения размера изображения пятый слой представляет собой полносвязный сверточный слой со 120 фильтрами размером 5×5 каждый. В этом слое каждый из 120 блоков этого уровня будет соединен с 400 (5x5x16) блоками из предыдущих слоев. Шестой слой также является полносвязным слоем с 84 единицами.
Последний седьмой слой будет выходным слоем softmax с «n» возможными классами в зависимости от количества классов в наборе данных.
Источник
На приведенной выше диаграмме представлены 7 уровней архитектуры LeNet-5 CNN.
Ниже приведены снимки кода Python для построения архитектуры LeNet-5 CNN с использованием библиотеки keras и платформы TensorFlow.

В программировании на Python чаще всего используется тип модели Sequential. Это самый простой способ построить модель CNN в keras. Это позволяет нам строить модель слой за слоем. Функция add() используется для добавления слоев в модель. Как объяснялось выше, в архитектуре LeNet-5 есть две пары Convolution и Pooling, за которыми следует Flatten-слой, который обычно используется в качестве соединения между Convolution и Dense-слоями.
Плотные слои — это те, которые в основном используются для выходных слоев. Используемая активация - это «Softmax», которая дает вероятность для каждого класса, и в сумме они составляют 1. Модель сделает свой прогноз на основе класса с наибольшей вероятностью.
Сводная информация о модели отображается, как показано ниже.
Заключение
Следовательно, в этой статье мы поняли базовую структуру CNN, ее архитектуру и различные уровни, составляющие модель CNN. Кроме того, мы видели архитектурный пример очень известной и традиционной модели LeNet-5 с ее программой Python.
Если вам интересно узнать больше о курсах машинного обучения, ознакомьтесь с программой Executive PG IIIT-B и upGrad по машинному обучению и искусственному интеллекту , которая предназначена для работающих профессионалов и предлагает более 450 часов тщательного обучения, более 30 тематических исследований и заданий, Статус выпускника IIIT-B, более 5 практических практических проектов и помощь в трудоустройстве в ведущих фирмах.
Что такое функции активации в CNN?
Функция активации является одним из наиболее важных компонентов модели CNN. Они используются для изучения и аппроксимации любой формы связи сетевой переменной с переменной, которая является одновременно непрерывной и сложной. Проще говоря, он определяет, какая модельная информация должна передаваться в прямом направлении, а какая нет в конце сети. Это придает сети нелинейность. Функции ReLU, Softmax, tanH и Sigmoid являются одними из наиболее часто используемых функций активации. Все эти функции имеют различное применение. Для модели CNN с двумя классами предпочтительны сигмоидальные и softmax-функции, тогда как softmax обычно используется для многоклассовой классификации.
Каковы основные компоненты архитектуры сверточной нейронной сети?
Входной слой, выходной слой и несколько скрытых слоев составляют сверточные сети. Нейроны в слоях сверточной сети расположены в трех измерениях, в отличие от нейронов стандартной нейронной сети (размеры ширины, высоты и глубины). Это позволяет CNN преобразовывать трехмерный входной объем в выходной объем. Слои свертки, объединения, нормализации и полносвязные слои составляют скрытые слои. Несколько слоев преобразования используются в CNN для фильтрации входных объемов до более высоких уровней абстракции.
В чем преимущество стандартных архитектур CNN?
В то время как традиционные сетевые архитектуры состояли исключительно из сложенных сверточных слоев, новые архитектуры рассматривают новые и новаторские способы построения сверточных слоев для повышения эффективности обучения. Эти архитектуры предоставляют общие рекомендации по архитектуре для специалистов по машинному обучению, которые необходимо адаптировать для решения различных проблем компьютерного зрения. Эти архитектуры можно использовать в качестве экстракторов с широкими возможностями для классификации изображений, идентификации объектов, сегментации изображений и множества других сложных задач.