On Wed, Mar 5, 2014 at 8:50 AM, Debasish Das <debasish.da...@gmail.com>wrote:
> Hi David, > > Few questions on breeze solvers: > > 1. I feel the right place of adding useful things from RISO LBFGS (based on > Professor Nocedal's fortran code) will be breeze. It will involve stress > testing breeze LBFGS on large sparse datasets and contributing fixes to > existing breeze LBFGS with the learning from RISO LBFGS. > > You agree on that right ? > That would be great. > > 2. Normally for doing experiments like 1, I fix the line search. What's > your preferred line search in breeze BFGS ? I will also use that. > > More Thuente and Strong wolfe with backtracking helped me in the past. > The default is a Strong Wolfe search: https://github.com/scalanlp/breeze/blob/master/src/main/scala/breeze/optimize/StrongWolfe.scala > > 3. The paper that you sent also says on L-BFGS-B is better on box > constraints. I feel It's worthwhile to have both the solvers because many > practical problems need box constraints or complex constraints can be > reformulated in the realm of unconstrained and box constraints. > Example use-cases for me are automatic feature extraction from photo/video > frames using factorization. > > I will compare L-BFGS-B vs constrained QN method that you have in Breeze > within an analysis similar to 1. > Great. Yeah I fully expect l-bfgs-b to be better on box constraints. It turns out that this other method looked easier to implement and gave reasonably good results even with box constraints. > > 4. Do you have a road-map on adding CG solvers in breeze ? Linear CG solver > to compare with BLAS posv seems like a good usecase for me in mllib ALS. > DB sent a paper by Professor Ng which shows the effectiveness of CG and > BFGS over SGD in the email chain. > We have a linear CG solver ( https://github.com/scalanlp/breeze/blob/master/src/main/scala/breeze/optimize/linear/ConjugateGradient.scala) which is used in the Truncated Newton solver. ( https://github.com/scalanlp/breeze/blob/master/src/main/scala/breeze/optimize/TruncatedNewtonMinimizer.scala) But I've not implemented nonlinear CG, and honestly hadn't planned on it, per below. > > I believe on non-convex problems like Matrix Factorization, CG family might > converge to a better solution than BFGS. No way to know till we experiment > on the datasets :-) > I've never had good experience with CG, and a vision colleague of mine found that LBFGS was better on his (non-convex) stuff, but I could be easily persuaded. Thanks! -- David > > Thanks. > Deb > > > > On Tue, Mar 4, 2014 at 8:13 PM, dlwh <david.lw.h...@gmail.com> wrote: > > > Just subscribing to this list, so apologies for quoting weirdly and any > > other > > etiquette offenses. > > > > > > DB Tsai wrote > > > Hi Deb, > > > > > > I had tried breeze L-BFGS algorithm, and when I tried it couple weeks > > > ago, it's not as stable as the fortran implementation. I guessed the > > > problem is in the line search related thing. Since we may bring breeze > > > dependency for the sparse format support as you pointed out, we can > > > just try to fix the L-BFGS in breeze, and we can get OWL-QN and > > > L-BFGS-B. > > > > > > What do you think? > > > > I'm happy to help fix any problems. I've verified at points that the > > implementation gives the exact same sequence of iterates for a few > > different > > functions (with a particular line search) as the c port of lbfgs. So I'm > a > > little surprised it fails where Fortran succeeds... but only a little. > This > > was fixed late last year. > > > > OWL-QN seems to mostly be stable, but probably deserves more testing. > > Presumably it has whatever defects my LBFGS does. (It's really pretty > > straightforward to implement given an L-BFGS) > > > > We don't provide an L-BFGS-B implementation. We do have a more general > > constrained qn method based on > > http://jmlr.org/proceedings/papers/v5/schmidt09a/schmidt09a.pdf (which > > uses > > a L-BFGS type update as part of the algorithm). From the experiments in > > their paper, it's likely to not work as well for bound constraints, but > can > > do things that lbfgsb can't. > > > > Again, let me know what I can help with. > > > > -- David Hall > > > > > > On Mon, Mar 3, 2014 at 3:52 PM, DB Tsai <dbtsai@> wrote: > > > Hi Deb, > > > > > >> a. OWL-QN for solving L1 natively in BFGS > > > Based on what I saw from > > > > > > https://github.com/tjhunter/scalanlp-core/blob/master/learn/src/main/scala/breeze/optimize/OWLQN.scala > > > , it seems that it's not difficult to implement OWL-QN once LBFGS is > > > done. > > > > > >> > > >> b. Bound constraints in BFGS : I saw you have converted the fortran > > >> code. > > >> Is there a license issue ? I can help in getting that up to speed as > > >> well. > > > I tried to convert the code from Fortran L-BFGS-B implementation to > > > java using f2j; the translated code is just a messy, and it just > > > doesn't work at all. There is no license issue here. Any idea about > > > how to approach this? > > > > > >> c. Few variants of line searches : I will discuss on it. > > >> For the dbtsai-lbfgs branch seems like it already got merged by > Jenkins. > > > I don't think it's merged into master. Still have couple things needed > > > to be cleaned up. Just open the PR to have public feedback. > > > > > >> Is this getting merged to the master or there will be revisions on it > ? > > >> > > >> https://github.com/apache/spark/pull/53 > > >> > > >> Thanks. > > >> Deb > > > > > > Sincerely, > > > > > > DB Tsai > > > Machine Learning Engineer > > > Alpine Data Labs > > > -------------------------------------- > > > Web: http://alpinenow.com/ > > > > > > > > > > -- > > View this message in context: > > > http://apache-spark-developers-list.1001551.n3.nabble.com/MLLib-Thoughts-about-refactoring-Updater-for-LBFGS-tp2493p3935.html > > Sent from the Apache Spark Developers List mailing list archive at > > Nabble.com. > > >