二次型是由特征值决定的碗
直线是一次的。这次往上走一级,看一个在平面上拱起的高度。它是 q(x) = xᵀAx,把对称矩阵 A = [a, b; b, c] 展开就是 q = a·x² + 2b·xy + c·y²。把这张曲面在某个固定高度切开(水平集),得到的是椭圆或双曲线。惊人之处在于:决定形状的全是 A 的特征值和特征向量。特征向量指向碗的主轴,特征值定下每条轴弯得多陡。两个特征值都为正,就是底部唯一的碗;符号相反,就是鞍。而任何光滑函数的二阶导(海森矩阵)正是一个二次型,所以这一个想法把二阶导判定、PCA、凸优化串成一条线。
用滑块设定对称矩阵 A 的三个值 a、b、c。画面把高度 q = a·x² + 2b·xy + c·y² 画成等高线。两个特征值都为正时,等高线是闭合的椭圆,于是你看到一个朝中心凹下的碗(蓝调)。都为负时还是同样的椭圆,但中心最高,是个穹顶(红调)。一正一负时,等高线张开成双曲线,得到一个鞍——一个方向上坡、另一个方向下坡。调大 b,等高线就斜着倾。同一个 q 一直是一条公式,可只改 a、b、c 三个数,它就在碗、穹顶、鞍之间来回。
这次只看一条等高线:在 q = 1 处切开的水平集,也就是 xᵀAx = 1。把 A 放在正定附近,这条曲线就是一个干净的椭圆。但它不是随便躺着的,它的两条轴正好沿着 A 的特征向量排列。而每条半轴的长度是 1/√λ。特征值大,那个方向弯得陡,椭圆在那儿就短;特征值小,弯得缓,椭圆就长。用滑块改变 A,特征向量(主轴)和特征值一起更新。这个椭圆正是 PCA 的协方差椭圆,也和你在 SVD 里见过的那个椭圆同根同源;区别只在于那边半轴是 √λ,这边是 1/√λ。
现在你亲自把两个特征值推过零。移动滑块 λ1 和 λ2,组件立刻给出判定。都为正:正定,处处朝上拱的碗,所以中心是唯一的最小。都为负:负定,倒过来的穹顶,所以中心是最大。符号相反:不定,也就是鞍。恰有一个为零:半定,一个方向弯、另一个方向平的槽。正涂绿色,负涂红色,一个小形状图标告诉你是碗、穹顶、鞍还是槽。要点是:两个符号决定一切。
看看 b·xy 交叉项为什么碍事,又如何消失。保持两个特征值 λ1、λ2 不变,只转角度 θ,就造出 A = R Λ Rᵀ。θ 不为零时交叉项 b 还活着,椭圆斜着躺。用滑块旋转椭圆。当主轴正好和 x、y 轴对齐的那一刻,b 掉到 0,在那套坐标里 q 干净地化为 q = λ1·y1² + λ2·y2²,一个没有交叉项的形式。这正是对角化。在 A = Q Λ Qᵀ 里,用 Q 旋转坐标,混合消失,留下两条轴各自独立的纯粹之和。下方显示当前坐标的 q 表达式。
最后,看看这一切为什么是优化的核心。任何光滑函数,在一点附近,都按一个叫海森矩阵的对称矩阵弯曲,它收集了函数的二阶导。海森矩阵就是一个二次型。所以在梯度为零的临界点:海森正定,该点是局部最小(碗底);负定,是局部最大(穹顶);不定,是鞍点。这正是二阶导判定。用滑块改变海森矩阵,等高线地形和判定一起变。这正是梯度下降为何会愉快地滚进正定的碗、却在鞍点处徘徊的原因。一点处的曲率是正、是负、还是相反,决定了答案。