Convergence Rates
Rates name how fast error shrinks: halving the leftovers, dividing by steps, or squaring the accuracy. The name predicts your compute budget.
Why Does This Exist?
"Gradient descent converges" promises nothing about Friday. Sublinear needs 1,000,000 steps for ; linear needs 20; quadratic needs 5. The rate is the budget, and picking Newton versus gradient without it is gambling.
Rates classify error recursions: sublinear -ish, linear , superlinear , quadratic . They assume the smooth setup in calculus optimization and explain the variants in gradient descent variants.
The one idea you need first
Error e_k = f(x_k) - f^\\star (or \\|x_k - x^\\star\\|) tracked per iteration. Strong convexity () plus smoothness () gives linear gradient descent with ; bare convexity gives ; Newton near a regular root gives quadratic.
Think of It Like This
Draining three tubs
Sublinear tub drains through a straw that narrows as it empties: fast at first, endless at the end. Linear tub drains a fixed fraction per minute: predictable halves. Quadratic tub doubles its drain width each minute: a few gulps and dry.
Condition number is the tub shape: stretched tubs drain linearly but slowly. Where it stops: tubs are deterministic, while stochastic drains add noise floors that no rate outruns without variance fixes.
How It Actually Works
Gradient descent on -smooth convex: f(x_k) - f^\\star \\leq \\|x_0-x^\\star\\|^2/(2\\alpha k), sublinear. Add -strong convexity: linear with per step ( steps per digit). Accelerated gradient lifts smooth convex to . Newton: quadratic once inside the basin (), e.g. . Lower bounds certify tightness: no first-order method beats on smooth convex generally.
Worked example
Target . Sublinear : steps. Linear : , so 20 steps. Quadratic from with : , 3 steps past the start. Gradient descent on (, ) with : exact in 1 step, the degenerate best case of linear with .
Code
import math
print(math.ceil(1 / 1e-6)) # -> 1000000 sublinearprint(math.ceil(math.log(1e-6, 0.5))) # -> 20 lineare = 0.1for i in range(4): e = e**2 # quadraticprint(f"{e:.0e}") # -> 1e-08 after 3 squaringsThree tiny computations budget three regimes. Quote them before choosing the optimizer.
Watch Out For
Expecting linear rates without strong convexity
Plain convex (logistic without regularization, Lasso) gives sublinear theory, yet teams budget linear and declare stall at . The algorithm is fine; the geometry never promised more.
Add strong convexity (regularize), accelerate (), or budget sublinear. If error falls like , the theory already told you.
Quoting quadratic from outside the basin
Newton far from the root diverges or cycles; quadratic starts only inside a neighborhood that shrinks with nonlinearity. Damped phases precede it, and skipping them explodes.
Globalize (line search, trust region) then enjoy local quadratic. If Newton jumps wildly, you are outside, not broken.
The Quick Version
- Sublinear : smooth convex default; 1M steps per .
- Linear : needs strong convexity; 20 steps at .
- Quadratic : Newton inside the basin; 3 squarings from 0.1 past target.
- Acceleration lifts smooth convex to ; nothing first-order beats it generally.
- Condition number sets linear speed; regularize or precondition stretched bowls.
- Stochastic noise floors need variance reduction before rates apply.