A lecture series · Revised July 2026
Before there was a transformer, there was a decade of hard-won answers to a narrower question: how do you make a network with many layers actually train? Convolutions that share weights, gates that stop gradients from vanishing, optimizers that adapt per parameter, and tricks with no elegant theory behind them that simply, empirically, worked. This series is the machinery the sibling tracks assume you already have.
Scroll slowly ↓
Depth is not free. Every architecture and every training trick in this series exists because a naive deep network — more layers, no other changes — gets strictly worse, and someone had to find out precisely why.Convolution answered "why should every patch of pixels re-learn the same filter." LSTMs answered "why does a network forget the beginning of a long sequence." Adam and batch norm answered "why is this loss surface so hostile to plain gradient descent." None of these questions has a clean closed-form proof the way the Machine Learning Foundations track's derivations do — this is a series of empirical fixes to empirical failures, and knowing the failure is how you understand the fix.
Stacking more layers should only ever help. In practice, past a point, it makes training actively worse — not from overfitting, but from optimisation itself breaking down.
A network that processes a sequence one step at a time has to carry everything relevant in a fixed-size state — and naive versions forget almost immediately.
A deep network's loss surface is not the friendly bowl a introductory gradient-descent example promises. Plain SGD alone rarely reaches a good answer.