Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Computing proximal operator of a constrained convex function #117

Open
Shuvomoy opened this issue Nov 12, 2020 · 5 comments
Open

Computing proximal operator of a constrained convex function #117

Shuvomoy opened this issue Nov 12, 2020 · 5 comments

Comments

@Shuvomoy
Copy link

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.

@lostella
Copy link
Member

@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).

@Shuvomoy
Copy link
Author

@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.

@lostella
Copy link
Member

@Shuvomoy is \Sigma symmetric positive definite?

@Shuvomoy
Copy link
Author

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

@kellertuer
Copy link

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants