使用反向传播来逼近一个函数然后找到它的最大值?

Using back-propagation to approximate a function and then find its maximum?

我有一个未知函数,比如 F(x),我使用反向传播神经网络对其进行近似。这当然可以做到,因为它在神经网络的标准库中。

F(x) 不明确存在。它是从一组训练数据点中学习的。

比如说,神经网络学习了一个函数 G(x),它近似于 F(x)。

G的学习结束后,想求出G(x)的全局最大值,以及出现时x的位置。

鉴于G是由NN隐式实现的,我没有G的显式形式。

有什么快速算法可以让我找到 G(x) 的 arg-max(x) 吗?

神经网络会产生不连续的函数(通常),因为它由不连续函数的网络组成(神经元在某个阈值处激发,这是一个跳跃不连续性)。但是 - 如果在您的应用程序中将 G(x) 视为(近似)连续甚至可微是有意义的,您可以使用爬山技术,从随机点开始,估计导数(或梯度,如果 x 是矢量而不是标量)并朝最陡峭的方向移动一小步,重复该过程,直到找不到更多改进。这为您提供了一个近似的局部最大值。您可以使用不同的随机起始值重复该过程。如果你总是得到相同的结果,那么你可以有理由相信(虽然不确定)它实际上是一个全局最大值。

没有对 G(x) 的任何假设,很难说出任何确定的事情。如果 x 是随机选择的,那么 G(x) 是一个随机变量。您可以使用统计方法来估计,例如它的第 99 个百分位数。您也可以尝试使用进化算法,其中 G(x) 扮演适应度函数的角色。