Классические сети

Лене-5

Первый CNN, построенный в 1980-х годах.

Цель: распознавать рукописные цифры для изображения в оттенках серого.

Ввод: 32 * 32 * 1

Исследователи использовали средний пул в 1980 году. Сейчас люди используют максимальный пул. Тогда исследователи не использовали отступы.

В современной версии используется классификационный слой softmax. В то время они использовали какой-то другой классификационный слой.

Современные сети почти в 1000 раз больше / глубже. В то время исследователи использовали сигмоид / тангенс для нелинейности.

Бумагу труднее читать. Только читать раздел 2.

AlexNet

Ввод: 227 * 227 * 3 (изображение RGB)

Использует Softmax, ReLU.

Оказал огромное влияние на убеждение CV-сообщества в использовании глубокого обучения для CV.

Сеть ВГГ-16

Упрощенная архитектура NN с глубиной 16 слоев. Сосредоточьтесь на слоях Conv с фильтрами 3x3 с шагом 1 и всегда используйте одинаковые отступы. Всегда делайте свой максимальный уровень пула размером 2x2 и шагом 2. 138M параметров и большим даже по современным стандартам, но простым, поскольку архитектура единообразна. Также существует увеличенная версия сети VGG-19.

ResNet (остаточная сеть): 152-слойная сеть NN

Пропускать соединения: введено в архитектуру ResNet, позволяет обучать глубокую нейронную сеть.

Остаточный блок

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

Почему Реснет работает?

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

Реснет с изображениями

Типичная сеть пулов Conv + для изображений со слоем softmax FC в конце. С помощью Resnet добавьте пропускаемые соединения, а затем, возможно, потребуется добавить матрицу Ws, чтобы добавить слой пропуска, когда это не та же свертка.

Свертки 1x1, также известные как сеть в сети

Под влиянием сети Inception. Когда это полезно?

Допустим, у нас есть 28x28x192. Если мы хотим уменьшить высоту и ширину, мы можем использовать слой объединения. Если мы хотим уменьшить количество каналов, мы можем использовать 32 фильтра, каждый размером 1x1x192. На выходе будет 28 * 28 * 32.

Начальная нейронная сеть

При разработке слоя для ConvNet вам нужно будет выбрать тип и размер фильтра. Хотим ли мы фильтр 1 на 3, или 3 на 3, или 5 на 5, или мы хотим слой свертки или слой пула? Что делает начальная сеть, так это говорит: давайте сделаем их все. Это усложняет архитектуру сети, но при этом работает замечательно.

Здесь мы создаем начальный узел с сверточным слоем 1x1, 3x3, 5x5 и максимальным уровнем пула.

Проблема заключается в вычислительных затратах. Чтобы применить тот же переход 5x5 с 32 фильтрами, нам нужно будет выполнить 120M умножений. Мы можем оптимизировать это, используя вместо этого свертку 1x1, и это снизит вычислительные затраты на 1/10.

Используя 16 фильтров, каждый размером 1x1x192, мы можем сначала получить промежуточный слой размером 28x28x16, а затем 32 фильтра размером 5x5x16 каждый. Это приводит к общей стоимости вычислений 12,4 млн.

Начальная сеть - это в основном начальный модуль, который многократно повторяется по всей сети. Модуль Inception принимает входные данные от предыдущего уровня активации и применяет несколько уровней свертки / пула в одном узле, используя преимущества свертки 1x1 для снижения вычислительных затрат.

Интересный факт: название сети начального уровня основано на сюжете фильма.

Как на практике начать использовать CNN, учитывая сложность их создания. В основном за счет использования существующих сетей и построения на их основе. Давайте посмотрим, как это сделать, здесь.