机器学习通常处理具有许多局部最小值的函数的优化。具有隐藏单元的前馈神经网络就是一个很好的例子。无论这些函数是离散函数还是连续函数,都没有方法实现全局最小值并停止。很容易证明,没有通用算法可以找到连续函数的全局最小值,即使该函数是一维且平滑的(具有无限多个导数)。实际上,所有用于学习神经网络的算法都陷入局部最小值。这很容易检查:创建一个随机神经网络,对随机输入做出大量响应,然后尝试学习另一个具有相同架构的神经网络来复制响应。尽管存在完美的解决方案,但是反向传播和其他任何学习算法都无法发现它,
一些学习方法,例如模拟退火或遗传算法,探索了许多局部最小值。对于连续函数,可以使用梯度下降之类的方法来找到最接近的局部最小值。它们更快,这就是为什么它们在实践中得到广泛使用的原因。但是如果有足够的时间,则在训练集错误方面,前一组方法要优于后一组方法。但是在合理的时间限制下,对于现实世界中的问题,后一组通常更好。
对于某些模型,例如逻辑回归,存在一个局部最小值,该函数是凸的,最小化收敛到最小值,但是模型本身是简单的。
那就是真相。
还要注意,收敛性证明和最佳解决方案的收敛性证明是两件事。K-means算法就是一个例子。
最后,对于某些模型,我们根本不知道如何学习。例如,如果输出是输入的任意可计算函数,则我们不知道好的算法会在合理的时间内找到实现此功能的Turing或等效机器。例如,如果f(1)= 2,f(2)= 3,f(3)= 5,f(4)= 7,...,f(10)= 29(十个素数),则除非它已经知道素数的概念,否则不知道任何能够在合理的时间内预测f(11)= 31的学习算法。