如何为最小二乘优化确定 ftol、xtol 和 gtol 的适当值?

问题描述

我正在使用 least_squares 优化将数值模型的输出调整为一些测量数据。在这个阶段,我想知道如何为 ftolxtolgtol 参数确定合适的值,因为它们决定了优化将如何以及在哪里停止。对我来说,这些参数似乎非常适合算法框架,但我发现很难将它们与现实世界的属性联系起来。

例如,我对测量数据进行了不确定性估计,因此一旦优化器在不确定性范围内在模型输出和测量数据之间达到足够的一致性时,停止(即 np.all(np.abs(model_output - measured_data) < uncertainty))是合理的。然而,这似乎不能用 ftol 参数表达。终止条件是 dF < ftol * F(其中 F 是残差平方和,dF 是它的变化),所以即使我可以计算 ftol 以防止更新更小与在该级别内达到 F 后的不确定性相比,我还冒着在远离所需解决方案的某个地方过早终止的风险。最后由优化器决定它在每次迭代中想要采取多大的步骤(从而确定 dF),因此 dFF 相比可能很小,即使它很远关闭所需的解决方案。

另一方面是参数值的变化。最后,通过优化获得的结果值将用于调整一些具有有限精度的真实设备。例如,设备不会区分相差小于 1e-6 的值。这再次意味着,一旦模型输出和测量数据之间达到足够的一致性,任何小于 1e-6 的参数更新都没有意义。另一方面,< 1e-6 的许多小更新可以总结为更大的整体更新 > 1e-6,我又回到了同样的问题:优化器想要采取多大的步骤取决于优化器并限制这一点,我担心我会面临过早终止的风险。此外,xtol 参数再次仅描述了参数更新和当前值之间的比例因子。虽然我可以使用一些值来反映设备在预期最终参数值周围的精度,但我已经看到优化器达到了比最终估计值大两个数量级的中间参数值,所以这很明显有提前终止的风险。

虽然我发现为 ftolxtolgtol 参数选择合适的值很困难,但如果没有好的参数,将它们保留为认值同样令人不满意,因为这意味着同意他们的认值是合理的。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)