Weight initialization is the choice of starting values for a network’s weights before training begins. Training only nudges weights from wherever they start, so a bad start can leave a deep network unable to learn at all.
Two requirements shape every scheme. First, the weights must break symmetry: if two units in a layer start with identical weights, they receive identical gradients and stay identical forever, so the layer behaves like a single unit. Random values fix that. Second, the random values need the right scale. Each layer multiplies its input by its weights; if they are slightly too large, activations and gradients grow layer after layer until they explode, and if slightly too small they shrink until they vanish.
Scaling to the layer
The standard fix is to draw weights with a variance tied to how many inputs a unit has, so the signal keeps roughly the same size as it passes through.
- Xavier (Glorot) initialization balances the number of inputs and outputs of a layer. Glorot and Bengio derived it in 2010 for tanh-like activations.
- He initialization uses a standard deviation of √(2/n) for n inputs, compensating for ReLU zeroing out half its inputs. He et al. used it to train very deep networks from scratch.
Biases are usually just set to zero.
Less fragile than it was
Later techniques made training much less sensitive to the starting point. Normalization layers rescale activations as they flow, and residual connections give gradients a direct path back through the network. Initialization still matters, but it is now one safeguard among several rather than the thing that decides whether a deep network trains.