Algorithm 确定黑盒函数全局极小值的算法

Algorithm 确定黑盒函数全局极小值的算法,algorithm,machine-learning,gradient-descent,Algorithm,Machine Learning,Gradient Descent,我最近在一次采访中得到了这个问题,一想到这个问题我就有点发疯 假设您有一个函数族,每个函数都具有固定数量的参数(不同的函数可以具有不同数量的参数),每个函数都具有以下属性: 每个输入介于0-1之间 每个输出在0-1之间 该函数是连续的 该函数是一个黑盒(即,您不能查看它的方程式) 然后他让我创建一个算法来找到这个函数的全局极小值 对我来说,看这个问题就像试图回答机器学习的基础。显然,如果有某种方法可以保证找到函数的全局极小值,那么我们就有了完美的机器学习算法。显然我们没有,所以这个问题似

我最近在一次采访中得到了这个问题,一想到这个问题我就有点发疯

假设您有一个函数族,每个函数都具有固定数量的参数(不同的函数可以具有不同数量的参数),每个函数都具有以下属性:

  • 每个输入介于0-1之间

  • 每个输出在0-1之间

  • 该函数是连续的

  • 该函数是一个黑盒(即,您不能查看它的方程式)

  • 然后他让我创建一个算法来找到这个函数的全局极小值

    对我来说,看这个问题就像试图回答机器学习的基础。显然,如果有某种方法可以保证找到函数的全局极小值,那么我们就有了完美的机器学习算法。显然我们没有,所以这个问题似乎是不可能的

    无论如何,我给出的答案是分而治之和随机梯度下降的混合。因为所有的函数都是连续的,所以你总是能够计算出关于某个维度的偏梯度。将每个维度一分为二,一旦达到一定的粒度,就应用随机梯度下降。在“渐变下降”中,初始化某个起点,并根据每个维度的小增量计算该点的左右两侧,以获得该点的坡度。然后,根据特定的学习率更新点,并重新计算偏导数,直到达到新旧点之间的距离低于特定阈值的点。然后重新合并并返回两个部分中的最小值,直到返回所有分区中的最小值。我的希望是绕开SGD可能陷入局部极小的事实,所以我认为划分维度空间将减少发生这种情况的机会


    最后他似乎对我的算法没什么印象。有人有更快/更准确的方法解决这个问题吗?

    范围是
    [0,1]
    ,因此
    f(x)=0
    ,其中
    R^n
    上的
    x
    是全局最小值。此外,通过知道域、范围和连续性,不能保证函数是凸函数

    例如
    f(x)=sqrt(x)
    ,它是一个凹函数(没有最小值),并且
    x-[0,1]
    属于它的域。

    如果你只有一组离散的机器浮点数,我认为“连续”没有任何意义。你需要知道导数的可能范围。如果你知道这一点,解决方案就成为可能。