l_bfgs优化方法如何逼近梯度

Neh*_*kar 2 python numpy mathematical-optimization scipy

我正在使用scipy的fmin_l_bfgs_b优化方法对作为黑盒子的二维函数.无法直接评估渐变,因此我要求方法通过设置来近似渐变approx_grad = True.

我想知道如何计算近似梯度.我的猜测是,在每个点上,对于每个维度,梯度由前向差异近似.因此,对于N维中的每个点,进行N次评估以获得偏导数.它是否正确?

alk*_*lko 5

雅可比近似是用scipy.optimize.approx_fprime函数完成的,docs:

        f(xk[i] + epsilon[i]) - f(xk[i])
f'[i] = ---------------------------------
                   epsilon[i]
Run Code Online (Sandbox Code Playgroud)

其中epsilon是fmin_l_bfgs_b的参数

epsilon:浮动

approx_grad为True 时使用的步长,用于数值计算梯度