Closed shnaqvi closed 1 year ago
It's not straightforward, unfortunately, but there is some work in this direction. In particular, see Yaoling Yu, "On decomposing the proximal map", Proc. NIPS, 2013.
Oh ok, so that functionality is not implemented yet. I was wondering @bwohlberg if something like this GeneralizedProximalGradient can be implemented? Here they enable passing as many priors as a list, looping over their proximals, and summing them up with equal weights. Given Yaoling's work, do you have a reservation that this is not theoretically equivalent to enforcing multiple priors? Would it be a good approximation? Would you mind adding it to our list of enhancements?
There are many problems that can benefit from this feature, like reconstructing high-speed video with rotating PSF published in this year's ICCV, 2023 (see equation 4 that enforces TV regularizer in 3 dimensions, along with Non-Negative prior, and sparsity constraint). Heide, TOG, 2016 also discuss demosaicking problem in equation 3 with multiple priors.
Unfortunately I don't see a reference for the "generalized proximal gradient" algorithm, but I suspect it may be related to the approach proposed by Yaoling Yu, "Better Approximation and Faster Algorithm Using the Proximal Average", Proc. NIPS 2013. Agreed that it would be useful, and we can add it to the list, but realistically, it's not going to be anytime soon unless someone contributes an implementation. (For what it's worth, it looks straightforward.)
@bwohlberg , thanks for giving it a consideration. Actually it is related to this "Proximal Splitting Methods" publication by Combettes and Pasquett, 2011 (PDF here), handled in Section 10.7
, and proposed in Algorithm 10.27
.
But your reference also seems to be attacking the same problem of solving with non smooth regularizers. I'll add an enhancement request for it.
Working on this. A PR should be submitted relatively soon.
Thanks @bwohlberg , sorry I just saw this! I already created a Pull Request not knowing that you might also be actively working on it. I have tested it with our toy example with TV
prior and NonNegativeIndicator
prior applied and its yielding expected result (essentially solving the following problem).
$\text{argmin}_x \frac{1}{2} \lVert y - x\rVert_2^2 + \lambda_1 \lVert \nabla x \rVert_1 + \lambda_2 I(x\ge0)$
So you now have a working code, and I'm sure you can highly optimize it, and submit a revision.
My fault for not mentioning earlier that I was working on this. Thanks for the contribution. Closing this issue and referring further discussion to #465 or #466, as appropriate.
I am having a difficult time finding an example where multiple priors are using to solve a problem with APGM. Is that possible by say stacking multiple operators? Specifically, I want to apply TV regularizers and a Non-Negative constraint, for deblurring problem. Thanks!