Source reading · arXiv:1801.06146 · Howard and Ruder 2018 · one paper read closely, with every dial it specifies made live
In 2018, fine-tuning a pretrained language model for NLP mostly didn't work: the model either overfit or forgot what pretraining taught it. ULMFiT showed that the idea was fine; the recipe was missing. This page is that recipe, with every dial live.
This is a source reading, not a survey of transfer learning. One paper is the anchor, and the page's job is to keep what it measured separate from the shapes drawn here to explain it. Every figure carries a tier badge saying which of the two you are looking at.
Howard J, Ruder S. 2018. Universal Language Model Fine-tuning for Text Classification. ACL 2018, 328 to 339. arXiv:1801.06146 · doi:10.18653/v1/P18-1031
Reported a number the paper measured and printed in a table. Checkable against the source.
Recomputed drawn here from equations and defaults the paper states. The rule is the paper's, the arithmetic is this page's.
Sketched shape only, chosen to make a mechanism visible. Not measured, and there is no table behind it.
Click a stage. The same stack of layers gets reused all the way through; only what feeds it and which layers are allowed to change differ. Hover any layer for what it does right now.
Each one is small. Together they stop catastrophic forgetting on tiny datasets and still converge fast on big ones. The ablations further down show what happens when you drop any of them.
Lower layers hold general knowledge (syntax, common words); upper layers hold task-specific stuff. So don't move them equally. Pick a learning rate for the top layer, then divide by 2.6 for each layer below.
The 2.6 was found empirically by tuning only the last layer first, then setting ηl-1 = ηl/2.6. Drag to feel how quickly the embeddings become nearly frozen.
A short, steep climb to the peak (10% of training), then a long, slow slide down. The fast start gets the model into the right region; the long decay refines without wrecking anything.
Hover the curve to read the rate at any step. Toggle cosine annealing to see the competitor that won on large data but lost on small.
Unfreeze the top layer, train one epoch. Unfreeze the next one down, train again. Keep going until everything is thawed, then train to convergence. The layers with the most general knowledge are exposed last and least.
This is what the epoch buttons in stage c above are doing. Unlike chain-thaw, thawed layers stay thawed.
The signal in a review is usually a few words, anywhere in it. Reading only the final hidden state throws that away. The classifier instead sees three views of the whole document, concatenated. Hover each.
Validation error, lower is better. The story changes with dataset size: pick one. Hover a row for what that method means.
Fine-tune everything at once and validation error bottoms out early, then climbs as pretrained knowledge is overwritten. ULMFiT starts slower (only the head is training) but keeps improving into late epochs.
Test error against the prior state of the art on six datasets, using one plain LSTM and identical hyperparameters everywhere. Hover a bar for the model.
The paper is unusual in giving every number. Here they are, plus what survived into the transformer era.