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

机器算法验证 机器学习 优化 近似
2022-01-31 14:28:09

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

其他人同意吗?此外,在我看来,如果将启发式算法设置为探索大部分搜索空间(例如,将参数/步长设置小),则可以保证哪些启发式算法接近理论最优值,尽管我没有在论文中没有看到。有谁知道这是否已在论文中显示或证明?(如果不是针对一大类算法,可能是针对小类比如 NN 等)

2个回答

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

  • 有元启发式方法,它们是迭代尝试改进候选解决方案的方法。这方面的例子有禁忌搜索、模拟退火、遗传算法等。请注意,尽管这些方法在很多情况下都能很好地工作,但对于这些方法何时有效以及何时无效,并没有深入的了解。更重要的是,当他们没有找到解决方案时,我们可以任意远离它。元启发式方法解决的问题本质上往往是离散的,因为有更好的工具来处理连续问题。但是,你也会时不时地看到针对连续问题的元启发式算法。

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

  • 有一些离散优化方法,这些方法在本质上往往与算法相关联,以解决经过充分研究的离散问题:例如最短路径、最大流量等。该领域的人们也关心他们的算法是否真的有效(证明)。该组中有一部分人研究非常困难的问题,预计不会存在快速算法。然后他们研究近似算法,这是一种快速算法,他们能够证明他们的解决方案在真正最优值的恒定因子内。这称为“近似算法”。这些人也将他们的结果作为证明。

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

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

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

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

这就是残酷的事实。

还要注意,收敛证明和收敛到最佳解决方案的证明是两个不同的东西。K-means 算法就是一个例子。

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