ProximalOperators.jl icon indicating copy to clipboard operation
ProximalOperators.jl copied to clipboard

Computing proximal operator of a constrained convex function

Open Shuvomoy opened this issue 5 years ago • 5 comments

May I request for the feature extension to compute the proximal operator of a constrained convex function? For example, a constrained convex function that shows up in low rank factor analysis is:

image

where I_P is the indicator function of the convex set: image

In my Julia package NExOS.jl I have used ProximalOperators.jl heavily when the functions are easy to compute. For now, whenever I need to deal with a constrained convex function, I am constructing the function object myself and computing the proximal operator by JuMP and a solver supported by it. If there was a subroutine in ProximalOperators.jl, which would construct the constrained function object and compute the proximal operator via calling other solvers, it would be great. Of course, I completely understand if this is outside of the scope of the package.

Shuvomoy avatar Nov 12 '20 13:11 Shuvomoy

@Shuvomoy this could actually be done by implementing prox! for the Sum type, at least for simple cases: for "smooth + easily proximable" this can be done very efficiently I believe (the example you bring fits this case).

lostella avatar Nov 13 '20 09:11 lostella

@lostella, thanks for your comment! You are right, if both have easy-to-compute proximal operators, then we can do it using Sum.

In this post, however, I am considering the situation when projecting onto the constraint set is not obvious, e.g., for the indicator function mentioned above is of that type (it shows up in low-rank factor analysis problem). In such a case, computing proximal operators probably will be best done by a convex optimization solver.

Shuvomoy avatar Nov 13 '20 10:11 Shuvomoy

@Shuvomoy is \Sigma symmetric positive definite?

lostella avatar Nov 14 '20 06:11 lostella

Yes, it is! Is there a way to formulate it in ProximalOperators.jl? That would be so great!

Shuvomoy avatar Nov 14 '20 14:11 Shuvomoy

Mateusz (See link above my post) just brought this to my attention – super interesting, that looks like a prox on a manifold. For just X on the SPDs or for both X and D on a product manifold of I think. JuMP recently got an interface to Manopt, or one could try this in Manopt directly even, if this is still something of interest.

kellertuer avatar Dec 08 '23 09:12 kellertuer