Почему LayerNorm применяется по последней размерности, а не по батчу?
Ответ от нейросети
sobes.tech AI
LayerNorm применяется по последней размерности (обычно по признакам внутри одного примера), а не по батчу, потому что его задача — нормализовать активации внутри каждого отдельного объекта, а не между объектами в батче. В трансформерах и других моделях с последовательностями это помогает стабилизировать и ускорить обучение, так как нормализация происходит по признакам каждого токена независимо от других примеров в батче.
Если нормализовать по батчу (как в BatchNorm), то при изменении размера батча или при использовании батчей с разной статистикой это может привести к нестабильности и ухудшению качества. LayerNorm же работает независимо от размера батча, что особенно важно для NLP-задач и трансформеров, где батчи могут быть разного размера или даже равны 1.
Пример: если у нас тензор с размерностью [batch_size, seq_len, features], LayerNorm обычно применяется по размерности features для каждого элемента последовательности и каждого примера отдельно.