fmin_l_bfgs_b中的最小梯度

时间:2015-05-07 23:50:45

标签: python optimization scipy gradient

我使用fmin_l_bfgs_b对4个参数进行有界最小化。 我想在成本函数的最小值处检查渐变,为此,我调用d [' grad']参数,如fmin_l_bfgs_b文档中所述。我的问题是d [' grad']是一个大小为4的数组,如下所示:

' grad&#39 ;: array([8.38440428e-05,-5.72697445e-04,3.21875859e-03,         -2.21115926e + 00])

我希望它是接近零的单个值。这与我用于最小化(4)的参数数量有关吗?不是我所期望的,但任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

你得到的是相对于每个参数的成本函数的梯度。

要想象它,假设只有两个参数,x和y。成本函数是作为x和y的函数的表面z。 优化是在该表面上找到最小点。 这就是相对于x和y的梯度都为零(或接近它)的地方。 如果任一梯度不为零,则不是最小值,而是进一步下降。

另外一点,你可能对曲率或二阶导数感兴趣,因为高曲率意味着一个窄(精确)最小值,而低曲率意味着几乎平坦的最小值,估计非常不确定。 x,y情况下的二阶导数不是2矢量,而是2x2矩阵(称为“Hessian”,只是为了让你的朋友下雪)。 您可能想要考虑为什么它是2x2矩阵。