Normalization Placement
Normalization placement describes where normalization is applied relative to residual branches. The placement can strongly affect gradient flow, depth scaling, and training stability.
For a residual block with sublayer :
Pre-norm keeps a direct identity path from output to input, while post-norm normalizes the residual sum.
Transformer Block
A pre-norm Transformer block is often written as:
The normalization sits before attention and feed-forward sublayers.
Gradient Path
In a pre-norm block:
the residual stream keeps an unnormalized identity path. In a post-norm block:
the gradient passes through normalization after the residual sum. This can affect depth scaling because normalization changes both the forward activation and the backward Jacobian.
Common Patterns
| Pattern | Form | Typical Reading |
|---|---|---|
| pre-norm | stable for deep sequence models | |
| post-norm | output is normalized after each block | |
| sandwich norm | extra stabilization, extra compute | |
| parallel block | attention and FFN share the same residual input | |
| norm-free or scaled | residual scaling without explicit norm | relies on initialization and scale control |
Comparison Boundary
When comparing architectures, normalization placement is not a minor implementation detail. It changes:
- trainable depth;
- learning-rate tolerance;
- activation scale;
- compatibility with residual scaling;
- whether the baseline has the same stability budget.
If a paper changes both architecture family and norm placement, do not attribute all gains to the family name.
Tradeoffs
- Pre-norm usually improves optimization stability for deep Transformers.
- Post-norm can make layer outputs more uniformly normalized but can be harder to optimize at depth.
- Sandwich or hybrid norms add normalization both before and after sublayers.
- Residual scaling, initialization, and learning-rate schedule interact with placement.
Checks
- Is the block pre-norm, post-norm, sandwich-norm, or another variant?
- Is the normalization LayerNorm, RMSNorm, BatchNorm, or GroupNorm?
- Are residual branches scaled or gated?
- Is the reported architecture comparable to the baseline after changing norm placement?
- Does instability appear as depth increases?
- Is the output before the task head normalized, or only the internal residual stream?
- Are inference-time normalization statistics identical to training-time behavior?