Подробное объяснение сверточной нейронной сети с глубоким обучением

глубокое обучение

1. Введение — Обнаружение границ

filter/kernel: извлечение локальных особенностей исходного изображения.

filter/kernel = weights

Как спроектировать фильтр = обучение через нейронную сеть

пример:

Этот фильтр извлекает границу исходного изображения и называет это [обнаружение границы].

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

Во-вторых, основная концепция CNN

1.заполнение:

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

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

Вышеупомянутый метод заполнения «сохранения размера после свертки неизменным» называется «Тот же» метод, а метод заполнения, который не проходит через гашение, называется «Действительным» методом. Это гиперпараметр, который нам нужно установить при использовании некоторых фреймворков.

2. размер шага

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

3. объединение в пул

Опрос: извлеките основную часть графа свертки и уменьшите количество параметров, чтобы предотвратить переоснащение модели. максимальный опрос/средний опрос

4. Свертка многоканальных (каналов) изображений

Цветные изображения обычно представляют собой три канала RGB (канал), поэтому входные данные обычно имеют три измерения: (длина, ширина, канал). Например, изображение RGB 28×28 имеет размерность (28, 28, 3).

В предыдущем введении входное изображение было 2-мерным (8,8), фильтр — (3,3), а выход — также 2-мерным (6,6).

Если входное изображение трехмерное (то есть добавляется дополнительный канал), например (8,8,3), то в это время размерность нашего фильтра станет (3,3,3), а егоПоследнее измерение должно совпадать с размером входного канала..Свертка в это время представляет собой суммирование всех элементов трех каналов, соответствующих умножению, который раньше был суммой 9 произведений, а теперь является суммой 27 произведений. следовательно,Размеры на выходе не меняются. Еще (6,6).

Однако в целом будемОдновременная свертка с несколькими фильтрами, например, если мы используем 4 фильтра одновременно, тоРазмер вывода станет (6,6,4).

Входное изображение на рисунке (8, 8, 3), фильтров 4, размер (3, 3, 3),В результате получается (6,6,4).

На самом деле, если мы посмотрим на CNN, используя нотацию нейронной сети, которую мы изучили ранее,

  • Наше входное изображение — это X, shape=(8,8,3);
  • 4 фильтра на самом деле являются параметрами первого слоя нейронной сети W1, форма = (3,3,3,4), это 4 означает, что есть 4 фильтра;
  • Наш вывод Z1, shape=(6,6,4);
  • На самом деле позже должна быть функция активации, такая как relu, после активации Z1 становится A1, shape=(6,6,4);

Итак, на предыдущем рисунке я добавил функцию активации и пометил соответствующую часть символами, вот так:

3. Структура CNN

1. Сверточный слой (convolutional layer — CONV)

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

2. Слой пула (слой пула -- POOL)

Здесь нет параметров, которые мы могли бы изучить, потому что все параметры здесь устанавливаются нами, либо Maxpooling, либо Averagepooling. Гиперпараметры, которые необходимо указать, включая максимальное или среднее значение, размер окна и размер шага. Обычно мы больше используем Maxpooling, и вообще берем фильтр размером (2,2) и размером шага 2. Таким образом, после объединения длина и ширина ввода сократятся в 2 раза, а каналы останутся без изменений.

3. Fully Connected layer (уровень полного подключения — FC)

В этом слое каждый блок соединен с каждым блоком в предыдущем слое, поэтому он называется «полным соединением». Указываемые здесь гиперпараметры — это не что иное, как количество нейронов и функция активации.

Структурная схема CNN:

Его структура может быть представлена ​​следующим образом: X-->CONV(relu)-->MAXPOOL-->CONV(relu)-->FC(relu)-->FC(softmax)-->Y.

  • Примечание. После нескольких сверток и объединения мы, наконец,Плоский», то есть сжать данные (высота, ширина, канал) в одномерный массив длиной высота × ширина × канал, а затем соединить его со слоем FC, после чего он ничем не отличается от обычного нейронная сеть.
  • Примечание: Как видно из рисунка, с углублением сети нашаИзображения становятся меньше, но каналы становятся больше. Представление на рисунке состоит в том, что площадь прямоугольного параллелепипеда, обращенного к нам, становится все меньше и меньше, а длина все больше и больше.

4. Сверточная нейронная сеть против традиционной нейронной сети

традиционная нейронная сеть, фактически несколько слоев FC накладываются друг на друга.CNN, есть не что иное, как изменение FC на CONV и POOL, то есть изменение традиционного слоя, состоящего из нейронов, на слой, состоящий из фильтров.

Зачем так менять? какая польза? В частности, есть два момента:

1. Механизм совместного использования параметров (обмен параметрами)

Количество параметров значительно уменьшилось!

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

\color{red}{参数共享机制好处:}

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

2. Разреженность связей

Из операции свертки видно, что любая единица в выходном изображении связана только с частью входного изображения:

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

Именно благодаря двум вышеупомянутым преимуществам CNN превосходит традиционные NN и открывает новую эру нейронных сетей.