使用反向传播来逼近一个函数然后找到它的最大值?
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)
扮演适应度函数的角色。
我有一个未知函数,比如 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)
扮演适应度函数的角色。