趋近智
梯度下降法依据局部梯度信息,自信地“向下”移动。但如果地形并非一个简单的、平滑的碗状,能直接通向最低点,会发生什么?机器学习成本函数的优化,特别是复杂的那些,可能出乎意料地崎岖不平。这导致一些潜在的难题:局部最小值和鞍点。
想象你在浓雾中下山,总是选择你所在位置最陡峭的下坡路。你可能会发现自己身处一个小山谷。感觉像是底部,因为你周围的所有路径都向上。然而,你可能没意识到在别处存在一个更深的山谷,那是该区域真正的最低点(全局最小值)。
一个局部最小值是参数空间中的一个点 θ∗,在该点成本函数 J(θ∗) 的值低于所有附近点。然而,远处可能存在另一个点 θ∗∗,在该点 J(θ∗∗) 的值甚至更低,这被称为全局最小值。
为什么梯度下降会陷入停滞?在局部最小值(以及全局最小值)处,成本函数在所有方向上的斜率都为平坦的。数学上,梯度为零: ∇J(θ∗)=0 回顾梯度下降的更新规则: θ:=θ−α∇J(θ) 当 ∇J(θ)=0 时,更新项 α∇J(θ) 变为零,参数 θ 停止改变。算法收敛,但可能收敛到一个由局部最小值的参数所代表的次优解。
成本函数 J(θ) 的一个例子,显示了局部最小值(红色圆圈)和全局最小值(绿色星形)。梯度下降法从左侧区域开始时,可能会收敛到局部最小值,因为那里的梯度变为零。
对于像线性回归这样具有凸成本函数(形状像一个单一的碗)的简单模型,局部最小值不是一个问题;只有一个全局最小值。然而,对于像神经网络这样复杂的模型,成本曲面是高维且非凸的,可能包含许多局部最小值。有趣的是,研究表明,对于非常大的神经网络,许多局部最小值可能产生与全局最小值几乎一样好的性能,使它们在实践中不如最初担心的那样成为障碍。然而,劣质的局部最小值仍然可能存在并使优化过程陷入停滞,特别是在较小的网络或特定问题类型中。
高维优化曲面中另一个通常更麻烦的特点是鞍点。想象一下马鞍的形状:它沿着马的脊椎向下弯曲,但横跨马背向上弯曲。在马鞍的正中心,地面是平坦的。
数学上,鞍点是参数 θ∗ 处梯度为零的点,即 ∇J(θ∗)=0,就像最小值一样。然而,它不是一个最小值,因为尽管函数在某些方向上增加(比如沿着马鞍的侧面向上),它在其他方向上却减少(比如从马鞍的前后滑落)。梯度下降法在这里陷入停滞的原因与它在最小值处陷入停滞的原因相同:零梯度会停止更新。
一个描绘鞍点在 (0,0) 附近的曲面图。函数沿一个方向减小(蓝色表示较低成本),但沿另一个方向增加(红色表示较高成本)。在精确鞍点处的梯度为零,导致标准梯度下降法停止。
为什么在高维空间中(比如深度学习中遇到的那些),鞍点通常被认为比局部最小值更具问题?
标准梯度下降法仅依赖于一阶导数,难以摆脱鞍点,因为当梯度接近零时,它无法明确指示向下弯曲的方向。该算法可能会来回振荡,或者沿着鞍点定义的高原状区域非常缓慢地爬行。
标准梯度下降法只使用一阶导数信息(梯度 ∇J),而二阶导数(由海森矩阵 H 捕获,如第3章所述)则提供有关成本函数曲率的信息,这有助于区分这些点:
对于典型的机器学习模型中大量参数来说,直接使用海森矩阵进行优化(比如在牛顿法中)通常计算成本太高。然而,这种理论上的区分有助于解释为什么这些梯度为零的不同类型的点行为不同,以及为什么鞍点对于像梯度下降法这样的一阶方法来说特别棘手。
尽管局部最小值和鞍点确实带来了优化中的挑战,但它们不一定妨碍我们训练出有效的模型。梯度下降算法的变体,例如引入动量或使用自适应学习率(如RMSprop或Adam,深度学习框架中常见的优化器)的那些,被专门设计用于更有效地应对这些困难区域。这些方法通常会累积过去梯度的信息,或者单独调整每个参数的学习率。这有助于它们建立“速度”以穿过平坦区域或鞍点,并抑制震荡,使它们更容易摆脱鞍点,并可能找到更好的最小值。我们不会在这里详细介绍这些算法,但知道存在解决方案和改进是有益的。
理解这些潜在的障碍是有效应用和解决机器学习中基于梯度的优化问题的重要组成部分。识别出你的优化过程可能在鞍点附近大幅减速,或者似乎陷入了局部最小值,使你能够考虑其他优化算法,调整超参数,如学习率,或检查模型或训练过程的其他方面。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造