L-BFGS-B(Limited-memory Broyden–Fletcher–Goldfarb–Shanno )算法理解
定义
有限内存BFGS(L-BFGS或LM-BFGS)是牛顿方法家族中的一种优化算法,它使用有限数量的计算机内存近似于Broyden-Fletcher-Goldfarb-Shanno算法(BFGS)。
作用
L-BFGS是机器学习中用于参数估计的流行算法。该算法的目标问题是最小化f(x)在实向量的无约束值上的x,这里f是一个可微标量函数。
代码
要使用LBFGS ++,首先需要定义子函数以表示要最小化的多元函数。它应该返回向量x上的目标函数值,并用x上计算的梯度grad
覆盖向量。例如,我们可以通过以下方式定义Rosenbrock函数:
#include <Eigen/Core>
#include <iostream>
#include <LBFGS.h>
using Eigen::VectorXd;
using namespace LBFGSpp;
class Rosenbrock
{
private:
int n;
public:
Rosenbrock(int n_) : n(n_) {
}