Расскажите про Batch Normalization: что это такое и зачем нужно?
Ответ от нейросети
sobes.tech AI
Batch Normalization — это техника нормализации входов каждого слоя нейронной сети по мини-батчу во время обучения. Она помогает стабилизировать и ускорить процесс обучения, уменьшая проблему внутреннего ковариатного сдвига (internal covariate shift), когда распределение входных данных для каждого слоя меняется по мере обновления параметров предыдущих слоев.
Основная идея — для каждого мини-батча вычислить среднее и дисперсию активаций, затем нормализовать их, а после применить масштабирование и сдвиг с обучаемыми параметрами. Это позволяет сети быстрее сходиться и часто улучшает качество модели.
Пример на PyTorch:
import torch
import torch.nn as nn
# BatchNorm для 2D данных (например, изображений)
bn = nn.BatchNorm2d(num_features=64)
# Входной тензор с размерностью (batch_size, channels, height, width)
x = torch.randn(32, 64, 28, 28)
# Применение BatchNorm
output = bn(x)
Batch Normalization также действует как регуляризатор, снижая необходимость в других методах, например, Dropout.