Add an upper bound function for the operator norm.#275
Add an upper bound function for the operator norm.#275MaxenceGollier wants to merge 6 commits intoJuliaSmoothOptimizers:masterfrom
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #275 +/- ##
===========================================
+ Coverage 61.53% 85.86% +24.32%
===========================================
Files 11 13 +2
Lines 1292 1648 +356
===========================================
+ Hits 795 1415 +620
+ Misses 497 233 -264 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
| return approx, !isnan(approx) | ||
| end | ||
|
|
||
| # Compute upper bounds for μ‖B‖₂, where μ ∈ (0, 1]. |
There was a problem hiding this comment.
| # Compute upper bounds for μ‖B‖₂, where μ ∈ (0, 1]. | |
| # Compute upper bounds for ‖B‖₂. |
|
@MaxenceGollier @dpo @d1Lab, I conducted some benchmarks with the joss example, with solve! being more constraining: solve!(solver, reg_nlp, stats;
atol=1e-6,
rtol=1e-6,
verbose=1,
sub_kwargs=(max_iter=1000,),
opnorm_maxiter= ... % see below
)Below are my remarks concerning different operator–norm estimation
It works on both versions, showing that the instability is not simply due to using too few or too many power-method iterations.
fails on both versions. (with
Using ARPACK to compute the dominant eigenvalue leads to instability:
ARPACK introduces non-determinism and rounding differences that R2N does Even for a small value such as L-BFGS showed no errors with any operator-norm option. |
|
Wouldn't it be more numerically stable to have |
|
Hey @MaxenceGollier — I apologize, most of the errors mentioned earlier ERROR: LoadError: R2: prox-gradient step should produce a decrease but ξ = -7.653729494313895e288In this situation, the proximal operator is not computed accurately for I ran additional experiments using: sub_kwargs = (max_iter = 0,)
atol = rtol = 1e-4to force the selection of Specifically:
So overall, this is good news:
|
I am not entirely sure whether this will make the problem disappear, because it is not The check on the condition In fact, as far as I can see in the benchmarks |
|
Ok. Still, can we compare in term of time or number of iterations |
|
Could you take a look sometime @dpo. |
#270 (comment)
@MohamedLaghdafHABIBOULLAH @d1Lab,
Can you fetch my branch and make some benchmarks ? I think we should try to see if it works because it is very cheap.