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.cyclicProximalPoint
— Function.cyclicProximalPoint(M, F, proximalMaps, 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 minimizeproximalMaps
– an Array of proximal maps (Function
s)(λ,x) -> y
for the summands of $F$x
– an initial value $x\in\mathcal M$
Optional
the default values are given in brackets
evaluationOrder
– (LinearEvalOrder
) – whether to use a randomly permuted sequence (FixedRandomEvalOrder
), a per cycle permuted sequence (RandomEvalOrder
) or the default linear one.λ
– (iter -> 1/iter
) a function returning the (square summable but not summable) sequence of λistoppingCriterion
– (stopWhenAny
(
stopAfterIteration
(5000),
stopWhenChangeLess
(10.0^-8))
) aStoppingCriterion
.returnOptions
– (false
) – if actiavated, the extended result, i.e. the completeOptions
are returned. This can be used to access recorded values. If set to false (default) just the optimal valuexOpt
if returned
and the ones that are passed to decorateOptions
for decorators.
Output
xOpt
– the resulting (approximately critical) point of gradientDescent
OR
options
- the options returned by the solver (seereturnOptions
)
CyclicProximalPointOptions <: Options
stores options for the cyclicProximalPoint
algorithm. These are the
Fields
x0
– anMPoint
to startstoppingCriterion
– a function@(iter,x,xnew,λ_k)
based on the currentiter
,x
andxnew
as well as the current value ofλ
.λ
– (@(iter) -> 1/iter) a function for the values of λ_k per iteration/cycleevaluationOrder
– (LinearEvalOrder
()
) how to cycle through the proximal maps. Other values areRandomEvalOrder
()
that takes a new random order each iteration, andFixedRandomEvalOrder
()
that fixes a random cycle for all iterations.
See also
Debug Functions
Manopt.DebugProximalParameter
— Type.DebugProximalParameter <: DebugAction
print the current iterates proximal point algorithm parameter given by Options
s o.λ
.
Record Functions
Manopt.RecordProximalParameter
— Type.RecordProximalParameter <: RecordAction
recoed the current iterates proximal point algorithm parameter given by in Options
s 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.