Hessian Matrix & SVD 分解
梯度告诉你往哪边走。
Hessian 告诉你每个方向弯得多厉害。
SVD 把一个线性映射拆成:正交变换、沿坐标轴伸缩、再做一次正交变换。
Hessian 描述函数的局部形状。SVD 描述矩阵怎样变形空间。二者在最小二乘中接到一起。
Hessian
设
f:Rn→R
梯度收集一阶偏导:
∇f(x)=∂x1∂f⋮∂xn∂f
Hessian 收集二阶偏导:
Hf(x)=∂x12∂2f⋮∂xn∂x1∂2f⋯⋱⋯∂x1∂xn∂2f⋮∂xn2∂2f
若二阶偏导连续,混合偏导可交换,所以
Hf(x)=Hf(x)T
Hessian 是实对称矩阵。
Hessian 就是局部曲率
在 x 附近走一小步 Δx:
f(x+Δx)≈f(x)+∇f(x)TΔx+21ΔxTHf(x)Δx
三项分别是:原高度、斜率、弯曲。
沿单位方向 v 的二阶变化为:
vTHf(x)v
它大于 0,这个方向向上弯;小于 0,这个方向向下弯;接近 0,这个方向很平。
在驻点 ∇f(x)=0 处,Hessian 的符号决定局部形状。
把曲率轴找出来
实对称矩阵可以正交对角化:
H=QΛQT
Q 的列向量 qi 是特征向量,Λ 的对角元 λi 是特征值。
令
Δx=Qz
则二次项变成:
ΔxTHΔx=zTΛz=i∑λizi2
原坐标中混在一起的曲率,被 Q 转到了各自独立的主轴上。
于是驻点分类很直接:
- 所有 λi>0:严格局部极小值;
- 所有 λi<0:严格局部极大值;
- 有正有负:鞍点;
- 出现 0 且其余同号:二阶信息不够。
最后一种需要继续看更高阶项。
SVD
任意矩阵
A∈Rm×n
都可以分解为:
A=UΣVT
从右往左读:
- VT 对输入空间做正交变换;
- Σ 沿坐标轴伸缩;
- U 对输出空间做正交变换。
正交变换包括旋转和翻转,不改变长度与夹角。
V 的列向量叫右奇异向量,给出输入方向。
U 的列向量叫左奇异向量,给出这些方向变换后的输出方向。
Σ 的对角元
σ1≥σ2≥⋯≥0
叫奇异值,给出各方向的伸缩倍数。
零奇异值对应被压扁的方向。非零奇异值的数量就是矩阵的秩。
奇异值从哪里来
由 SVD:
ATA=(UΣVT)T(UΣVT)=VΣTΣVT
所以 ATA 的特征向量是 A 的右奇异向量,特征值是奇异值的平方:
λi(ATA)=σi(A)2
同理:
AAT=UΣΣTUT
AAT 给出左奇异向量。
这也是一种计算 SVD 的思路。不过数值计算通常直接对 A 做 SVD。显式形成 ATA 会平方条件数,也会放大数值误差。
Hessian 与 SVD 的关系
Hessian 是对称方阵,所以优先使用特征分解:
H=QΛQT
它当然也有 SVD。令
∣Λ∣=diag(∣λ1∣,…,∣λn∣)
令
si={1,−1,λi≥0λi<0,S=diag(s1,…,sn)
则
H=(QS)∣Λ∣QT
这就是 Hessian 的一个 SVD。故:
σi(H)=∣λi(H)∣
Hessian 的奇异值给出曲率强度,它的特征值还给出曲率方向的正负。判断极小值、极大值和鞍点时,需要看特征值的符号。
例如:
f(x,y)=23x2−21y2
它的 Hessian 为:
H=[300−1]
特征值是 3,−1,所以原点是鞍点。
奇异值是 3,1。只看奇异值会漏掉向下弯的符号。
二者在最小二乘中相遇
设损失函数为:
L(θ)=21∥Aθ−b∥22
则
∇L(θ)=AT(Aθ−b)
HL=ATA
再代入 A=UΣVT:
HL=VΣTΣVT
这句话很重要:
数据矩阵 A 的右奇异向量,就是损失函数的主曲率方向;奇异值的平方,就是这些方向上的曲率。
于是:
- σi 大:该方向很陡;
- σi 小:该方向很平;
- σi=0:该方向完全不影响损失,参数无法由数据唯一确定。
若 A 满列秩,则:
κ(HL)=σmin2σmax2=κ(A)2
最小二乘的 Hessian 会把原矩阵的条件数平方。这解释了病态数据为什么让优化变慢、数值误差变大。
梯度下降为什么会被曲率拖慢
对二次损失做梯度下降:
θt+1=θt−ηAT(Aθt−b)
取一个最小二乘解 θ∗,令
et=θt−θ∗,zt=VTet
换到右奇异向量坐标后,每个误差方向独立更新:
zt+1,i=(1−ησi2)zt,i
稳定步长需要满足:
0<η<σmax22
最大的奇异值限制步长,最小的非零奇异值决定最慢方向。两者相差很大时,只能用小步长慢慢走过平坦方向。
加入 L2 正则化:
Lλ(θ)=21∥Aθ−b∥2+2λ∥θ∥2
Hessian 变为:
HLλ=ATA+λI
每个方向的曲率从 σi2 变成 σi2+λ。原来的平坦方向被抬起来,问题更稳定。
怎么选
| 想知道什么 | 看什么 |
|---|
| 函数在驻点附近是极小、极大还是鞍点 | Hessian 的特征值 |
| 矩阵在哪些方向伸缩最强 | SVD |
| 最小二乘的主曲率方向 | A 的右奇异向量 |
| 最小二乘的曲率大小 | σi(A)2 |
| 高维模型的局部曲率 | Hessian-vector product 与特征值算法 |
高维问题里,完整 Hessian 可能大到无法存储。实际常计算 Hv,再用幂迭代或 Lanczos 方法估计最大的几个特征值。
最后压缩:
梯度是一阶斜率。
Hessian 是带符号的二阶曲率。
SVD 是线性映射的主轴与伸缩。
最小二乘里,H=ATA,所以曲率等于奇异值的平方。
相关:[[07_数学/一元线性回归方程推导|一元线性回归方程推导]]