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
– aPowerManifold
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 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