Take the simplest loss, f(x) = x², whose slope is 2x. One step of gradient descent is x_new = x − lr·2x = (1 − 2·lr)·x. Every step multiplies x by the same factor, so the whole story lives in that factor.
- |1 − 2·lr| < 1 → the distance shrinks every step: convergence. That means 0 < lr < 1.
- lr = 0.5 → factor 0. You land exactly on the minimum in one step: the “perfect” rate for this bowl.
- lr = 1 → factor −1. x flips sign forever, bouncing between the two walls at the same height.
- lr > 1 → |factor| > 1. Every bounce lands higher: divergence.
start x = 1, f(x) = x²
lr = 0.1 : factor 0.8 → 1, 0.8, 0.64, 0.512, 0.410 … (shrinking)
lr = 0.9 : factor −0.8 → 1, −0.8, 0.64, −0.512, 0.410 … (oscillating, shrinking)
lr = 1.0 : factor −1 → 1, −1, 1, −1, 1 … (oscillating forever)
lr = 1.1 : factor −1.2 → 1, −1.2, 1.44, −1.728, 2.074 … (growing: diverges)
Second worked example — curvature changes the limit. Take f(x) = 2x², slope 4x. One step is x_new = (1 − 4·lr)·x, so the safe range halves: 0 < lr < 0.5.
lr = 0.1 → factor 0.6 → 1, 0.6, 0.36, 0.216 … (slower than on x²)
lr = 0.25 → factor 0 → one step to 0
lr = 0.5 → factor −1 → 1, −1, 1, −1 … (oscillates forever)
lr = 0.6 → factor −1.4 → 1, −1.4, 1.96, −2.744 … (diverges)
same learning rates, twice the curvature → half the safe limit.
This is the deepest practical fact about learning rates: the steepest direction of a loss sets the largest safe step, not the average direction. That is why narrow valleys are hard — a step safe for the steep walls is tiny along the long floor.