Зачем нужна нормализация
Вопрос
Объясните, зачем в нейросетях нужна нормализация, чем отличаются BatchNorm и LayerNorm и где какую использовать.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Стабилизирует масштаб активаций, позволяет больший lr, ускоряет обучение
BatchNorm: по батчу для каждого канала, разное поведение train и eval
LayerNorm: по признакам каждого объекта, не зависит от батча
BatchNorm в CNN с нормальным батчем, LayerNorm и RMSNorm в трансформерах и RNN
Ловушки: model.eval(), маленький батч, GroupNorm
Что могут спросить следом
- Почему BatchNorm считали способом борьбы с internal covariate shift и что думают сейчас?
- Как BatchNorm ведёт себя при fine-tuning на маленьком датасете?
Разбор
Без нормализации масштаб активаций дрейфует от слоя к слою и по ходу обучения, из-за чего нужен маленький lr и аккуратная инициализация. Нормализация приводит активации к стандартному масштабу, а обучаемые γ и β возвращают сети гибкость. Обучение ускоряется, можно брать больший lr; есть и лёгкий регуляризующий эффект. BatchNorm нормирует каждый канал по объектам батча; на обучении использует статистики батча, на инференсе накопленные, поэтому критично вызывать model.eval(). Он хорош в CNN с батчем от 16-32, но страдает на маленьких батчах и последовательностях. LayerNorm нормирует признаки каждого объекта и ведёт себя одинаково в обоих режимах, поэтому это стандарт трансформеров, а в современных LLM его облегчённая версия RMSNorm. При маленьком батче в CV помогают GroupNorm или SyncBatchNorm. Исходное объяснение через internal covariate shift сейчас считают неполным: важнее, что нормализация сглаживает ландшафт потерь.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.