# ResNet: Как skip-connections спасли глубокое обучение от деградации

Источник: https://www.youtube.com/watch?v=GWt6Fu05voI
Канал: Yannic Kilcher
Опубликовано: 14.07.2020

---

В 2015 году мир компьютерного зрения претерпел фундаментальный сдвиг. На конференции CVPR была представлена работа, которая не только выиграла конкурс ImageNet с огромным отрывом, но и ввела архитектурное решение, ставшее стандартом для всей индустрии глубокого обучения. Ведущий канала и исследователь Янник Килчер (Yannic Kilcher) анализирует культовую статью «Deep Residual Learning for Image Recognition», объясняя, как концепция «остаточного обучения» позволила преодолеть барьеры при создании сверхглубоких нейросетей.

## 💥 Конец эпохи гигантов: проблема деградации глубоких сетей
[[JUMP:00:00]]

До появления архитектуры ResNet в сообществе исследователей искусственного интеллекта господствовало убеждение: чем глубже сеть, тем выше её точность [01:07]. После успеха AlexNet и VGG-сетей инженеры соревновались в количестве слоев, надеясь на автоматическое улучшение качества распознавания. Однако индустрия быстро уперлась в потолок.

Главной проблемой стало не переобучение (overfitting), как можно было бы ожидать, а странный феномен «деградации». Эксперименты показывали, что при увеличении глубины сети (например, с 20 до 56 слоев) ошибка на обучающей выборке начинала расти [02:18]. Это означало, что глубокие архитектуры банально не удавалось оптимизировать.

Янник Килчер отмечает важный логический парадокс из статьи:

*   Если у нас есть неглубокая сеть (20 слоев), которая показывает хорошие результаты, мы всегда можем создать 56-слойную сеть, просто добавив к исходной 36 «пустых» (identity) слоев, которые ничего не меняют [06:30].
*   Такая конструкция по определению должна работать не хуже оригинала.
*   Тот факт, что реальные глубокие сети работали хуже, доказывал: градиентному спуску крайне тяжело просто «ничего не делать» и поддерживать тождественное отображение сигнала [07:12].

## 🧠 От «нуля» к «тождеству»: суть residual-подхода
[[JUMP:08:53]]

Фундаментальная идея авторов статьи (Kaiming He и соавторов) заключалась в смене «точки отсчета» для каждого слоя. В классических сетях слой пытается выучить полную трансформацию $H(x)$. По мнению Янника Килчера, это сложно, так как стандартная инициализация весов и регуляризация (weight decay) толкают нейроны к выдаче нулевого результата [08:07].

Решение ResNet — заставить слой учить только «разницу» (residual) между входом и выходом.

1.  **Skip-connections (пропуски слоев):** Сигнал $x$ передается в обход весовых слоев и суммируется с их результатом [10:38].
2.  **Новая цель:** Теперь весовые слои вычисляют функцию $F(x) = H(x) - x$.
3.  **Преимущество:** Если слою не нужно ничего менять, он просто зануляет свои веса, и сигнал проходит дальше без искажений через skip-connection [11:18]. Таким образом, «функцией по умолчанию» для сети становится тождественное отображение (identity function).

Это архитектурное решение позволило сигналу (и градиенту при обратном распространении ошибки) беспрепятственно «путешествовать» по сети, независимо от её глубины [14:31].

## 📊 VGG против ResNet: меньше параметров, больше слоев
[[JUMP:12:11]]

В статье проводится детальное сравнение новой архитектуры с популярным на тот момент стандартом VGG-19.

*   **Сложность вычислений:** VGG-19 требовал 19,6 млрд операций (flops) за проход. ResNet-34, будучи почти в два раза глубже, потреблял всего 3,6 млрд флопсов [12:51].
*   **Стратегия масштабирования:** Вместо массивных сверточных слоев ResNet использует цепочку более легких блоков. Янник поясняет, что глубокие слои постепенно выделяют всё более абстрактные признаки (формы, объекты), и для этого не обязательно иметь огромное количество фильтров в каждом слое [04:41].
*   **Решение проблемы размерности:** Когда разрешение картинки уменьшается, а количество фильтров растет, авторы используют 1x1 свертки для коррекции размерности в skip-connections (вариант B в статье), что стало индустриальным стандартом [16:38].

## 🏆 Рекорды ImageNet и 1200 слоев безумия
[[JUMP:22:16]]

Результаты применения ResNet шокировали сообщество в 2015 году. Сеть глубиной в 152 слоя показала точность, ранее считавшуюся невозможной [22:43].

*   **Ансамбль моделей:** Победившая на ImageNet 2015 модель использовала ансамбль различных ResNet-архитектур.
*   **Узкое место (Bottleneck):** Для очень глубоких сетей (от 50 слоев) авторы ввели «bottleneck-блоки», где размерность сначала сжимается 1x1 сверткой, обрабатывается 3x3 сверткой и расширяется обратно [24:07]. Это позволило радикально экономить вычислительные ресурсы.
*   **Предел глубины:** Исследователи попытались обучить сеть из 1202 слоев на датасете CIFAR-10 [25:54]. Интересно, что ошибка на обучении упала почти до нуля, но ошибка на тесте начала расти. Это подтвердило, что проблема «необучаемости» глубоких сетей решена: теперь главным ограничением стало классическое переобучение, а не архитектурные дефекты [27:44].

## 🔬 Научный метод как искусство
[[JUMP:28:18]]

В завершение обзора Янник Килчер подчеркивает образцовое качество самой научной работы. Статья не просто предлагает «хак», который работает, а последовательно доказывает гипотезу.

*   **Анализ отклика слоев:** Авторы проверили, действительно ли слои в ResNet учат «меньше», чем в обычных сетях. Измерения амплитуды сигналов подтвердили: в остаточных сетях изменения, вносимые каждым слоем, значительно меньше, чем в «плоских» (plain) сетях [29:53]. Это доказывает, что identity-функция действительно выполняет основную работу по передаче сигнала.

Янник резюмирует, что ResNet сегодня везде: от классификации изображений до трансформеров (LLM) [01:20]. Несмотря на почтенный возраст, это одна из немногих статей, которую он рекомендует читать в оригинале из-за ясности изложения и безупречной методологии [30:46].