Skip to content
Rainbow docs menu

Reference · Algorithm guarantees

rainbow.algorithms.proofs.nesterov

Algorithm guaranteessrc/rainbow/algorithms/proofs/nesterov.clj4 definitions, 4 theorems

Nesterov accelerated momentum over signed rationals with pair-valued state. Nesterov differs from Polyak momentum by evaluating the gradient at a look-ahead point `x + beta * v` rather than at `x`: the velocity update is `v' = beta * v - rate * gradient(x + beta * v)` and the position moves `x' = x + v'`. When the gradient depends on position the look-ahead genuinely changes the trajectory. This wraps the momentum pair-state engine (AHoF O20) with the look-ahead evaluation. Scope (measured by the kernel): this module has 4 definitional unfoldings (true by unfolding a definition). None of its theorems is a guarantee about the algorithm for all inputs; `lein verify rainbow.algorithms.proofs.nesterov` prints this classification.

optimization/nesterov-lookahead

DefinitionSource, line 69

optimization/nesterov-lookahead :
  (beta : ℚ≥0) (x v : ℚ)
  → ℚ

ℚ = signed/SignedRationalℚ≥0 = nnrat/NonnegativeRational

optimization/nesterov-velocity

DefinitionSource, line 75

optimization/nesterov-velocity :
  (beta rate : ℚ≥0) (gradient : ℚ → ℚ≥0) (x v : ℚ)
  → ℚ

ℚ = signed/SignedRationalℚ≥0 = nnrat/NonnegativeRational

optimization/nesterov-step

DefinitionSource, line 92

optimization/nesterov-step :
  (beta rate : ℚ≥0) (gradient : ℚ → ℚ≥0) (s : data/Product ℚ ℚ)
  → data/Product ℚ ℚ

ℚ = signed/SignedRationalℚ≥0 = nnrat/NonnegativeRational

optimization/nesterov-iterate

DefinitionSource, line 107

optimization/nesterov-iterate :
  (beta rate : ℚ≥0) (gradient : ℚ → ℚ≥0) (x₁ : ℕ) (x₂ : data/Product ℚ ℚ)
  → data/Product ℚ ℚ

ℕ = data/Natℚ = signed/SignedRationalℚ≥0 = nnrat/NonnegativeRational

optimization/nesterov-lookahead-unfold

TheoremHolds by unfolding a definitionNo axiomsSource, line 130

optimization/nesterov-lookahead-unfold :
  (beta : ℚ≥0) (x v : ℚ)
  → optimization/nesterov-lookahead beta x v = x + signed/scale beta v

+ = signed/add= = equality/Eqℚ = signed/SignedRationalℚ≥0 = nnrat/NonnegativeRational

optimization/nesterov-velocity-unfold

TheoremHolds by unfolding a definitionNo axiomsSource, line 141

optimization/nesterov-velocity-unfold :
  (beta rate : ℚ≥0) (gradient : ℚ → ℚ≥0) (x v : ℚ)
  → optimization/nesterov-velocity beta rate gradient x v = signed/scale beta v - signed/from-nnrat (rate · gradient (optimization/nesterov-lookahead beta x v))

- = signed/subtract= = equality/Eq· = nnrat/multiplyℚ = signed/SignedRationalℚ≥0 = nnrat/NonnegativeRational

optimization/nesterov-step-unfold

TheoremHolds by unfolding a definitionNo axiomsSource, line 165

optimization/nesterov-step-unfold :
  (beta rate : ℚ≥0) (gradient : ℚ → ℚ≥0) (s : data/Product ℚ ℚ)
  → optimization/nesterov-step beta rate gradient s = data/pair ℚ ℚ (product/first ℚ ℚ s + velocity) (velocity)
  where velocity := optimization/nesterov-velocity beta rate gradient (product/first ℚ ℚ s) (product/second ℚ ℚ s)

+ = signed/add= = equality/Eqℚ = signed/SignedRationalℚ≥0 = nnrat/NonnegativeRational

optimization/nesterov-iterate-zero

TheoremHolds by unfolding a definitionNo axiomsSource, line 186

optimization/nesterov-iterate-zero :
  (beta rate : ℚ≥0) (gradient : ℚ → ℚ≥0) (initial : data/Product ℚ ℚ)
  → optimization/nesterov-iterate beta rate gradient 0 initial = initial

= = equality/Eqℚ = signed/SignedRationalℚ≥0 = nnrat/NonnegativeRational