Батч-нормализация
Материал из MachineLearning.
| | Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Daria Makeeva 01:30, 17 июля 2026 (MSD) |
Батч-нормализация (англ. batch normalization, BatchNorm) — метод регуляризации и ускорения обучения глубоких нейронных сетей, основанный на нормализации активаций промежуточных слоёв по статистикам (среднему и дисперсии), вычисленным внутри мини-батча обучающих примеров. Метод предложен Сергеем Иоффе и Кристианом Сегеди в 2015 году и стал одним из наиболее широко применяемых приёмов стабилизации обучения глубоких сетей[1].
Интуитивное объяснение проблемы
По мере обучения глубокой сети параметры каждого слоя постоянно меняются, а значит, меняется и распределение значений, поступающих на вход следующего слоя — даже если распределение исходных обучающих данных остаётся неизменным. Авторы метода назвали это явление внутренним ковариационным сдвигом (internal covariate shift): каждый слой должен непрерывно «подстраиваться» под меняющееся распределение своих входов, что замедляет и усложняет обучение, особенно при использовании насыщающихся функций активации и высоких скоростей обучения[1].
Интуитивно ситуацию можно сравнить с попыткой попасть в постоянно перемещающуюся цель: если распределение входов слоя постоянно «дрейфует» из-за обновления весов предыдущих слоёв, оптимизатору приходится не только находить хорошие веса для текущего слоя, но и без конца компенсировать этот дрейф. Батч-нормализация решает эту проблему напрямую: активации каждого слоя явно приводятся к фиксированному распределению (нулевое среднее, единичная дисперсия) на каждом шаге обучения, независимо от того, как изменились веса предыдущих слоёв.
Формальное определение
Пусть — мини-батч значений некоторой активации (одного нейрона или одного канала свёрточного слоя) размера
. Батч-нормализация вычисляет выборочное среднее и дисперсию по батчу:
и нормализует каждое значение:
где — малая константа, предотвращающая деление на ноль. Наконец, нормализованное значение подвергается обучаемому афинному преобразованию:
где (масштаб) и
(сдвиг) — параметры, обучаемые совместно с остальными весами сети методом обратного распространения ошибки[1]. Роль этих параметров принципиальна: без них слой был бы вынужден всегда выдавать активации с нулевым средним и единичной дисперсией, что ограничивало бы выразительность сети. Параметры
и
позволяют сети самой выучить, нужна ли строгая нормализация — если оптимальным решением является исходное распределение активаций, сеть может настроить
и
, фактически отменив нормализацию[1].
Обучение и инференс
На этапе обучения статистики и
пересчитываются заново для каждого мини-батча, что делает выход слоя зависящим не только от текущего примера, но и от остальных примеров в батче — этот эффект также действует как форма регуляризации, слегка зашумляя активации на каждом шаге обучения[1].
На этапе инференса (применения обученной модели) такой подход неприменим: модель должна давать детерминированный результат для одного примера, а состав «батча» может быть произвольным или отсутствовать вовсе. Поэтому во время обучения параллельно накапливаются скользящие средние (running statistics) статистик по всем виденным батчам:
где — коэффициент экспоненциального сглаживания. На этапе инференса нормализация выполняется с использованием этих накопленных статистик
,
вместо статистик текущего батча, что делает преобразование детерминированным и не зависящим от других примеров[1].
Связь с проблемой затухающего и взрывающегося градиента
Батч-нормализация тесно связана с проблемой затухающего градиента (vanishing gradient problem). Насыщающиеся функции активации, такие как сигмоида и гиперболический тангенс, имеют производную, близкую к нулю при больших по модулю значениях входа; если активации слоя дрейфуют в область насыщения, производные становятся исчезающе малыми, и градиент, умножаясь на них при обратном распространении ошибки, затухает по мере прохождения через слои. Явно удерживая распределение активаций центрированным около нуля с единичной дисперсией, батч-нормализация удерживает бо́льшую часть значений в области, где производная функции активации далека от нуля, что ослабляет как затухание, так и потенциальный неконтролируемый рост градиента при обратном распространении[1]. Кроме того, авторы отмечали, что батч-нормализация делает сеть более устойчивой к масштабу весов: при масштабировании весов слоя на константу выход нормализующего преобразования не меняется, что стабилизирует величину градиента по параметрам и позволяет использовать более высокие скорости обучения без риска расходимости[1].
История и пересмотр объяснения эффективности
Иоффе и Сегеди представили батч-нормализацию на конференции ICML 2015, объяснив её эффективность именно уменьшением внутреннего ковариационного сдвига: по их гипотезе, стабилизация распределения входов каждого слоя позволяет использовать значительно более высокие скорости обучения и снижает зависимость результата от точной схемы инициализации весов, при этом ускоряя сходимость сетей на порядок по числу шагов обучения по сравнению с сетями без батч-нормализации[1].
Спустя три года это объяснение подверглось существенному пересмотру. Сантуркар, Циприс, Ильяс и Мадри (2018) экспериментально показали, что степень внутреннего ковариационного сдвига в сетях с батч-нормализацией и без неё практически не различается, то есть уменьшение ковариационного сдвига не может служить основной причиной успеха метода. Авторы предложили альтернативное объяснение: батч-нормализация делает ландшафт функции потерь значительно более гладким — уменьшает константу Липшица функции потерь и её градиента по направлению обучения, — что делает поведение градиента более предсказуемым и позволяет использовать бо́льшие шаги обучения без потери устойчивости[1]. Таким образом, современное понимание механизма действия батч-нормализации основано в первую очередь на сглаживании оптимизационного ландшафта, а не на устранении ковариационного сдвига, как предполагалось изначально.
Практические аспекты и зависимость от размера батча
Поскольку статистики и
вычисляются как выборочные оценки по конечному мини-батчу, качество этих оценок напрямую зависит от размера батча
. При малых значениях
(например, 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].
См. также
- Проблема затухающего градиента
- Остаточные связи
- Свёрточная нейронная сеть
- Рекуррентная нейронная сеть
- ReLU
- Обратное распространение ошибки
Примечания
Литература
- 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.

