深度学习的核心问题是一个非常难的优化问题。因此,在神经网络出现后的几十年里,深度神经网络优化问题的难度是阻碍其成为主流的重要因素。并导致其在1990年代和2000年代初的衰落。不过现在这个问题已经基本解决了。在这篇博文中,我将讨论优化神经网络的“困难”,以及如何从理论上解释这个问题。简而言之:神经网络越深,优化问题就越难。最简单的神经网络是单节点感知器,其优化问题是凸的。凸优化问题的好处是所有局部最小值也是全局最小值。存在各种各样的优化算法来解决凸优化问题,并且每隔几年就会发现更好的用于凸优化的多项式时间算法。单个神经元的权重可以使用凸优化算法轻松优化(见下图)。让我们看看当我们扩展单个神经元时会发生什么。图1左:凸函数。右:非凸函数。凸函数比非凸函数更容易找到函数表面的底部(来源:RezaZadeh)自然下一步是添加更多的神经元,同时保持单层神经网络。对于具有单层n节点感知器的神经网络,如果存在使神经网络能够正确分类训练集的边权重,则可以通过线性规划在多项式时间O(n)内找到这样的边权重。线性规划也是凸优化的一个特例。此时出现一个问题:我们能否对更深的多层神经网络做出类似的保证?很不幸的是,不行。要可证明地解决两层或更多层的一般神经网络的优化问题,需要遇到计算机科学中一些最大的未解决问题的算法。因此,我们对机器学习研究人员寄予厚望,试图找到可证明解决深度神经网络优化问题的算法。因为这个优化问题是NP难的,也就是说如果这个问题可以在多项式时间内可证明地解决,那么其他几十年都没有解决的问题也可以解决。事实上,J.StephenJudd在1988年发现以下问题是NP-hard问题:给定一个通用的神经网络和一组训练样本,是否存在一组网络边缘权重可以让神经网络产生正确的输出?贾德的研究还表明,即使要求神经网络仅对三分之二的训练样本产生正确的输出,仍然是一个NP-hard问题。这意味着即使在最坏的情况下,近似地训练神经网络本身也是困难的。Blum和Rivest在1993年发现的情况更糟:即使是只有两层和三个节点的简单神经网络的训练优化问题仍然是NP-hard。从理论上讲,深度学习与机器学习中许多相对简单的模型(如支持向量机和逻辑回归模型)的区别在于,这些简单的模型可以在数学上证明可以在多项式时间内完成模型优化。对于这些相对简单的模型,我们可以保证即使运行时间超过多项式时间的优化算法也找不到更好的模型。但是现有的深度神经网络优化算法并不能提供这样的保证。训练完深度神经网络模型后,您不知道该网络模型是否是您当前配置下可以找到的最佳模型。所以你会有疑问,如果你继续训练模型,能不能得到更好的模型。幸运的是,我们可以在实践中非常有效地接近这些极端结果:运行经典的梯度下降优化方法可以获得足够好的局部最小值,使我们能够在许多常见问题上取得巨大进步,例如图像识别、语音识别和机器翻译。我们简单地忽略最终结果并在时间允许的情况下进行尽可能多的梯度下降迭代。看起来传统优化理论的结果很残酷,但我们可以尝试通过工程方法和数学技巧来规避这些问题,例如启发式方法、添加更多机器和使用新硬件(如GPU)。尽管理论结果残酷,但一些研究工作正在积极探索为什么这些经典优化算法仍然运行良好。
