地面变平的地方
在第一卷里,你通过令导数为零来搜寻曲线 y = f(x) 的高点与低点。在临界点处切线水平,极大或极小只能藏在斜率消失之处。把这升到曲面 z = f(x, y) 上——一片铺在平面之上、起伏的地貌——同样的直觉依旧成立,但如今没有单一的斜率了。每一点处,曲面在每个方位上倾斜的量都不同,而全部这些倾斜都被打包进一个向量:[[gradient|梯度]] nabla f = (df/dx, df/dy),即沿 x 的偏斜率叠在沿 y 的偏斜率之上。
极大或极小只能住在曲面局部平坦之处——而局部平坦意味着同时在每个方向都平,不只是沿两条坐标轴。梯度编码了最陡的上坡方向以及它有多陡;若梯度在某处不为零,你便能沿它走一小步而上升,或逆它走一小步而下降,所以你就不可能已经坐在峰顶或坑底。于是我们要求整个向量消失:nabla f = (0, 0)。梯度为零向量的点是[[stationary-point-multivariable|驻点]](也称临界点),它们是光滑函数内部极大或极小的唯一候选者。
具体地说,nabla f = (0, 0) 是两条方程 df/dx = 0 与 df/dy = 0,须联立求解。对 f(x, y) = x^2 + y^2 - 4x,偏导数为 2x - 4 与 2y,所以唯一的驻点是 (2, 0)——而曲面是个碗,故该点是底部。对 f(x, y) = x^2 - y^2,偏导数为 2x 与 -2y,又给出 (0, 0),但这曲面沿 x 上弯、沿 y 下弯。配方相同,地貌却大不相同。梯度判别法在两种情形都找到了候选点;它单凭自身就是无法分辨谷底与山口。
一种新生物:鞍点
单变量微积分在平坦点处给出三种命运:局部极大、局部极小,或拐点——曲线在那里变平却仍朝同一方向延续。平面则添了一个真正全新的物种。仔细看 f(x, y) = x^2 - y^2 在原点处。用平面 y = 0 切曲面,你看到抛物线 z = x^2——一道向上微笑的谷,原点在其最低处。改用 x = 0 切,你看到 z = -y^2——一座向下皱眉的丘,原点在其最高处。同一个点,既是一截剖面的底,又是另一截剖面的顶。
这是一个[[saddle-point|鞍点]],名字恰如其分:它形如马鞍或一片品客薯片。坐在中心,曲面在你前后升起,而向你左右两侧坠落。放在那里的弹珠处于平衡——地面是平的,梯度为零——但这平衡不稳定:沿上升轴推它,它滚回来;沿下降轴推它,它一径滚走。鞍点是个既非极大也非极小的驻点,因为曲面在某些方向上升、在另一些方向下降。曲线上没有它的对应物,因为曲线没有「另一个方向」来与第一个方向相左。
黑塞矩阵:一张曲率的方阵
要分类一个平坦点,我们需要曲率,正如单变量需要二阶导数 f''。有两个输入时,二阶偏导数有好几个,盛放它们的账本就是[[calc-hessian-matrix|黑塞矩阵]] H。它的元素是二阶偏导数:H = [d^2f/dx^2, d^2f/dxdy; d^2f/dydx, d^2f/dy^2]。对角元量度曲面单独沿每条轴如何弯曲;非对角元量度沿 x 的斜率随你沿 y 移动而如何变化——这正是把两个方向耦合起来的扭转。
有一份馈赠使黑塞矩阵对称。克莱罗定理说,对二阶偏导数连续的函数,求导次序无关紧要:d^2f/dxdy = d^2f/dydx,混合偏导数相等。于是非对角元相等,H = [a, b; b, c],矩阵恒为对称。这不是表面的雅致——对称恰恰保证了之后全部曲率信息都是实的、规矩的,不会扭进虚数里去。但请记住诚实的告诫:若二阶偏导数不连续,混合偏导数可能真的不等,整台机器就需更小心对待。
为什么偏偏是一个矩阵捕捉到了曲率?因为[[second-order-taylor-expansion-multivariable|二阶泰勒展开]]。回想第一卷:在某点附近,单变量函数是 f(a) + f'(a)(x-a) + (1/2)f''(a)(x-a)^2。多元版本说:在驻点附近——那里梯度项整个消失——f(x) 约等于该点的 f 加上 (1/2) 乘以 d 的转置乘 H 乘 d,其中 d 是你迈出的微小一步。这个二次型 d^T H d 就是曲面剥去一切、只剩弯曲的局部形状。因此,分类驻点等同于这个问题:这个二次型是恒正、恒负,还是其符号取决于 d 指向哪边?
定性给出判决
决定一切的那一个事实,是[[definiteness-of-the-hessian|黑塞矩阵的定性]]。若对每个非零步长 d 都有 d^T H d 严格为正,称 H 正定——无论你向哪边倾,曲面都上弯,故该点是严格局部极小。若 d^T H d 恒为负,称负定——曲面在所有方向下弯,是严格局部极大。若 d^T H d 在某些方向为正、另一些方向为负,则 H 不定,而这一混合判决恰恰就是鞍点:这边上,那边下。定性正是梯度无法给你的、不挑方向的总结。
对 2 阶黑塞矩阵 H = [a, b; b, c],这化为一条著名、可验算的法则,由行列式 D = ac - b^2 搭成。若 D > 0 且 a > 0,二次型正定——局部极小。若 D > 0 且 a < 0,负定——局部极大。若 D < 0,二次型不定——必为鞍点。行列式在此真在出力:D 为正意味两个曲率同号,且扭转项 b^2 太小,翻不动什么,碗于是端住了;D 为负意味扭转占了上风,把碗撕成鞍。那个单独的数 a 则只是说明同号的碗朝哪边开口。
Stationary point of f(x,y), Hessian H = [a, b; b, c], D = a*c - b*b D > 0, a > 0 -> local MINIMUM (bowl up, positive definite) D > 0, a < 0 -> local MAXIMUM (bowl down, negative definite) D < 0 -> SADDLE point (mixed, indefinite) D = 0 -> TEST FAILS (flat to 2nd order -- look higher) example f = x^2 - y^2 : a=2, c=-2, b=0 -> D = -4 < 0 -> saddle example f = x^2 + y^2 : a=2, c= 2, b=0 -> D = 4 > 0, a>0 -> minimum
细读那行小字
请诚实面对这条[[second-derivative-test-multivariable|二阶导数判别法]]失声之处:D = 0 的情形。当行列式恰为零,二次型至少沿一个方向是平的——它在二阶上既不上弯也不下弯——判别法便干脆无法裁决。判决于是悬在黑塞矩阵从未看见的三次或更高次项上。经典陷阱是「猴鞍」f(x, y) = x^3 - 3xy^2,它在原点的黑塞矩阵是零矩阵,故 D = 0;判别法一耸肩,唯有看那三次形状,你才会发现一个三向鞍,留出两条腿和一条尾巴的位置。行列式为零是一面写着「往更高处看」的旗,绝非「这是极小」。
还有两条诚实的局限,二者都直接承自第一卷。其一,判别法纯属局部:它只把某点认证为相对于其紧邻而言的低处。一个函数可以有一个整洁的局部极小,却离它在曲面别处真正的全局极小远得很——二阶导数判别法从不看见整片地貌,只看脚下那个小凹。其二,它只就内部驻点发言。一个真实设计问题的实际最优值,常常坐落在梯度从不变平的边界或角落上,恰如单变量优化中端点可以胜过闭区间内所有的内部临界点。
- 算出两个一阶偏导数 df/dx 与 df/dy,各令为零,联立求解方程组,列出每一个内部驻点。
- 构造黑塞矩阵 H = [d^2f/dx^2, d^2f/dxdy; d^2f/dydx, d^2f/dy^2],并分别在每个驻点处求出其各元素的值。
- 在该点算出 D = ac - b^2;若 D > 0,按 a 的符号读出极小(a > 0)或极大(a < 0),若 D < 0 判为鞍点,若 D = 0 则退回到高阶分析。
- 为求真正的最优,还要单独检查边界与任何角落,再把这些候选值与内部的胜者比较,方能定出全局最优。