Dropout
Randomly switching off neurons during training — the technique that defined an era of deep learning and has quietly disappeared from modern architectures.
When not to use it
- In modern transformers, by default. They use very little or none, and large models often train with zero.
- On large datasets. It addresses overfitting, and overfitting isn't your constraint.
- Alongside batch normalization, carelessly. The variance shift between training and inference can make the pair worse than either.
- On convolutional layers, naively. Spatial correlation means dropping individual activations achieves little.
Reach for something else instead
- More data — the thing dropout was substituting for.
- Weight decay — covers much of the same ground and interacts better with modern architectures.
- Data augmentation — usually more effective on vision.
- Early stopping — free.
- Layer normalization — what modern architectures use instead.
Dropout randomly switches off neurons during training.
At each training step, dropout randomly deactivates a fraction of neurons, so the network can't lean on any single one and must learn redundant, robust features. It's like training a slightly different smaller network each time and averaging them — a cheap, powerful defence against overfitting. At test time all neurons are back on.
Further reading
- Srivastava et al. (2014), Dropout: A Simple Way to Prevent Neural Networks from Overfitting — the paper, and the ensemble story.
- Li et al. (2019), Understanding the Disharmony between Dropout and Batch Normalization by Variance Shift — why the two together can hurt.
- Gal & Ghahramani (2016), Dropout as a Bayesian Approximation — MC Dropout; the reinterpretation, and it's contested.
Primary sources, listed so you can check the claims on this page rather than take them on trust.
Where people go wrong
- Forgetting
model.eval(). Dropout stays on at inference and your model is randomly, non-deterministically worse. - Using 0.5 in a transformer because it was the classic default. It's for fully-connected layers on small data.
- Stacking it with batch normalization without knowing about the variance shift.
- Repeating the ensemble explanation as established. It's exact only for linear models and it survives because it's memorable.
At a glance
model.eval()Often compared with
Where this sits
A destination. 8 concepts lead here, and nothing in the corpus depends on it.
Computed from the prerequisite graph, not assigned. How this works