dropout regularization
**Dropout** — a regularization technique that randomly deactivates neurons during training, forcing the network to learn redundant representations and reducing overfitting.
**How It Works**
- During training: Each neuron is set to zero with probability $p$ (typically 0.1–0.5)
- During inference: All neurons are active, but outputs are scaled by $(1-p)$ to compensate
- Effect: The network can't rely on any single neuron — must learn distributed, robust features
**Why It Works**
- Approximate ensemble: Each training step uses a different sub-network. Dropout is like training $2^n$ networks simultaneously
- Prevents co-adaptation: Neurons can't learn to depend on specific partners
**Variants**
- **Standard Dropout**: Applied to fully connected layers
- **Spatial Dropout (Dropout2D)**: Drops entire feature maps in CNNs (more effective than per-pixel)
- **DropConnect**: Drops weights instead of activations
- **DropPath/Stochastic Depth**: Drops entire residual blocks (used in Vision Transformers)
**Practical Tips**
- Typically $p=0.5$ for hidden layers, $p=0.1$–$0.2$ for input layers
- Don't use with Batch Normalization (they conflict — BN already regularizes)
- Always disable during evaluation: `model.eval()` in PyTorch
**Dropout** remains one of the most effective and widely-used regularization techniques despite its simplicity.