Эвристики для ускорения сходимости: Dropout, ResNet, BatchNorm
Материал из MachineLearning.
| | Статья написана с использованием LLM GPT-4 и проверена участником Artem Mukovnin 22:43, 12 июля 2026 (MSD) |
Эвристики для ускорения сходимости: Dropout, ResNet, BatchNorm — три революционных метода глубокого обучения, появившихся в 2012–2015 годах и решивших фундаментальные проблемы обучения глубоких нейронных сетей. Эти техники позволили преодолеть переобучение, нестабильность градиентов и медленную сходимость, сделав возможным обучение сетей с сотнями и тысячами слоёв.
Dropout, предложенный Джеффри Хинтоном в 2012 году, стал прорывом в области регуляризации. Batch Normalization, разработанная Сергеем Иоффе и Кристианом Сегеди в 2015 году, решила проблему внутренней ковариационной сдвижки. ResNet (Residual Network), представленная Каем Хе и коллегами также в 2015 году, позволила обучать экстремально глубокие архитектуры через пропускающие соединения.
Вместе эти методы обеспечили качественный скачок в возможностях глубокого обучения и стали стандартом де-факто для современных архитектур свёрточных и полносвязных сетей.
Предыстория и проблемы глубокого обучения
К началу 2010-х годов свёрточные сети уже демонстрировали впечатляющие результаты в задачах компьютерного зрения, однако обучение глубоких архитектур сталкивалось с серьёзными препятствиями.
Проблема переобучения. Глубокие сети с миллионами параметров склонны запоминать обучающую выборку вместо выявления общих закономерностей. Это особенно проявлялось на небольших датасетах, где разрыв между точностью на обучении и тесте достигал 20–30%.
Проблема затухания и взрыва градиентов. При обратном распространении ошибки (backpropagation) градиенты либо экспоненциально затухали, делая невозможным обучение ранних слоёв, либо взрывались, вызывая нестабильность оптимизации.
Внутренняя ковариационная сдвижка. Распределение активаций каждого слоя менялось в процессе обучения, так как параметры предыдущих слоёв обновлялись. Это требовало малых темпов обучения и тщательной инициализации.
Низкая скорость сходимости. Обучение глубоких сетей требовало недель и даже месяцев даже на мощных GPU, что затрудняло эксперименты и подбор гиперпараметров.
Именно эти проблемы решили три ключевых метода, появившихся в период с 2012 по 2015 год.
Dropout: регуляризация через случайное отключение
История и мотивация
Dropout (метод отключения нейронов) был предложен группой исследователей под руководством Джеффри Хинтона в 2012 году и опубликован в статье «Dropout: A Simple Way to Prevent Neural Networks from Overfitting» в журнале Journal of Machine Learning Research в 2014 году[1].
Идея возникла из биологической аналогии: половое размножение можно рассматривать как форму «dropout» генов, где каждый потомок получает случайную подмножество генов родителей. Это предотвращает ко-адаптацию генов и повышает устойчивость вида.
Хинтон и его коллеги (Нитив Шривастава, Алекс Крижевский, Илья Суцкевер, Руслан Салахутдинов) показали, что аналогичный механизм работает и в нейронных сетях.
Принцип работы
На каждом шаге обучения:
- Каждый нейрон (кроме выходного слоя) независимо сохраняется с вероятностью p (обычно p=0.5 для полносвязных слоёв) или обнуляется с вероятностью 1-p.
- Прямое распространение выполняется только через активные нейроны.
- При обратном распространении градиенты также передаются только через активные нейроны.
- Во время инференса (тестирования) все нейроны активны, но их выходы умножаются на p (или делятся на p во время обучения — масштабирование инвертированного dropout).
Математически, для слоя с активациями h, dropout создаёт маску r из распределения Бернулли:
- r_j ~ Bernoulli(p)
- h' = r ⊙ h
- y = f(W h' + b)
где — поэлементное умножение, f — функция активации.
Интерпретация как ансамбль
Dropout можно рассматривать как обучение ансамбля из 2^n различных подсетей, где n — число нейронов. На каждом шаге обучается случайная подсеть, а при инференсе используется усреднение предсказаний всех возможных подсетей (приближённо).
Это объясняет высокую обобщающую способность dropout: модель не полагается на какие-то конкретные нейроны, а распределяет знание по всей сети.
Практические рекомендации
- Вероятность сохранения p:
* Для полносвязных слоёв: p = 0.5 (оптимально по результатам экспериментов) * Для свёрточных слоёв: p = 0.8 (меньшее значение, так как свёртки уже обладают некоторой инвариантностью) * Для входного слоя: p = 0.8–0.9
- Размещение: dropout обычно применяется перед последними полносвязными слоями, реже — между свёрточными слоями.
- Комбинация с другими методами: dropout хорошо работает вместе с L2-регуляризацией и аугментацией данных.
Ограничения
- Вычислительная стоимость: обучение с dropout требует в 2–3 раза больше эпох для сходимости, так как на каждом шаге обучается только часть сети.
- Неприменимость к рекуррентным сетям: стандартный dropout плохо работает в RNN из-за накопления шума во времени. Для RNN используют variational dropout или zoneout.
- Интерпретируемость: случайное отключение нейронов затрудняет визуализацию и понимание того, что именно выучила сеть.
Batch Normalization: стабилизация распределения активаций
История и мотивация
Batch Normalization (пакетная нормализация, BatchNorm) была предложена Сергеем Иоффе и Кристианом Сегеди из Google в 2015 году в статье «Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift»[2].
Авторы обратили внимание на проблему внутренней ковариационной сдвижки (internal covariate shift): в процессе обучения распределение активаций каждого слоя меняется, так как параметры предыдущих слоёв обновляются. Это вынуждает каждый слой постоянно адаптироваться к изменяющемуся распределению входных данных, что замедляет обучение.
Идея BatchNorm проста: нормализовать активации каждого слоя так, чтобы они имели нулевое среднее и единичную дисперсию.
Принцип работы
Для каждого мини-батча размера m:
- Вычисляются статистики мини-батча:
- μ_B = (1/m) Σ x_i
- σ²_B = (1/m) Σ (x_i - μ_B)²
- Нормализация:
- x̂_i = (x_i - μ_B) / √(σ²_B + ε)
где ε ≈ 10⁵ для численной стабильности.
- Масштабирующий сдвиг:
- y_i = γ x̂_i + β
где γ и β — обучаемые параметры (размерности как у x), которые позволяют сети при необходимости «отменить» нормализацию.
Во время инференса используются скользящие средние μ и σ², накопленные в процессе обучения, а не статистики текущего батча.
Преимущества
- Более высокий темп обучения. BatchNorm позволяет использовать темпы обучения в 10–30 раз выше без риска расходимости.
- Меньшая чувствительность к инициализации. Сеть становится робастной к выбору начальных весов, что упрощает настройку.
- Регуляризация. Нормализация по мини-батчу добавляет шум (так как статистики вычисляются по подвыборке), что работает как слабая форма регуляризации. В некоторых случаях это позволяет уменьшить или убрать dropout.
- Ускорение сходимости. По данным авторов, обучение ускоряется в 10–15 раз, а количество необходимых эпох сокращается в 2–5 раз.
- Возможность использования насыщающих функций активации. BatchNorm предотвращает застревание в насыщении сигмоиды или тангенса, что ранее было серьёзной проблемой.
Проблемы и ограничения
- Зависимость от размера батча. При малом размере батча (менее 8–16) статистики ненадёжны, что ухудшает качество. При размере батча 1 (онлайн-обучение) BatchNorm неприменим.
- Различие между обучением и инференсом. Необходимость накапливать скользящие средние и переключаться между режимами усложняет реализацию.
- Проблемы в рекуррентных сетях. В RNN распределение активаций меняется во времени, поэтому BatchNorm применяется сложнее. Чаще используется Layer Normalization.
- Непредсказуемое поведение при дообучении. Если дообучать модель с другим размером батча, статистики могут сместиться.
Вариации
После появления BatchNorm было предложено множество альтернатив:
- Layer Normalization (Ba et al., 2016) — нормализация по признакам, а не по батчу; работает в RNN.
- Instance Normalization (Ulyanov et al., 2016) — нормализация каждого примера отдельно; используется в стилизации изображений.
- Group Normalization (Wu & He, 2018) — компромисс между Layer и Batch Norm; не зависит от размера батча.
ResNet: обучение через остаточные функции
История и мотивация
ResNet (Residual Network, остаточная сеть) была представлена Каем Хе, Сяньином Чжаном, Шаоцином Ренем и Цзянь Суном из Microsoft Research в 2015 году в статье «Deep Residual Learning for Image Recognition»[3]. Эта работа получила приз за лучшую статью на конференции CVPR 2016.
Мотивация возникла из парадоксального наблюдения: более глубокие сети показывают худший результат не только на тесте, но и на обучении. Это не могло быть объяснено переобучением или затуханием градиентов (которые решались тщательной инициализацией и BatchNorm).
Авторы предположили, что проблема в оптимизации: многослойным нелинейным сетям трудно обучить тождественное отображение (identity mapping), даже если это оптимальное решение.
Остаточные блоки
Вместо того чтобы обучать функцию H(x), ResNet обучает остаточную функцию:
- F(x) = H(x) - x
Тогда выход блока:
- y = F(x) + x
где x передаётся через пропускающее соединение (skip connection или shortcut connection) напрямую к выходу, минуя один или несколько слоёв.
Если размерности не совпадают (например, из-за пулинга), применяется линейная проекция:
- y = F(x, {W_i}) + W_s x
где W_s — обучаемая матрица (обычно свёртка 1×1).
Почему это работает
Упрощение оптимизации. Если оптимальное решение близко к тождественному отображению, сети легче «обнулить» веса остаточной функции F(x), чем обучить полную функцию H(x) с нуля.
Поток градиентов. Пропускающие соединения создают «шоссе» для градиентов, позволяя им течь без искажений через множество слоёв. Это решает проблему затухания градиентов.
Ансамбль путей. ResNet можно рассматривать как ансамбль из множества путей разной длины (благодаря skip connections), что улучшает обобщающую способность.
Архитектуры ResNet
ResNet-34/50/101/152. Базовые архитектуры с разным числом слоёв. ResNet-34 использует простые блоки (две свёртки 3×3), а ResNet-50 и глубже — «бутылочные» блоки (bottleneck: 1×1, 3×3, 1×1).
ResNet v2. Улучшенная версия (He et al., 2016), где BatchNorm и ReLU применяются перед свёрткой (pre-activation), а не после. Это упрощает поток градиентов и улучшает качество.
Wide ResNet. Увеличение числа каналов при уменьшении глубины (Zagoruyko & Komodakis, 2016) показывает, что ширина иногда важнее глубины.
DenseNet. Развитие идеи: каждый слой соединён со всеми последующими (Huang et al., 2017), что усиливает поток градиентов и признаков.
Практическое применение
ResNet стала стандартом де-факто для задач компьютерного зрения:
- Классификация изображений (ImageNet)
- Детекция объектов (Faster R-CNN, Mask R-CNN)
- Сегментация (U-Net с остаточными блоками)
- Сверхразрешение (SRResNet)
Предобученные модели ResNet (особенно ResNet-50 и ResNet-101) широко используются для трансферного обучения в самых разных задачах.
Сравнение методов
| Метод | Год | Авторы | Основная проблема | Механизм | Где применяется |
|---|---|---|---|---|---|
| Dropout | 2012 | Хинтон и др. | Переобучение | Случайное отключение нейронов | Перед полносвязными слоями |
| BatchNorm | 2015 | Иоффе и Сегеди | Нестабильность распределения | Нормализация по мини-батчу | После свёртки/линейного слоя |
| ResNet | 2015 | Хе и др. | Затухание градиентов, деградация | Пропускающие соединения | Глубокие архитектуры (>20 слоёв) |
Комбинирование методов
В современных архитектурах все три техники используются вместе:
Типичный блок современной CNN: Conv → BatchNorm → ReLU → Conv → BatchNorm → ReLU → [Dropout] → [Skip connection]
Где:
- BatchNorm стабилизирует обучение
- ReLU обеспечивает нелинейность
- Dropout (опционально) снижает переобучение
- Skip connection (в ResNet) обеспечивает поток градиентов
Рекомендации по комбинации: 1. BatchNorm + Dropout: если используется BatchNorm, dropout можно ослабить (p=0.2–0.3) или убрать, так как BatchNorm уже даёт некоторую регуляризацию. 2. ResNet + BatchNorm: обязательная комбинация; BatchNorm обычно ставится перед активацией (ResNet v2). 3. Все три метода: в очень глубоких сетях (>100 слоёв) с большим числом параметров.
Критика и ограничения
Несмотря на успех, каждый из методов имеет фундаментальные ограничения:
Dropout
- Неэффективен в свёрточных сетях. В CNN dropout даёт меньший выигрыш, чем в полносвязных сетях, так как свёртки уже обладают пространственной инвариантностью.
- Замедляет обучение. Требуется в 2–3 раза больше эпох.
- Неприменим в RNN. Стандартный dropout нарушает временные зависимости.
BatchNorm
- Зависимость от батча. При малом размере батча или онлайн-обучении метод неработоспособен.
- Проблемы в RNN. Нормализация последовательностей переменной длины сложна.
- Различие train/test. Усложняет развёртывание и дообучение.
ResNet
- Усложнение архитектуры. Пропускающие соединения требуют согласования размерностей.
- Не всегда нужен. Для неглубоких сетей (<20 слоёв) выгода минимальна.
- Память. Skip connections увеличивают потребление памяти при обучении.
Наследие и влияние
Эти три метода кардинально изменили ландшафт глубокого обучения:
- ImageNet 2012–2015. Победа AlexNet (2012) с dropout, а затем ResNet (2015) с ошибкой 3.57% (ниже человеческого уровня) показали мощь комбинации методов.
- Стандартизация. BatchNorm и ResNet стали обязательными компонентами большинства архитектур; dropout — опциональным, но рекомендуемым.
- Возможность обучения очень глубоких сетей. До 2015 года сети глубже 10–20 слоёв считались непрактичными; после ResNet стали обычными архитектуры с 100–1000 слоями.
- Новые направления. Успех этих методов породил волну исследований: DenseNet, Highway Networks, LayerNorm, GroupNorm и десятки других вариаций.
См. также
- Глубокое обучение
- Свёрточная нейронная сеть
- Регуляризация
- Переобучение
- Алгоритм обратного распространения ошибки
- Инициализация весов
- ImageNet
- AlexNet
Примечания
↑ Hinton G. et al. Dropout: A Simple Way to Prevent Neural Networks from Overfitting // JMLR. — 2014. — Т. 15. — № 1. — С. 1929–1958. ↑ Ioffe S., Szegedy C. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift // ICML. — 2015. — С. 448–456. ↑ He K. et al. Deep Residual Learning for Image Recognition // CVPR. — 2016. — С. 770–778.
Литература
- Goodfellow I., Bengio Y., Courville A. Deep Learning. — MIT Press, 2016. — ISBN 978-0-262-03561-3 — Главы 7 (регуляризация), 8 (оптимизация), 9 (свёрточные сети).
- Russell S., Norvig P. Artificial Intelligence: A Modern Approach. — 4th ed. — Pearson, 2020. — ISBN 978-0-13-461099-3 — Глава 21 (глубокое обучение).
- Srivastava N. et al. Dropout: A Simple Way to Prevent Neural Networks from Overfitting // JMLR. — 2014. — Т. 15. — С. 1929–1958.
- Ioffe S., Szegedy C. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift // ICML. — 2015. — С. 448–456.
- He K. et al. Deep Residual Learning for Image Recognition // CVPR. — 2016. — С. 770–778.
- He K. et al. Identity Mappings in Deep Residual Networks // ECCV. — 2016. — С. 630–645.

