为什么 BFGS 会收敛到非凸函数的局部最小值但保持较大的梯度?

计算科学 优化 约束优化
2021-12-07 22:50:29

我正在使用 BFGS 来优化平滑但非凸函数f这是通过模拟计算的。模拟还给了我一个半解析梯度g,这是通过数值梯度验证的。

作为f是非凸的,我正在使用惩罚函数来强制约束约束,我不希望找到全局最小值,而是找到梯度也恰好消失的局部最小值。然而,当 BFGS “收敛”时(就非常小的ΔxΔf),g仍然很大。我可以想到几个原因:

  1. 惩罚函数大到接近边界——但这里不是这种情况,因为此时惩罚函数已被充分缩小

  2. 梯度的向下斜率与边界之一相交——BFGS 不能离开边界,因为这会增加函数,但也不能进一步接近它,导致它卡住。这可能是这种情况,因为在“收敛”时步长几乎为零。

任何人都可以提出这种行为的任何其他原因,或者验证(2)是否确实是原因的方法?

1个回答

对于在的边界约束问题,没有理由让在最优处变小。所有的理论保证是,如果最优值在边界有效的地方。f(x)h(x)0f(x)xf(x)+λh(x)=0

在您的情况下,您通过惩罚方法施加界限,我假设这意味着您正在最小化很小也是不合理的。您所知道的是很小——您可以轻松检查。Fε(x)=f(x)1εln(h(x))f(x)Fε(x)