机器学习技术是“近似算法”吗?


23

最近在cstheory stackexchange上有一个类似ML的问题,我发布了一个答案,推荐Powell的方法,梯度下降,遗传算法或其他“近似算法”。有人在评论中告诉我,这些方法是“启发式”方法,而不是 “近似算法”,并且常常不接近理论最优值(因为它们“经常陷入局部极小值”)。

别人同意吗?另外,在我看来,如果我将启发式算法设置为探索很大的搜索空间(例如,将参数/步长设置得很小),可以保证哪种算法可以接近理论最优值。在论文中没有看到。有人知道这已经在论文中显示或证明过了吗?(如果不是针对大型算法,则可能针对小型算法,例如NN等)


在进一步思考这个问题时,似乎相关/相关的研究领域被称为全局优化方法/局部变量算法之上的变量,例如梯度下降...
vzn 2012年

Answers:


29

我认为您正在混合多个重要概念。让我尝试澄清两件事:

  • 有元启发式方法,这些方法是反复尝试改进候选解的方法。例如禁忌搜索,模拟退火,遗传算法等。请注意,尽管在许多情况下这些方法可以很好地工作,但对何时以及何时不起作用没有深入的了解。而且更重要的是,当他们无法解决问题时,我们可以任意远离它。通过元启发式方法解决的问题本质上往往是离散的,因为有更好的工具来处理连续的问题。但是有时候,您还会看到针对连续问题的元启发法。

  • 有数值优化方法,该社区的人们仔细检查要优化的函数的性质以及解决方案的限制(分为凸优化,二次规划,线性规划等组),并应用已显示的算法为该类型的功能和这些类型的限制工作。当这个地区的人说“表现出工作”时,它们就是一个证明。情况是这些类型的方法在连续的问题中起作用。但是,当您的问题属于此类时,绝对可以使用该工具。

  • 有离散的优化方法,这些方法实际上是与算法相连的事物,它们经过充分研究,可以研究离散问题:例如最短路径,最大流量等。该领域的人们还关心他们的算法确实有效(证明)。这个小组中有一部分人研究的是非常棘手的问题,因此预计不会存在快速算法。然后,他们研究近似算法,这是一种快速算法,可以证明它们的解决方案在真实最优值的恒定因子之内。这称为“近似算法”。这些人还显示其结果作为证据。

所以...回答您的问题,我不认为元启发法是近似算法。在我看来,这似乎与观点无关,而只是事实。


关于“数值优化方法”,“离散优化方法”,如果将其“初始搜索空间”强制变大,似乎可以证明许多机器学习技术处于真正最优的恒定因子之内,但是我没有看到在此。

2
我不同意。*对于数值优化,您可以求出局部最小值(当然,您也可以应用使该问题不可行的过程)。*对于神经网络也是如此(至少在感知器训练期间可能会发生)。*遗传算法也可以达到局部最小值,而且,如果您选择较大的突变率,您将不会得到明智的进化!II还强烈怀疑有些数据集将始终使某些模型具有任意大的误差。
jb。

2
@vzn许多人选择可以找到最佳解决方案的模型。这是因为像SVM一样使用凸损失函数。在此处找到真正的最优值意味着“在搜索空间中找到最优解”,因此与搜索空间的外观无关。正如jb所说,对于一般的损失函数,找到真正的最佳值通常是不可能/不可行的。
Andreas Mueller

接受此答案作为当前事务状态和应用程序一般类别的描述,但仍认为存在一些桥梁,并有待证明可以将各个领域联系起来。NN可以对任意连续数学fn 建模或“近似”到任意精度的证明是紧密相关的……即kolmogorovs thm
vzn 2012年

3

机器学习通常处理具有许多局部最小值的函数的优化。具有隐藏单元的前馈神经网络就是一个很好的例子。无论这些函数是离散函数还是连续函数,都没有方法实现全局最小值并停止。很容易证明,没有通用算法可以找到连续函数的全局最小值,即使该函数是一维且平滑的(具有无限多个导数)。实际上,所有用于学习神经网络的算法都陷入局部最小值。这很容易检查:创建一个随机神经网络,对随机输入做出大量响应,然后尝试学习另一个具有相同架构的神经网络来复制响应。尽管存在完美的解决方案,但是反向传播和其他任何学习算法都无法发现它,

一些学习方法,例如模拟退火或遗传算法,探索了许多局部最小值。对于连续函数,可以使用梯度下降之类的方法来找到最接近的局部最小值。它们更快,这就是为什么它们在实践中得到广泛使用的原因。但是如果有足够的时间,则在训练集错误方面,前一组方法要优于后一组方法。但是在合理的时间限制下,对于现实世界中的问题,后一组通常更好。

对于某些模型,例如逻辑回归,存在一个局部最小值,该函数是凸的,最小化收敛到最小值,但是模型本身是简单的。

那就是真相。

还要注意,收敛性证明和最佳解决方案的收敛性证明是两件事。K-means算法就是一个例子。

最后,对于某些模型,我们根本不知道如何学习。例如,如果输出是输入的任意可计算函数,则我们不知道好的算法会在合理的时间内找到实现此功能的Turing或等效机器。例如,如果f(1)= 2,f(2)= 3,f(3)= 5,f(4)= 7,...,f(10)= 29(十个素数),则除非它已经知道素数的概念,否则不知道任何能够在合理的时间内预测f(11)= 31的学习算法。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.