Встречается на собеседованиях • сегодня

Как работает Batch Normalization

Batch Normalization (BN) ускоряет обучение нейросетей, стабилизируя распределение входных данных для каждого слоя. Она нормализует активации по батчу, вычисляя среднее и дисперсию для каждого признака, затем масштабирует и сдвигает их с обучаемыми параметрами γ (масштаб) и β (сдвиг).

Формула:
Для батча ( B = {x_1, ..., x_m} ):

  1. Вычисляем среднее ( \mu_B = \frac{1}{m} \sum_{i=1}^m x_i )
  2. Дисперсию ( \sigma_B^2 = \frac{1}{m} \sum_{i=1}^m (x_i - \mu_B)^2 )
  3. Нормализуем: ( \hat{x}_i = \frac{x_i - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}} )
  4. Масштабируем и сдвигаем: ( y_i = \gamma \hat{x}_i + \beta )

Пример в PyTorch:

python
import torch.nn as nn

model = nn.Sequential(
    nn.Linear(100, 50),
    nn.BatchNorm1d(50),  # Для полносвязных слоев
    nn.ReLU(),
    nn.Linear(50, 10)
)

Плюсы:

  • Уменьшает internal covariate shift.
  • Позволяет использовать больший learning rate.
  • Работает как регуляризация (из-за шума от статистик по батчу).

Минусы:

  • Зависит от размера батча (плохо работает для tiny batches).
  • Усложняет архитектуру (доп. параметры γ и β).

Для inference используют скользящее среднее μ и σ, накопленные во время обучения.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы