3.2.8 · D5Training Deep Networks
Question bank — Batch normalization
True or false — justify
Each line: a claim, then the verdict with the reasoning that makes it true or false.
True or false: During training, BN normalizes using statistics of the entire training set.
False — during training BN uses only the current mini-batch's mean and variance; the whole-set (running) statistics are reserved for inference.
True or false: The learnable and make BN pointless because they can undo the normalization.
False — they can recover the original scale, but they are learned, and normalization already reshaped the loss landscape and gradient flow before they act. See Optimization and Conditioning of the Loss Surface.
True or false: BN makes a network invariant to the scale of the weights in the layer just below it.
True — if you multiply that layer's weights by a constant, the pre-activation scales by the same constant, but BN's division by cancels it, so the normalized output is unchanged.
True or false: At inference, BN is a nonlinear operation.
False — with fixed running and , BN reduces to a single affine map , which can even be folded into the previous layer's weights.
True or false: Keeping a bias term in right before BN is harmless.
False (redundant) — BN subtracts the mean, cancelling any constant ; the parameter already plays the bias role, so the earlier bias just wastes a parameter.
True or false: BN completely removes internal covariate shift.
False — it reduces the shift in each layer's input distribution but cannot eliminate it, since the running statistics still drift as training proceeds.
True or false: BN provides some regularization even without dropout.
True — because each example is normalized using its random batch-mates, the same input gets slightly different normalized values across batches; this noise acts like a mild regularizer, sometimes reducing the need for Dropout.
True or false: With batch size 1, BN behaves like a well-defined normalizer.
False — a batch of one has variance , so for every input; BN collapses all information and is effectively useless.
True or false: BN uses the biased () variance estimator, not the unbiased () one, in its forward pass.
True — the forward normalization divides the summed squared deviations by ; the unbiased correction is a separate detail used only for the running-variance estimate in some implementations.
True or false: Since BN normalizes activations, weight initialization no longer matters at all.
False — BN makes training far less sensitive to initialization, but pathological inits can still cause problems in un-normalized paths; see Weight Initialization.
Spot the error
Each line states a flawed piece of reasoning; the reveal names the flaw.
"BN sets the layer's output to mean 0 and variance 1, so the output distribution is fixed." — what's wrong?
It confuses with ; the output has mean and variance , which the network learns and which is generally not /.
"We add inside the square root just to make the number bigger." — what's wrong?
is there to prevent division by zero (and stabilize near-zero variance), not to inflate values; it is tiny (e.g. ) precisely so it barely changes normal cases.
"To normalize, divide by the variance ." — what's wrong?
You divide by the standard deviation , not the variance; dividing by variance would give wrong units and would not yield unit variance.
"BN should be placed after the nonlinearity, on the activations, always." — what's wrong?
The original scheme places BN between the linear map and the nonlinearity; the choice is a design decision, not a fixed law, so "always after" is an overstatement.
"At test time we recompute batch statistics from the test batch." — what's wrong?
That would make outputs depend on which other examples happen to share the batch, breaking determinism; inference uses the fixed running statistics learned during training.
"Because , the gradient of the loss w.r.t. equals for a single example." — what's wrong?
is shared across all examples in the batch, so its gradient is the sum , not a single term. See Backpropagation.
"BN adds no parameters to the network." — what's wrong?
It adds two learnable parameters per feature, and ; they are few, but they are real trainable parameters.
Why questions
Why does BN let us use larger learning rates?
By keeping each layer's inputs well-scaled and better-conditioned, gradients point more usefully, so larger steps don't blow activations up or land in saturated regions.
Why not just freeze the statistics to the population values from the start of training?
Early in training the population statistics are unknown and shifting; per-batch statistics adapt automatically and their noise even helps regularize, so freezing too early would hurt both accuracy and stability.
Why does BN help combat vanishing/exploding activations feeding a sigmoid or tanh?
Normalizing keeps pre-activations near a moderate range instead of drifting into the flat saturated tails, where gradients would shrink toward zero. See Vanishing and Exploding Gradients.
Why does the network still have full representational power after forcing mean 0 / variance 1?
Because and can restore any mean and scale — in particular setting , recovers the original activation exactly, so nothing is permanently lost.
Why is BN's per-batch noise sometimes called a "feature, not a bug"?
The stochastic normalization jitters each activation slightly, acting like injected noise that discourages over-reliance on any single unit — a regularizing effect.
Why can BN at inference be folded into the previous layer's weights?
With fixed running statistics it is a constant affine transform; composing two affine maps gives another affine map, so it merges into with zero extra runtime cost.
Edge cases
What does BN output for a batch where every value is identical, e.g. ?
All deviations are zero so and each ; the constant-across-batch information is erased, and only the prevents a .
What happens to BN when the batch size is very small (say 2 or 4)?
The mean/variance estimates become noisy and unreliable, degrading accuracy; in this regime use Layer Normalization or Group Normalization, which do not depend on batch size.
What is the effect on BN if is set exactly to and a batch has zero variance?
You get a genuine division — undefined or NaN — which is exactly the failure exists to prevent.
If learns a value near , what does that unit effectively do?
Its normalized output is squashed to nearly the constant , so the unit contributes almost no input-dependent signal — a soft way for the network to switch a feature off.
At the very first training step, what are the running statistics used for inference if the model were evaluated then?
They are still at their initial values (often mean 0, variance 1) and have barely absorbed any batch statistics, so early-training inference via running stats is unreliable until enough updates accumulate.
What happens conceptually if you apply BN but never update (leave them at )?
Every layer's output is forced to mean 0 / variance 1, which may clash with what a nonlinearity needs; the network loses the freedom to pick its preferred scale, potentially limiting expressiveness.
Recall One-line summary of the traps
Training uses batch stats, inference uses running stats; reshape after normalization already helped; small/constant batches break BN; and always divide by the std, not the variance.