Theorem 3.18, p. 290 — Nesterov's method on an α-strongly convex β-smooth f: f(y_t) − f(x*) ≤ ((α + β)/2)‖x₁ − x*‖² exp(−(t − 1)/√κ)
OpenConvexOptAlg.NesterovStrong.theorem_3_18Let be -strongly convex and -smooth, with and condition number , and let be a minimizer of . Nesterov's accelerated gradient descent starts at an arbitrary point and iterates, for ,
Then for every ,
Projected gradient descent with step on the same class contracts at the rate (Theorem 3.10); the accelerated method replaces by in the exponent, which matches the lower bound of Theorem 3.15 for black-box first-order methods up to constants.
Formalization Note is EuclideanSpace ℝ (Fin n), is a map g with HasGradientAt f (g x) x at every point (inside IsBetaSmooth), and -strong convexity is the published StronglyConvexOn Set.univ f g α, i.e. (3.13). The existence of is the book's standing assumption (p. 242). The hypotheses and make and meaningful; (indeed ) is implied by the other hypotheses when . The statement holds for every run, i.e. every starting point.
import Mathlib import Definitions.Def_OnlineConvexOpt_ConvexBasics_StronglyConvexOn import Definitions.Def_ConvexOptAlg_NesterovStrong_Defs open scoped InnerProductSpace
namespace ConvexOptAlg.NesterovStrong
/-- Bubeck, Theorem 3.18, p. 290: let `f : ℝⁿ → ℝ` be `α`-strongly convex and `β`-smooth
(gradient map `g`, `κ = β/α`), with minimizer `x*`. Then every run `(x, y)` of Nesterov's
accelerated gradient descent satisfies, for every `t ≥ 1`,
`f(y_t) − f(x*) ≤ ((α + β)/2)‖x₁ − x*‖² exp(−(t − 1)/√κ)`. -/
theorem theorem_3_18 {n : ℕ} (f : EuclideanSpace ℝ (Fin n) → ℝ)
(g : EuclideanSpace ℝ (Fin n) → EuclideanSpace ℝ (Fin n)) (α β : ℝ)
(hα : 0 < α) (hβ : 0 < β)
(hsc : OnlineConvexOpt.ConvexBasics.StronglyConvexOn Set.univ f g α)
(hsm : IsBetaSmooth f g β)
(xstar : EuclideanSpace ℝ (Fin n)) (hmin : ∀ z, f xstar ≤ f z)
(x y : ℕ → EuclideanSpace ℝ (Fin n)) (hrun : IsNesterovSCRun g α β x y)
(t : ℕ) (ht : 1 ≤ t) :
f (y t) - f xstar ≤
(α + β) / 2 * ‖x 1 - xstar‖ ^ 2 * Real.exp (-(((t : ℝ) - 1) / Real.sqrt (kappa α β))) := by sorry
end ConvexOptAlg.NesterovStrong