Interface for implementing Hessian update strategies.
Many optimization methods make use of Hessian (or inverse Hessian) approximations, such as the quasi-Newton methods BFGS, SR1, L-BFGS. Some of these approximations, however, do not actually need to store the entire matrix or can compute the internal matrix product with a given vector in a very efficiently manner. This class serves as an abstract interface between the optimization algorithm and the quasi-Newton update strategies, giving freedom of implementation to store and update the internal matrix as efficiently as possible. Different choices of initialization and update procedure will result in different quasi-Newton strategies.
Four methods should be implemented in derived classes:
Any instance of a class that implements this interface, can be accepted by the method
minimizeand used by the compatible solvers to approximate the Hessian (or inverse Hessian) used by the optimization algorithms.
Compute the product of the internal matrix with the given vector.
Return current internal matrix.
initialize(self, n, approx_type)
Initialize internal matrix.
update(self, delta_x, delta_grad)
Update internal matrix.