梯度估计的自适应 h

计算科学 优化 有限差分
2021-12-01 21:45:32

谁能指出我改变的方法h在噪声数值优化的梯度估计中?有些程序让用户给出一个固定的h,它用于前向差分或中心差分梯度估计整个时间,从初始的大致线性斜率到最小值附近的大致二次谷。当然有一些自适应方法可以击败固定h?

我正在寻找一种在实践中使用的简单方法,而不是理论。

4 月 23 日添加:有几个因素让这变得有趣:

  • 噪声,粗糙度,是困难的。想象一下在崎岖的乡村徒步旅行,想要爬得更高,但只使用当地的坡度。有障碍物——噪音——在毫米、米、公里的范围内;有什么好h测量粗糙度,不是为了它自己,而是为了爬得更高?

  • 假设对 f(x) 的每次评估花费1美元,因此 10d 中的梯度估计花费10美元或(居中) 20美元。如果您只有100美元可花费,您如何权衡准确性来换取金钱?例如,在 10 个点的 10 个准确梯度上,一个人可以在 x 处花费 10美元,而不是 100美元0, 然后只更新 x$ 1 \dots处的最大梯度分量x{10}$,然后又是 10美元……可能性太多了。

1个回答

您不能自由选择步长h正如你可能认为的那样。如果您可以计算函数的准确度是a,那么建议的步长为h=a1/2对于前向差分公式和h=a1/3为中心差分公式。

1e-15因此,如果准确性(例如,内部功能)是h应该不会比1e-7or小很多1e-5原因是对于非常小的步长,截断和舍入误差“介入”并且结果将变得更加不精确。如果选择更大的步长,则获得的准确度将低于可用的精度(如“桌上的钱”)。

根据函数“弯曲”的程度来改变步长是没有希望的,据我所知,没有考虑过。计算本身的误差项禁止这样做。

参考:任何一本关于数值分析的教科书,其中有一章是关于数值微分的。

提示:如果您的函数是分析性的并且编程语言允许复杂的算术运算,则可能可以使用复杂的步长推导方法,在这种方法中,数值导数的精度与函数计算本身的精度几乎相同。

更新:我忘了说,如果你应用 Romberg 的方法来计算导数,就像一些数值程序所做的那样,它会(尝试)自行解决最佳步长。