Пакетная нормализация
Материал из MachineLearning.
| | Статья написана с использованием LLM GPT-4 Turbo и проверена участником Amir Baidanov 02:46, 19 июля 2026 (MSD) |
Пакетная нормализация (Batch Normalization, BatchNorm) — метод нормализации активаций в нейронных сетях, предложенный Сергеем Иоффе и Кристианом Сегеди в 2015 году [1]. BatchNorm выполняет нормализацию выходов каждого слоя по мини-пакету, после чего применяет обучаемые сдвиг и масштабирование. Метод позволил значительно ускорить обучение глубоких сетей, сделав возможным использование высоких скоростей обучения и снизив чувствительность к инициализации весов.
Интуитивная картина
При обучении глубоких нейронных сетей распределения активаций на каждом слое постоянно меняются, поскольку веса предыдущих слоёв обновляются. Это явление, называемое внутренним ковариатным сдвигом, вынуждает следующие слои постоянно адаптироваться к изменяющимся входным распределениям, что замедляет обучение.
Пакетная нормализация решает эту проблему, фиксируя для каждого слоя среднее и дисперсию активаций. Представьте, что вы настраиваете микроскоп: если изображение постоянно дрожит, вам трудно сфокусироваться. Но если вы стабилизируете изображение, настройка становится гораздо проще и быстрее. Аналогично BatchNorm стабилизирует распределения активаций, позволяя сети учиться быстрее.
Кроме того, нормализация сглаживает ландшафт функции потерь, делая его более предсказуемым и позволяя использовать большие шаги градиентного спуска.
Историческая справка
До появления BatchNorm глубокие сети было трудно обучать из-за проблем с затухающими и взрывающимися градиентами. Требовались тщательная инициализация весов [1] и медленные скорости обучения.
В 2015 году Иоффе и Сегеди предложили BatchNorm как решение проблемы внутреннего ковариатного сдвига. Они показали, что нормализация активаций по мини-пакету значительно ускоряет сходимость, позволяет использовать более высокие скорости обучения и даже оказывает регуляризующий эффект, позволяя в некоторых случаях отказаться от дропаута.
Метод быстро стал стандартом в обучении свёрточных нейронных сетей и был использован в архитектурах, установивших новые рекорды в ImageNet (Inception, ResNet).
Математическая постановка
Для каждого мини-пакета размера и для каждого нейрона (или канала) с активациями
алгоритм выполняет следующие шаги:
1. Вычисление статистик по мини-пакету
Среднее:
Дисперсия:
2. Нормализация
где — малая константа (например,
) для численной стабильности.
3. Сдвиг и масштабирование
где и
— обучаемые параметры сдвига и масштабирования, которые позволяют сети восстанавливать исходное распределение, если это необходимо.
Параметры и
обучаются вместе с остальными весами сети с помощью обратного распространения ошибки.
Влияние на процесс обучения
Ускорение сходимости
BatchNorm значительно ускоряет обучение по нескольким причинам:
1. Стабилизация распределений: уменьшается внутренний ковариатный сдвиг, и каждый слой видит более стабильные входные данные. 2. Сглаживание ландшафта: нормализация делает поверхность функции потерь более гладкой, что позволяет использовать большие скорости обучения [1]. 3. Уменьшение зависимости от инициализации: сеть становится менее чувствительной к начальным значениям весов.
Регуляризующий эффект
Шум, вносимый случайностью выбора мини-пакета, действует как регуляризатор, аналогичный дропауту. Исследования показывают, что использование BatchNorm может снизить потребность в дропауте или позволить использовать меньшие коэффициенты регуляризации [1].
Однако важно понимать, что регуляризующий эффект является побочным: при увеличении размера мини-пакета шум уменьшается, и регуляризация ослабевает.
Использование в инференсе
Во время инференса (применения обученной модели) нет мини-пакета для вычисления статистик. Вместо этого используются скользящие средние и
, вычисленные во время обучения:
где — коэффициент затухания (обычно 0.9 или 0.99).
Во время инференса нормализация выполняется с использованием фиксированных статистик:
Важно: во время инференса параметры и
остаются фиксированными.
Практические рекомендации
Расположение в архитектуре
Традиционно BatchNorm применяется перед функцией активации:
→
Однако некоторые исследователи рекомендуют применять нормализацию после активации. На практике оба варианта работают, но стандартом стало применение перед активацией.
Взаимодействие с другими методами
- С дропаутом: поскольку BatchNorm уже оказывает регуляризующий эффект, коэффициент дропаута можно уменьшить;
- С L2-регуляризацией: работает совместно, но может потребовать перенастройки коэффициента регуляризации;
- С инициализацией: снижает чувствительность к выбору метода инициализации.
Выбор размера мини-пакета
BatchNorm чувствителен к размеру мини-пакета: при маленьких размерах (например, 2–8) статистики становятся слишком шумными, что может ухудшить качество. Рекомендуется использовать мини-пакеты размером не менее 16–32 объектов.
Совместимость с архитектурами
- В CNN: нормализация выполняется для каждого канала (независимо для каждого фильтра);
- В MLP: нормализация для каждого нейрона;
- В RNN: применение затруднительно (см. раздел «Ограничения»).
Альтернативные методы нормализации
Layer Normalization
LayerNorm вычисляет статистики для всех активаций в слое для каждого объекта независимо [1]. Не зависит от размера мини-пакета, что делает его предпочтительным для RNN и трансформеров.
Instance Normalization
InstanceNorm применяется для каждого объекта и каждого канала независимо [1]. Широко используется в задачах генерации изображений и переноса стиля.
Group Normalization
GroupNorm — компромисс между LayerNorm и InstanceNorm [1]. Каналы делятся на группы, и нормализация выполняется внутри каждой группы. Эффективен при малых размерах мини-пакетов.
Weight Normalization
WeightNorm нормализует веса, а не активации [1]. Использует параметризацию , где
и
— обучаемые параметры.
Сравнение методов
| Метод | Зависимость от размера пакета | Область нормализации | Основное применение | |-------|------------------------------|---------------------|-------------------| | BatchNorm | Сильная (нужен большой пакет) | По пакету и каналу | CNN | | LayerNorm | Нет | По слою и объекту | RNN, трансформеры | | InstanceNorm | Нет | По объекту и каналу | Стилизация, генерация | | GroupNorm | Слабая | По группе каналов | CNN, малые пакеты |
Ограничения
Зависимость от размера мини-пакета
BatchNorm плохо работает с маленькими мини-пакетами. В задачах с ограниченным числом объектов (медицинская диагностика) или при обучении с очень высоким разрешением (3D-изображения) это становится серьёзной проблемой.
Проблемы с рекуррентными сетями
В RNN длины последовательностей варьируются, и применение BatchNorm затруднено. Хотя существуют модификации для RNN, LayerNorm обычно даёт лучшие результаты.
Поведение при инференсе
При инференсе используется фиксированное среднее и дисперсия, вычисленные на обучающей выборке. Если распределение данных на инференсе отличается от обучающего (сдвиг распределения), это может привести к ухудшению качества.
Отсутствие гарантированного улучшения
BatchNorm не всегда даёт выигрыш в качестве. При обучении очень больших моделей или на очень больших наборах данных эффект может быть менее заметным, а иногда даже отрицательным.
Пример: влияние на распределения активаций
Рассмотрим простую сеть из 5 полносвязных слоёв по 100 нейронов в каждом, обучаемую на данных с нормальным распределением.
Без BatchNorm:
- Активации первых слоёв имеют распределение с небольшим разбросом;
- Активации последних слоёв сильно растягиваются, их значения могут достигать сотен;
- Градиенты в последних слоях становятся очень маленькими или очень большими;
- Обучение требует низкой скорости обучения ().
С BatchNorm:
- Активации всех слоёв имеют распределение близкое к ;
- Градиенты остаются стабильными;
- Можно использовать высокую скорость обучения (
);
- Сеть сходится за 2–3 раза меньше эпох.
Этот пример иллюстрирует ключевое преимущество BatchNorm: стабилизация распределений позволяет обучать сети значительно быстрее.
Краткий вывод
Пакетная нормализация — важный метод, позволивший значительно ускорить обучение глубоких нейронных сетей. Стабилизируя распределения активаций, она снижает зависимость от инициализации, позволяет использовать высокие скорости обучения и оказывает регуляризующий эффект. Однако BatchNorm требует достаточно большого размера мини-пакета и менее эффективна в задачах с переменной длиной последовательностей (RNN) или при маленьких мини-пакетах. Альтернативные методы (LayerNorm, InstanceNorm, GroupNorm) предлагают решения для этих случаев, каждый со своей областью применения.
См. также
- Нормализация данных
- Дропаут
- Регуляризация
- Layer Normalization
- Group Normalization
- Instance Normalization
- Weight Normalization
Примечания
Литература
- Ioffe S., Szegedy C. (2015). Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift. Proceedings of the 32nd International Conference on Machine Learning, 448–456.
- Santurkar S., Tsipras D., Ilyas A., Madry A. (2018). How Does Batch Normalization Help Optimization? Advances in Neural Information Processing Systems, 31: 2488–2498.
- Ba J. L., Kiros J. R., Hinton G. E. (2016). Layer Normalization. arXiv:1607.06450.
- Ulyanov D., Vedaldi A., Lempitsky V. (2016). Instance Normalization: The Missing Ingredient for Fast Stylization. arXiv:1607.08022.
- Wu Y., He K. (2018). Group Normalization. Proceedings of the European Conference on Computer Vision, 3–19.
- Salimans T., Kingma D. P. (2016). Weight Normalization: A Simple Reparameterization to Accelerate Training of Deep Neural Networks. Advances in Neural Information Processing Systems, 29: 901–909.
- Glorot X., Bengio Y. (2010). Understanding the difficulty of training deep feedforward neural networks. Proceedings of the 13th International Conference on Artificial Intelligence and Statistics, 249–256.

