Cyclic Proximal Point
The Cyclic Proximal Point (CPP) algorithm is a Proximal Problem.
It aims to minimize
assuming that the proximal maps $\operatorname{prox}_{\lambda f_i}(x)$ are given in closed form or can be computed efficiently (at least approximately).
The algorithm then cycles through these proximal maps, where the type of cycle might differ and the proximal parameter $\lambda_k$ changes after each cycle $k$.
For a convergence result on Hadamard manifolds see [Bačák, 2014].
Manopt.cyclic_proximal_point — Functioncyclic_proximal_point(M, F, proxes, x)perform a cyclic proximal point algorithm.
Input
M– a manifold $\mathcal M$F– a cost function $F\colon\mathcal M\to\mathbb R$ to minimizeproxes– an Array of proximal maps (Functions)(λ,x) -> yfor the summands of $F$x– an initial value $x ∈ \mathcal M$
Optional
the default values are given in brackets
evaluation_order– (:Linear) – whether to use a randomly permuted sequence (:FixedRandom), a per cycle permuted sequence (Random) or the default linear one.λ– (iter -> 1/iter) a function returning the (square summable but not summable) sequence of λistopping_criterion– (StopWhenAny(StopAfterIteration(5000),StopWhenChangeLess(10.0^-8))) aStoppingCriterion.return_options– (false) – if actiavated, the extended result, i.e. the completeOptionsare returned. This can be used to access recorded values. If set to false (default) just the optimal valuex_optif returned
and the ones that are passed to decorate_options for decorators.
Output
x_opt– the resulting (approximately critical) point of gradientDescent
OR
options- the options returned by the solver (seereturn_options)
Manopt.cyclic_proximal_point! — Functioncyclic_proximal_point!(M, F, proxes, x)perform a cyclic proximal point algorithm in place of x.
Input
M– a manifold $\mathcal M$F– a cost function $F\colon\mathcal M\to\mathbb R$ to minimizeproxes– an Array of proximal maps (Functions)(λ,x) -> yfor the summands of $F$x– an initial value $x ∈ \mathcal M$
for all options, see cyclic_proximal_point.
Manopt.CyclicProximalPointOptions — TypeCyclicProximalPointOptions <: Optionsstores options for the cyclic_proximal_point algorithm. These are the
Fields
x– the current iteratestopping_criterion– aStoppingCriterionλ– (@(iter) -> 1/iter) a function for the values of λ_k per iteration/cycleevaluation_order– (:LinearOrder) – whether to use a randomly permuted sequence (:FixedRandomOrder), a per cycle permuted sequence (RandomOrder) or the default linear one.
See also
Debug Functions
Manopt.DebugProximalParameter — TypeDebugProximalParameter <: DebugActionprint the current iterates proximal point algorithm parameter given by Optionss o.λ.
Record Functions
Manopt.RecordProximalParameter — TypeRecordProximalParameter <: RecordActionrecoed the current iterates proximal point algorithm parameter given by in Optionss o.λ.
Literature
- [Bačák, 2014]
Bačák, M:
Computing Medians and Means in Hadamard Spaces. , SIAM Journal on Optimization, Volume 24, Number 3, pp. 1542–1566, doi: 10.1137/140953393, arxiv: 1210.2145.