В современной индустрии глубокого обучения метод пакетной нормализации (Batch Normalization) долгое время оставался золотым стандартом для стабилизации тренировки нейросетей. Однако при переходе к распределенным вычислениям и работе со специфическими тяжелыми данными его эффективность резко падает. Известный ИИ-исследователь Янник Кильхер (Yannic Kilcher) разобрал статью инженеров Facebook AI Research, предложивших альтернативное решение — Group Normalization.
📉 Проблема масштабирования: почему ломается Batch Normalization 0:13
Классическое машинное обучение и глубокие нейросети работают значительно стабильнее, если входные данные предварительно центрированы и масштабированы. Процесс нормализации сдвигает распределение к началу координат и масштабирует оси так, чтобы данные напоминали многомерное гауссово распределение с единичной дисперсией. Подобный шаг существенно улучшает прохождение сигналов через слои и ускоряет сходимость оптимизаторов.
Метод Batch Normalization (BatchNorm) выполняет эту операцию на каждом слое прямо во время обучения. Для вычисления точного среднего значения и дисперсии алгоритму теоретически требуется весь датасет. На практике эти параметры оцениваются по мини-батчу (пакету данных), и чем больше размер батча, тем точнее оценка.
Проблемы начинаются при переходе к распределенному обучению на множестве машин или TPU. В таких сценариях огромный общий батч дробится между вычислительными узлами (воркерами) на мини-батчи, размер которых может опускаться до 8, 2 или даже 1 экземпляра на устройство.
По словам Кильхера, это особенно актуально для ресурсоемких задач:
- Обработка длинных текстов в моделях вроде BERT;
- Анализ длинных последовательностей аудиосигналов;
- Классификация и сегментация видео высокого разрешения.
Попытка рассчитать среднее значение для выборки из одного или двух элементов приводит к колоссальным ошибкам аппроксимации. У разработчиков остается два неэффективных пути: либо мириться с неточными статистиками, либо синхронизировать данные между всеми GPU на каждом слое, что критически замедляет процесс обучения. На графиках ошибок для архитектуры ResNet-50 на датасете ImageNet четко видно, как при снижении размера батча с 32 до 2 изображений на воркер точность модели с BatchNorm катастрофически падает.
🧩 Альтернативные подходы: LayerNorm и InstanceNorm 9:08
Чтобы избавиться от жесткой зависимости от размера пакета, исследователи ранее создали методы нормализации, работающие внутри одного конкретного объекта данных. Чтобы понять их различие, Янник Кильхер предлагает представить тензор данных как куб со следующими измерениями:
- $N$ — размер батча (количество независимых точек данных);
- $C$ — количество каналов (независимые карты признаков, создаваемые ядрами свертки);
- $H$ и $W$ — пространственные координаты (высота и ширина карты признаков).
Традиционный BatchNorm берет один канал и вычисляет статистики по всему батчу $N$ и пространству $H \times W$. Альтернативные методы меняют плоскость среза:
- Layer Normalization (LayerNorm): работает с каждым объектом выборки индивидуально, полностью убирая зависимость от батча. Метод вычисляет единое среднее значение и дисперсию по всем пикселям и абсолютно всем каналам слоя для данного изображения. По мнению Кильхера, такой подход выглядит излишне радикальным, поскольку он усредняет совершенно разные по своей природе признаки.
- Instance Normalization (InstanceNorm): действует прямо противоположным образом. Он изолирует не только объект, но и каждый канал в нем. Нормализация происходит строго в рамках плоскости $H \times W$ одного канала для одной картинки. В результате, например, красный, зеленый и синий каналы нормализуются независимо друг от друга.
Главный недостаток InstanceNorm, как отмечает ведущий, заключается в том, что он собирает слишком мало статистических данных (только пиксели одного канала), из-за чего оценки получаются шумными. Кроме того, из-за своей специфики InstanceNorm принципиально неприменим в полносвязных сетях.
🤝 Суть Group Normalization: баланс между каналами и батчами 17:17
Метод Group Normalization (GroupNorm), разработанный в Facebook AI Research, представляет собой компромисс между LayerNorm и InstanceNorm. Авторы статьи утверждают, что фичи внутри нейросети не являются абсолютно независимыми.
В качестве примера Кильхер приводит классические сверточные фильтры: распределение активаций горизонтального и вертикального детекторов границ в естественных изображениях будет примерно одинаковым по масштабу и дисперсии. Следовательно, фильтры можно объединять в группы, которые по своей природе имеют схожее поведение признаков.
GroupNorm устроен следующим образом:
- Все каналы слоя делятся на фиксированное количество групп ($G$);
- Статистики (среднее и дисперсия) считаются внутри каждой группы по всем ее каналам и пространственным координатам $H \times W$;
- Нормализация выполняется независимо для каждого объекта в батче.
Такая конфигурация позволяет собирать достаточное количество статистических данных (в отличие от InstanceNorm), но при этом сохранять уникальные масштабы для разных типов признаков (в отличие от LayerNorm). Поскольку деление происходит априори (в начале обучения каналы делятся механически по принципу соседства), архитектура сама вынуждает нейросеть группировать схожие фичи в процессе оптимизации.
💻 Реализация в коде и отказ от скользящих средних 21:28
Одним из ключевых преимуществ Group Normalization является простота его математической интеграции. В коде TensorFlow операция сводится к минимальным манипуляциям с формой тензоров.
Процесс состоит из следующих шагов:
- Тензор размерности $C$ разделяется на два новых измерения: количество групп и индекс внутри группы.
- По полученным осям группы и пространства вычисляются среднее и дисперсия, после чего выполняется стандартное центрирование и деление на среднеквадратичное отклонение.
- Тензор возвращается к исходной форме $(N, C, H, W)$.
Важное инженерное преимущество GroupNorm перед BatchNorm заключается в полном отказе от скользящих средних (running averages). Пакетной нормализации необходимо постоянно отслеживать глобальные средние значения во время тренировки, чтобы затем использовать их на этапе валидации и тестирования. Это вынуждает разработчиков строго разграничивать режимы работы модели.
С GroupNorm эта проблема исчезает: расчет происходит изолированно для каждого входящего примера. Операция становится нативной частью архитектуры, через нее свободно протекает обратное распространение ошибки, а поведение модели в процессе обучения и инференса остается абсолютно идентичным.
📊 Результаты тестов и критика нового гиперпараметра 22:48
Эксперименты авторов статьи показывают, что в стандартных условиях (при батче в 32 изображения на одну GPU) GroupNorm демонстрирует точность, сопоставимую с классическим BatchNorm. На этапе обучения GroupNorm порой показывает даже меньшую ошибку, хотя на валидации BatchNorm сохраняет символическое преимущество. Тем не менее, GroupNorm значительно превосходит показатели LayerNorm и InstanceNorm.
Настоящее преимущество метода раскрывается в режиме экстремально малых пакетов. При снижении объема данных до 2 изображений на процессор точность BatchNorm катастрофически падает. В то же время график ошибки GroupNorm остается абсолютно плоским и стабильным, доказывая независимость от размера батча. Метод также успешно решает проблему расхождения внутренних карт признаков, эффективно стандартизируя сигналы по мере продвижения по слоям сети.
Единственным серьезным минусом GroupNorm Янник Кильхер называет появление нового гиперпараметра — количества групп ($G$). Введение подобных параметров усложняет настройку сети. Влияние параметра $G$ наглядно иллюстрируют пограничные случаи:
- Если установить количество групп равным единице ($G=1$), GroupNorm превращается в LayerNorm, что ведет к ухудшению результатов;
- Если выделить под каждый канал свою группу ($G=C$), метод вырождается в InstanceNorm, что также негативно сказывается на качестве;
- Оптимальным «сладким пятном» (sweet spot), согласно исследованию, является фиксированное значение в 32 группы.
Кильхер выражает надежду, что со временем значение 32 станет универсальной константой, которую инженеры перестанут менять (по аналогии с коэффициентом $\beta_2$ в оптимизаторе Adam), что избавит от необходимости долгого подбора параметров. Подводя итог, ведущий рекомендует обязательно рассматривать Group Normalization в любых распределенных проектах и задачах со сверхтяжелыми данными — таких как детекция объектов, сегментация изображений или классификация видеороликов.