Reference · Algorithm guarantees
rainbow.algorithms.proofs.noisy-descent
AHoF O38 Noisy Descent: the WRAP pattern that perturbs a base descent step with additive noise. Given whatever step a base optimizer produced, the noisy wrapper adds a perturbation vector: wrapped = step + noise This is a finite-vector addition; the base step and the noise draw are the wrapped optimizer's and the sampler's concern (executable), and the textbook Gaussian perturbation is supplied as a concrete vector in the worked instance. What is proved here is the wrap recurrence and worked instances. Scope (measured by the kernel): this module has 2 worked instances (statements about specific values) and 1 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.noisy-descent` prints this classification.
noisy/wrap
noisy/wrap : (x₁ x₂ : List ℚ) → List ℚ
List = data/Listℚ = signed/SignedRational
noisy/wrap-unfold
noisy/wrap-unfold : (step noise : List ℚ) → noisy/wrap step noise = vector/add step noise
= = equality/EqList = data/Listℚ = signed/SignedRational
noisy/wrap-example
noisy/wrap-example : → noisy/wrap [signed/from-nnrat 1, signed/from-nnrat 2] [signed/from-nnrat 1, signed/from-nnrat 1] = [signed/from-nnrat 2, signed/from-nnrat 3]
= = equality/Eq
noisy/wrap-3d-example
noisy/wrap-3d-example : → noisy/wrap [signed/from-nnrat 1, signed/from-nnrat 2, signed/from-nnrat 3] [signed/from-nnrat 1, signed/from-nnrat 1, signed/from-nnrat 1] = [signed/from-nnrat 2, signed/from-nnrat 3, signed/from-nnrat 4]
= = equality/Eq