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

时间:2015-08-12 07:50:03

标签: neural-network mathematical-optimization backpropagation

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

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

说,NN学习的函数G(x)近似于F(x)。

完成G的学习后,我想找到G(x)的全局最大值,以及发生这种情况时x的位置。

鉴于G由NN隐含地实现,我没有明确的G形式。

是否有任何快速算法可以让我找到G(x)的arg-max(x)?

1 个答案:

答案 0 :(得分:1)

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

x没有任何假设,很难说清楚。如果随机选择G(x),则x是随机变量。您可以使用统计方法来估算,例如它的第99百分位数。您也可以尝试使用进化算法,G(x)扮演健身功能。