ResNet
Материал из MachineLearning.
| Строка 1: | Строка 1: | ||
| - | {{well|Статья | + | {{well|Статья объединена из версий, написанных с использованием LLM '''Claude Sonnet 5''' и '''GPT-4''', проверена участниками [[Участник:Daria Makeeva|Daria Makeeva]] и [[Участник:Artem Mukovnin|Artem Mukovnin]] 21:47, 29 июля 2026 (MSD). }} |
| + | {{TOCright}} | ||
| - | ''' | + | '''Остаточные связи''' (англ. 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"/>. |
| - | + | == Предыстория: эволюция глубины сетей == | |
| + | История свёрточных сетей до 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"/>. | ||
| - | + | К 2015 году казалось, что увеличение глубины — верный путь к улучшению качества, однако при попытке обучить сети глубже 20 слоёв исследователи столкнулись с неожиданной проблемой. | |
| - | + | == Проблема деградации == | |
| + | Интуитивно кажется, что более глубокая сеть должна обучаться не хуже, чем её неглубокий аналог: если добавленные слои настроить на тождественное преобразование, качество не должно ухудшиться, ведь пространство функций глубокой сети формально включает пространство функций более неглубокой как подмножество. Однако на практике при обучении обычных (не остаточных) сетей прямого распространения наблюдалась обратная картина: при увеличении глубины сверх некоторого порога точность на обучающей выборке начинала не улучшаться, а деградировать. | ||
| - | = | + | Кай Хе и коллеги провели показательный эксперимент, обучив на CIFAR-10 обычную 20-слойную и обычную 56-слойную сеть с одинаковой архитектурой (только свёртки 3×3, без pooling между группами слоёв), различающиеся только глубиной. 56-слойная сеть показала худшую ошибку и на обучении, и на тесте, хотя ожидалось обратное<ref name="he2016"/>. Это не было переобучением (ошибка на обучении тоже была выше) и не сводилось к затуханию градиентов, поскольку применялась Batch Normalization. Авторы назвали это явление '''деградацией''' (degradation problem): проблема заключалась не в переобучении, а в самой оптимизации, которая не могла найти даже тождественное отображение через нелинейные слои с ограниченным числом итераций стохастического градиентного спуска — оптимизатору проще «дообучить» отклонение от уже известного хорошего решения, чем построить тождественное отображение с нуля через нелинейное преобразование<ref name="he2016"/>. |
| - | + | Возможные теоретические объяснения проблемы включают сложность ландшафта функции потерь с ростом глубины (множество локальных минимумов и седловых точек) и трудность нахождения оптимального решения градиентным спуском за разумное время, даже если оно формально представимо в пространстве параметров сети. | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
== Авторы и мотивация == | == Авторы и мотивация == | ||
| + | '''Кай Хе''' — ведущий автор работы, на момент публикации исследователь 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 предложили упрощённую версию пропускающих соединений: без ворот, без дополнительных параметров, просто аддитивное соединение, что оказалось не только проще, но и эффективнее аналогов. | |
| - | + | == Формальное определение остаточного блока == | |
| + | Пусть <tex>x</tex> — вход блока слоёв, а <tex>F(x, W)</tex> — нелинейное преобразование с параметрами <tex>W</tex>. Остаточный блок вычисляет выход как: | ||
| - | + | : <tex>y = F(x, W) + x</tex> | |
| - | ''' | + | Слои обучаются приближать не всё отображение <tex>H(x)</tex>, а лишь '''остаток''' <tex>F(x, W) = H(x) - x</tex>. Если оптимальным решением является тождественное отображение, оптимизатору достаточно занулить веса <tex>W</tex><ref name="he2016"/>. |
| - | + | === Несовпадающие размерности === | |
| + | Если размерности входа и выхода блока не совпадают (например, после пулинга или изменения числа фильтров), тождественный путь заменяется линейной проекцией <tex>W_s</tex> (свёртка 1×1 с соответствующим шагом): | ||
| - | + | : <tex>y = F(x, W) + W_s x</tex> | |
| - | + | Альтернативный вариант — дополнение входа нулями (zero-padding), не добавляющее параметров. В оригинальной статье оба варианта дали сопоставимые результаты, но проекция оказалась немного лучше<ref name="he2016"/>. | |
| - | + | === Базовый и 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"/>. | ||
| - | + | == Связь с проблемой затухающего градиента == | |
| + | Дифференцируя выход блока <tex>y = F(x, W) + x</tex> по входу: | ||
| - | + | : <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"/>. Оригинальная работа представила пять вариантов разной глубины: | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | = | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | Оригинальная | + | |
{| class="wikitable" style="text-align:center;" | {| class="wikitable" style="text-align:center;" | ||
| - | ! Сеть | + | ! Сеть !! Слои !! Параметры (млн) !! Ошибка ImageNet top-5 (%) |
| - | ! Слои | + | |
| - | ! Параметры (млн) | + | |
| - | ! Ошибка ImageNet | + | |
|- | |- | ||
| - | | ResNet-18 | + | | ResNet-18 || 18 || 11,7 || 10,0 |
| - | | 18 | + | |
| - | | 11 | + | |
| - | | 10 | + | |
|- | |- | ||
| - | | ResNet-34 | + | | ResNet-34 || 34 || 21,8 || 8,3 |
| - | | 34 | + | |
| - | | 21 | + | |
| - | | 8 | + | |
|- | |- | ||
| - | | ResNet-50 | + | | ResNet-50 || 50 || 25,6 || 6,2 |
| - | | 50 | + | |
| - | | 25 | + | |
| - | | 6 | + | |
|- | |- | ||
| - | | ResNet-101 | + | | ResNet-101 || 101 || 44,5 || 5,5 |
| - | | 101 | + | |
| - | | 44 | + | |
| - | | 5 | + | |
|- | |- | ||
| - | | ResNet-152 | + | | ResNet-152 || 152 || 60,2 || 4,9 |
| - | | 152 | + | |
| - | | 60 | + | |
| - | | 4 | + | |
|} | |} | ||
| - | + | Наиболее глубокая протестированная модель — 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. |
| - | + | === Интерпретация как ансамбля путей === | |
| - | + | Андреас Вайт, Майкл Уилбер и Серж Белонджи (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>. Это наблюдение объясняет, почему остаточные сети избегают проблемы затухающего градиента: обучение эффективно опирается на короткие пути, способные переносить градиент, а не на весь путь максимальной глубины. | |
| - | + | ||
| - | + | ||
| - | + | === Плотные связи (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 | + | === Предактивационные блоки и вариации === |
| + | '''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"/>. | ||
| - | + | '''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, стохастическая регуляризация пропускающих соединений). | |
| - | + | === Связь с непрерывной глубиной === | |
| - | + | Формула <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>. | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | === | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | == | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | == | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | === | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
== Применение в других задачах == | == Применение в других задачах == | ||
| + | '''Детекция объектов.''' 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-энкодером. | |
| - | + | '''Обработка естественного языка.''' Идея остаточных соединений применима и к 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 сталкивается с проблемами при экстремальной глубине: | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
== Наследие и влияние == | == Наследие и влияние == | ||
| + | ResNet кардинально изменил подход к проектированию архитектур: skip connections стали стандартным компонентом большинства современных архитектур — трансформеров, U-Net, генеративных и диффузионных моделей. ResNet показал, что проблема оптимизации может быть важнее проблемы представления, сместив фокус исследований на методы улучшения оптимизации, и доказал, что глубина — важный фактор качества, но только при правильном проектировании архитектуры. | ||
| - | + | ResNet стал одной из первых архитектур, для которых были широко распространены предобученные на ImageNet модели, что ускорило развитие [[Перенос обучения|трансферного обучения]], и заложил основы для последующих прорывов: пропускающие соединения в каждом слое трансформера — прямое наследие ResNet; Vision Transformers (2020) применяют остаточные связи между слоями, несмотря на отсутствие свёрток; U-Net с остаточными связями — стандартный backbone для диффузионных моделей; большие мультимодальные foundation-модели используют ResNet-подобные блоки в vision encoder. | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
== См. также == | == См. также == | ||
* [[Свёрточная нейронная сеть]] | * [[Свёрточная нейронная сеть]] | ||
| + | * [[Проблема затухающего градиента]] | ||
| + | * [[Нейронные дифференциальные уравнения]] | ||
| + | * [[Батч-нормализация]] | ||
| + | * [[Обратное распространение ошибки]] | ||
* [[Глубокое обучение]] | * [[Глубокое обучение]] | ||
| - | |||
| - | |||
* [[ImageNet]] | * [[ImageNet]] | ||
* [[AlexNet]] | * [[AlexNet]] | ||
* [[VGGNet]] | * [[VGGNet]] | ||
| - | |||
* [[Трансформер (модель)]] | * [[Трансформер (модель)]] | ||
* [[Перенос обучения]] | * [[Перенос обучения]] | ||
| Строка 430: | Строка 120: | ||
== Литература == | == Литература == | ||
| - | * He K., Zhang X., Ren S., Sun J. Deep Residual Learning for Image Recognition | + | * {{статья |автор=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 | + | * {{статья |автор=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 | + | * {{статья |автор=Srivastava R.K., Greff K., Schmidhuber J. |заглавие=Highway Networks |издание=arXiv preprint |год=2015 |номер=arXiv:1505.00387}} |
| - | * Xie S. | + | * {{статья |автор=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. | + | * {{статья |автор=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}} |
| - | * | + | * {{статья |автор=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 предложили упрощённую версию пропускающих соединений: без ворот, без дополнительных параметров, просто аддитивное соединение, что оказалось не только проще, но и эффективнее аналогов.
Формальное определение остаточного блока
Пусть — вход блока слоёв, а
— нелинейное преобразование с параметрами
. Остаточный блок вычисляет выход как:
Слои обучаются приближать не всё отображение , а лишь остаток
. Если оптимальным решением является тождественное отображение, оптимизатору достаточно занулить веса
[1].
Несовпадающие размерности
Если размерности входа и выхода блока не совпадают (например, после пулинга или изменения числа фильтров), тождественный путь заменяется линейной проекцией (свёртка 1×1 с соответствующим шагом):
Альтернативный вариант — дополнение входа нулями (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].
Связь с проблемой затухающего градиента
Дифференцируя выход блока по входу:
где — единичная матрица. Единица в этом выражении гарантирует, что градиент не исчезнет, даже если
мало. При последовательном применении цепного правила через
остаточных блоков градиент включает слагаемое, проходящее через все блоки без умножения на потенциально малые якобианы
[1]. Это гарантирует, что градиент не обязан затухать даже при очень большом числе блоков, в отличие от обычной сети прямого распространения, где градиент по входу первого слоя равен произведению всех промежуточных якобианов и экспоненциально затухает при типичной норме якобианов меньше единицы[1]. Именно это свойство авторы называют ключевой причиной, по которой сети с сотнями и тысячами остаточных блоков успешно обучаются стандартным градиентным методом, тогда как их безостаточные аналоги той же глубины не обучаются вовсе.
История и практические результаты
Концептуальным предшественником были Highway Networks (Шриваства, Грефф, Шмидхубер, 2015) с обучаемым гейтом (transform gate): , где
— обучаемая гейтирующая функция[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) показали, что сеть из остаточных блоков эквивалентна совокупности из
путей разной длины — от одного (только тождественные переходы) до
(через все нелинейные преобразования). Эти пути ведут себя как ансамбль относительно неглубоких сетей: удаление отдельных блоков после обучения слабо влияет на точность (в отличие от сетей без остаточных связей, таких как 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, стохастическая регуляризация пропускающих соединений).
Связь с непрерывной глубиной
Формула формально совпадает с шагом явного метода Эйлера для дифференциального уравнения
с единичным шагом по времени, если рассматривать глубину сети как «время». Это наблюдение легло в основу переосмысления остаточных сетей как дискретизации непрерывной динамической системы и привело к разработке 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.
См. также
- Свёрточная нейронная сеть
- Проблема затухающего градиента
- Нейронные дифференциальные уравнения
- Батч-нормализация
- Обратное распространение ошибки
- Глубокое обучение
- ImageNet
- AlexNet
- VGGNet
- Трансформер (модель)
- Перенос обучения
Примечания
Литература
- 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 (глубокое обучение).

