Переосмысление исходной архитектуры компьютерного зрения

1. Введение

Rethinking the Inception Architecture for Computer Vision была одной из самых сложных исследовательских работ, которые я читал. Язык статьи очень сложен, как и ее содержание. Также было трудно найти подробную разбивку бумаги в Интернете. Итак, цель этой статьи — подробно разобрать исследовательскую работу Inception-v3.

2. Общие принципы проектирования

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

  • Мы должны избегать репрезентативных узких мест, особенно в начале сети. Репрезентативные узкие места возникают, когда происходит резкое резкое уменьшение размерности входных данных, что приводит к огромному количеству весов. Таким образом, чтобы избежать узких мест в представлении, мы должны постепенно уменьшать входные размеры, прежде чем достичь окончательного представления.
  • Представления более высокой размерности легче обрабатывать локально в сети. Моделирование сжатых данных затруднено. Более высокая размерность помогает фиксировать сложные и незапутанные функции. Если у нас более низкое измерение, чтобы зафиксировать ту же сложность, нам нужно иметь больше запутанных функций.
  • Пространственное агрегирование может быть выполнено по вложениям более низкого измерения без большой или какой-либо потери в репрезентативной мощности. Это означает, что мы можем уменьшить размер, используя свертки 1x1 перед пространственной агрегацией (т.е. 3x3) без потери большого количества информации.
  • Мы должны сбалансировать ширину и глубину сети. Оптимальной производительности сети можно достичь, уравновешивая количество фильтров на этапе и глубину сети. Если у нас большая ширина, чтобы захватить сложные функции на изображении, у нас должна быть более глубокая сеть. Эта же концепция позже использовалась при разработке архитектуры EfficientNets.

3. Факторизация сверток с большим размером фильтра

В документе предполагается, что первоначальные преимущества сети GoogLeNet связаны с их щедрым использованием уменьшения размерности. Здесь размерное сокращение учитывает использование сверток 1x1 перед свертками 3x3 и 5x5. Это уменьшило количество параметров на этапе и, следовательно, позволило увеличить глубину сети. Точно так же мы увидим несколько методов, которые могут помочь еще больше уменьшить размеры.

3.1. Разложение на более мелкие свертки

Большие фильтры, такие как 7x7 и 5x5, очень дороги в вычислениях. Например, свертка 5x5 с n фильтрами по сетке в 25/9 = 2,78 раза дороже в вычислительном отношении, чем свертка 3x3 с тем же количеством фильтров. Однако фильтр 5x5 может фиксировать зависимости между сигналами между активациями единиц, расположенных дальше на более ранних уровнях, что очень полезно для фиксации пространственной инвариантности. Итак, можем ли мы создать свертки 5x5, используя свертки 3x3? Да, свертка двух фильтров 3x3 может дать такой же выходной размер, как и свертка одного фильтра 5x5. Таким образом, мы получаем чистое (9+9)/25-кратное сокращение вычислений, что приводит к относительному выигрышу в 28% за счет этой факторизации.

Тем не менее, эта установка поднимает два общих вопроса: приводит ли эта замена к какой-либо потере выразительности? Если наша главная цель состоит в том, чтобы разложить на множители линейную часть вычислений, не будет ли это предлагать оставить линейные активации в первом слое? Согласно второму вопросу, если мы применяем ReLU после конв. 5x5, то мы должны применять ReLU после двух конв. 3x3, сохраняя линейную активацию после первого конв. 3x3. Они протестировали обе модели и обнаружили, что активация ReLU работает лучше, чем линейная активация.

3.2. Пространственная факторизация в асимметричные свертки

Возникает главный вопрос: должны ли мы в дальнейшем сводить свертки 3x3 к сверткам 2x2? В документе говорится, что сокращение сверток 3x3 до сверток 2x2 приводит к экономии вычислений на 11%, в то время как сокращение сверток 3x3 до сверток 3x1 и сверток 1x3 приводит к экономии вычислений на 33%. Они обнаружили, что использование этой факторизации плохо работает на ранних слоях, но дает очень хорошие результаты на средних размерах сетки (на картах объектов m × m, где m находится в диапазоне от 12 до 20). На этом уровне очень хороших результатов можно добиться, используя свертки 1 × 7, за которыми следуют свертки 7 × 1.

4. Полезность вспомогательных классификаторов

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

5. Эффективное уменьшение размера сетки

Чтобы эффективно выполнять максимальное или среднее объединение, они представляют еще один вариант, который еще больше снижает вычислительные затраты. Мы можем использовать два параллельных блока шага 2: P и C. P — это слой объединения (среднее или максимальное объединение) активации, оба они являются шагом 2, банки фильтров которых объединены.

6. Сглаживание меток

В статье предлагается механизм упорядочения слоя классификатора путем оценки маргинального эффекта отбрасывания меток во время обучения. Для каждого обучающего примера x наша модель вычисляет вероятность каждой метки k ∈ {1. . . К}: р(к|х). Мы используем слой активации softmax. Рассмотрим истинное распределение по меткам q(k|x) для этого обучающего примера, нормализованное так, что сумма q(k|x) по всем меткам равна 1. Итак, p(k|x) — это распределение вероятностей, предсказанное моделью а q(k|x) — истинное распределение. Обычно наша q(k|x) представляет собой дельта-функцию Дирака, где q(k|x) = S(k,y), т.е. когда k = y q(y|x) = 1, иначе q(k|x) = 0 Точная дельта Дирака не может быть достигнута с помощью p(k|x), но она может быть близка, если p(y|x) ›› p(k|x). Это вызывает две проблемы: во-первых, это может привести к переобучению: если модель учится присваивать полную вероятность метке достоверности для каждого обучающего примера, она не гарантирует обобщения. Во-вторых, это способствует увеличению различий между наибольшим логитом и всеми остальными, что снижает способность модели к адаптации. Интуитивно это происходит потому, что модель становится слишком уверенной в своих прогнозах. Чтобы решить эту проблему, они модифицировали наземное распределение правды.

Используется равномерное распределение e/K, не зависящее от примера x, где e — гиперпараметр, а K — количество меток. При обучении на данных ImageNet с K = 1000 классов в статье использовались u(k) = 1/1000 и e = 0,1.

7. Методика обучения

В статье была достигнута лучшая модель с использованием RMSProp с затуханием 0,9 и e = 1,0. Они использовали скорость обучения 0,045, затухая каждые две эпохи, используя экспоненциальную скорость 0,94. Кроме того, было обнаружено, что отсечение градиента с порогом 2,0 полезно для стабилизации обучения. Оценки модели выполняются с использованием скользящего среднего значения параметров, рассчитанных с течением времени.

8. Заключение

Inception-v3 смог добиться отличных результатов в тесте классификации ILSVRC 2012, не только превзойдя предыдущую версию Inception-v1, но и став передовым алгоритмом. На этом я завершаю разбивку исследовательской работы Rethinking the Inception Architecture for Computer Vision, в которой мы познакомились с факторизацией, пакетной нормализацией и сглаживанием меток.

9. Ссылки

[1]. Переосмысление начальной архитектуры для компьютерного зрения от Christian Szegedy, Vincent Vanhoucke, Sergey Ioffe, Jonathon Shlens, Zbigniew Wojna