[SciPy-Dev] Returning the (approximate) inverse hessian from L-BFGS-B as a LinearOperator?

Pauli Virtanen pav at iki.fi
Wed Feb 18 12:26:02 EST 2015


Hi,

18.02.2015, 03:18, Robert McGibbon kirjoitti:
[clip]
> In the L-BFGS-B minimizer, a low-memory approximation to the inverse
> hessian is
> used internally to determine the descent direction. Once the optimization
> terminates,
> none of this information is returned to the client though. I think it would
> be a nice to
> return a callable for the inverse hessian - vector product as a
> LinearOperator.

Depending on what the implicit storage format in lbfgsb is, the
Python-side may already be implemented in
scipy.optimize.nonlin.LowRankMatrix

The maintenance problem here is that extracting the information requires
mucking with undocumented implementation details of the algorithm, which
may change the author releases yet another new version.

However, the software is fairly mature, so with proper tests adding this
could be possible.

A completely separate question then is whether the approximation is
useful for your purpose, and whether you could do better just by
constructing the BFGS secant approximation yourself by recording the
gradients evaluated during your optimization process.




More information about the SciPy-Dev mailing list