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

potential bug in usage of BacktrackingLineSearch #697

Open
vincent-grosbois opened this issue Mar 2, 2018 · 2 comments
Open

potential bug in usage of BacktrackingLineSearch #697

vincent-grosbois opened this issue Mar 2, 2018 · 2 comments

Comments

@vincent-grosbois
Copy link
Contributor

vincent-grosbois commented Mar 2, 2018

Hi!
In BacktrackingLineSearch, the initialisation is done in 2 steps:

  • during construction of the object, we give the parameters of the line search, and the "initial value" initfval
  • when calling minimize(), we give it the "initial point" init

It seems that initfval is always supposed to be f(init), as is written in the comment line 31. I also think this is how the algorithm is supposed to be working

However this is not enforced at all in the code, as the caller of BacktrackingLineSearch can input whatever values for initfval and init.
Indeed, in OWLQN, during the line search, we are passing state.value as initial value, which is not the value you'd get by computing ff(1.0) . So it seems that the line search being done in OWLQN is broken, at least its initial state.

Is there any reason why was done like this? AFAIK it's incorrect to do this and the correct way to do it (which is what is commented on line 31) requires the same amount of computation, since calling calculate() will return both the gradient (that we use) and the value of the function (that is discarded)

@vincent-grosbois
Copy link
Contributor Author

hi! Any news on this?

@dlwh
Copy link
Member

dlwh commented Mar 26, 2018

Hi, sorry, this indeed looks like a bug.

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

No branches or pull requests

2 participants