Назад к подготовке

BatchNorm на обучении и инференсе

Зачем используют BatchNorm? Как он работает во время training и чем поведение отличается на inference?

Ответить самому

Сначала сформулируйте ответ как на собеседовании, затем откройте разбор и оцените себя.

Загрузка

Короткий ответ

BatchNorm нормализует activations по batch statistics, затем применяет обучаемые gamma/beta. На training он считает mean/variance по текущему mini-batch и обновляет running statistics; на inference использует замороженные running mean/variance.

Полный разбор

BatchNorm помогает оптимизации: стабилизирует распределения activations и часто позволяет использовать больший learning rate. Для каждого channel слой вычитает mean, делит на standard deviation плюс epsilon, затем применяет обучаемые scale и shift - gamma и beta.

На training mean и variance считаются по текущему mini-batch, а running estimates обновляются с momentum. Gamma и beta обучаются через backpropagation как обычные differentiable parameters.

На inference batch может быть маленьким или нерепрезентативным, поэтому слой использует накопленные running mean и running variance. Практический bug - забыть переключить модель в eval mode: тогда BatchNorm и dropout будут вести себя как на training.

Теория

У BatchNorm есть trainable affine parameters и non-trainable running statistics; mode switching меняет, какие statistics используются.

Типичные ошибки

  • Забывать running mean и variance.
  • Говорить, что gamma/beta задаются руками, а не обучаются.
  • Запускать inference в training mode.

Как отвечать на собеседовании

  • Упомяните epsilon, gamma/beta и running stats.
  • Назовите eval mode как production detail.