skip connections что это

Понимание и кодирование ResNet в Керасе

Дата публикации Jan 4, 2019

skip connections что это. Смотреть фото skip connections что это. Смотреть картинку skip connections что это. Картинка про skip connections что это. Фото skip connections что это

Я узнал о кодировании ResNets отDeepLearning.AIкурс Эндрю Нг. Я очень рекомендую этот курс.

ResNet впервые представила концепцию пропуска соединения. На приведенной ниже схеме показано пропущенное соединение. Фигура слева объединяет слои свертки друг с другом один за другим. Справа мы по-прежнему укладываем слои свертки, как и раньше, но теперь мы также добавляем исходный ввод к выводу блока свертки. Это называется пропустить соединение

skip connections что это. Смотреть фото skip connections что это. Смотреть картинку skip connections что это. Картинка про skip connections что это. Фото skip connections что это

Это можно записать в виде двух строк кода:

skip connections что это. Смотреть фото skip connections что это. Смотреть картинку skip connections что это. Картинка про skip connections что это. Фото skip connections что это

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

skip connections что это. Смотреть фото skip connections что это. Смотреть картинку skip connections что это. Картинка про skip connections что это. Фото skip connections что это

Здесь важно отметить, что пропускаемое соединение применяется до активации RELU, как показано на диаграмме выше. Исследования показали, что это дает лучшие результаты.

Почему Skip Connections работает?

Это интересный вопрос. Я думаю, что здесь есть две причины, по которым пропускаются соединения:

Фактически, поскольку пропускаемые соединения ResNet используются во многих модельных архитектурах, таких какПолностью сверточная сеть (FCN)а такжеU-Net, Они используются для передачи информации с более ранних уровней в модели на более поздние уровни. В этих архитектурах они используются для передачи информации из слоев понижающей дискретизации в слои повышающей дискретизации.

Тестирование модели ResNet, которую мы создали

Блоки идентификации и свертки, закодированные вблокнотзатем объединяются для создания модели ResNet-50 с архитектурой, показанной ниже:

skip connections что это. Смотреть фото skip connections что это. Смотреть картинку skip connections что это. Картинка про skip connections что это. Фото skip connections что это

Модель ResNet-50 состоит из 5 этапов, каждый с блоком свертки и идентификации. Каждый сверточный блок имеет 3 сверточных слоя, и каждый идентификационный блок также имеет 3 сверточных слоя. ResNet-50 имеет более 23 миллионов обучаемых параметров.

Я проверил эту модель на наборе данных о знаках, который также включен в мой репозиторий Github. Этот набор данных имеет изображения рук, соответствующие 6 классам. У нас есть 1080 изображений поездов и 120 тестовых изображений.

skip connections что это. Смотреть фото skip connections что это. Смотреть картинку skip connections что это. Картинка про skip connections что это. Фото skip connections что это

Наша ResNet-50 достигает 86% точности теста в 25 эпохах обучения. Неплохо!

Создание ResNet в Керасе с использованием предварительно обученной библиотеки

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

Однако для более регулярного использования быстрее использовать предварительно подготовленный ResNet-50 в Керасе. У Keras есть много таких базовых моделей с их весами Imagenet, доступными в егобиблиотека,

skip connections что это. Смотреть фото skip connections что это. Смотреть картинку skip connections что это. Картинка про skip connections что это. Фото skip connections что это

Я загрузилблокнотна моем Github, который использует Keras для загрузки предварительно обученного ResNet-50. Вы можете загрузить модель с 1-строчным кодом:

Здесь веса = Нет, так как я хочу инициализировать модель со случайными весами, как я это делал на ResNet-50, который я кодировал. В противном случае я также могу загрузить предварительно обученные веса ImageNet. Я установил include_top = False, чтобы не включать окончательный пул и полностью связанный слой в исходную модель. Я добавил Global Average Pooling и плотный выходной слой в модель ResNet-50.

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

Ресурс Keras ResNet достиг точности 75% после обучения на 100 эпохах с оптимизатором Adam и скоростью обучения 0,0001. Точность немного ниже нашей собственной кодированной модели, и я думаю, что это связано с инициализацией веса.

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

Вывод

Вы также можете увидеть мои другие работы по адресу:https://medium.com/@priya.dwivedi

Если у вас есть проект, с которым мы можем сотрудничать, свяжитесь со мной через мой веб-сайт или по адресу [email protected]

Источник

ResNet (34, 50, 101): «остаточные» CNN для классификации изображений

skip connections что это. Смотреть фото skip connections что это. Смотреть картинку skip connections что это. Картинка про skip connections что это. Фото skip connections что это

ResNet — это сокращенное название для Residual Network (дословно — «остаточная сеть»), но что такое residual learning («остаточное обучение»)?

Глубокие сверточные нейронные сети превзошли человеческий уровень классификации изображений в 2015 году. Глубокие сети извлекают низко-, средне- и высокоуровневые признаки сквозным многослойным способом, а увеличение количества stacked layers может обогатить «уровни» признаков. Stacked layer имеет решающее значение, посмотрите на результат ImageNet:

skip connections что это. Смотреть фото skip connections что это. Смотреть картинку skip connections что это. Картинка про skip connections что это. Фото skip connections что этоРисунок 1: Ошибка обучения (слева) и ошибка теста (справа) на CIFAR-10 с 20-уровневыми и 56-слойными «простыми» сетями. Более глубокая сеть имеет большую ошибку обучения и, следовательно, ошибку тестирования. Подобные явления в ImageNet представлены на рисунке 4.

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

Соединения быстрого доступа

Чтобы преодолеть эту проблему, Microsoft ввела глубокую «остаточную» структуру обучения. Вместо того, чтобы надеяться на то, что каждые несколько stacked layers непосредственно соответствуют желаемому основному представлению, они явно позволяют этим слоям соответствовать «остаточному». Формулировка F(x) + x может быть реализована с помощью нейронных сетей с соединениями для быстрого доступа.

skip connections что это. Смотреть фото skip connections что это. Смотреть картинку skip connections что это. Картинка про skip connections что это. Фото skip connections что это

Соединения быстрого доступа (shortcut connections) пропускают один или несколько слоев и выполняют сопоставление идентификаторов. Их выходы добавляются к выходам stacked layers. Используя ResNet, можно решить множество проблем, таких как:

Датасеты

ImageNet — это набор данных миллионов помеченных изображений с высоким разрешением, относящихся примерно к 22 тысячам категорий. Изображения были собраны из Интернета и помечены людьми с помощью краудсорсинга. Начиная с 2010 года в рамках конкурса визуальных объектов Pascal проводится ежегодный челлендж «Крупномасштабный конкурс визуального распознавания ImageNet» (ILSVRC2013). ILSVRC использует подмножество ImageNet из примерно 1000 изображений в каждой из 1000 категорий. Существует около 1,2 миллиона обучающих образов, 50 тыс. валидаций 150 тыс. тестовых изображений.

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

Архитектура ResNet

Простая сеть: Простые базовые линии (рис. 2, в центре) в основном вдохновлены философией сетей VGG (рис. 2, слева). Сверточные слои в основном имеют фильтры 3×3 и следуют двум простым правилам:

Стоит отметить, что модель ResNet имеет меньше фильтров и сложность меньше, чем сети VGG.

ResNet: на основе описанной выше простой сети добавлено быстрое соединение (рис. 2, справа), которое превращает сеть в ее остаточную версию. Идентификационные быстрые соединения F (x + x) могут использоваться непосредственно, когда вход и выход имеют одинаковые размерности (быстрые соединения сплошной линии на рис. 2). Когда размерности увеличиваются (пунктирные линии на рис. 2), он рассматривает два варианта:

Для любой из опций, если быстрые соединения идут по картам объектов двух размерностей, они выполняются с шагом 2.

skip connections что это. Смотреть фото skip connections что это. Смотреть картинку skip connections что это. Картинка про skip connections что это. Фото skip connections что это

Каждый блок ResNet имеет два уровня глубины (используется в небольших сетях, таких как ResNet 18, 34) или 3 уровня (ResNet 50, 101, 152).

50-слойная ResNet: каждый 3-слойный блок заменяется в 34-слойной сети этим 3-слойным узким местом, в результате получается 50-слойная ResNet (см. Таблицу выше). Они используют вариант 2 для увеличения размерностей. Эта модель имеет 3,8 миллиарда FLOPs.

ResNet с 101 и 152 слоями: они создают ResNet с 101 и 152 слоями, используя больше 3-слойных блоков (см. Таблицу выше). Даже после увеличения глубины 152-слойная ResNet (11,3 миллиарда FLOP) имеет меньшую сложность, чем сети VGG-16/19 (15,3 / 19,6 миллиарда FLOPs).

Реализация

Размер изображения изменяется с помощью случайной выборки его короткой стороны в [256,480] для увеличения масштаба. Кадрирование 224×224 выбирается случайным образом из изображения или его горизонтального смещения с вычитанием среднего значения для каждого пикселя. Скорость обучения стартует с 0,1 и делится на 10, когда изменение ошибок выходит на плато, модели обучаются вплоть до 60×10000 итераций. Они используют снижение веса 0,0001 и импульс 0,9.

Результат

18-уровневая сеть — это просто подпространство в 34-уровневой сети, и она все еще работает лучше. ResNet выигрывает со значительным отрывом, если сеть глубже:

skip connections что это. Смотреть фото skip connections что это. Смотреть картинку skip connections что это. Картинка про skip connections что это. Фото skip connections что этоРисунок 3. Обучение в ImageNet. Тонкие кривые обозначают ошибку обучения, а жирные кривые обозначают ошибку валидации. Слева: простые сети из 18 и 34 слоев. Справа: ResNets из 18 и 34 слоев. На этом графике остаточные сети не имеют дополнительных параметров по сравнению с их обычными аналогами.

skip connections что это. Смотреть фото skip connections что это. Смотреть картинку skip connections что это. Картинка про skip connections что это. Фото skip connections что это

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

skip connections что это. Смотреть фото skip connections что это. Смотреть картинку skip connections что это. Картинка про skip connections что это. Фото skip connections что этоРисунок: 4. ResNet-34 достиг топ-5 ошибок проверки на 5,71% лучше, чем BN-start и VGG.

ResNet-152 достигает 4,49% в top-5 ошибок валидации. Комбинация из 6 моделей с различной глубиной достигает 3,57% в top-5 ошибок валидации.

skip connections что это. Смотреть фото skip connections что это. Смотреть картинку skip connections что это. Картинка про skip connections что это. Фото skip connections что этоРисунок 4: Частота ошибок (%) для одной модели в наборе валидации ImageNet (кроме случаев, указанных в тестовом наборе)

Источник

Статьи, лежащие в основе подхода Facebook к компьютерному зрению

Знаете такую компанию — Facebook? Да-да, ту самую, у сайта которой 1,6 миллиардов пользователей. И если взять все посты-поздравления с днем рождения, ваши позорные детские фотографии (у меня они такие), того дальнего родственника, лайкающего каждый ваш статус, — и вот вам множество данных для анализа.

С точки зрения анализа изображений Facebook весьма далеко продвинулся со сверточными нейронными сетями (Convolutional Neural Network, CNN). В августе подразделение Facebook по исследованиям в области искусственного интеллекта (Facebook AI Research, сокращенно FAIR) опубликовала блог-пост об алгоритмах компьютерного зрения, которые лежат в основе некоторых их алгоритмов сегментации изображений. В этом посте мы кратко изложим и разъясним три статьи, на которые ссылается этот блог.

skip connections что это. Смотреть фото skip connections что это. Смотреть картинку skip connections что это. Картинка про skip connections что это. Фото skip connections что это

Обычно FAIR использует следующую последовательность алгоритмов. Изображения подаются на вход фреймворку сегментации DeepMask. Алгоритм SharpMask служит для улучшения выделенных на первом этапе сегментов, затем объекты классифицируются с помощью MultiPathNet. Давайте рассмотрим, как работает каждый из этих компонентов в отдельности.

DeepMask

Введение

Эта работа, принадлежащая Педро Пинэйро, Роману Коллоберту и Петру Доллару, называется “Учимся выделять объекты-кандидаты” (“Learning to Segment Object Candidates”). Для решения задачи сегментации изображений авторы предлагают алгоритм, который, получая фрагмент изображения, выводит маску объекта и вероятность того, что в центре фрагмента находится объект целиком. Этот процесс применяется ко всему изображению так, чтобы маска была создана для каждого объекта. Весь процесс осуществляется с помощью всего одной CNN, так как оба компонента используют одни и те же слои сети.

Входные и выходные данные

skip connections что это. Смотреть фото skip connections что это. Смотреть картинку skip connections что это. Картинка про skip connections что это. Фото skip connections что это
Каждый обучающий пример должен содержать эти три компонента (примечание: пример с вероятностью 1 должен содержать фрагмент, в центре которого находится объект, который содержится в изображении полностью и в том же масштабе). Алгоритм применяется к различным участкам изображения (тому самому множеству фрагментов, которое мы упоминали ранее). Затем результаты объединяются, образуя одно оконательное изображение, содержащее все маски. Давайте посмотрим, из чего состоит алгоритм.

skip connections что это. Смотреть фото skip connections что это. Смотреть картинку skip connections что это. Картинка про skip connections что это. Фото skip connections что это
*Рисунок 1. Сверху. Архитектура модели: после общего слоя извлечения характеристик, модель расходится на две ветки. Верхняя ветка предсказывает маску сегментации для объекта, находящегося в центре, в то время как нижняя ветка предсказывает вероятность того, что фрагмент содержит объект.
Снизу. Примеры обучающих троек: входной фрагмент x, маска m и метка y. Зеленые фрагменты содержат объекты, удовлетворяющие определенным условиям и поэтому помеченные y = 1. Заметьте, что маски из негативных примеров (красных) не используются и показаны только для иллюстрации.

Архитектура сети

Сеть была заранее обучена классификации изображений на базе ImageNet (Transfer Learning в действии). Изображение проходит через VGG-подобную модель (без полносвязных слоев) с восемью сверточными слоями размера 3х3 и пятью слоями maxpool 2х2. В зависимости от размеров исходного изображения, вы получите определенный объем выходных данных (в данном случае, 512х14х14).

Input: 3 x h x w
Output: 512 x h/16 x w/16

Затем сеть разделяется на два компонента, описанных выше. Один из них берет на себя сегментацию, в то время как второй определяет, есть ли на изображении искомый объект.

Компонент сегментации (Segmentation Head)

Теперь берем выходные данные, передаем их через внутренний слой и ReLU слой. Сейчас у нас есть слой из w’ x h’ (где w’ и h’ меньше, чем w и h исходного изображения) классификаторов пикселей, которые определяют, является ли данный пиксель частью объекта в центре изображения (если размер изображения 28х28, то классификаторов будет менее 784). Затем берем выходные значения классификаторов, методом билинейной интерполяции повышаем разрешение изображения до исходного и получаем двоичную маску (1 — если пиксель принадлежит искомому объекту, 0 — если нет).

Компонент “объектности” (Objectness Head)

Второй компонент сети определяет, содержит ли изображение объект нужного масштаба в центре. Передавая выходные данные VGG-подобных слоев через maxpool-слой размерности 2х2, модуль dropout и два полносвязных слоя, мы можем получить нашу вероятностную оценку.

Обучение

Оба компонента сети обучаются параллельно, так как функция потерь — это сумма потерь логистической регрессии (потери Objectness Head плюс потери применения Segmentation Head к каждому фрагменту). Алгоритм обратного распространения ошибки пробегает либо по Objectness Head, либо по Segmentation Head. Для улучшения модели был использован прием расширения обучающего множества (Data Augmentation). Модель обучали методом стохастического градиентного спуска на графическом процессоре Nvidia Tesla K40m в течение пяти дней.

Чем крута эта статья

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

SharpMask

Введение

Предыдущая группа исследователей (совместно с Цунг-Йи Лином) также являются авторами статьи под названием “Учимся улучшать сегменты объектов” (“Learning to Refine Object Segments”). Как видно из названия, эта статья рассказывает об улучшении масок, созданных на этапе DeepMask. Главная проблема DeepMask в том, что эта модель использует простую сеть прямого распространения, которая успешно создает “грубые” маски, но не выполняет сегментацию с точностью до пикселя. Причина этого в том, что, если помните, в DeepMask имеет место билинейная интерполяция, которая служит для подгона под размер исходного изображения. Поэтому соответствие реальным границам очень приблизительно. Чтобы решить эту проблему, модель SharpMask объединяет информацию низкоуровневых характеристик, которую мы получаем от первых слоем сети, с высокоуровневой информацией об объекте, которая приходит от более глубоких слоев. Сначала модель создает грубую маску каждого входного фрагмента (работа DeepMask), а затем передает через несколько уточняющих модулей. Рассмотрим этот этап более детально.

skip connections что это. Смотреть фото skip connections что это. Смотреть картинку skip connections что это. Картинка про skip connections что это. Фото skip connections что это

Архитектура сети

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

Уточняющий модуль (Refinement module)

skip connections что это. Смотреть фото skip connections что это. Смотреть картинку skip connections что это. Картинка про skip connections что это. Фото skip connections что это

Но что именно делает функция R? Рад, что вы спросили. Наивным подходом было бы просто объединить M и F, так как у них одна у них одинаковая высота и ширина. Проблему при таком подходе создает канал глубины цвета для каждого из этих компонентов. Число таких каналов в картах признаков может быть намного больше, чем в маске. Таким образом, простое объединение придаст слишком большое значение F. Решением было бы сократить число каналов глубины цвета для F с помощью сверточного слоя 3×3, объединения c M, прохождения через еще один сверточный слой 3х3 и, наконец, билинейную интерполяцию (см. схему архитектуры сети).

Обучение

Те же обучающие данные, что использовались для DeepMask, можно применить и для SharpMask. Сначала обучают слои DeepMask. Затем веса замораживают, и начинается обучение SharpMask.

Чем крута эта статья

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

skip connections что это. Смотреть фото skip connections что это. Смотреть картинку skip connections что это. Картинка про skip connections что это. Фото skip connections что это

MultiPathNet

Введение

DeepMask создаеь грубые маски сегментов. SharpMask уточняет контуры объектов. А задача MultiPathNet — идентифицировать или классифицировать объекты в масках. Группа, состоящая из Сергея Загоруйко, Адама Лерера, Ценг-Йи Лина, Педро Пинейро, Сэма Гросса, Сумит Чинтала и Петра Доллара опубликовали статью “Сеть MultiPath для распознавания объектов” (“A MultiPath Network for Object Detection”). Задача этой статьи — улучшить методы распознавания объектов, направив внимание на более точную локализацию, а также на сложные изображения с разными масштабами, большим количеством препятствий и лишних деталей. Эта модель использует Fast R-CNN в качестве отправной точки (см. эту статью или мой предыдущий пост). В сущности, эта модель — реализация Fast R-CNN с генерацией гипотез о местоположении объекта с помощью DeepMask и SharpMask. Три основных изменения, описанных в статье, — форвеальные области (forveal regions), skip connections, интегральная функция потерь (integral loss). Но прежде, чем углубляться, давайте взглянем на архитектуру сети.

skip connections что это. Смотреть фото skip connections что это. Смотреть картинку skip connections что это. Картинка про skip connections что это. Фото skip connections что это

Архитектура сети / фовеальные области

Как в Fast R-CNN, мы передает входное изображение через VGG-сеть без полносвязных слоев. ROI pooling слой используется для извлечения признаков из гипотез (region proposals) (как помним из статьи о Fast R-CNN, ROI poling — это метод составления из характеристик изображения карты признаков определенной области изображения). Для каждой гипотезы мы обрезаем изображение четырьмя различными способами, чтобы рассмотреть объект в разных масштабах. Это и есть “фовеальные области”, о которых шла речь во введении. Эти обрезанные фрагменты проходят через полносвязные слои, выходные данные объединяются, а сеть распадается на ветку классификации (classification head) и ветку регрессии (regression head). Авторы предполагают, что это фовеальные области помогут более точно определять местоположение объекта, потому что так сеть сможет видеть объект в различных масштабах и в различном окружении.

Skip Connections

Благодаря Fast R-CNN, после последнего сверточного слоя VGG входное изображение 32х32 будет быстро сжато до размеров 2х2. ROI pooling слой создаст карту 7х7, но мы все равно потеряем много пространственной информации. Чтобы решить эту проблему, мы объединяем признаки из словем conv3, conv4 и conv5, а результат передаем форвеальному классификатору. Как утверждается в статье, это объединение “дает классификатору доступ к информации о признаках из различных областей изображения”.

Интегральная функция потерь

Не хочется углубляться в эту тему, ибо думаю, что вся математика гораздо лучше объясняется в самой статье, но в целом идея в том, что авторы вывели функцию потерь, которая работает лучше с многими значениями Intersection over Union (IoU).

Чем крута эта статья

Если вы поклонник Fast R-CNN, то вам точно понравится эта модель. Она использует основные идеи VGG Net и ROI pooling, в то же время создавая новый способ более точной локализации и классифткации с помощью форвеальных областей, skip connections и интегральной функции потери.

Кажется, Facebook отлично освоил всю эту науку о CNN.

Если вам есть что добавить, или вы можете иначе объяснить какую-либо из статей, дайте знать в комментариях.

Код DeepMask и SharpMask. Код MultuiPathNet.

wunderfund.io — молодой фонд, который занимается высокочастотной алготорговлей. Высокочастотная торговля — это непрерывное соревнование лучших программистов и математиков всего мира. Присоединившись к нам, вы станете частью этой увлекательной схватки.

Мы предлагаем интересные и сложные задачи по анализу данных и low latency разработке для увлеченных исследователей и программистов. Гибкий график и никакой бюрократии, решения быстро принимаются и воплощаются в жизнь.

Источник

All You Need to Know About Skip Connections

Introduction

We need to train deeper networks to perform complex tasks. Training a deep neural net has a lot of complications not only limited to overfitting, high computation costs but also have some non-trivial problems. We’re going to address these kinds of problems and how people in the Deep Learning community have solved these. Let’s jump into the article!

Table of Contents

Why Skip Connections?

The beauty of deep neural networks is that they can learn complex functions more efficiently than their shallow counterparts. While training deep neural nets, the performance of the model drops down with the increase in depth of the architecture. This is known as the degradation problem. But, what could be the reasons for the saturation inaccuracy with the increase in network depth? Let us try to understand the reasons behind the degradation problem.

One of the possible reasons could be overfitting. The model tends to overfit with the increase in depth but that’s not the case here. As you can infer from the below figure, the deeper network with 56 layers has more training error than the shallow one with 20 layers. The deeper model doesn’t perform as well as the shallow one. Clearly, overfitting is not the problem here.

skip connections что это. Смотреть фото skip connections что это. Смотреть картинку skip connections что это. Картинка про skip connections что это. Фото skip connections что это

Train and test error for 20-layer and 56-layer NN

Another possible reason can be vanishing gradient and/or exploding gradient problems. However, the authors of ResNet (He et al.) argued that the use of Batch Normalization and proper initialization of weights through normalization ensures that the gradients have healthy norms. But, what went wrong here? Let’s understand this by construction.

Consider a shallow neural network that was trained on a dataset. Also, consider a deeper one in which the initial layers have the same weight matrices as the shallow network (the blue colored layers in the below diagram) with added some extra layers (green colored layers). We set the weight matrices of the added layers as identity matrices (identity mappings).

skip connections что это. Смотреть фото skip connections что это. Смотреть картинку skip connections что это. Картинка про skip connections что это. Фото skip connections что это

Diagram explaining the construction

From this construction, the deeper network should not produce any higher training error than its shallow counterpart because we are actually using the shallow model’s weight in the deeper network with added identity layers. But experiments prove that the deeper network produces high training error comparing to the shallow one. This states the inability of deeper layers to learn even identity mappings.

The degradation of training accuracy indicates that not all systems are similarly easy to optimize.

One of the primary reasons is due to random initialization of weights with a mean around zero, L1, and L2 regularization. As a result, the weights in the model would always be around zero and thus the deeper layers can’t learn identity mappings as well.

Here comes the concept of skip connections which would enable us to train very deep neural networks. Let’s learn this awesome concept now.

What are Skip Connections?

Skip Connections (or Shortcut Connections) as the name suggests skips some of the layers in the neural network and feeds the output of one layer as the input to the next layers.

Skip Connections were introduced to solve different problems in different architectures. In the case of ResNets, skip connections solved the degradation problem that we addressed earlier whereas, in the case of DenseNets, it ensured feature reusability. We’ll discuss them in detail in the following sections.

Skip connections were introduced in literature even before residual networks. For example, Highway Networks (Srivastava et al.) had skip connections with gates that controlled and learned the flow of information to deeper layers. This concept is similar to the gating mechanism in LSTM. Although ResNets is actually a special case of Highway networks, the performance isn’t up to the mark comparing to ResNets. This suggests that it’s better to keep the gradient highways clear than to go for any gates – simplicity wins here!

Neural networks can learn any functions of arbitrary complexity, which could be high-dimensional and non-convex. Visualizations have the potential to help us answer several important questions about why neural networks work. And there is actually some nice work done by Li et al. which enables us to visualize the complex loss surfaces. The results from the networks with skip connections are even more surprising! Take a look at them.

skip connections что это. Смотреть фото skip connections что это. Смотреть картинку skip connections что это. Картинка про skip connections что это. Фото skip connections что это

The loss surfaces of ResNet-56 with and without skip connections

As you can see here, the loss surface of the neural network with skip connections is smoother and thus leading to faster convergence than the network without any skip connections. Let’s see the variants of skip connections in the next section.

Variants of Skip Connections

In this section, we will see the variants of skip connections in different architectures. Skip Connections can be used in 2 fundamental ways in Neural Networks: Addition and Concatenation.

Residual Networks (ResNets)

Residual Networks were proposed by He et al. in 2015 to solve the image classification problem. In ResNets, the information from the initial layers is passed to deeper layers by matrix addition. This operation doesn’t have any additional parameters as the output from the previous layer is added to the layer ahead. A single residual block with skip connection looks like this:

skip connections что это. Смотреть фото skip connections что это. Смотреть картинку skip connections что это. Картинка про skip connections что это. Фото skip connections что это

Thanks to the deeper layer representation of ResNets as pre-trained weights from this network can be used to solve multiple tasks. It’s not only limited to image classification but also can solve a wide range of problems on image segmentation, keypoint detection & object detection. Hence, ResNet is one of the most influential architectures in the deep learning community.

Next, we’ll learn about another variant of skip connections in DenseNets which is inspired by ResNets.

I would recommend you to go through the below resources for an in-detailed understanding of ResNets

Densely Connected Convolutional Networks (DenseNets)

DenseNets were proposed by Huang et al. in 2017. The primary difference between ResNets and DenseNets is that DenseNets concatenates the output feature maps of the layer with the next layer rather than a summation.

Coming to Skip Connections, DenseNets uses Concatenation whereas ResNets uses Summation

skip connections что это. Смотреть фото skip connections что это. Смотреть картинку skip connections что это. Картинка про skip connections что это. Фото skip connections что это

A 5-layer dense block

The idea behind the concatenation is to use features that are learned from earlier layers in deeper layers as well. This concept is known as Feature Reusability. So, DenseNets can learn mapping with fewer parameters than a traditional CNN as there is no need to learn redundant maps.

U-Net: Convolutional Networks for Biomedical Image Segmentation

The use of skip connections influences the field of biomedical too. U-Nets were proposed by Ronneberger et al. for biomedical image segmentation. It has an encoder-decoder part including Skip Connections. The overall architecture looks like the English letter “U”, thus the name U-Nets.

skip connections что это. Смотреть фото skip connections что это. Смотреть картинку skip connections что это. Картинка про skip connections что это. Фото skip connections что это

The layers in the encoder part are skip connected and concatenated with layers in the decoder part (those are mentioned as grey lines in the above diagram). This makes the U-Nets use fine-grained details learned in the encoder part to construct an image in the decoder part.

These kinds of connections are long skip connections whereas the ones we saw in ResNets were short skip connections. More about U-Nets here.

Okay! Enough of theory, let’s implement a block of the discussed architectures and how to load and use them in PyTorch!

Implementation of Skip Connections

In this section, we will build ResNets and DesNets using Skip Connections from the scratch. Are you excited? Let’s go!

ResNet – A residual block

First, we will implement a residual block using skip connections. PyTorch is preferred because of its super cool feature – object-oriented structure.

As we have a Residual block in our hand, we can build a ResNet model of arbitrary depth! Let’s quickly build the first five layers of ResNet-34 to get an idea of how to connect the residual blocks.

PyTorch provides us an easy way to load ResNet models with pretrained weights trained on the ImageNet dataset.

DenseNet – A dense block

Implementing the complete densenet would be a little bit complex. Let’s grab it step by step.

Next, we’ll implement a dense block that consists of an arbitrary number of DenseNet layers.

From the dense block, let’s build DenseNet. Here, I’ve omitted the transition layers of DenseNet architecture (which acts as downsampling) for simplicity.

End Notes

In this article, we’ve discussed the importance of skip connections for the training of deep neural nets and how skip connections were used in ResNet, DenseNet, and U-Net with its implementation. I know, this article covers many theoretical aspects which are not easy to grasp in one go. So, feel free to leave comments if you have any.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *