Что такое BatchNorm?
Ответ от нейросети
sobes.tech AI
BatchNorm (Batch Normalization) — это метод нормализации входных данных слоя нейронной сети по мини-батчу во время обучения. Он помогает ускорить и стабилизировать процесс обучения глубоких нейронных сетей, уменьшая проблему внутреннего смещения распределения (internal covariate shift).
Основная идея — для каждого признака в мини-батче вычислить среднее и стандартное отклонение, затем нормализовать данные, а после применить масштабирование и смещение с обучаемыми параметрами:
$$\hat{x} = \frac{x - \mu_{batch}}{\sqrt{\sigma_{batch}^2 + \epsilon}}$$ $$y = \gamma \hat{x} + \beta$$
где $\mu_{batch}$ и $\sigma_{batch}^2$ — среднее и дисперсия по батчу, $\gamma$ и $\beta$ — параметры масштаба и смещения, обучаемые вместе с сетью.
BatchNorm помогает:
- Ускорить сходимость обучения
- Позволяет использовать большие значения learning rate
- Снижает необходимость в других формах регуляризации
Пример использования в PyTorch:
import torch
import torch.nn as nn
batch_norm = nn.BatchNorm1d(num_features=100) # для 1D данных с 100 признаками
input = torch.randn(32, 100) # батч из 32 примеров
output = batch_norm(input)
Таким образом, BatchNorm — важный инструмент для улучшения качества и скорости обучения нейросетей.