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.