Weight Initialization

1 min read

Wrong initialization causes vanishing or exploding gradients before training even begins.

The problem: if weights are too large, activations saturate or explode. Too small, signals vanish through layers.

Xavier/Glorot initialization (for sigmoid/tanh):

WN(0,2din+dout)orU(6din+dout,6din+dout)W \sim \mathcal{N}\left(0, \frac{2}{d_\text{in} + d_\text{out}}\right) \quad \text{or} \quad \mathcal{U}\left(-\sqrt{\frac{6}{d_\text{in}+d_\text{out}}}, \sqrt{\frac{6}{d_\text{in}+d_\text{out}}}\right)
  • Preserves variance of activations and gradients through layers
  • Derived by requiring Var(output)=Var(input)\text{Var}(\text{output}) = \text{Var}(\text{input})

Kaiming/He initialization (for ReLU):

WN(0,2din)W \sim \mathcal{N}\left(0, \frac{2}{d_\text{in}}\right)
  • Accounts for ReLU zeroing out half the activations (factor of 2)
  • Default for ReLU networks

Biases: typically initialized to zero.

Why this matters:

  • A 50-layer network with Var(W)=1\text{Var}(W) = 1 would have activations 250\sim 2^{50} or 250\sim 2^{-50} — unusable
  • Correct initialization keeps the "signal" flowing through the network
  • Batch Normalization and Residual Connections provide additional stabilization

See also: Backpropagation, Activation Functions

Linked from