Исследованы сети VGG

Это абстрактное резюме нейронных сетей, занявших 2-е место в конкурсе ILSVRC-2014.

Принцип конструкции

меньший размер ядра, большая глубина.

в то время как в известных сетях, таких как AlexNet (победитель ILSVRC-2012) и ZFNet (победитель ILSVRC-2013), использовались ядра больших размеров (11X11 с шагом 4 и 7X7 с шагом 2 соответственно), авторы VGGNet взяли другой подход, они использовали свертки 3x3 по всей сети (с шагом 1).

Как это вообще возможно ? Свертка с большим ядром может быть разложена на несколько сверток с меньшими ядрами для достижения того же конечного результата. Таким образом, свертка 5X5 может быть разложена на две свертки 3x3 (без пространственного объединения между ними), а свертка 7X7 - на 3 свертки 3x3.

Такое разложение дает два преимущества: меньшее количество используемых параметров и большую нелинейность.

  1. Легко видеть, что если мы используем одну свертку 5X5, количество параметров на фильтр будет 25 * α (где альфа - количество входных каналов), тогда как для двух объединенных сверток 3X3 общее количество параметров составляет (9 + 9 ) 18 * α. Предполагая, что входные и выходные каналы одинаковые:

процент уменьшения параметров = 1 00 - (18/25) * 100 = 28%

2.) Таким образом, мы добавили два слоя нелинейного выпрямления вместо одного. Что делает функцию принятия решения более дискриминантной.

Конфигурация архитектуры

Ниже приведены некоторые пункты, записанные для сетевых конфигураций от A до E.

  1. сеть A имеет все свертки 3x3 и максимальные уровни объединения 2X2 для субдискретизации соответствующих промежуточных входов. За этой полностью сверточной магистралью следуют два полностью связанных слоя, каждый из которых состоит из 4096 нейронов. Наконец, 4096-мерный вектор признаков отправляется на слой классификации, состоящий из 1000 нейронов, представляющих классы набора данных ImageNet. Остальные сети от B до E являются производными от A.
  2. Вторая сеть - это A-LRN, которая использует нормализацию локального ответа.
  3. Сеть B добавляет два дополнительных уровня 3x3-conv к сети A.
  4. Сеть C разработана специально для включения концепции «Сеть в сети». Каждая дополнительная свертка 1X1, добавленная в нее, действует как полностью связная сеть, свертывая по входному пространству с шагом 1. Это не влияет на воспринимающие поля сверточных слоев, а просто пытается увеличить нелинейность ( линейное преобразование поканальных векторов с последующим ReLU).
  5. Сеть D заменяет свертки 1X1 C на свертки 3X3, чтобы определить, важна ли пространственная информация, помимо большей нелинейности.
  6. Сеть E - это более глубокая версия сети D (точнее, еще 3 уровня).

Обучение

Стратегия инициализации

Существует веская причина, по которой сети от B до E являются производными от сети A. На момент обучения этих сетей инициализация Xavier и He еще не существовала. Таким образом, оптимальным способом обучения глубокой нейронной сети было бы использование весов из ее более мелкой версии (обученной на том же наборе данных) для инициализации. А остальные дополнительные слои инициализируются случайным образом.

Сеть A достаточно мелкая, чтобы ее можно было обучать со случайной инициализацией. Его веса были выбраны из нормального распределения с нулевым центрированным средним и 0,01 дисперсией. Сначала сеть A обучается на наборе данных ImageNet, а затем остальные сети от B до E используют эти веса. Первые 4 сверточных слоя и два последних полностью связанных слоя сетей от B до E берут свои веса из сети A, если быть точным. Везде, где присутствуют дополнительные слои, они инициализируются случайным образом.

Параметры обучения

размер пакета: 256
оптимизатор: SGD с импульсом 0,9
спад веса: 5e-4
начальная скорость обучения: 1e-2
планирование скорости обучения: уменьшите скорость обучения на коэффициент 10 всякий раз, когда потери при проверке выходят на плато.
коэффициент выпадения: устанавливается на 0,5 для первых двух полностью связанных слоев.
общее количество эпох, затраченных на обучение: 74 (370 тыс. итераций).

Повышение устойчивости сетей к масштабированию

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

Для этого авторы использовали два подхода: одномасштабное и многомасштабное обучение. В первом подходе они обучили сети на посевах (224X224) из изображений фиксированного размера (S = 256 или S = ​​384), а во втором подходе размер изображения выбирался случайным образом из нормального распределения (S ~ [256, 512]) а затем был извлечен урожай (224X224). Второй подход считается инвариантным к масштабированию сети.

Тестирование

Поскольку на этапе обучения мы вводили кадры изображения в нашу сеть, довольно интуитивно понятно кормить несколько культур из одного и того же изображения, усреднять вероятности классификации и рассматривать их как окончательные оценки класса. Кроме того, масштаб изображения также можно изменять при извлечении урожая, чтобы сделать прогнозы более надежными (многомасштабными). Но подождите, эта задача трудоемка в вычислительном отношении и медленная только для одного изображения. Что, если каким-то образом мы могли бы передать в сеть все изображение сразу? Это почти то же самое, что отправить сразу все возможные кадры из изображения в сеть.

Полностью подключен к полностью сверточному

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

Ниже приведены преобразования веса для каждого слоя FC в сверточный слой:

Вес уровня 1 FC: (7X7X512) X (4096) → эквивалентный сверточный слой: (7X7) размер ядра, 512 входных каналов и 4096 выходных каналов.

Вес уровня 2 FC: (4096) X (4096) → эквивалентный сверточный слой: (1X1) размер ядра, 4096 входных каналов и 4096 выходных каналов.

вес последнего FC-слоя (классификатора): (4096) X (1000) → эквивалентный сверточный слой: (1X1) размер ядра, 4096 входных каналов и 1000 выходных каналов.

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

Результаты

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