Every normalization scheme, and when to use it
Batch, layer, and RMSNorm -- three ways to keep a deep network's activations in a stable range, sorted by what each one actually normalizes over.
The schemes differ in exactly one thing: which set of numbers they average over to compute a mean and variance. Batch normalization averages across the examples in a minibatch, which makes it depend on batch size and unreliable with a batch of one -- a poor fit for sequence models and small-batch fine-tuning, and it needs a running average to behave consistently at inference time. Layer normalization averages across a single example's own features instead, so it works identically whether the batch has one example or a thousand -- the classic default inside a Transformer block. RMSNorm drops the mean-centering step entirely and normalizes only by root-mean-square magnitude, trading a small amount of expressiveness for a real speedup -- the choice behind most modern large language models. None of these replace careful initialization; Xavier and He initialization set the starting point these schemes then keep in range as training proceeds.
Where the problem starts
Getting the start right
Keeping every later layer in range, and choosing one
Example
Example
Term
RMSNorm
Example