Батч-нормализация

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

Перейти к: навигация, поиск
Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Daria Makeeva 01:30, 17 июля 2026 (MSD)


Содержание

Батч-нормализация (англ. batch normalization, BatchNorm) — метод регуляризации и ускорения обучения глубоких нейронных сетей, основанный на нормализации активаций промежуточных слоёв по статистикам (среднему и дисперсии), вычисленным внутри мини-батча обучающих примеров. Метод предложен Сергеем Иоффе и Кристианом Сегеди в 2015 году и стал одним из наиболее широко применяемых приёмов стабилизации обучения глубоких сетей[1].

Интуитивное объяснение проблемы

По мере обучения глубокой сети параметры каждого слоя постоянно меняются, а значит, меняется и распределение значений, поступающих на вход следующего слоя — даже если распределение исходных обучающих данных остаётся неизменным. Авторы метода назвали это явление внутренним ковариационным сдвигом (internal covariate shift): каждый слой должен непрерывно «подстраиваться» под меняющееся распределение своих входов, что замедляет и усложняет обучение, особенно при использовании насыщающихся функций активации и высоких скоростей обучения[1].

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

Формальное определение

Пусть \mathcal{B} = \{x_1, \dots, x_m\} — мини-батч значений некоторой активации (одного нейрона или одного канала свёрточного слоя) размера m. Батч-нормализация вычисляет выборочное среднее и дисперсию по батчу:

\mu_{\mathcal{B}} = \frac{1}{m}\sum_{i=1}^{m} x_i, \qquad \sigma^2_{\mathcal{B}} = \frac{1}{m}\sum_{i=1}^{m} (x_i - \mu_{\mathcal{B}})^2

и нормализует каждое значение:

\hat{x}_i = \frac{x_i - \mu_{\mathcal{B}}}{\sqrt{\sigma^2_{\mathcal{B}} + \varepsilon}}

где \varepsilon > 0 — малая константа, предотвращающая деление на ноль. Наконец, нормализованное значение подвергается обучаемому афинному преобразованию:

y_i = \gamma \hat{x}_i + \beta

где \gamma (масштаб) и \beta (сдвиг) — параметры, обучаемые совместно с остальными весами сети методом обратного распространения ошибки[1]. Роль этих параметров принципиальна: без них слой был бы вынужден всегда выдавать активации с нулевым средним и единичной дисперсией, что ограничивало бы выразительность сети. Параметры \gamma и \beta позволяют сети самой выучить, нужна ли строгая нормализация — если оптимальным решением является исходное распределение активаций, сеть может настроить \gamma \approx \sigma_{\mathcal{B}} и \beta \approx \mu_{\mathcal{B}}, фактически отменив нормализацию[1].

Обучение и инференс

На этапе обучения статистики \mu_{\mathcal{B}} и \sigma^2_{\mathcal{B}} пересчитываются заново для каждого мини-батча, что делает выход слоя зависящим не только от текущего примера, но и от остальных примеров в батче — этот эффект также действует как форма регуляризации, слегка зашумляя активации на каждом шаге обучения[1].

На этапе инференса (применения обученной модели) такой подход неприменим: модель должна давать детерминированный результат для одного примера, а состав «батча» может быть произвольным или отсутствовать вовсе. Поэтому во время обучения параллельно накапливаются скользящие средние (running statistics) статистик по всем виденным батчам:

\mu_{\text{run}} \leftarrow (1-\alpha)\,\mu_{\text{run}} + \alpha\, \mu_{\mathcal{B}}, \qquad \sigma^2_{\text{run}} \leftarrow (1-\alpha)\,\sigma^2_{\text{run}} + \alpha\, \sigma^2_{\mathcal{B}}

где \alpha — коэффициент экспоненциального сглаживания. На этапе инференса нормализация выполняется с использованием этих накопленных статистик \mu_{\text{run}}, \sigma^2_{\text{run}} вместо статистик текущего батча, что делает преобразование детерминированным и не зависящим от других примеров[1].

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

Батч-нормализация тесно связана с проблемой затухающего градиента (vanishing gradient problem). Насыщающиеся функции активации, такие как сигмоида и гиперболический тангенс, имеют производную, близкую к нулю при больших по модулю значениях входа; если активации слоя дрейфуют в область насыщения, производные становятся исчезающе малыми, и градиент, умножаясь на них при обратном распространении ошибки, затухает по мере прохождения через слои. Явно удерживая распределение активаций центрированным около нуля с единичной дисперсией, батч-нормализация удерживает бо́льшую часть значений в области, где производная функции активации далека от нуля, что ослабляет как затухание, так и потенциальный неконтролируемый рост градиента при обратном распространении[1]. Кроме того, авторы отмечали, что батч-нормализация делает сеть более устойчивой к масштабу весов: при масштабировании весов слоя на константу выход нормализующего преобразования не меняется, что стабилизирует величину градиента по параметрам и позволяет использовать более высокие скорости обучения без риска расходимости[1].

История и пересмотр объяснения эффективности

Иоффе и Сегеди представили батч-нормализацию на конференции ICML 2015, объяснив её эффективность именно уменьшением внутреннего ковариационного сдвига: по их гипотезе, стабилизация распределения входов каждого слоя позволяет использовать значительно более высокие скорости обучения и снижает зависимость результата от точной схемы инициализации весов, при этом ускоряя сходимость сетей на порядок по числу шагов обучения по сравнению с сетями без батч-нормализации[1].

Спустя три года это объяснение подверглось существенному пересмотру. Сантуркар, Циприс, Ильяс и Мадри (2018) экспериментально показали, что степень внутреннего ковариационного сдвига в сетях с батч-нормализацией и без неё практически не различается, то есть уменьшение ковариационного сдвига не может служить основной причиной успеха метода. Авторы предложили альтернативное объяснение: батч-нормализация делает ландшафт функции потерь значительно более гладким — уменьшает константу Липшица функции потерь и её градиента по направлению обучения, — что делает поведение градиента более предсказуемым и позволяет использовать бо́льшие шаги обучения без потери устойчивости[1]. Таким образом, современное понимание механизма действия батч-нормализации основано в первую очередь на сглаживании оптимизационного ландшафта, а не на устранении ковариационного сдвига, как предполагалось изначально.

Практические аспекты и зависимость от размера батча

Поскольку статистики \mu_{\mathcal{B}} и \sigma^2_{\mathcal{B}} вычисляются как выборочные оценки по конечному мини-батчу, качество этих оценок напрямую зависит от размера батча m. При малых значениях m (например, 2–4 примера) оценки среднего и дисперсии становятся шумными и нестабильными от шага к шагу, что ухудшает качество обучения и итоговую точность модели; этот эффект особенно заметен в задачах, где большой размер батча невозможен по памяти — например, при обучении на изображениях высокого разрешения или трёхмерных данных[1]. Кроме того, батч-нормализация плохо сочетается с рекуррентными нейронными сетями, поскольку статистики приходится вычислять и хранить отдельно для каждого временного шага, а длина последовательностей в батче может различаться[1].

Альтернативные виды нормализации

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

Сравнение методов нормализации активаций
Метод По каким осям усредняются статистики Типичная область применения
Batch normalization По batch-измерению, отдельно для каждого канала Свёрточные сети с достаточно большим батчем[1]
Layer normalization По всем каналам/признакам одного примера, независимо от батча Рекуррентные сети, трансформеры — не зависит от размера батча[1]
Instance normalization По пространственным измерениям (высота, ширина) отдельно для каждого канала и каждого примера Перенос стиля изображений (style transfer), генеративные модели изображений[1]
Group normalization По пространственным измерениям и подгруппе каналов, независимо от батча Сети с малым размером батча (детекция, сегментация, видео)[1]

Layer normalization нормализует активации по всем признакам одного примера (а не по батчу), что делает её результат не зависящим от размера батча и позволяет применять один и тот же расчёт как на этапе обучения, так и на этапе инференса без накопления скользящих статистик[1]. Instance normalization была предложена для задач переноса стиля и нормализует каждый канал каждого отдельного изображения независимо, что убирает информацию о контрасте конкретного изображения, мешающую переносу стиля[1]. Group normalization занимает промежуточное положение: каналы разбиваются на группы, и статистики вычисляются внутри каждой группы для каждого отдельного примера — при этом group normalization переходит в layer normalization, если число групп равно 1, и в instance normalization, если число групп равно числу каналов; авторы показали, что этот метод даёт заметно лучшую точность, чем batch normalization, при очень малых размерах батча (например, при батче из двух примеров ошибка ResNet-50 на ImageNet снижается на 10,6 процентных пункта)[1].

См. также

Примечания

Литература

  • Ioffe S., Szegedy C. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift // Proceedings of the 32nd International Conference on Machine Learning (ICML). — 2015. — Т. 37. — С. 448–456.
  • Santurkar S., Tsipras D., Ilyas A., Madry A. How Does Batch Normalization Help Optimization? // Advances in Neural Information Processing Systems (NeurIPS). — 2018. — Т. 31. — № arXiv:1805.11604.
  • Ba J.L., Kiros J.R., Hinton G.E. Layer Normalization // arXiv preprint. — 2016. — № arXiv:1607.06450.
  • Ulyanov D., Vedaldi A., Lempitsky V. Instance Normalization: The Missing Ingredient for Fast Stylization // arXiv preprint. — 2016. — № arXiv:1607.08022.
  • Wu Y., He K. Group Normalization // Proceedings of the European Conference on Computer Vision (ECCV). — 2018. — С. 3–19.
Личные инструменты