ResNet

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
(Новая: {{well|Статья написана с использованием LLM '''GPT-4''' и проверена участником Artem Mukovnin 23:06, ...)
 
(1 промежуточная версия не показана)
Строка 1: Строка 1:
-
{{well|Статья написана с использованием LLM '''GPT-4''' и проверена участником [[Участник:Artem Mukovnin|Artem Mukovnin]] 23:06, 12 июля 2026 (MSD)}}
+
{{well|Статья объединена из версий, написанных с использованием LLM '''Claude Sonnet 5''' и '''GPT-4''', проверена участниками [[Участник:Daria Makeeva|Daria Makeeva]] и [[Участник:Artem Mukovnin|Artem Mukovnin]] 21:47, 29 июля 2026 (MSD). }}
 +
{{TOCright}}
-
'''ResNet''' (англ. Residual Network, остаточная сеть) — архитектура глубокой [[свёрточная нейронная сеть|свёрточной нейронной сети]], предложенная Каем Хе (Kaiming He), Сяньином Чжаном (Xiangyu Zhang), Шаоцином Ренем (Shaoqing Ren) и Цзянь Суном (Jian Sun) из Microsoft Research Asia в 2015 году. Статья «Deep Residual Learning for Image Recognition»[1] получила приз за лучшую работу на конференции CVPR 2016 и стала одной из наиболее цитируемых работ в области [[глубокое обучение|глубокого обучения]] (более 200 000 цитирований к 2026 году).
+
'''Остаточные связи''' (англ. residual connections, также skip connections — пропускающие связи) — архитектурный приём в глубоких [[Искусственная нейронная сеть|нейронных сетях]], при котором вход блока слоёв добавляется напрямую к его выходу, минуя нелинейное преобразование внутри блока. Приём был предложен в архитектуре '''ResNet''' (Residual Network) Каймином Хэ (Kaiming He), Сянъюй Чжаном (Xiangyu Zhang), Шаоцином Реном (Shaoqing Ren) и Цзянем Суном (Jian Sun) из Microsoft Research Asia в 2015 году и позволил впервые успешно обучать сети глубиной в сотни и тысячи слоёв<ref name="he2016">{{статья |автор=He K., Zhang X., Ren S., Sun J. |заглавие=Deep Residual Learning for Image Recognition |издание=Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR) |год=2016 |страницы=770–778 |doi=10.1109/CVPR.2016.90}}</ref>. Статья получила приз за лучшую работу CVPR 2016, награду Test of Time Award CVPR 2021 и набрала более 200 000 цитирований к 2026 году, став одной из наиболее цитируемых работ в области глубокого обучения<ref name="he2016"/>. На конкурсе ILSVRC 2015 ансамбль ResNet достиг ошибки классификации 3,57% (топ-5), что ниже человеческого результата (около 5,1%), — первый случай, когда система глубокого обучения превзошла человека в распознавании изображений на ImageNet<ref name="he2016"/>.
-
Главный вклад ResNet — решение '''проблемы деградации глубоких сетей''': парадоксального явления, при котором увеличение глубины сети приводит не к улучшению, а к ухудшению качества как на обучении, так и на тесте. Это не было связано с [[переобучение|переобучением]] или [[проблема взрыва градиентов|затуханием градиентов]] (которые решались [[Batch Normalization|нормализацией]] и тщательной [[инициализация весов|инициализацией]]), а являлось фундаментальной проблемой оптимизации.
+
== Предыстория: эволюция глубины сетей ==
 +
История свёрточных сетей до 2015 года демонстрировала устойчивую тенденцию к увеличению глубины. '''LeNet-5''' (1998, Ян Лекун) — одна из первых свёрточных сетей для распознавания цифр, глубиной 7 слоёв. '''AlexNet''' (2012, Крижевский, Суцкевер, Хинтон) победила на ILSVRC 2012 с ошибкой 15,3% при 8 слоях, благодаря использованию GPU, функции активации ReLU, dropout-регуляризации и аугментации данных. '''VGGNet''' (2014, Симонян и Зиссерман) показала важность глубины: VGG-19 при 19 слоях достигла ошибки 7,3%, используя только маленькие свёртки 3×3. '''GoogLeNet/Inception''' (2014, Сегеди и др.) при 22 слоях с модулями Inception и свёртками 1×1 достигла ошибки 6,7%<ref name="he2016"/>.
-
ResNet ввёл концепцию '''остаточных блоков''' (residual blocks) с '''пропускающими соединениями''' (skip connections или shortcut connections), которые позволяют сети обучать не полное отображение H(x), а разность F(x) = H(x) − x между желаемым отображением и тождественным. Это упростило оптимизацию и позволило обучать сети глубиной в сотни и тысячи слоёв — на порядок глубже, чем было возможно ранее.
+
К 2015 году казалось, что увеличение глубины — верный путь к улучшению качества, однако при попытке обучить сети глубже 20 слоёв исследователи столкнулись с неожиданной проблемой.
-
На соревновании ImageNet Large Scale Visual Recognition Challenge (ILSVRC) 2015 года ансамбль ResNet достиг ошибки классификации 3.57% (топ-5), что ниже уровня человеческого результата (около 5.1%). Это стало первым случаем, когда система на основе глубокого обучения превзошла человека в задаче распознавания изображений на ImageNet.
+
== Проблема деградации ==
 +
Интуитивно кажется, что более глубокая сеть должна обучаться не хуже, чем её неглубокий аналог: если добавленные слои настроить на тождественное преобразование, качество не должно ухудшиться, ведь пространство функций глубокой сети формально включает пространство функций более неглубокой как подмножество. Однако на практике при обучении обычных (не остаточных) сетей прямого распространения наблюдалась обратная картина: при увеличении глубины сверх некоторого порога точность на обучающей выборке начинала не улучшаться, а деградировать.
-
== Предыстория: проблема глубины нейронных сетей ==
+
Кай Хе и коллеги провели показательный эксперимент, обучив на CIFAR-10 обычную 20-слойную и обычную 56-слойную сеть с одинаковой архитектурой (только свёртки 3×3, без pooling между группами слоёв), различающиеся только глубиной. 56-слойная сеть показала худшую ошибку и на обучении, и на тесте, хотя ожидалось обратное<ref name="he2016"/>. Это не было переобучением (ошибка на обучении тоже была выше) и не сводилось к затуханию градиентов, поскольку применялась Batch Normalization. Авторы назвали это явление '''деградацией''' (degradation problem): проблема заключалась не в переобучении, а в самой оптимизации, которая не могла найти даже тождественное отображение через нелинейные слои с ограниченным числом итераций стохастического градиентного спуска — оптимизатору проще «дообучить» отклонение от уже известного хорошего решения, чем построить тождественное отображение с нуля через нелинейное преобразование<ref name="he2016"/>.
-
=== Эволюция глубины до 2015 года ===
+
Возможные теоретические объяснения проблемы включают сложность ландшафта функции потерь с ростом глубины (множество локальных минимумов и седловых точек) и трудность нахождения оптимального решения градиентным спуском за разумное время, даже если оно формально представимо в пространстве параметров сети.
-
 
+
-
История [[свёрточная нейронная сеть|свёрточных сетей]] демонстрирует устойчивую тенденцию к увеличению глубины:
+
-
 
+
-
'''LeNet-5 (1998).''' Ян Лекун (Yann LeCun) предложил одну из первых свёрточных сетей для распознавания рукописных цифр. Глубина: 7 слоёв (2 свёрточных, 2 пулинга, 3 полносвязных).
+
-
 
+
-
'''AlexNet (2012).''' Алекс Крижевский (Alex Krizhevsky), Илья Суцкевер (Ilya Sutskever) и Джеффри Хинтон (Geoffrey Hinton) победили на ILSVRC 2012 с ошибкой 15.3% (топ-5). Глубина: 8 слоёв (5 свёрточных, 3 полносвязных). Прорыв был связан с использованием [[GPU]], [[ReLU|функции активации ReLU]], [[Dropout|регуляризации dropout]] и [[data augmentation|аугментации данных]].
+
-
 
+
-
'''VGGNet (2014).''' Карен Симонян (Karen Simonyan) и Эндрю Зиссерман (Andrew Zisserman) из Оксфорда показали важность глубины: их сеть VGG-19 имела 19 слоёв и достигла ошибки 7.3% (топ-5). Ключевая идея — использование только маленьких свёрток 3×3, что позволило увеличить глубину при сохранении числа параметров.
+
-
 
+
-
'''GoogLeNet / Inception (2014).''' Кристиан Сегеди (Christian Szegedy) и коллеги из Google предложили архитектуру с модулями Inception, достигшую ошибки 6.7% (топ-5) при 22 слоях. Инновация — использование свёрток 1×1 для снижения вычислительной сложности.
+
-
 
+
-
К 2015 году казалось, что увеличение глубины — верный путь к улучшению качества. Однако при попытке обучить сети глубже 20 слоёв исследователи столкнулись с неожиданной проблемой.
+
-
 
+
-
=== Проблема деградации ===
+
-
 
+
-
Кай Хе и его коллеги в 2015 году провели простой, но показательный эксперимент. Они обучили две сети на датасете CIFAR-10:
+
-
* '''20-слойная сеть''' (plain network)
+
-
* '''56-слойная сеть''' (plain network)
+
-
 
+
-
Обе сети имели одинаковую архитектуру (только свёртки 3×3, без pooling между группами слоёв), различаясь только глубиной. Ожидалось, что более глубокая сеть покажет лучший результат, так как она имеет больше параметров и выразительную способность.
+
-
 
+
-
Результат оказался парадоксальным: '''56-слойная сеть показала худшую ошибку как на обучении, так и на тесте'''. Это не было переобучением (ошибка на обучении тоже была выше), и не было затуханием градиентов (использовалась Batch Normalization, которая стабилизирует градиенты).
+
-
 
+
-
Авторы назвали это явление '''деградацией''' (degradation problem) и предположили, что оно связано с трудностями оптимизации: многослойным нелинейным сетям сложно обучить даже тождественное отображение (identity mapping), когда это оптимальное решение.
+
-
 
+
-
=== Теоретическое обоснование проблемы ===
+
-
 
+
-
Проблема деградации имеет несколько возможных объяснений:
+
-
 
+
-
'''Проблема оптимизации.''' Пространство параметров глубоких сетей содержит множество локальных минимумов и седловых точек. С увеличением глубины ландшафт функции потерь становится более сложным, и градиентному спуску трудно найти хорошее решение.
+
-
 
+
-
'''Проблема представления.''' Даже если оптимальное решение существует в пространстве параметров глубокой сети, градиентный спуск может не найти его за разумное время.
+
-
 
+
-
'''Гипотеза тождественного отображения.''' Если более глубокая сеть содержит более неглубокую сеть как подмножество (первые N слоёв одинаковы, остальные — тождественное отображение), то глубокая сеть не должна показывать худший результат. Однако на практике это не выполняется, что указывает на проблемы оптимизации.
+
-
 
+
-
Именно эту проблему решил ResNet через введение остаточных соединений.
+
== Авторы и мотивация ==
== Авторы и мотивация ==
 +
'''Кай Хе''' — ведущий автор работы, на момент публикации исследователь Microsoft Research Asia, ранее получил степень бакалавра в Университете Шанхай Цзяо Тун; позже перешёл в Facebook AI Research, где работал над Mask R-CNN (2017) и предложил метод инициализации весов (He initialization, 2015). '''Сянъюй Чжан''' специализировался на эффективных архитектурах нейронных сетей. '''Шаоцин Рен''' — соавтор Faster R-CNN (2015). '''Цзянь Сунь''' руководил группой компьютерного зрения в Microsoft Research Asia.
-
=== Команда Microsoft Research Asia ===
+
Идея пропускающих соединений не была полностью новой: похожие концепции существовали в '''Highway Networks''' (см. ниже), в '''LSTM''' (Хохрайтер и Шмидхубер, 1997) с аддитивным «cell state» для передачи градиентов во времени — ResNet можно рассматривать как аналог LSTM для пространственной глубины, — а также в методе остатков (residual method), широко используемом в численном решении дифференциальных уравнений для ускорения сходимости. Авторы ResNet предложили упрощённую версию пропускающих соединений: без ворот, без дополнительных параметров, просто аддитивное соединение, что оказалось не только проще, но и эффективнее аналогов.
-
'''Кай Хе (Kaiming He).''' Ведущий автор работы, на момент публикации исследователь в Microsoft Research Asia. Ранее получил степень бакалавра в Университете Шанхай Цзяо Тун. Позже перешёл в Facebook AI Research (FAIR), где продолжил работу над компьютерным зрением. Автор также известен работами по [[инициализация весов|инициализации весов]] (He initialization, 2015) и детекции объектов (Mask R-CNN, 2017).
+
== Формальное определение остаточного блока ==
 +
Пусть <tex>x</tex> вход блока слоёв, а <tex>F(x, W)</tex> — нелинейное преобразование с параметрами <tex>W</tex>. Остаточный блок вычисляет выход как:
-
'''Сяньин Чжан (Xiangyu Zhang).''' Исследователь в Microsoft Research Asia, специализирующийся на эффективных архитектурах нейронных сетей.
+
: <tex>y = F(x, W) + x</tex>
-
'''Шаоцин Жэнь (Shaoqing Ren).''' Исследователь в Microsoft Research Asia, соавтор работ по детекции объектов (Faster R-CNN, 2015).
+
Слои обучаются приближать не всё отображение <tex>H(x)</tex>, а лишь '''остаток''' <tex>F(x, W) = H(x) - x</tex>. Если оптимальным решением является тождественное отображение, оптимизатору достаточно занулить веса <tex>W</tex><ref name="he2016"/>.
-
'''Цзянь Сунь (Jian Sun).''' Руководитель группы компьютерного зрения в Microsoft Research Asia, один из ведущих исследователей в области глубокого обучения.
+
=== Несовпадающие размерности ===
 +
Если размерности входа и выхода блока не совпадают (например, после пулинга или изменения числа фильтров), тождественный путь заменяется линейной проекцией <tex>W_s</tex> (свёртка 1×1 с соответствующим шагом):
-
=== Мотивация: вдохновение из инженерии ===
+
: <tex>y = F(x, W) + W_s x</tex>
-
Идея пропускающих соединений (skip connections) не была полностью новой. Похожие концепции существовали в других областях:
+
Альтернативный вариант — дополнение входа нулями (zero-padding), не добавляющее параметров. В оригинальной статье оба варианта дали сопоставимые результаты, но проекция оказалась немного лучше<ref name="he2016"/>.
-
'''Highway Networks (2015).''' Руперт Шрэф (Rupesh Srivastava) и коллеги предложили сети с «воротами» (gates), контролирующими поток информации. Однако Highway Networks использовали обучаемые ворота, что увеличивало число параметров.
+
=== Базовый и bottleneck-блок ===
 +
Базовый блок (для сетей до 34 слоёв): Conv3×3 → BN → ReLU → Conv3×3 → BN → сложение с входом → ReLU. Для более глубоких сетей (50 и более слоёв) используется '''bottleneck-блок''': Conv1×1 (уменьшение размерности) → BN+ReLU → Conv3×3 → BN+ReLU → Conv1×1 (восстановление размерности) → BN → сложение → ReLU. Bottleneck-блок снижает вычислительную сложность в 4 раза при сохранении выразительной способности<ref name="he2016"/>.
-
'''LSTM (1997).''' Долгая краткосрочная память (Long Short-Term Memory) Хохрайтера и Шмидхубера использовала «cell state» с аддитивными соединениями для передачи градиентов во времени. ResNet можно рассматривать как аналог LSTM для пространственной глубины.
+
== Связь с проблемой затухающего градиента ==
 +
Дифференцируя выход блока <tex>y = F(x, W) + x</tex> по входу:
-
'''Идея остатков в численных методах.''' В численном решении дифференциальных уравнений метод остатков (residual method) широко используется для ускорения сходимости.
+
: <tex>\frac{\partial y}{\partial x} = \frac{\partial F(x, W)}{\partial x} + I</tex>
-
Кай Хе и коллеги предложили '''упрощённую версию''' пропускающих соединений: без ворот, без дополнительных параметров, просто аддитивное соединение. Это оказалось не только проще, но и эффективнее.
+
где <tex>I</tex> — единичная матрица. Единица в этом выражении гарантирует, что градиент не исчезнет, даже если <tex>\partial F/\partial x</tex> мало. При последовательном применении цепного правила через <tex>L</tex> остаточных блоков градиент включает слагаемое, проходящее через все блоки без умножения на потенциально малые якобианы <tex>\partial F_l / \partial x_l</tex><ref name="he2016b">{{статья |автор=He K., Zhang X., Ren S., Sun J. |заглавие=Identity Mappings in Deep Residual Networks |издание=Proceedings of the European Conference on Computer Vision (ECCV) |год=2016 |страницы=630–645 |номер=arXiv:1603.05027}}</ref>. Это гарантирует, что градиент не обязан затухать даже при очень большом числе блоков, в отличие от обычной сети прямого распространения, где градиент по входу первого слоя равен произведению всех промежуточных якобианов и экспоненциально затухает при типичной норме якобианов меньше единицы<ref name="he2016b"/>. Именно это свойство авторы называют ключевой причиной, по которой сети с сотнями и тысячами остаточных блоков успешно обучаются стандартным градиентным методом, тогда как их безостаточные аналоги той же глубины не обучаются вовсе.
-
== Принцип работы: остаточные блоки ==
+
== История и практические результаты ==
 +
Концептуальным предшественником были '''Highway Networks''' (Шриваства, Грефф, Шмидхубер, 2015) с обучаемым гейтом (transform gate): <tex>y = F(x, W)\cdot T(x) + x\cdot(1-T(x))</tex>, где <tex>T(x)</tex> — обучаемая гейтирующая функция<ref name="srivastava2015">{{статья |автор=Srivastava R.K., Greff K., Schmidhuber J. |заглавие=Highway Networks |издание=arXiv preprint |год=2015 |номер=arXiv:1505.00387}}</ref>. Highway Networks позволили обучать сети из сотен слоёв, однако требовали обучения дополнительных параметров гейта, тогда как в ResNet тождественный путь фиксирован и не требует дополнительных параметров.
-
=== Базовый остаточный блок ===
+
Архитектура ResNet заняла первое место на ILSVRC 2015; статья была опубликована в трудах CVPR 2016<ref name="he2016"/>. Оригинальная работа представила пять вариантов разной глубины:
-
 
+
-
В традиционной нейронной сети слой (или группа слоёв) обучает отображение:
+
-
: H(x) = F(x)
+
-
 
+
-
где x — вход, H(x) — выход.
+
-
 
+
-
В ResNet блок обучает '''остаточное отображение''':
+
-
: F(x) = H(x) − x
+
-
 
+
-
Тогда выход блока:
+
-
: y = F(x) + x
+
-
 
+
-
где x передаётся через '''пропускающее соединение''' (skip connection) напрямую к выходу.
+
-
 
+
-
Если F(x) = 0 (все веса нулевые), то y = x — блок реализует тождественное отображение. Это означает, что добавление нового блока '''никогда не ухудшит''' качество по сравнению с более неглубокой сетью (в теории).
+
-
 
+
-
### Математическое обоснование
+
-
 
+
-
Рассмотрим градиент функции потерь L по весам блока. По цепному правилу:
+
-
: ∂L/∂W = (∂L/∂y) · (∂y/∂W) = (∂L/∂y) · (∂F/∂W)
+
-
 
+
-
Но также:
+
-
: ∂L/∂x = (∂L/∂y) · (∂y/∂x) = (∂L/∂y) · (∂F/∂x + 1)
+
-
 
+
-
Единица в скобках — это градиент, протекающий через пропускающее соединение. Она гарантирует, что градиент '''не исчезнет''', даже если F/∂x мало. Это решает проблему затухания градиентов.
+
-
 
+
-
Более того, при обратном распространении через несколько блоков:
+
-
: ∂L/x_l = ∂L/x_L + Σ_{i=l}^{L-1} (∂L/∂y_i) · (∂F/∂x_i)
+
-
 
+
-
Первое слагаемое — прямой поток градиента от глубокого слоя к неглубокому, без искажений. Это создаёт «шоссе» для градиентов.
+
-
 
+
-
=== Архитектура блока ===
+
-
 
+
-
Базовый блок ResNet (для сетей до 34 слоёв) состоит из:
+
-
1. Свёртка 3×3 (64 фильтра)
+
-
2. Batch Normalization
+
-
3. ReLU
+
-
4. Свёртка 3×3 (64 фильтра)
+
-
5. Batch Normalization
+
-
6. Пропускающее соединение (identity)
+
-
7. Сложение с входом
+
-
8. ReLU
+
-
 
+
-
Для более глубоких сетей (50+ слоёв) используется '''bottleneck блок''':
+
-
1. Свёртка 1×1 (уменьшение размерности)
+
-
2. Batch Normalization + ReLU
+
-
3. Свёртка 3×3
+
-
4. Batch Normalization + ReLU
+
-
5. Свёртка 1×1 (восстановление размерности)
+
-
6. Batch Normalization
+
-
7. Пропускающее соединение
+
-
8. Сложение + ReLU
+
-
 
+
-
Bottleneck блок снижает вычислительную сложность в 4 раза при сохранении выразительной способности.
+
-
 
+
-
=== Обработка изменения размерности ===
+
-
 
+
-
Когда размерность входа и выхода блока не совпадает (например, после пулинга или изменения числа фильтров), пропускающее соединение требует адаптации:
+
-
 
+
-
'''Вариант A: Zero-padding.''' Дополнить вход нулями до нужной размерности. Не добавляет параметров, но менее эффективно.
+
-
 
+
-
'''Вариант B: Проекция.''' Использовать свёртку 1×1 для изменения размерности входа:
+
-
: y = F(x) + W_s · x
+
-
 
+
-
где W_s — матрица проекции (свёртка 1×1). Добавляет параметры, но работает лучше.
+
-
 
+
-
В оригинальной статье авторы показали, что оба варианта дают сопоставимые результаты, но проекция немного лучше.
+
-
 
+
-
== Почему ResNet работает: теоретические объяснения ==
+
-
 
+
-
=== Упрощение оптимизации ===
+
-
 
+
-
Главное объяснение успеха ResNet — '''упрощение ландшафта функции потерь'''. В обычной глубокой сети оптимизатор должен найти сложное нелинейное отображение H(x). В ResNet оптимизатор ищет остаток F(x) = H(x) − x, который часто близок к нулю (особенно в глубоких слоях, где изменения малы).
+
-
 
+
-
Это означает, что '''нулевые веса''' — хорошее начальное приближение для F(x), что облегчает оптимизацию.
+
-
 
+
-
=== Ансамбль путей ===
+
-
 
+
-
Анализ, проведённый Виройгаваном (Veit et al., 2016)[2], показал, что ResNet можно рассматривать как '''ансамбль из множества путей''' разной длины. Благодаря пропускающим соединениям, информация может течь через сеть по разным маршрутам: через все слои, через половину слоёв, через несколько слоёв и т.д.
+
-
 
+
-
Это объясняет:
+
-
* '''Робастность к удалению слоёв.''' Удаление случайных слоёв из ResNet мало влияет на качество (в отличие от обычных сетей).
+
-
* '''Хорошую обобщающую способность.''' Ансамбль путей работает как регуляризация.
+
-
 
+
-
=== Представление признаков ===
+
-
 
+
-
Исследования (например, работа Яна и др., 2018[3]) показали, что в ResNet:
+
-
* '''Ранние слои''' учат низкоуровневые признаки (края, текстуры)
+
-
* '''Средние слои''' учат среднеуровневые признаки (части объектов)
+
-
* '''Поздние слои''' учат высокоуровневые признаки (целые объекты)
+
-
 
+
-
Пропускающие соединения позволяют признакам разных уровней «смешиваться», что улучшает представление.
+
-
 
+
-
=== Связь с дифференциальными уравнениями ===
+
-
 
+
-
В 2017-2018 годах была установлена глубокая связь между ResNet и '''обыкновенными дифференциальными уравнениями''' (ODE)[4].
+
-
 
+
-
Если рассматривать глубину сети как «время», то остаточный блок:
+
-
: y_{t+1} = y_t + F(y_t)
+
-
 
+
-
можно интерпретировать как '''явный метод Эйлера''' для решения ОДУ:
+
-
: dy/dt = F(y(t))
+
-
 
+
-
Это объяснение привело к созданию:
+
-
* '''Neural ODE (2018).''' Нейронные сети, определяемые как решение ОДУ.
+
-
* '''Теории устойчивости.''' Анализ устойчивости глубоких сетей через теорию ОДУ.
+
-
 
+
-
== Архитектуры ResNet ==
+
-
 
+
-
=== ResNet-18/34/50/101/152 ===
+
-
 
+
-
Оригинальная статья представила пять вариантов ResNet с разной глубиной:
+
{| class="wikitable" style="text-align:center;"
{| class="wikitable" style="text-align:center;"
-
! Сеть
+
! Сеть !! Слои !! Параметры (млн) !! Ошибка ImageNet top-5 (%)
-
! Слои
+
-
! Параметры (млн)
+
-
! Ошибка ImageNet (топ-5, %)
+
|-
|-
-
| ResNet-18
+
| ResNet-18 || 18 || 11,7 || 10,0
-
| 18
+
-
| 11.7
+
-
| 10.0
+
|-
|-
-
| ResNet-34
+
| ResNet-34 || 34 || 21,8 || 8,3
-
| 34
+
-
| 21.8
+
-
| 8.3
+
|-
|-
-
| ResNet-50
+
| ResNet-50 || 50 || 25,6 || 6,2
-
| 50
+
-
| 25.6
+
-
| 6.2
+
|-
|-
-
| ResNet-101
+
| ResNet-101 || 101 || 44,5 || 5,5
-
| 101
+
-
| 44.5
+
-
| 5.5
+
|-
|-
-
| ResNet-152
+
| ResNet-152 || 152 || 60,2 || 4,9
-
| 152
+
-
| 60.2
+
-
| 4.9
+
|}
|}
-
Все сети используют bottleneck блоки (кроме ResNet-18/34, которые используют базовые блоки).
+
Наиболее глубокая протестированная модель — 152-слойная ResNet — достигла ошибки top-5 4,49% на валидационной выборке, а ансамбль моделей — 3,57% на тестовой выборке, впервые превзойдя оценённый человеческий уровень (около 5,1%)<ref name="he2016"/>. Для сравнения, на ILSVRC 2015 GoogLeNet (22 слоя) показал ошибку 6,7%, VGG-19 (19 слоёв) — 7,3%, тогда как ResNet-152 (152 слоя) — 4,9%<ref name="he2016"/>.
-
=== Сравнение с предыдущими архитектурами ===
+
Авторы также успешно обучили сеть глубиной 1202 слоя на CIFAR-10, продемонстрировав, что остаточные связи впервые сделали практически осуществимым обучение сетей такой глубины стандартным градиентным методом без специальных ухищрений<ref name="he2016"/>. При этом отдельный эксперимент с ResNet-1001 показал качество хуже, чем у ResNet-110, что указывает на пределы применимости остаточных соединений при экстремальной глубине. На задаче детекции объектов COCO 2015 связка Faster R-CNN с ResNet-101 заняла первое место с mAP 42,1% (44,4% в ансамбле)<ref name="he2016"/>. На CIFAR-10/100 ResNet-110 показал ошибку 6,43%, ResNet-164 — 23,4% на CIFAR-100.
-
На ILSVRC 2015:
+
=== Интерпретация как ансамбля путей ===
-
* '''GoogLeNet (22 слоя):''' 6.7% ошибка
+
Андреас Вайт, Майкл Уилбер и Серж Белонджи (2016) показали, что сеть из <tex>L</tex> остаточных блоков эквивалентна совокупности из <tex>2^L</tex> путей разной длины — от одного (только тождественные переходы) до <tex>L</tex> (через все нелинейные преобразования). Эти пути ведут себя как ансамбль относительно неглубоких сетей: удаление отдельных блоков после обучения слабо влияет на точность (в отличие от сетей без остаточных связей, таких как VGG), а основной вклад в градиент вносят именно короткие пути — например, в сети из 110 слоёв большая часть градиента приходится на пути глубиной всего 10–34 слоя<ref name="veit2016">{{статья |автор=Veit A., Wilber M., Belongie S. |заглавие=Residual Networks Behave Like Ensembles of Relatively Shallow Networks |издание=Advances in Neural Information Processing Systems (NeurIPS) |год=2016 |том=29 |страницы=550–558 |номер=arXiv:1605.06431}}</ref>. Это наблюдение объясняет, почему остаточные сети избегают проблемы затухающего градиента: обучение эффективно опирается на короткие пути, способные переносить градиент, а не на весь путь максимальной глубины.
-
* '''VGG-19 (19 слоёв):''' 7.3% ошибка
+
-
* '''ResNet-152 (152 слоя):''' 4.9% ошибка
+
-
ResNet превзошёл предыдущие результаты на 2-3%, что является значительным улучшением в задаче, где прогресс измеряется десятыми долями процента.
+
=== Плотные связи (DenseNet) ===
 +
'''DenseNet''' (Хуан и др., 2017) конкатенирует выход каждого слоя внутри плотного блока со всеми предыдущими вместо суммирования, так что каждый слой получает объединение карт признаков всех предшествующих слоёв. Такая схема усиливает распространение сигнала и градиента ещё сильнее, чем простое суммирование, и позволяет достигать сопоставимой с ResNet точности при существенно меньшем числе параметров<ref name="huang2017">{{статья |автор=Huang G., Liu Z., van der Maaten L., Weinberger K.Q. |заглавие=Densely Connected Convolutional Networks |издание=Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR) |год=2017 |страницы=2261–2269 |doi=10.1109/CVPR.2017.243}}</ref>.
-
=== ResNet v2 (2016) ===
+
=== Предактивационные блоки и вариации ===
 +
'''Pre-activation ResNet''' (Хэ и др., 2016) переставляет порядок операций на BN → ReLU → Conv → BN → ReLU → Conv → Add (вместо Conv → BN → ReLU → Conv → BN → Add → ReLU), делая путь тождественного отображения полностью «чистым», без дополнительной нелинейности на магистральном пути, что облегчает распространение сигнала через произвольно удалённые блоки. Это улучшило результаты на сетях глубиной до 1001 слоя на CIFAR-10 и 200 слоёв на ImageNet, дав прирост качества на 1–2%<ref name="he2016b"/>.
-
В статье «Identity Mappings in Deep Residual Networks»[5] Кай Хе и коллеги предложили улучшенную версию ResNet:
+
'''Wide ResNet''' (Загоруйко, Комодакис, 2016) показал, что ширина важнее глубины: Wide ResNet-28-10 превзошёл ResNet-1001 на CIFAR-10, имея в 50 раз меньше слоёв<ref name="zagoruyko2016">{{статья |автор=Zagoruyko S., Komodakis N. |заглавие=Wide Residual Networks |издание=Proceedings of the British Machine Vision Conference (BMVC) |год=2016 |страницы=87.1–87.12 |doi=10.5244/C.30.87}}</ref>. '''ResNeXt''' (Се и др., 2017, Facebook AI Research) ввёл «кардинальность» — число параллельных агрегируемых преобразований внутри блока (аналогично модулям Inception, но более структурированно); ResNeXt-101 превзошёл ResNet-152 при сопоставимом числе параметров<ref name="xie2017">{{статья |автор=Xie S., Girshick R., Dollár P., Tu Z., He K. |заглавие=Aggregated Residual Transformations for Deep Neural Networks |издание=Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR) |год=2017 |страницы=1492–1500 |номер=arXiv:1611.05431}}</ref>. Другие вариации включают '''FractalNet''' (2016, фрактальная архитектура с множественными путями), '''PyramidNet''' (2017, постепенное увеличение числа фильтров) и '''Shake-Shake''' (2017, стохастическая регуляризация пропускающих соединений).
-
'''Pre-activation.''' В оригинальном ResNet порядок: Conv → BN → ReLU → Conv → BN → Add → ReLU. В ResNet v2: BN → ReLU → Conv → BN → ReLU → Conv → Add.
+
=== Связь с непрерывной глубиной ===
-
 
+
Формула <tex>y = x + F(x, W)</tex> формально совпадает с шагом явного метода Эйлера для дифференциального уравнения <tex>dy/dt = F(y(t))</tex> с единичным шагом по времени, если рассматривать глубину сети как «время». Это наблюдение легло в основу переосмысления остаточных сетей как дискретизации непрерывной динамической системы и привело к разработке [[Нейронные дифференциальные уравнения|Neural ODE]], где число дискретных остаточных блоков заменяется решением обыкновенного дифференциального уравнения с адаптивным числом шагов интегрирования<ref name="chen2018">{{статья |автор=Chen R.T.Q., Rubanova Y., Bettencourt J., Duvenaud D.K. |заглавие=Neural Ordinary Differential Equations |издание=Advances in Neural Information Processing Systems (NeurIPS) |год=2018 |том=31 |номер=arXiv:1806.07366}}</ref>.
-
'''Преимущества:'''
+
-
* Улучшенный поток градиентов (ReLU не «обрезает» отрицательные градиенты перед сложением)
+
-
* Лучшая регуляризация (BN применяется перед активацией)
+
-
* Упрощённый анализ (тождественное отображение сохраняется точно)
+
-
 
+
-
ResNet v2 показал улучшение на 1-2% по сравнению с оригиналом.
+
-
 
+
-
=== Wide ResNet (2016) ===
+
-
 
+
-
Загоруйко и Комодакис (Zagoruyko & Komodakis)[6] предложили '''Wide ResNet''' — архитектуру с увеличенной шириной (числом фильтров) и уменьшенной глубиной.
+
-
 
+
-
'''Ключевая идея:''' ширина важнее глубины. Wide ResNet-28-10 (28 слоёв, ширина ×10) превзошёл ResNet-1001 (1001 слой) на CIFAR-10, имея в 50 раз меньше слоёв.
+
-
 
+
-
'''Применения:'''
+
-
* Стилизация изображений
+
-
* Генеративные модели
+
-
* Задачи, где важна скорость инференса
+
-
 
+
-
=== ResNeXt (2017) ===
+
-
 
+
-
Сяоце Се (Xie et al.) из Facebook AI Research предложил '''ResNeXt'''[7] — обобщение ResNet с использованием '''кардинальности''' (cardinality) — числа параллельных путей в блоке.
+
-
 
+
-
'''Принцип:''' вместо одного пути с большой шириной использовать множество путей с малой шириной (аналогично модулям Inception, но более структурированно).
+
-
 
+
-
'''Результат:''' ResNeXt-101 превзошёл ResNet-152 при сопоставимом числе параметров.
+
-
 
+
-
=== Другие вариации ===
+
-
 
+
-
* '''DenseNet (2017).''' Каждый слой соединён со всеми последующими (Huang et al.). Усиливает поток признаков и градиентов.
+
-
* '''Highway Networks (2015).''' Пропускающие соединения с обучаемыми воротами.
+
-
* '''FractalNet (2016).''' Фрактальная архитектура с множественными путями.
+
-
* '''PyramidNet (2017).''' Постепенное увеличение числа фильтров.
+
-
* '''Shake-Shake (2017).''' Стохастическая регуляризация пропускающих соединений.
+
-
 
+
-
== Результаты на бенчмарках ==
+
-
 
+
-
=== ImageNet ILSVRC 2015 ===
+
-
 
+
-
ResNet-152 (ансамбль из 6 моделей) достиг:
+
-
* '''Топ-1 ошибка:''' 4.49%
+
-
* '''Топ-5 ошибка:''' 2.30%
+
-
 
+
-
Это превзошло человеческий результат (около 5.1% топ-5) и стало первым случаем, когда система превзошла человека на ImageNet.
+
-
 
+
-
В одиночном режиме ResNet-152:
+
-
* '''Топ-1 ошибка:''' 4.49%
+
-
* '''Топ-5 ошибка:''' 2.30%
+
-
 
+
-
### COCO детекция объектов 2015
+
-
 
+
-
ResNet использовался как backbone для детекции объектов:
+
-
* '''Faster R-CNN + ResNet-101:''' mAP 42.1% (1-е место)
+
-
* '''Faster R-CNN + ResNet-101 (ensemble):''' mAP 44.4%
+
-
 
+
-
### CIFAR-10/100
+
-
 
+
-
На небольших датасетах CIFAR:
+
-
* '''ResNet-110:''' ошибка 6.43% (CIFAR-10)
+
-
* '''ResNet-164:''' ошибка 23.4% (CIFAR-100)
+
-
 
+
-
ResNet показал значительное улучшение по сравнению с предыдущими результатами.
+
== Применение в других задачах ==
== Применение в других задачах ==
 +
'''Детекция объектов.''' ResNet стал стандартным backbone: Faster R-CNN (замена VGG на ResNet улучшила mAP на 2–3%), Mask R-CNN (2017, инстанс-сегментация с ResNet-FPN), RetinaNet (2017, одноэтапная детекция с Focal Loss)<ref name="he2016"/>.
-
=== Детекция объектов ===
+
'''Сегментация изображений.''' DeepLab (2015–2018, atrous-свёртки с ResNet backbone), PSPNet (2017, пирамидальный пулинг), U-Net с ResNet-энкодером.
-
 
+
-
ResNet стал стандартным backbone для систем детекции объектов:
+
-
 
+
-
'''Faster R-CNN (2015).''' Рен и коллеги заменили VGG на ResNet, улучшив mAP на 2-3%.
+
-
 
+
-
'''Mask R-CNN (2017).''' Кай Хе и коллеги расширили Faster R-CNN для инстанс-сегментации, используя ResNet-FPN (Feature Pyramid Network) как backbone.
+
-
 
+
-
'''RetinaNet (2017).''' Лин и коллеги использовали ResNet с FPN для одноэтапной детекции, решив проблему дисбаланса классов через Focal Loss.
+
-
 
+
-
=== Сегментация изображений ===
+
-
 
+
-
'''DeepLab (2015-2018).''' Серия работ от Google, использующих ResNet с atrous свёртками для семантической сегментации.
+
-
 
+
-
'''PSPNet (2017).''' Чжао и коллеги использовали ResNet с пирамидальным пулингом для сегментации сцен.
+
-
 
+
-
'''U-Net с ResNet backbone.''' Модификация U-Net, где encoder заменён на ResNet.
+
-
 
+
-
=== Обработка естественного языка ===
+
-
 
+
-
Хотя ResNet разработан для изображений, идея остаточных соединений применима и к NLP:
+
-
 
+
-
'''Трансформеры (2017).''' Васвани и коллеги использовали пропускающие соединения в каждом слое трансформера (между подслоями attention и FFN).
+
-
 
+
-
'''ByteNet (2016).''' Калчбреннер и коллеги применили остаточные соединения к свёрточным сетям для NLP.
+
-
=== Другие области ===
+
'''Обработка естественного языка.''' Идея остаточных соединений применима и к NLP: трансформеры (Васвани и др., 2017) используют пропускающие соединения в каждом слое между подслоями attention и FFN; ByteNet (2016) применил остаточные соединения к свёрточным сетям для NLP.
-
* '''Медицинская визуализация.''' Диагностика по рентгеновским снимкам, МРТ, КТ.
+
'''Другие области.''' Медицинская визуализация (диагностика по рентгену, МРТ, КТ), автономное вождение, сверхразрешение (SRResNet), генеративные модели (ResNet в генераторах и дискриминаторах GAN).
-
* '''Автономное вождение.''' Детекция объектов, сегментация дороги.
+
-
* '''Сверхразрешение.''' SRResNet для увеличения разрешения изображений.
+
-
* '''Генерация изображений.''' ResNet в генераторах и дискриминаторах GAN.
+
== Критика и ограничения ==
== Критика и ограничения ==
 +
Несмотря на эффективность, ResNet имеет недостатки: ResNet-152 содержит 60 миллионов параметров, что требует значительных ресурсов для обучения и инференса; глубокие ResNet требуют много FLOPs, ограничивая применение на мобильных устройствах; пропускающие соединения требуют хранения активаций всех слоёв для обратного распространения, увеличивая потребление памяти.
-
=== Вычислительная сложность ===
+
Исследования показали, что для многих задач избыточная глубина не нужна: Wide ResNet (2016) показал, что увеличение ширины эффективнее увеличения глубины; EfficientNet (2019) продемонстрировал, что сбалансированное масштабирование глубины, ширины и разрешения эффективнее масштабирования только глубины; MobileNet (2017–2019) использует неглубокие сети с depthwise separable свёртками для мобильных устройств.
-
Несмотря на эффективность, ResNet имеет недостатки:
+
Даже ResNet сталкивается с проблемами при экстремальной глубине: ResNet-1001 показал качество хуже ResNet-110 на CIFAR-10, а в очень глубоких ResNet некоторые слои могут становиться «мёртвыми» (их веса близки к нулю), снижая эффективность архитектуры.
-
 
+
-
'''Большое число параметров.''' ResNet-152 имеет 60 миллионов параметров, что требует значительных ресурсов для обучения и инференса.
+
-
 
+
-
'''Высокая вычислительная сложность.''' Глубокие ResNet требуют много операций умножения-накопления (FLOPs), что ограничивает применение на мобильных устройствах.
+
-
 
+
-
'''Потребление памяти.''' Пропускающие соединения требуют хранения активаций всех слоёв для обратного распространения, что увеличивает потребление памяти.
+
-
 
+
-
=== Не всегда нужна глубина ===
+
-
 
+
-
Исследования показали, что для многих задач избыточная глубина не нужна:
+
-
 
+
-
'''Wide ResNet (2016).''' Увеличение ширины эффективнее увеличения глубины.
+
-
 
+
-
'''EfficientNet (2019).''' Тэн и коллеги показали, что сбалансированное масштабирование глубины, ширины и разрешения эффективнее, чем только глубина.
+
-
 
+
-
'''MobileNet (2017-2019).''' Для мобильных устройств используются неглубокие сети с depthwise separable свёртками.
+
-
 
+
-
=== Проблемы с очень большой глубиной ===
+
-
 
+
-
Даже ResNet сталкивается с проблемами при экстремальной глубине:
+
-
 
+
-
'''ResNet-1001 (2016).''' Хе и коллеги обучили сеть с 1001 слоем на CIFAR-10, но качество было хуже, чем у ResNet-110. Это указывает на пределы применимости остаточных соединений.
+
-
 
+
-
'''Проблема «мёртвых» слоёв.''' В очень глубоких ResNet некоторые слои могут становиться неактивными (их веса близки к нулю), что снижает эффективность.
+
-
 
+
-
=== Альтернативные подходы ===
+
-
 
+
-
Появление ResNet стимулировало разработку альтернатив:
+
-
 
+
-
'''DenseNet (2017).''' Более эффективный поток признаков через плотные соединения.
+
-
 
+
-
'''Capsule Networks (2017).''' Хинтон предложил капсульные сети как альтернативу свёрточным сетям.
+
-
 
+
-
'''Vision Transformers (2020).''' Досовицкий и коллеги показали, что трансформеры могут превзойти CNN на задачах компьютерного зрения.
+
== Наследие и влияние ==
== Наследие и влияние ==
 +
ResNet кардинально изменил подход к проектированию архитектур: skip connections стали стандартным компонентом большинства современных архитектур — трансформеров, U-Net, генеративных и диффузионных моделей. ResNet показал, что проблема оптимизации может быть важнее проблемы представления, сместив фокус исследований на методы улучшения оптимизации, и доказал, что глубина — важный фактор качества, но только при правильном проектировании архитектуры.
-
=== Влияние на архитектуру нейронных сетей ===
+
ResNet стал одной из первых архитектур, для которых были широко распространены предобученные на ImageNet модели, что ускорило развитие [[Перенос обучения|трансферного обучения]], и заложил основы для последующих прорывов: пропускающие соединения в каждом слое трансформера — прямое наследие ResNet; Vision Transformers (2020) применяют остаточные связи между слоями, несмотря на отсутствие свёрток; U-Net с остаточными связями — стандартный backbone для диффузионных моделей; большие мультимодальные foundation-модели используют ResNet-подобные блоки в vision encoder.
-
 
+
-
ResNet кардинально изменил подход к проектированию архитектур:
+
-
 
+
-
'''Стандартизация остаточных соединений.''' Skip connections стали стандартным компонентом большинства современных архитектур: трансформеры, U-Net, генеративные модели.
+
-
 
+
-
'''Фокус на оптимизации.''' ResNet показал, что проблема оптимизации может быть важнее проблемы представления. Это сместило фокус исследований на методы улучшения оптимизации.
+
-
 
+
-
'''Масштабирование глубины.''' ResNet доказал, что глубина — важный фактор качества, но только при правильном проектировании архитектуры.
+
-
 
+
-
=== Влияние на практику ===
+
-
 
+
-
'''Предобученные модели.''' ResNet стал одной из первых архитектур, для которых были широко распространены предобученные модели (ImageNet pretraining). Это ускорило развитие [[перенос обучения|трансферного обучения]].
+
-
 
+
-
'''Backbone для других задач.''' ResNet используется как backbone в сотнях работ по детекции, сегментации, генерации.
+
-
 
+
-
'''Образование.''' ResNet стал стандартной темой в курсах по глубокому обучению, иллюстрируя важность архитектуры и оптимизации.
+
-
 
+
-
=== Цитирования и награды ===
+
-
 
+
-
* '''Более 200 000 цитирований''' к 2026 году (одна из наиболее цитируемых работ в CS).
+
-
* '''Приз за лучшую статью CVPR 2016'''.
+
-
* '''Тест времени (Test of Time Award) CVPR 2021'''.
+
-
* '''Включение в список наиболее влиятельных работ ИИ''' (AI Index Report).
+
-
 
+
-
=== Связь с последующими работами ===
+
-
 
+
-
ResNet заложил основы для множества последующих прорывов:
+
-
 
+
-
'''Трансформеры (2017).''' Пропускающие соединения в каждом слое трансформера — прямое наследие ResNet.
+
-
 
+
-
'''Vision Transformers (2020).''' Хотя ViT не использует свёртки, он применяет остаточные соединения между слоями трансформера.
+
-
 
+
-
'''Diffusion Models (2020-е).''' U-Net с остаточными соединениями — стандартный backbone для диффузионных моделей.
+
-
 
+
-
'''Foundation Models (2020-е).''' Большие мультимодальные модели используют ResNet-like блоки в vision encoder.
+
== См. также ==
== См. также ==
* [[Свёрточная нейронная сеть]]
* [[Свёрточная нейронная сеть]]
 +
* [[Проблема затухающего градиента]]
 +
* [[Нейронные дифференциальные уравнения]]
 +
* [[Батч-нормализация]]
 +
* [[Обратное распространение ошибки]]
* [[Глубокое обучение]]
* [[Глубокое обучение]]
-
* [[Batch Normalization]]
 
-
* [[Dropout]]
 
* [[ImageNet]]
* [[ImageNet]]
* [[AlexNet]]
* [[AlexNet]]
* [[VGGNet]]
* [[VGGNet]]
-
* [[DenseNet]]
 
* [[Трансформер (модель)]]
* [[Трансформер (модель)]]
* [[Перенос обучения]]
* [[Перенос обучения]]
== Примечания ==
== Примечания ==
-
↑ He K., Zhang X., Ren S., Sun J. Deep Residual Learning for Image Recognition // CVPR. — 2016. — С. 770–778.
+
{{примечания}}
-
↑ Veit A., Wilber M. J., Belongie S. Residual Networks are Ensembles of Shallow Networks // NeurIPS. — 2016. — С. 550–558.
+
-
↑ Yang Y., Ramanan D. Theoretical Analysis of Feature Maps in Deep Residual Networks // ICML. — 2018.
+
-
↑ E W. A Proposal on Machine Learning via Dynamical Systems // Communications in Mathematics and Statistics. — 2017. — Т. 5. — № 1. — С. 1–11.
+
-
↑ He K., Zhang X., Ren S., Sun J. Identity Mappings in Deep Residual Networks // ECCV. — 2016. — С. 630–645.
+
-
↑ Zagoruyko S., Komodakis N. Wide Residual Networks // BMVC. — 2016.
+
-
↑ Xie S. et al. Aggregated Residual Transformations for Deep Neural Networks // CVPR. — 2017. — С. 1492–1500.
+
== Литература ==
== Литература ==
-
* He K., Zhang X., Ren S., Sun J. Deep Residual Learning for Image Recognition // CVPR. — 2016. — С. 770–778.
+
* {{статья |автор=He K., Zhang X., Ren S., Sun J. |заглавие=Deep Residual Learning for Image Recognition |издание=Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR) |год=2016 |страницы=770–778 |doi=10.1109/CVPR.2016.90}}
-
* He K., Zhang X., Ren S., Sun J. Identity Mappings in Deep Residual Networks // ECCV. — 2016. — С. 630–645.
+
* {{статья |автор=He K., Zhang X., Ren S., Sun J. |заглавие=Identity Mappings in Deep Residual Networks |издание=Proceedings of the European Conference on Computer Vision (ECCV) |год=2016 |страницы=630–645 |номер=arXiv:1603.05027}}
-
* Zagoruyko S., Komodakis N. Wide Residual Networks // BMVC. — 2016.
+
* {{статья |автор=Srivastava R.K., Greff K., Schmidhuber J. |заглавие=Highway Networks |издание=arXiv preprint |год=2015 |номер=arXiv:1505.00387}}
-
* Xie S. et al. Aggregated Residual Transformations for Deep Neural Networks // CVPR. — 2017. — С. 1492–1500.
+
* {{статья |автор=Veit A., Wilber M., Belongie S. |заглавие=Residual Networks Behave Like Ensembles of Relatively Shallow Networks |издание=Advances in Neural Information Processing Systems (NeurIPS) |год=2016 |том=29 |страницы=550–558 |номер=arXiv:1605.06431}}
-
* Huang G. et al. Densely Connected Convolutional Networks // CVPR. 2017. — С. 2261–2269.
+
* {{статья |автор=Zagoruyko S., Komodakis N. |заглавие=Wide Residual Networks |издание=Proceedings of the British Machine Vision Conference (BMVC) |год=2016 |страницы=87.1–87.12 |doi=10.5244/C.30.87}}
-
* Veit A., Wilber M. J., Belongie S. Residual Networks are Ensembles of Shallow Networks // NeurIPS. — 2016. — С. 550–558.
+
* {{статья |автор=Xie S., Girshick R., Dollár P., Tu Z., He K. |заглавие=Aggregated Residual Transformations for Deep Neural Networks |издание=Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR) |год=2017 |страницы=1492–1500 |номер=arXiv:1611.05431}}
 +
* {{статья |автор=Huang G., Liu Z., van der Maaten L., Weinberger K.Q. |заглавие=Densely Connected Convolutional Networks |издание=Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR) |год=2017 |страницы=2261–2269 |doi=10.1109/CVPR.2017.243}}
 +
* {{статья |автор=Chen R.T.Q., Rubanova Y., Bettencourt J., Duvenaud D.K. |заглавие=Neural Ordinary Differential Equations |издание=Advances in Neural Information Processing Systems (NeurIPS) |год=2018 |том=31 |номер=arXiv:1806.07366}}
* Goodfellow I., Bengio Y., Courville A. Deep Learning. — MIT Press, 2016. — ISBN 978-0-262-03561-3 — Глава 9 (свёрточные сети).
* Goodfellow I., Bengio Y., Courville A. Deep Learning. — MIT Press, 2016. — ISBN 978-0-262-03561-3 — Глава 9 (свёрточные сети).
* Russell S., Norvig P. Artificial Intelligence: A Modern Approach. — 4th ed. — Pearson, 2020. — ISBN 978-0-13-461099-3 — Глава 21 (глубокое обучение).
* Russell S., Norvig P. Artificial Intelligence: A Modern Approach. — 4th ed. — Pearson, 2020. — ISBN 978-0-13-461099-3 — Глава 21 (глубокое обучение).
 +
[[Категория:Машинное обучение]]
[[Категория:Глубокое обучение]]
[[Категория:Глубокое обучение]]
-
[[Категория:Свёрточные нейронные сети]]
 
[[Категория:Компьютерное зрение]]
[[Категория:Компьютерное зрение]]
 +
[[Категория:Свёрточные нейронные сети]]
[[Категория:Архитектуры нейронных сетей]]
[[Категория:Архитектуры нейронных сетей]]

Текущая версия

Статья объединена из версий, написанных с использованием LLM Claude Sonnet 5 и GPT-4, проверена участниками Daria Makeeva и Artem Mukovnin 21:47, 29 июля 2026 (MSD).


Содержание

Остаточные связи (англ. residual connections, также skip connections — пропускающие связи) — архитектурный приём в глубоких нейронных сетях, при котором вход блока слоёв добавляется напрямую к его выходу, минуя нелинейное преобразование внутри блока. Приём был предложен в архитектуре ResNet (Residual Network) Каймином Хэ (Kaiming He), Сянъюй Чжаном (Xiangyu Zhang), Шаоцином Реном (Shaoqing Ren) и Цзянем Суном (Jian Sun) из Microsoft Research Asia в 2015 году и позволил впервые успешно обучать сети глубиной в сотни и тысячи слоёв[1]. Статья получила приз за лучшую работу CVPR 2016, награду Test of Time Award CVPR 2021 и набрала более 200 000 цитирований к 2026 году, став одной из наиболее цитируемых работ в области глубокого обучения[1]. На конкурсе ILSVRC 2015 ансамбль ResNet достиг ошибки классификации 3,57% (топ-5), что ниже человеческого результата (около 5,1%), — первый случай, когда система глубокого обучения превзошла человека в распознавании изображений на ImageNet[1].

Предыстория: эволюция глубины сетей

История свёрточных сетей до 2015 года демонстрировала устойчивую тенденцию к увеличению глубины. LeNet-5 (1998, Ян Лекун) — одна из первых свёрточных сетей для распознавания цифр, глубиной 7 слоёв. AlexNet (2012, Крижевский, Суцкевер, Хинтон) победила на ILSVRC 2012 с ошибкой 15,3% при 8 слоях, благодаря использованию GPU, функции активации ReLU, dropout-регуляризации и аугментации данных. VGGNet (2014, Симонян и Зиссерман) показала важность глубины: VGG-19 при 19 слоях достигла ошибки 7,3%, используя только маленькие свёртки 3×3. GoogLeNet/Inception (2014, Сегеди и др.) при 22 слоях с модулями Inception и свёртками 1×1 достигла ошибки 6,7%[1].

К 2015 году казалось, что увеличение глубины — верный путь к улучшению качества, однако при попытке обучить сети глубже 20 слоёв исследователи столкнулись с неожиданной проблемой.

Проблема деградации

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

Кай Хе и коллеги провели показательный эксперимент, обучив на CIFAR-10 обычную 20-слойную и обычную 56-слойную сеть с одинаковой архитектурой (только свёртки 3×3, без pooling между группами слоёв), различающиеся только глубиной. 56-слойная сеть показала худшую ошибку и на обучении, и на тесте, хотя ожидалось обратное[1]. Это не было переобучением (ошибка на обучении тоже была выше) и не сводилось к затуханию градиентов, поскольку применялась Batch Normalization. Авторы назвали это явление деградацией (degradation problem): проблема заключалась не в переобучении, а в самой оптимизации, которая не могла найти даже тождественное отображение через нелинейные слои с ограниченным числом итераций стохастического градиентного спуска — оптимизатору проще «дообучить» отклонение от уже известного хорошего решения, чем построить тождественное отображение с нуля через нелинейное преобразование[1].

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

Авторы и мотивация

Кай Хе — ведущий автор работы, на момент публикации исследователь Microsoft Research Asia, ранее получил степень бакалавра в Университете Шанхай Цзяо Тун; позже перешёл в Facebook AI Research, где работал над Mask R-CNN (2017) и предложил метод инициализации весов (He initialization, 2015). Сянъюй Чжан специализировался на эффективных архитектурах нейронных сетей. Шаоцин Рен — соавтор Faster R-CNN (2015). Цзянь Сунь руководил группой компьютерного зрения в Microsoft Research Asia.

Идея пропускающих соединений не была полностью новой: похожие концепции существовали в Highway Networks (см. ниже), в LSTM (Хохрайтер и Шмидхубер, 1997) с аддитивным «cell state» для передачи градиентов во времени — ResNet можно рассматривать как аналог LSTM для пространственной глубины, — а также в методе остатков (residual method), широко используемом в численном решении дифференциальных уравнений для ускорения сходимости. Авторы ResNet предложили упрощённую версию пропускающих соединений: без ворот, без дополнительных параметров, просто аддитивное соединение, что оказалось не только проще, но и эффективнее аналогов.

Формальное определение остаточного блока

Пусть x — вход блока слоёв, а F(x, W) — нелинейное преобразование с параметрами W. Остаточный блок вычисляет выход как:

y = F(x, W) + x

Слои обучаются приближать не всё отображение H(x), а лишь остаток F(x, W) = H(x) - x. Если оптимальным решением является тождественное отображение, оптимизатору достаточно занулить веса W[1].

Несовпадающие размерности

Если размерности входа и выхода блока не совпадают (например, после пулинга или изменения числа фильтров), тождественный путь заменяется линейной проекцией W_s (свёртка 1×1 с соответствующим шагом):

y = F(x, W) + W_s x

Альтернативный вариант — дополнение входа нулями (zero-padding), не добавляющее параметров. В оригинальной статье оба варианта дали сопоставимые результаты, но проекция оказалась немного лучше[1].

Базовый и bottleneck-блок

Базовый блок (для сетей до 34 слоёв): Conv3×3 → BN → ReLU → Conv3×3 → BN → сложение с входом → ReLU. Для более глубоких сетей (50 и более слоёв) используется bottleneck-блок: Conv1×1 (уменьшение размерности) → BN+ReLU → Conv3×3 → BN+ReLU → Conv1×1 (восстановление размерности) → BN → сложение → ReLU. Bottleneck-блок снижает вычислительную сложность в 4 раза при сохранении выразительной способности[1].

Связь с проблемой затухающего градиента

Дифференцируя выход блока y = F(x, W) + x по входу:

\frac{\partial y}{\partial x} = \frac{\partial F(x, W)}{\partial x} + I

где I — единичная матрица. Единица в этом выражении гарантирует, что градиент не исчезнет, даже если \partial F/\partial x мало. При последовательном применении цепного правила через L остаточных блоков градиент включает слагаемое, проходящее через все блоки без умножения на потенциально малые якобианы \partial F_l / \partial x_l[1]. Это гарантирует, что градиент не обязан затухать даже при очень большом числе блоков, в отличие от обычной сети прямого распространения, где градиент по входу первого слоя равен произведению всех промежуточных якобианов и экспоненциально затухает при типичной норме якобианов меньше единицы[1]. Именно это свойство авторы называют ключевой причиной, по которой сети с сотнями и тысячами остаточных блоков успешно обучаются стандартным градиентным методом, тогда как их безостаточные аналоги той же глубины не обучаются вовсе.

История и практические результаты

Концептуальным предшественником были Highway Networks (Шриваства, Грефф, Шмидхубер, 2015) с обучаемым гейтом (transform gate): y = F(x, W)\cdot T(x) + x\cdot(1-T(x)), где T(x) — обучаемая гейтирующая функция[1]. Highway Networks позволили обучать сети из сотен слоёв, однако требовали обучения дополнительных параметров гейта, тогда как в ResNet тождественный путь фиксирован и не требует дополнительных параметров.

Архитектура ResNet заняла первое место на ILSVRC 2015; статья была опубликована в трудах CVPR 2016[1]. Оригинальная работа представила пять вариантов разной глубины:

Сеть Слои Параметры (млн) Ошибка ImageNet top-5 (%)
ResNet-18 18 11,7 10,0
ResNet-34 34 21,8 8,3
ResNet-50 50 25,6 6,2
ResNet-101 101 44,5 5,5
ResNet-152 152 60,2 4,9

Наиболее глубокая протестированная модель — 152-слойная ResNet — достигла ошибки top-5 4,49% на валидационной выборке, а ансамбль моделей — 3,57% на тестовой выборке, впервые превзойдя оценённый человеческий уровень (около 5,1%)[1]. Для сравнения, на ILSVRC 2015 GoogLeNet (22 слоя) показал ошибку 6,7%, VGG-19 (19 слоёв) — 7,3%, тогда как ResNet-152 (152 слоя) — 4,9%[1].

Авторы также успешно обучили сеть глубиной 1202 слоя на CIFAR-10, продемонстрировав, что остаточные связи впервые сделали практически осуществимым обучение сетей такой глубины стандартным градиентным методом без специальных ухищрений[1]. При этом отдельный эксперимент с ResNet-1001 показал качество хуже, чем у ResNet-110, что указывает на пределы применимости остаточных соединений при экстремальной глубине. На задаче детекции объектов COCO 2015 связка Faster R-CNN с ResNet-101 заняла первое место с mAP 42,1% (44,4% в ансамбле)[1]. На CIFAR-10/100 ResNet-110 показал ошибку 6,43%, ResNet-164 — 23,4% на CIFAR-100.

Интерпретация как ансамбля путей

Андреас Вайт, Майкл Уилбер и Серж Белонджи (2016) показали, что сеть из L остаточных блоков эквивалентна совокупности из 2^L путей разной длины — от одного (только тождественные переходы) до L (через все нелинейные преобразования). Эти пути ведут себя как ансамбль относительно неглубоких сетей: удаление отдельных блоков после обучения слабо влияет на точность (в отличие от сетей без остаточных связей, таких как VGG), а основной вклад в градиент вносят именно короткие пути — например, в сети из 110 слоёв большая часть градиента приходится на пути глубиной всего 10–34 слоя[1]. Это наблюдение объясняет, почему остаточные сети избегают проблемы затухающего градиента: обучение эффективно опирается на короткие пути, способные переносить градиент, а не на весь путь максимальной глубины.

Плотные связи (DenseNet)

DenseNet (Хуан и др., 2017) конкатенирует выход каждого слоя внутри плотного блока со всеми предыдущими вместо суммирования, так что каждый слой получает объединение карт признаков всех предшествующих слоёв. Такая схема усиливает распространение сигнала и градиента ещё сильнее, чем простое суммирование, и позволяет достигать сопоставимой с ResNet точности при существенно меньшем числе параметров[1].

Предактивационные блоки и вариации

Pre-activation ResNet (Хэ и др., 2016) переставляет порядок операций на BN → ReLU → Conv → BN → ReLU → Conv → Add (вместо Conv → BN → ReLU → Conv → BN → Add → ReLU), делая путь тождественного отображения полностью «чистым», без дополнительной нелинейности на магистральном пути, что облегчает распространение сигнала через произвольно удалённые блоки. Это улучшило результаты на сетях глубиной до 1001 слоя на CIFAR-10 и 200 слоёв на ImageNet, дав прирост качества на 1–2%[1].

Wide ResNet (Загоруйко, Комодакис, 2016) показал, что ширина важнее глубины: Wide ResNet-28-10 превзошёл ResNet-1001 на CIFAR-10, имея в 50 раз меньше слоёв[1]. ResNeXt (Се и др., 2017, Facebook AI Research) ввёл «кардинальность» — число параллельных агрегируемых преобразований внутри блока (аналогично модулям Inception, но более структурированно); ResNeXt-101 превзошёл ResNet-152 при сопоставимом числе параметров[1]. Другие вариации включают FractalNet (2016, фрактальная архитектура с множественными путями), PyramidNet (2017, постепенное увеличение числа фильтров) и Shake-Shake (2017, стохастическая регуляризация пропускающих соединений).

Связь с непрерывной глубиной

Формула y = x + F(x, W) формально совпадает с шагом явного метода Эйлера для дифференциального уравнения dy/dt = F(y(t)) с единичным шагом по времени, если рассматривать глубину сети как «время». Это наблюдение легло в основу переосмысления остаточных сетей как дискретизации непрерывной динамической системы и привело к разработке Neural ODE, где число дискретных остаточных блоков заменяется решением обыкновенного дифференциального уравнения с адаптивным числом шагов интегрирования[1].

Применение в других задачах

Детекция объектов. ResNet стал стандартным backbone: Faster R-CNN (замена VGG на ResNet улучшила mAP на 2–3%), Mask R-CNN (2017, инстанс-сегментация с ResNet-FPN), RetinaNet (2017, одноэтапная детекция с Focal Loss)[1].

Сегментация изображений. DeepLab (2015–2018, atrous-свёртки с ResNet backbone), PSPNet (2017, пирамидальный пулинг), U-Net с ResNet-энкодером.

Обработка естественного языка. Идея остаточных соединений применима и к NLP: трансформеры (Васвани и др., 2017) используют пропускающие соединения в каждом слое между подслоями attention и FFN; ByteNet (2016) применил остаточные соединения к свёрточным сетям для NLP.

Другие области. Медицинская визуализация (диагностика по рентгену, МРТ, КТ), автономное вождение, сверхразрешение (SRResNet), генеративные модели (ResNet в генераторах и дискриминаторах GAN).

Критика и ограничения

Несмотря на эффективность, ResNet имеет недостатки: ResNet-152 содержит 60 миллионов параметров, что требует значительных ресурсов для обучения и инференса; глубокие ResNet требуют много FLOPs, ограничивая применение на мобильных устройствах; пропускающие соединения требуют хранения активаций всех слоёв для обратного распространения, увеличивая потребление памяти.

Исследования показали, что для многих задач избыточная глубина не нужна: Wide ResNet (2016) показал, что увеличение ширины эффективнее увеличения глубины; EfficientNet (2019) продемонстрировал, что сбалансированное масштабирование глубины, ширины и разрешения эффективнее масштабирования только глубины; MobileNet (2017–2019) использует неглубокие сети с depthwise separable свёртками для мобильных устройств.

Даже ResNet сталкивается с проблемами при экстремальной глубине: ResNet-1001 показал качество хуже ResNet-110 на CIFAR-10, а в очень глубоких ResNet некоторые слои могут становиться «мёртвыми» (их веса близки к нулю), снижая эффективность архитектуры.

Наследие и влияние

ResNet кардинально изменил подход к проектированию архитектур: skip connections стали стандартным компонентом большинства современных архитектур — трансформеров, U-Net, генеративных и диффузионных моделей. ResNet показал, что проблема оптимизации может быть важнее проблемы представления, сместив фокус исследований на методы улучшения оптимизации, и доказал, что глубина — важный фактор качества, но только при правильном проектировании архитектуры.

ResNet стал одной из первых архитектур, для которых были широко распространены предобученные на ImageNet модели, что ускорило развитие трансферного обучения, и заложил основы для последующих прорывов: пропускающие соединения в каждом слое трансформера — прямое наследие ResNet; Vision Transformers (2020) применяют остаточные связи между слоями, несмотря на отсутствие свёрток; U-Net с остаточными связями — стандартный backbone для диффузионных моделей; большие мультимодальные foundation-модели используют ResNet-подобные блоки в vision encoder.

См. также

Примечания

Литература

  • He K., Zhang X., Ren S., Sun J. Deep Residual Learning for Image Recognition // Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR). — 2016. — С. 770–778.
  • He K., Zhang X., Ren S., Sun J. Identity Mappings in Deep Residual Networks // Proceedings of the European Conference on Computer Vision (ECCV). — 2016. — № arXiv:1603.05027. — С. 630–645.
  • Srivastava R.K., Greff K., Schmidhuber J. Highway Networks // arXiv preprint. — 2015. — № arXiv:1505.00387.
  • Veit A., Wilber M., Belongie S. Residual Networks Behave Like Ensembles of Relatively Shallow Networks // Advances in Neural Information Processing Systems (NeurIPS). — 2016. — Т. 29. — № arXiv:1605.06431. — С. 550–558.
  • Zagoruyko S., Komodakis N. Wide Residual Networks // Proceedings of the British Machine Vision Conference (BMVC). — 2016. — С. 87.1–87.12.
  • Xie S., Girshick R., Dollár P., Tu Z., He K. Aggregated Residual Transformations for Deep Neural Networks // Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR). — 2017. — № arXiv:1611.05431. — С. 1492–1500.
  • Huang G., Liu Z., van der Maaten L., Weinberger K.Q. Densely Connected Convolutional Networks // Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR). — 2017. — С. 2261–2269.
  • Chen R.T.Q., Rubanova Y., Bettencourt J., Duvenaud D.K. Neural Ordinary Differential Equations // Advances in Neural Information Processing Systems (NeurIPS). — 2018. — Т. 31. — № arXiv:1806.07366.
  • Goodfellow I., Bengio Y., Courville A. Deep Learning. — MIT Press, 2016. — ISBN 978-0-262-03561-3 — Глава 9 (свёрточные сети).
  • Russell S., Norvig P. Artificial Intelligence: A Modern Approach. — 4th ed. — Pearson, 2020. — ISBN 978-0-13-461099-3 — Глава 21 (глубокое обучение).
Личные инструменты