-
Notifications
You must be signed in to change notification settings - Fork 10
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
FixSplitBregman #68
FixSplitBregman #68
Conversation
…Bregman method for L1-regularized problems." SIAM journal on imaging sciences 2.2 (2009): 323-343.
Closes #43 |
Just kidding. I matched |
@migrosser, @tknopp , a friendly ping if you have any thoughts on this PR and the questions raised above. Thanks! |
For these algorithms we have a little maintainability issue since I am not deep enough in the proximal algorithms. It's a little bit unclear if @migrosser can have a look, since he finished his PhD and now took on another opportunity. But I try to summarize a discussion which @nHackel @migrosser and once had. Initially, we thought that it would be sufficient to just have the transform within the regularizer and not in the data discrepancy term. But if I understood it correctly (?), this requires a unitary transform since one needs to apply the inverse (see https://github.com/JuliaImageRecon/RegularizedLeastSquares.jl/blob/master/src/Regularization/TransformedRegularization.jl#L31). For the |
But to get forward, I am going to merge this now. Tests are apparently passing. |
Thanks, @tknopp for the explanation. It makes sense that we cannot use |
Hi,
I made the following changes:
push!(regTrafo, trafoReg)
->push!(regTrafo, trafoReg.trafo)
in ADMM and SplitBregmanBoth solvers should work now as expected, but I have two questions:
||G x||_1
, subject to||Ax - b||_2^2 < sigma
? The only real difference I can see between the algorithms is this outer loop. The other implementation difference is the scaling ofrho
, which is scaled to match the corresponding papers, but this could also be changed to macth between the algorithms.ConstraintTransformedRegularization
, which feels a little unituitive to me. Would you be so kind to explain to me intended difference between the different nested regularization terms–and their relation to the unnested ones?As always, any feed is more than welcome!