Proximal Maps
For a function $\varphi:\mathcal M →ℝ$ the proximal map is defined as
\[\displaystyle\operatorname{prox}_{λ\varphi}(x) = \operatorname*{argmin}_{y ∈ \mathcal M} d_{\mathcal M}^2(x,y) + \varphi(y), \quad λ > 0,\]
where $d_{\mathcal M}: \mathcal M \times \mathcal M → ℝ$ denotes the geodesic distance on (\mathcal M). While it might still be difficult to compute the minimizer, there are several proximal maps known (locally) in closed form. Furthermore if $x^{\star} ∈ \mathcal M$ is a minimizer of $\varphi$, then
\[\displaystyle\operatorname{prox}_{λ\varphi}(x^\star) = x^\star,\]
i.e. a minimizer is a fixed point of the proximal map.
This page lists all proximal maps available within Manopt. To add you own, just extend the functions/proximal_maps.jl file.
Manopt.project_collaborative_TV — Functionproject_collaborative_TV(M, λ, x, Ξ[, p=2,q=1])
project_collaborative_TV!(M, Θ, λ, x, Ξ[, p=2,q=1])compute the projection onto collaborative Norm unit (or α-) ball, i.e. of the function
\[F^q(x) = \sum_{i∈\mathcal G} \Bigl( \sum_{j∈\mathcal I_i} \sum_{k=1^d} \lVert X_{i,j}\rVert_x^p\Bigr)^\frac{q/p},\]
where $\mathcal G$ is the set of indices for $x∈\mathcal M$ and $\mathcal I_i$ is the set of its forward neighbors. The computation can also be done in place of Θ.
This is adopted from the paper by Duran, Möller, Sbert, Cremers: Collaborative Total Variation: A General Framework for Vectorial TV Models (arxiv: 1508.01308), where the most inner norm is not on a manifold but on a vector space, see their Example 3 for details.
Manopt.prox_TV — Functionξ = prox_TV(M,λ,x [,p=1])compute the proximal maps $\operatorname{prox}_{λ\varphi}$ of all forward differences occurring in the power manifold array, i.e. $\varphi(xi,xj) = d_{\mathcal M}^p(xi,xj)$ with xi and xj are array elemets of x and j = i+e_k, where e_k is the $k$th unitvector. The parameter λ is the prox parameter.
Input
M– a Manifoldλ– a real value, parameter of the proximal mapx– a point.
Optional
(default is given in brackets)
p– (1) exponent of the distance of the TV term
Ouput
y– resulting point containing with all mentioned proximal points evaluated (in a cyclic order). The computation can also be done in place
Manopt.prox_TV — Method[y1,y2] = prox_TV(M, λ, [x1,x2] [,p=1])
prox_TV!(M, [y1,y2] λ, [x1,x2] [,p=1])Compute the proximal map $\operatorname{prox}_{λ\varphi}$ of $φ(x,y) = d_{\mathcal M}^p(x,y)$ with parameter λ.
Input
M– a Manifoldλ– a real value, parameter of the proximal map(x1,x2)– a tuple of two points,
Optional
(default is given in brackets)
p– (1) exponent of the distance of the TV term
Ouput
(y1,y2)– resulting tuple of points of the $\operatorname{prox}_{λφ}($(x1,x2)$)$. The result can also be computed in place.
Manopt.prox_TV2 — Method(y1,y2,y3) = prox_TV2(M,λ,(x1,x2,x3),[p=1], kwargs...)
prox_TV2!(M, y, λ,(x1,x2,x3),[p=1], kwargs...)Compute the proximal map $\operatorname{prox}_{λ\varphi}$ of $\varphi(x_1,x_2,x_3) = d_{\mathcal M}^p(c(x_1,x_3),x_2)$ with parameter λ>0, where $c(x,z)$ denotes the mid point of a shortest geodesic from x1 to x3 that is closest to x2. The result can be computed in place of y.
Input
M– a manifoldλ– a real value, parameter of the proximal map(x1,x2,x3)– a tuple of three pointsp– (1) exponent of the distance of the TV term
Optional
kwargs... – parameters for the internal subgradient_method (if M is neither Euclidean nor Circle, since for these a closed form is given)
Output
(y1,y2,y3)– resulting tuple of points of the proximal map. The computation can also be done in place.
Manopt.prox_TV2 — Methody = prox_TV2(M, λ, x[, p=1])
prox_TV2!(M, y, λ, x[, p=1])compute the proximal maps $\operatorname{prox}_{λ\varphi}$ of all centered second order differences occuring in the power manifold array, i.e. $\varphi(x_k,x_i,x_j) = d_2(x_k,x_i.x_j)$, where $k,j$ are backward and forward neighbors (along any dimension in the array of x). The parameter λ is the prox parameter.
Input
M– a Manifoldλ– a real value, parameter of the proximal mapx– a points.
Optional
(default is given in brackets)
p– (1) exponent of the distance of the TV term
Output
y– resulting point with all mentioned proximal points evaluated (in a cylic order). The computation can also be done in place.
Manopt.prox_distance — Functiony = prox_distance(M,λ,f,x [, p=2])
prox_distance!(M, y, λ, f, x [, p=2])compute the proximal map $\operatorname{prox}_{λ\varphi}$ with parameter λ of $φ(x) = \frac{1}{p}d_{\mathcal M}^p(f,x)$. For the mutating variant the computation is done in place of y.
Input
M– a Manifold $\mathcal M$λ– the prox parameterf– a point $f ∈ \mathcal M$ (the data)x– the argument of the proximal map
Optional argument
p– (2) exponent of the distance.
Ouput
y– the result of the proximal map of $φ$
Manopt.prox_parallel_TV — Functiony = prox_parallel_TV(M, λ, x [,p=1])
prox_parallel_TV!(M, y, λ, x [,p=1])compute the proximal maps $\operatorname{prox}_{λφ}$ of all forward differences occurring in the power manifold array, i.e. $φ(x_i,x_j) = d_{\mathcal M}^p(x_i,x_j)$ with xi and xj are array elements of x and j = i+e_k, where e_k is the $k$th unit vector. The parameter λ is the prox parameter.
Input
M– aPowerManifoldmanifoldλ– a real value, parameter of the proximal mapx– a point
Optional
(default is given in brackets)
p– (1) exponent of the distance of the TV term
Ouput
y– resulting Array of points with all mentioned proximal points evaluated (in a parallel within the arrays elements). The computation can also be done in place.
See also prox_TV