单变量微积分通常通过识别导数 f′(x)=0 的临界点来寻找函数 f(x) 的潜在最小值和最大值。在这些点,切线是水平的,表明函数暂时平坦。随后,二阶导数 f′′(x) 可以用于对这些点进行分类:f′′(x)>0 表示局部最小值(向上凹),而 f′′(x)<0 表示局部最大值(向下凹)。
我们可以将此思想推广到多变量函数,例如 f(x,y),或更一般地表示为 f(x),其中 x 是一个变量向量 (vector) (x1,x2,...,xn)。
借助梯度寻找临界点
对于多变量函数,导数为零的对应物是梯度向量 (vector)为零向量。函数 f(x) 的临界点(或驻点)x0 是梯度为零的点:
∇f(x0)=0
请记住,梯度 ∇f 是一个包含所有偏导数的向量:∇f=(∂x1∂f,∂x2∂f,...,∂xn∂f)。因此,条件 ∇f(x0)=0 意味着在 x0 处,所有偏导数必须同时为零:
∂x1∂f(x0)=0,∂x2∂f(x0)=0,...,∂xn∂f(x0)=0
这直观地意味着什么?梯度指向最陡峭上升的方向。如果梯度是零向量,则表示从该点没有上升(或下降)的方向。函数在所有平行于输入轴的方向上局部“平坦”。就像单变量情况一样,这些临界点可能是局部最小值、局部最大值或其他类型的点。
临界点分类:海森矩阵的作用
在单变量情况下,仅有零导数不足够;我们需要二阶导数判别法。对于多变量函数,包含所有二阶偏导数的海森矩阵 H 扮演着二阶导数的角色。
H=∂x12∂2f∂x2∂x1∂2f⋮∂xn∂x1∂2f∂x1∂x2∂2f∂x22∂2f⋮∂xn∂x2∂2f⋯⋯⋱⋯∂x1∂xn∂2f∂x2∂xn∂2f⋮∂xn2∂2f
在临界点 x0(其中 ∇f(x0)=0)评估海森矩阵有助于我们了解函数在该点附近的曲率。多变量函数的二阶导数判别法使用海森矩阵 H(x0) 的性质:
- 局部最小值: 如果 H(x0) 是正定的,则 f 在 x0 处有局部最小值。直观地,这意味着函数在从 x0 辐射的所有方向上“向上凹”。 (如果对于所有非零向量 (vector) v,都有 vTHv>0,则矩阵是正定的。这通常对应于所有特征值均为正)。
- 局部最大值: 如果 H(x0) 是负定的,则 f 在 x0 处有局部最大值。这意味着函数在所有方向上“向下凹”。 (负定通常对应于所有特征值均为负)。
- 鞍点: 如果 H(x0) 是不定的(意味着它既不正定也不负定,通常同时具有正负特征值),则 f 在 x0 处有鞍点。这是函数在某些方向上向上弯曲而在其他方向上向下弯曲的点,像马鞍一样。请看下面的图示。
- 不确定: 如果海森矩阵判别法没有结论(例如,如果它是正半定或负半定,意味着某些特征值可能为零),则需要其他方法。
对于机器学习 (machine learning)中的大多数优化问题,我们主要关注于寻找局部(或理想情况下全局)最小值。鞍点对某些优化算法构成一个难题,因为梯度为零,可能中止进展,即使它不是最小值。
在函数 f(x,y)=x2−y2 的原点 (0,0) 处,梯度 ∇f=(2x,−2y) 为 (0,0)。海森矩阵是 (200−2),它是不定的。这表明是一个鞍点:函数沿x轴增加但沿y轴减小。
与机器学习 (machine learning)的关联性
在机器学习中,我们想要优化的函数 f 通常是成本函数或损失函数 (loss function),它衡量模型表现有多差。变量 x 是模型的参数 (parameter)(权重 (weight)和偏置 (bias))。我们的目标几乎总是最小化此成本函数。
因此,寻找成本函数关于参数的梯度为零的点是一个基本步骤。虽然使用海森矩阵的二阶导数判别法提供了一种分类这些点的方法,但计算和分析海森矩阵可能计算成本高昂,特别是对于具有数百万参数的模型(如深度神经网络 (neural network))。
此外,对于复杂的机器学习模型,通过解析地求解偏导数方程组来寻找 ∇f=0 的点通常是难以处理的。这促使使用迭代优化算法,例如梯度下降 (gradient descent)(我们将在下一章中介绍),它们使用梯度 ∇f 来遍历成本曲面并逐步移向最小值,而无需计算海森矩阵或显式地求解 ∇f=0。然而,理解梯度、临界点和曲率的原理对于理解这些算法如何以及为何有效,以及它们可能遇到哪些难题(例如鞍点)仍然非常重要。