Выбрано из Medium Бхаратом Раджем, составлено Heart of the Machine.
В этой статье кратко представлены основные члены семейства Inception, включая Inception v1, Inception v2 и Inception v3, Inception v4 и Inception-ResNet. Их вычислительная эффективность и эффективность параметров являются одними из лучших среди всех сверточных архитектур, и, согласно CS231n, Inception V4 в основном является текущей топ-1 правильной моделью для задачи классификации изображений ImageNet.
Сеть Inception является важной вехой в истории классификаторов CNN. До создания большинство популярных CNN просто накладывали все больше и больше сверточных слоев, делая сеть все глубже и глубже, надеясь получить лучшую производительность.
Например, первая AlexNet, получившая широкое внимание, существенно расширяет возможности LeNet и применяет некоторые методы, такие как ReLU и Dropout. AlexNet имеет 5 сверточных слоев и 3 слоя max-pooling, которые можно разделить на две одинаковые ветви выше и ниже, и эти две ветви могут обмениваться информацией друг с другом на третьем сверточном слое и полносвязном слое. Еще одна отличная сеть, предложенная в том же году, что и Inception, — это VGG-Net, которая имеет меньшее ядро свертки и более глубокие слои, чем AlexNet.
Производительность обобщения VGG-Net очень хорошая, и она часто используется для извлечения признаков изображения, обнаружения целей, создания блоков-кандидатов и т. д. Самая большая проблема с VGG — это количество параметров, VGG-19 — это архитектура сверточной сети с наибольшим количеством параметров. Эта проблема также находится в центре внимания GoogLeNet, которая впервые предложила структуру Inception, которая не использует полносвязную сеть, такую как VGG-Net, поэтому количество параметров очень мало.
Самая большая особенность GoogLeNet — использование модуля Inception, цель которого — спроектировать сеть с отличной локальной топологией, то есть параллельно выполнять несколько операций свертки или объединения входного изображения и сшивать все выходные результаты. в одну Очень глубокие карты функций. Поскольку различные операции свертки и объединения, такие как 1*1, 3*3 или 5*5, могут получить различную информацию о входном изображении, параллельная обработка этих операций и объединение всех результатов приведет к лучшему представлению изображения.
С другой стороны, начальные сети сложны (требуют большой инженерной работы). Он использует множество приемов для повышения производительности, как с точки зрения скорости, так и точности. Его непрерывная эволюция привела к появлению нескольких версий сети Inception. Общие версии:
- Inception v1
- Начало v2 и Начало v3
- Начало v4 и Начало-ResNet
Каждая версия представляет собой итеративную эволюцию предыдущей версии. Понимание обновления сети Inception может помочь нам создавать собственные классификаторы, оптимизированные для скорости и точности. Кроме того, исходя из ваших существующих данных, возможно, более низкая версия работает лучше.
Inception v1
Это первая версия сети Inception. Давайте проанализируем, какие проблемы он может решить и как.
В статье «Погружаемся глубже с помощью сверток» автор предложил глубокую сверточную нейронную сеть Inception, которая на тот момент достигла наилучшей производительности классификации и обнаружения в ILSVRC14. Главной особенностью этой архитектуры является более эффективное использование вычислительных ресурсов внутри сети, что достигается за счет тщательно проработанного дизайна, позволяющего увеличить глубину и ширину сети при сохранении неизменного вычислительного бюджета. Для оптимизации качества архитектурные решения основаны на принципе Хебба и многомасштабной обработке. Автор представил модель, использующую эту архитектуру, в ILSVRC14, GoogLeNet, 22-уровневой глубокой сети, качество которой оценивалось в областях классификации и обнаружения.
- Тема: Углубление с извилинами
- Ссылка на бумагу:АР Вест V.org/PDF/1409.48…
проблема:
- Размер выступающих частей на изображении сильно различается. Например, изображение собаки может быть любым из следующих. Площадь, занимаемая собакой, на каждом изображении разная.
- Из-за огромной разницы в расположении информации трудно выбрать подходящий размер ядра свертки для операции свертки. Изображения с более глобальным распределением информации предпочитают более крупные ядра свертки, в то время как изображения с более локальным распределением информации предпочитают меньшие ядра свертки.
- Очень глубокие сети более склонны к переоснащению. Передача обновлений градиента во всю сеть затруднена.
- Простое наложение больших сверточных слоев требует значительных вычислительных ресурсов.
решение:
Почему бы не запускать фильтры с несколькими размерами на одном уровне? Сеть по существу станет немного «шире», а не «глубже». Поэтому автор разработал модуль Inception.
На изображении ниже показан «оригинальный» начальный модуль. Выполняет операцию свертки на входе с 3-мя фильтрами разного размера (1x1, 3x3, 5x5), дополнительно выполняет max pooling. Выходы всех подуровней окончательно объединяются и передаются следующему начальному модулю.
Как упоминалось ранее, глубокие нейронные сети требуют больших вычислительных ресурсов. Чтобы снизить вычислительные затраты, авторы добавляют дополнительный сверточный слой 1x1 перед сверточными слоями 3x3 и 5x5, чтобы ограничить количество входных каналов. Хотя добавление дополнительной операции свертки может показаться нелогичным, свертка 1x1 намного дешевле, чем свертка 5x5, а уменьшение количества входных каналов также помогает снизить вычислительные затраты. Однако важно отметить, что свертка 1x1 происходит после слоя максимального пула, а не до него.
GoogLeNet (Inception v1) можно построить с помощью модуля Inception, реализующего уменьшение размерности, и его архитектура показана на следующем рисунке:
GoogLeNet имеет 9 линейно сложенных модулей Inception. Он имеет 22 слоя (27 слоев, включая объединение). Модель использует глобальное среднее объединение в последнем начальном блоке.
Излишне говорить, что это глубокий классификатор. Как и все глубокие сети, он страдает от проблемы исчезающего градиента.
Чтобы предотвратить процесс «исчезновения» градиента в средней части сети, автор ввел два вспомогательных классификатора (фиолетовые прямоугольники на рисунке выше). Они выполняют операцию softmax на выходах двух начальных модулей, а затем вычисляют вспомогательные потери для тех же меток. Полная потеря представляет собой взвешенную сумму вспомогательной потери и истинной потери. Значение веса, используемое в этой статье для каждой вспомогательной потери, равно 0,3.
# The total loss used by the inception net during training.
total_loss = real_loss + 0.3 * aux_loss_1 + 0.3 * aux_loss_2
Вспомогательная потеря используется только для обучения и не используется во время логического вывода.
Inception v2
Inception v2 и Inception v3 взяты из одной и той же статьи «Переосмысление начальной архитектуры для компьютерного зрения», и авторы предлагают ряд исправлений, повышающих точность и снижающих вычислительную сложность.
В этой статье авторы показывают, что очень глубокие сверточные сети, которые широко используются в компьютерном зрении с 2014 года, добились значительных улучшений в различных тестах. Увеличение размера модели и вычислительных затрат может быстро улучшить качество модели в большинстве задач при условии наличия достаточного количества размеченных данных. В этой статье авторы активно изучают способы расширения сети, стремясь максимально эффективно использовать дополнительные вычисления с помощью соответствующих факторизованных сверток с агрессивной регуляризацией. Они продемонстрировали превосходную производительность модели на проверочном наборе ILSVRC Classification Task Challenge 2012. Используя модель с 5 миллиардами операций умножения-накопления на процесс вывода, авторы получили оценку одного кадра 21,2% лучших-1 и 5,6. % топ-1 5 ошибок, а общие параметры модели менее 2,5 млн.
- Диссертация: Переосмысление исходной архитектуры для компьютерного зрения
- Адрес бумаги:АР Вест V.org/PDF/1512.00…
Следующее впервые представляет Inception V2.
проблема:
- Уменьшите репрезентативное узкое место функций. Интуитивно понятно, что нейронные сети могут работать лучше, когда свертки не меняют радикально входное измерение. Слишком сильное уменьшение размерности может привести к потере информации, также известной как «репрезентативное узкое место».
- С лучшими методами факторизации свертка может быть более эффективной в вычислительной сложности.
решение:
- Свертка 5×5 разбивается на две операции свертки 3×3 для повышения скорости вычислений. Хотя это немного противоречит здравому смыслу, свертка 5×5 требует в 2,78 раза больше вычислительных ресурсов, чем свертка 3×3. Таким образом, объединение двух сверток 3×3 фактически улучшит производительность, как показано на следующем рисунке:
- Кроме того, автор разлагает размер ядра свертки n*n на две свертки 1×n и n×1. Например, свертка 3x3 эквивалентна сначала выполнению свертки 1x3, а затем свертки 3x1. Они также обнаружили, что этот подход был на 33% дешевле, чем одна свертка 3×3, как показано на рисунке ниже:
Банк фильтров в модуле расширен (т. е. шире, а не глубже) для устранения узких мест представления. Если модуль не расширяется по ширине, а становится глубже, размерность слишком сильно уменьшится, что приведет к потере информации. Как показано ниже:
Первые три принципа используются для построения трех различных типов начальных модулей (здесь мы называем их модулями A, B, C в порядке введения, а названия «A, B, C» здесь используются для ясности, а не для них). официальное имя). Схема выглядит так:
Inception v3
проблема:
- Авторы отмечают, что вспомогательный классификатор не вносит большого вклада ближе к концу процесса обучения, когда точность близка к насыщению. Авторы утверждают, что функцией вспомогательных классификаторов является регуляризация, особенно если они имеют операции BatchNorm или Dropout.
- Можно ли улучшить Inception v2 без кардинального изменения модулей, еще предстоит выяснить.
решение:
Inception Net v3 включает в себя все обновления, упомянутые ранее в Inception v2, а также использует:
- оптимизатор RMSProp;
- Факторизованная свертка 7x7;
- Вспомогательный классификатор использует BatchNorm;
- Сглаживание меток (термин регуляризации, добавленный к формуле потерь, предназначенный для предотвращения чрезмерной уверенности сети в отношении класса, т. Е. Предотвращения переобучения).
Inception v4
Inception v4 и Inception-ResNet представлены в той же статье «Inception-v4, Inception-ResNet и влияние остаточных соединений на обучение». Для наглядности разделим введение на две части.
В документе исследователи показывают, что архитектура Inception может обеспечить высокую производительность при низких вычислительных затратах. Внедрение остаточных соединений в традиционную сетевую архитектуру позволило достичь наилучших текущих результатов в вызове ILSVRC 2015 года, и результаты были аналогичны последней версии сети Inception-v3 на тот момент. Это заставляет задуматься, каков будет эффект от объединения архитектуры Inception и остаточных соединений. В этой статье исследователи явно экспериментально демонстрируют, что включение остаточных связей может значительно ускорить начальное обучение. Есть также некоторые свидетельства того, что остаточные начальные сети немного превосходят начальные сети без остаточных подключений при аналогичных затратах. Исследователи также демонстрируют упрощенные архитектуры различных новых остаточных и неостаточных начальных сетей. Эти варианты значительно улучшают производительность распознавания одиночного кадра в задаче классификации ILSVRC2012. Далее авторы показывают, как правильное масштабирование активации стабилизирует процесс обучения очень широких остаточных начальных сетей. Используя модельный ансамбль из трех остаточных значений и одного Inception v4, авторы достигли 3,08% коэффициента ошибок в пятерке лучших на тестовом наборе ImageNet Classification Challenge.
- Бумага: Inception-v4, Inception-ResNet и влияние остаточных соединений на обучение
- Адрес бумаги:АР Вест V.org/PDF/1602.07…
проблема:
- Сделайте модули более последовательными. Авторы также отмечают, что некоторые модули имеют ненужную сложность. Это позволяет нам повысить производительность за счет добавления более согласованных модулей.
решение:
Стержень Inception v4 был изменен. Основа здесь относится к начальному набору операций, выполненных до того, как был введен начальный блок.
- У них есть три основных модуля Inception, которые называются A, B и C (в отличие от Inception v2, эти модули действительно называются A, B и C). Они очень похожи на вариант Inception v2 (или v3).
- Inception v4 представила специальные «блоки сокращения», которые использовались для изменения ширины и высоты сетки. Более ранние версии явно не использовали блоки сокращения, но реализовывали их функциональность.
Начало-ResNet v1 и v2
Вдохновленные превосходной производительностью ResNet, мы предлагаем гибридный начальный модуль. Inception ResNet имеет две подверсии: v1 и v2. Прежде чем мы проанализируем его характерные черты, давайте взглянем на небольшие различия между двумя подрывными версиями.
- Вычислительная стоимость Inception-ResNet v1 близка к стоимости Inception v3.
- Вычислительная стоимость Inception-ResNetv2 близка к стоимости Inception v4.
- У них разные основы, как показано в разделе Inception v4.
- Обе подверсии имеют одинаковый модуль A, B, C и сокращенную блочную структуру. Единственное отличие заключается в настройках гиперпараметров. В этой части мы сосредоточимся на структуре и обратимся к тем же настройкам гиперпараметров из статьи (изображение для Inception-ResNet v1).
проблема:
- Ввести остаточные соединения, которые добавляют выход операции свертки начального модуля к входу.
решение:
- Чтобы операция остаточного сложения работала, вход и выход после свертки должны иметь одинаковые размерности. Поэтому мы используем свертку 1x1, чтобы соответствовать глубине после начальной свертки (глубина увеличивается после свертки).
- Операция объединения основного начального модуля заменяется остаточными соединениями. Однако вы все равно можете найти эти операции в сокращенных блоках. Блок сокращения A такой же, как блок сокращения в Inception v4.
(Слева направо) Блок уменьшения A (уменьшение размеров с 35x35 до 17x17) и Блок уменьшения B (уменьшение размеров с 17x17 до 8x8). Здесь упоминаются те же настройки гиперпараметров (V, I, K) из статьи. (Источник изображения:АР Вест V.org/PDF/1602.07…)
- Если количество ядер свертки превышает 1000, более глубокие остаточные единицы сетевой архитектуры вызовут сбой сети. Поэтому для повышения стабильности авторы масштабируют значения остаточной активации по шкале от 0,1 до 0,3.
Значение активации масштабируется на константу, чтобы предотвратить сбои сети. (Источник изображения:АР Вест V.org/PDF/1602.07…)
- В исходной статье не использовалась пакетная нормализация после суммирования для обучения модели на одном графическом процессоре (подгонка всей модели к одному графическому процессору).
- Исследование показало, что модель Inception-ResNet может обеспечить более высокую точность за меньшее количество эпох.
- Полная сетевая архитектура Inception v4 и Inception-ResNet показана на следующем рисунке:
Верхняя часть рисунка — архитектура Inception v4. Нижняя часть рисунка — архитектура Inception-ResNet. (Источник изображения:АР Вест V.org/PDF/1602.07…)
Оригинальный адрес:к data science.com/ah-simple-so…