英文版本:[[Second Derivative Test - Where Calculus Meets Linear Algebra]]
## 为什么驻点如此重要?
**驻点**(Stationary Point)是指梯度消失的点——在这里,函数既不上升也不下降。这些点之所以关键,是因为它们是寻找最优值的“头号嫌疑人”。对于任何可微函数,局部极小值和局部极大值一定出现在驻点上。
这种模式在各个领域随处可见:
* **机器学习**:训练神经网络本质上是在最小化一个拥有数百万参数的损失函数;梯度下降算法就是在寻找该曲面的驻点。
* **经济学**:企业追求利润最大化,消费者追求效用最大化;驻点决定了资源的最优配置。
* **物理学**:系统趋向于能量最低状态;平衡态对应于位能函数的驻点。
* **统计学**:最大似然估计通过寻找似然函数的驻点,来确定让观测数据出现概率最大的参数。
**核心逻辑**:只要一个量取决于多个变量,而你想找到它的最佳值,你就得先搜寻驻点,然后对它们进行分类。
## 两个阶段的流程
1. **第一阶段**:让所有一阶偏导数等于零。此时梯度消失,所有的驻点都会浮出水面。
2. **第二阶段**:对每个点进行分类——它是局部极小值、局部极大值,还是鞍点?这一步由**二阶导数判别法**完成。
## 泰勒多项式:最理想的工具
函数 $f(x,y)$ 可能极其复杂,包含三角函数、嵌套指数或其他难以直接分析的组合。但在特定点附近,**泰勒多项式**可以用一个表现几乎一致的多项式来替代原函数。
多项式的逻辑简单明了,而舍弃的误差又微乎其微。这种“以简代繁”的交换正是该方法的核心。
在驻点处,这种转化起到了决定性作用。你想知道:当你离开驻点时,函数值是上升、下降,还是兼而有之?泰勒多项式将这个几何问题转化为了代数问题——通过观察多项式的符号特征来得出结论。
## 数学推导
$f(x,y)$ 在 $\mathbf{a} = (a_1, a_2)$ 附近的二阶泰勒展开式为:
$f(\mathbf{a} + \mathbf{h}) \approx f(\mathbf{a}) + \underbrace{f_x(\mathbf{a})h_1 + f_y(\mathbf{a})h_2}_{\text{线性项}} + \underbrace{\frac{1}{2}\bigl[f_{xx}(\mathbf{a})h_1^2 + 2f_{xy}(\mathbf{a})h_1 h_2 + f_{yy}(\mathbf{a})h_2^2\bigr]}_{\text{二次项}}$
其中 $\mathbf{h} = (h_1, h_2)$ 是远离 $\mathbf{a}$ 的微小位移。
### 线性项为何消失?
假设 $\mathbf{a}$ 是一个驻点。根据定义,$f_x(\mathbf{a}) = 0$ 且 $f_y(\mathbf{a}) = 0$。因此:
$f_x(\mathbf{a})h_1 + f_y(\mathbf{a})h_2 = (0)h_1 + (0)h_2 = 0$
这不是什么花招,而是因为系数本身就是零。梯度是一阶项的系数向量,梯度消失意味着一阶贡献被彻底抹除。
这就是驻点的特殊之处。在非驻点处,线性项占主导地位(它们随 $|\mathbf{h}|$ 缩小,而二次项随 $|\mathbf{h}|^2$ 缩小)。函数只是沿着梯度方向倾斜,没有什么好分类的。只有当线性项消失,**二次型**(Quadratic Form)才开始掌权,**曲率**才成为主导行为。
### 剩下的部分
$f(\mathbf{a} + \mathbf{h}) - f(\mathbf{a}) \approx \frac{1}{2}\bigl[f_{xx}h_1^2 + 2f_{xy}h_1 h_2 + f_{yy}h_2^2\bigr]$
左边是函数值的变化量,右边是关于 $\mathbf{h}$ 的二次型。用矩阵语言表示:
$f(\mathbf{a} + \mathbf{h}) - f(\mathbf{a}) \approx \frac{1}{2}\mathbf{h}^T H \mathbf{h}, \qquad H = \begin{pmatrix} f_{xx} & f_{xy} \\ f_{xy} & f_{yy} \end{pmatrix}$
## 判定分类
所有问题都简化为一个:$\mathbf{h}^T H \mathbf{h}$ 的符号是什么?
1. **若对所有非零 $\mathbf{h}$,恒有 $\mathbf{h}^T H \mathbf{h} > 0$**:函数在所有方向上都上升 $\Rightarrow$ **局部极小值**。
2. **若对所有非零 $\mathbf{h}$,恒有 $\mathbf{h}^T H \mathbf{h} < 0$**:函数在所有方向上都下降 $\Rightarrow$ **局部极大值**。
3. **符号取决于 $\mathbf{h}$ 的方向**:有些方向上升,有些方向下降 $\Rightarrow$ **鞍点**。
这与单变量微积分的逻辑一致:$ax^2 + bx + c$ 中若 $a > 0$,抛物线开口向上,对应极小值。**正定性**(Positive Definiteness)将这一概念推广到了 $n$ 维——无论你从哪个方向切开这个图形,它都呈现开口向上的形状。
## 桥梁:当微积分遇见线性代数
依赖链条如下:
**泰勒多项式 $\rightarrow$ 出现二次型 $\rightarrow$ 线性代数进行分类**
二阶导数判别法是这两个数学分支的交汇点:微积分产出 **Hessian 矩阵**,而线性代数判断它的性质:
* **正定** $\Rightarrow$ 局部极小值
* **负定** $\Rightarrow$ 局部极大值
* **不定** $\Rightarrow$ 鞍点
### $2 \times 2$ 矩阵的情况
在驻点 $\mathbf{a}$ 处的 Hessian 矩阵为:
$H = \begin{pmatrix} f_{xx} & f_{xy} \\ f_{xy} & f_{yy} \end{pmatrix}$
矩阵行列式为:$Det(H) = f_{xx} f_{yy} - (f_{xy})^2$。
教科书上的常用配方——先看 $Det(H) > 0$,再看 $f_{xx}$ 的符号——其实就是**赫尔维茨判据**(Sylvester's Criterion)在 $2 \times 2$ 矩阵上的应用。
## 参考-典型的二阶导数判判定流程
1. **找到驻点**:满足 $\nabla f = 0$。
2. **计算 Hessian 行列式 $D$**:
* **如果 $D < 0$**:直接判定为**鞍点**。
* **如果 $D = 0$**:**判别失效**,需要更高阶的项或进一步分析。
* **如果 $D > 0$**:观察 $f_{xx}$ 的符号:
* $f_{xx} > 0$:**局部极小值**(正定,如碗状开口向上)。
* $f_{xx} < 0$:**局部极大值**(负定,如碗状开口向下)。
## 测试正定性的几种方法
不同的视角可以得出相同的答案,核心都是询问对于所有非零向量 $\mathbf{v}$,是否满足 $\mathbf{v}^T A \mathbf{v} > 0$。
* **特征值法**:计算所有特征值。如果全部为正,则为正定。这是最直观的视角:二次型在每个特征方向上都向外拉伸空间。
* **Sylvester 判据(顺序主子式)**:检查所有领先主子式 $\Delta_1, \Delta_2, \ldots, \Delta_n$ 是否全部大于零。这避免了复杂的特征值计算,适合多变量扩展。
* **Cholesky 分解**:尝试将矩阵分解为 $A = LL^T$。如果分解成功且 $L$ 的对角线元素全为正,则矩阵正定。这是数值计算软件的首选。
* **高斯消元法(主元法)**:在不交换行的情况下进行消元。如果所有主元都为正,则矩阵正定。
* **定义法**:通过代数论证(如配方法)证明 $\mathbf{v}^T A \mathbf{v} > 0$。在实际计算中较少使用,但有时是最简洁的证明。
## 微积分和线代的交汇处
微积分教材中的二阶导数判别法,本质上是一个线性代数中的**矩阵分类问题**。研究二次型、特征值和正定性并非绕路,它们正是驱动多变量优化的核心引擎。