微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何为最小二乘优化确定 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 举报,一经查实,本站将立刻删除。