什么在线优化算法可用于嘈杂的成本函数?

计算科学 优化 迭代法
2021-11-29 20:43:18

我正在尝试优化一个函数,但是该函数可能很嘈杂,并且对于相同的参数会给出不同的结果。此外,它需要在线,因为每次新迭代的数据发生得很慢(并且从没有数据开始)。

我使用了梯度下降,它有时会起作用,但由于噪声,即使这样也不是很好。我认为必须有一种更智能的算法,它使用先前迭代的历史来更好地估计正在优化的新参数,而不是仅仅依赖于对前一个参数的更改。

有人可以告诉我一个简单的算法,我可以用它来做到这一点吗?我一直在尝试寻找强大的在线优化算法,但没有取得太大的成功。提前致谢。

2个回答

如果您的目标函数有噪声,那么使用随机算法是有意义的。我会看看 James Spall 的 SPSA 算法和变体。还有一些算法可以更新(近似)Hessian。所有这些算法都考虑到您计算的任何梯度都可能是嘈杂的,因此不要盲目地遵循相应的搜索方向。

解决这类问题的常用方法是对参数范围进行采样(例如在矩形网格上),然后将二次函数拟合到作为代理或“响应曲面”的点上,然后最小化二次代理函数。完成一轮后,您可以在第一个响应曲面的最小值周围使用更精细的网格重复该过程。