Cyclic proximal point
The Cyclic Proximal Point (CPP) algorithm aims to minimize
\[F(x) = \sum_{i=1}^c f_i(x)\]
assuming that the proximal maps $\operatorname{prox}_{λ 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 $λ_k$ changes after each cycle $k$.
For a convergence result on Hadamard manifolds see Bačák [Bac14].
Manopt.cyclic_proximal_point
— Functioncyclic_proximal_point(M, f, proxes_f, p)
cyclic_proximal_point(M, mpo, p)
perform a cyclic proximal point algorithm.
Input
M
: a manifold $\mathcal M$f
: a cost function $f:\mathcal M→ℝ$ to minimizeproxes_f
: an Array of proximal maps (Function
s)(M,λ,p) -> q
or(M, q, λ, p) -> q
for the summands of $f$ (seeevaluation
)p
: an initial value $p ∈ \mathcal M$
where f
and the proximal maps proxes_f
can also be given directly as a ManifoldProximalMapObjective
mpo
Optional
evaluation
: (AllocatingEvaluation
) specify whether the proximal maps work by allocation (default) formprox(M, λ, x)
orInplaceEvaluation
in place of formprox!(M, y, λ, x)
.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 $λ_i$stopping_criterion
: (StopAfterIteration
(5000) |
StopWhenChangeLess
(1e-12)
) aStoppingCriterion
.
All other keyword arguments are passed to decorate_state!
for decorators or decorate_objective!
, respectively. If you provide the ManifoldProximalMapObjective
directly, these decorations can still be specified.
Output
the obtained (approximate) minimizer $p^*$, see get_solver_return
for details
Manopt.cyclic_proximal_point!
— Functioncyclic_proximal_point!(M, F, proxes, p)
cyclic_proximal_point!(M, mpo, p)
perform a cyclic proximal point algorithm in place of p
.
Input
M
: a manifold $\mathcal M$F
: a cost function $F:\mathcal M→ℝ$ to minimizeproxes
: an Array of proximal maps (Function
s)(M, λ, p) -> q
or(M, q, λ, p)
for the summands of $F$p
: an initial value $p ∈ \mathcal M$
where f
and the proximal maps proxes_f
can also be given directly as a ManifoldProximalMapObjective
mpo
for all options, see cyclic_proximal_point
.
Technical details
The cyclic_proximal_point
solver requires no additional functions to be available for your manifold, besides the ones you use in the proximal maps.
By default, one of the stopping criteria is StopWhenChangeLess
, which either requires
- An
inverse_retract!
(M, X, p, q)
; it is recommended to set thedefault_inverse_retraction_method
to a favourite retraction. If this default is set, ainverse_retraction_method=
orinverse_retraction_method_dual=
(for $\mathcal N$) does not have to be specified or thedistance
(M, p, q)
for said default inverse retraction.
State
Manopt.CyclicProximalPointState
— TypeCyclicProximalPointState <: AbstractManoptSolverState
stores options for the cyclic_proximal_point
algorithm. These are the
Fields
p
: the current iteratestopping_criterion
: aStoppingCriterion
λ
: (@(i) -> 1/i) a function for the values of $λ_k$ per iteration(cycle $ì$oder_type
: (:LinearOrder
) whether to use a randomly permuted sequence (:FixedRandomOrder
), a per cycle permuted sequence (:RandomOrder
) or the default linear one.
Constructor
CyclicProximalPointState(M, p)
Generate the options with the following keyword arguments
stopping_criterion
: (StopAfterIteration(2000)
) aStoppingCriterion
.λ
: (i -> 1.0 / i
) a function to compute the $λ_k, k ∈ \mathbb N$,evaluation_order
: (:LinearOrder
) a Symbol indicating the order the proximal maps are applied.
See also
Debug functions
Manopt.DebugProximalParameter
— TypeDebugProximalParameter <: DebugAction
print the current iterates proximal point algorithm parameter given by AbstractManoptSolverState
s o.λ
.
Record functions
Manopt.RecordProximalParameter
— TypeRecordProximalParameter <: RecordAction
record the current iterates proximal point algorithm parameter given by in AbstractManoptSolverState
s o.λ
.
Literature
- [Bac14]
- M. Bačák. Computing medians and means in Hadamard spaces. SIAM Journal on Optimization 24, 1542–1566 (2014), arXiv:1210.2145.