Модель ResNet
Модель ResNet [1] стала победителем соревнования ILSVRC-2015, ансамбль из вариантов которой показал частоту ошибок 3.6%, что ниже, чем оцениваемая частота ошибок человека (5.1% из [2]).
Проблем а глубоких сетей
Авторы модели проводили эксперименты по увеличению глубины свёрточной сети и обнаружили, что с некоторого момента добавление слоёв приводит к ухудшению качества прогнозов модели не только на тестовой, но и на обучающей выборке!
Это показано ниже для частоты ошибок на обучающей выборке (слева) и тестовой выборке (справа) датасета CIFAR-10 при увеличении глубины сети от 20 до 56 слоёв [1]:
После каждой свёртки использовалась батч-нормализация, нормы градиентов не взрывались и не вырождались. Поэтому авторы пришли к выводу, что чересчур большое число слоёв слишком замедляет сходимость процесса оптимизации, что делает сходимость к оптимальным весам недостижимым за разумное время.
Остаточный блок
Как мы увидели, простое наращивание числа слоёв может ухудшить качество модели по сравнению с неглубокой. В то же время легко воспроизвести качество неглубокой сети с помощью глубокой, просто дополнив неглубокую сеть новыми тождественными преобразованиями, не изменяющими входы. Это дало понимание того, что глубокой сети сложно воспроизвести тождественное преобразование. Чтобы ей помочь в этом, было предложено использовать остаточный блок (residual block), представленный ниже [1]:
Как видим, результатом действия остаточного блока является сумма нелинейного преобразования и исходного входа . Такой конструкции гораздо проще воспроизвести тождественное преобразование, для чего достаточно задать нулями все веса преобразования . После каждого остаточного блока в ResNet действует нелинейность ReLU.
Эксперименты показали, что если наращивать сеть, добавляя в неё остаточные блоки, то точность прогнозов растёт, а не падает, как в обычной свёрточной архитектуре. Эта несложная идея открыла дорогу к применению очень глубоких сетей, содержащих 100 слоёв и более, а работу [1] сделало одной из самых цитируемых в мире глубокого обучения!
Архитектура ResNet
Для суммирования преобразования и входа необходимо, чтобы число каналов и пространственные размеры в результате преобразования не изменялись. Поэтому в использовались свёртки 3x3 с шагом 1 и паддингом, равным единице.
Периодически пространственное разрешение уменьшалось в два раза, что реализовывалось свёрткой с шагом 2 в преобразовании , а в тождественной связи применялась свёртка 1x1 также с шагом 2.
Ниже приведена архитектура VGG-19 (слева), её расширенная версия с большим числом слоёв (в центре) и она же, но с добавлением тождественных связей (справа) [1]:
На рисунке обычные тождественные связи показаны сплошной линией, а тождественные связи, на которых пространственное разрешение уменьшается в 2 раза, - пунктиром.
После работы всех остаточных блоков их результат векторизуется глобальным усредняющим пулингом, к которому применяется всего один полносвязный слой.
Такая архитектура, несмотря на большее число слоёв, имеет гораздо меньше настраиваемых параметров, чем относительно неглубокая сеть VGG, использующа я несколько полносвязных слоёв.
Варианты архитектуры
Тестировались архитектуры с разным числом слоёв - ResNet-18, ResNet-34, ResNet-50, ResNet-101, ResNet-152 с соответствующим числом слоёв. Среди них самой точной оказалась архитектура с 152 слоями (частота ошибок 4.5% на датасете ImageNet):
Нелинейные преобразования различались для числа слоёв 34,50 и 101,152. В первом случае они реализовывались двумя свёртками с пространстве нными размерами (размером ядра) 3x3, а во втором - тремя свёртками 1x1, 3x3, 1x1. Первая 1x1 свёртка уменьшает число каналов, снижая число параметров и количество операций второй свёртки 3x3, а третья - восстанавливает исходное число каналов. За счёт этого приёма число операций (нижняя строка таблицы) и параметров оказалось сравнимым для более и менее глубоких вариантов ResNet. Этот приём называется "бутылочным горлышком" (bottleneck), с которым мы уже сталкивались в модели GoogLeNet.
Преимущества ResNet
-
Тождественные связи позволяют градиенту лучше распространяться назад при обучении модели, ускоряя настройку более ранних слоёв нейросети.
-
Тождественные связи существенно упрощают начальную инициализацию глубокой сети: веса нелинейных преобразований нужно инициализировать значениями, близкими к нулю, чтобы в начале оптимизации . Если оптимизатор сети сочтёт, что сети не хватает выразительной способности для обработки сложных объектов, он настроит нужным образом, причём только для тех блоков, которые реально необходимы.
-
ResNet позволяет одновременно обрабатывать как сложные объекты, так и простые. Для распознавания первых нужно много слоёв, а для вторых - мало. В последнем случае признаки извлекаются из сигнала, который прошёл через небольшое число нелинейных преобразований, а дальше распространялся в основном по тождественным связям.
-
ResNet действует как ансамбль, поскольку каждый входной сигнал обрабатывается не по одной ветке обработки, а сразу по набору альтернативных веток, причем число альтернатив растёт экспоненциально с увеличением числа остаточных блоков. Это проиллюстрировано для 3х блоков в [3]:
Литература
- He K. et al. Deep residual learning for image recognition //Proceedings of the IEEE conference on computer vision and pattern recognition. – 2016. – С. 770-778.
- Russakovsky O. et al. Imagenet large scale visual recognition challenge //International journal of computer vision. – 2015. – Т. 115. – С. 211-252.
- Veit A., Wilber M. J., Belongie S. Residual networks behave like ensembles of relatively shallow networks //Advances in neural information processing systems. – 2016. – Т. 29.