奇异值分解SVD在机器学习中的作用。
第三讲:为什么 SVD 这么重要?从矩阵分解理解 PCA、伪逆、低秩和稳定性
前两讲我们已经讲了两件事:
第一讲讲的是:
从列空间角度看,线性回归是在用
第二讲讲的是:
从二次型角度看,正定/半正定矩阵保证方差、曲率、距离、内积这些东西是合理的。
第三讲进入最重要的矩阵分解:
也就是奇异值分解。
1. SVD 的公式
任意矩阵
其中
这些
2. SVD 最直观的理解:旋转、缩放、再旋转
可以理解成三步:
也就是:
V^T:先旋转输入空间
Σ:沿坐标轴缩放
U:再旋转到输出空间
所以一个矩阵
先换一个最合适的坐标系,再按不同方向拉伸/压缩,最后再换到输出坐标系。
一般矩阵
3. 奇异值 是什么?
奇异值表示矩阵
很大 → 在对应方向上放大很多 很小 → 在对应方向上压缩很多 → 这个方向被 完全压没了
这就和第一讲的 null space 接上了。如果某个非零方向
说明这个方向的信息被矩阵丢掉了。对应到 SVD 中,就是某些奇异值为 0。
所以:
矩阵的 rank 等于非零奇异值的个数。
4. 一个二维图像直觉
想象你有一个单位圆
SVD 告诉你这个椭圆的两个主轴方向:
输入方向 v1 → 输出方向 u1,长度变成 σ1
输入方向 v2 → 输出方向 u2,长度变成 σ2
如果
如果
SVD 的几何图像是:
矩阵把单位球变成椭球,奇异值就是椭球各个主轴的长度。
5. 为什么 SVD 比特征值分解更通用?
特征值分解通常写成
A 必须是方阵;
普通矩阵不一定能很好地特征分解;
特征值可能是复数;
特征向量不一定正交。
但 SVD 对任意矩阵都成立:
机器学习里的数据矩阵
6. SVD 和 、 的关系
如果
因为
这说明
即
类似地:
所以
总结:
右奇异向量 V:输入空间里的重要方向
左奇异向量 U:输出空间里的重要方向
奇异值平方:A^TA 或 AA^T 的特征值
7. SVD 和线性回归:为什么伪逆能处理不可逆?
线性回归最小二乘:
如果
这时候可以用伪逆:
如果
其中
即
8. 为什么伪逆合理?
普通逆的意思是
但如果某个方向被
伪逆的想法是:
能恢复的方向尽量恢复,完全丢失的方向就不恢复。
用 SVD 说就是:
σ_i > 0 的方向:可以除以 σ_i,把缩放反过来
σ_i = 0 的方向:信息彻底丢失,不做恢复
伪逆不是魔法。它只是承认:有些方向不可逆,那就只在可逆的方向上做反变换。
9. 伪逆为什么给出最小范数解?
如果有无穷多个解满足
因为
伪逆给出的
既然 null space 方向对预测没有贡献,那就不要在这些方向上浪费参数长度。
所以伪逆会把 null space 部分设为 0。这和机器学习中的一个重要思想有关:
在所有能拟合训练集的解里,偏向更小范数的解。
10. SVD 和 PCA:为什么 PCA 可以用 SVD 做?
PCA 的目标是找数据中方差最大的方向。
假设数据矩阵
PCA 做的是对协方差矩阵做特征值分解:
其中
现在对
这说明:
V 的列向量就是 PCA 主方向;
σ_i² / m 就是对应方向上的方差。
即
11. PCA 的直觉:保留大奇异值方向
很大 → 数据在这个方向上变化很明显(方差大) 很小 → 数据在这个方向上变化很弱,可能主要是噪声
PCA 的做法就是保留最大的
例如原始数据是 1000 维,但大部分变化集中在前 20 个方向上,那么可以只保留前 20 个主成分。
PCA 的本质:用少数几个最重要的方向近似原始数据。
12. SVD 和低秩近似
SVD 可以写成求和形式:
其中
如果只保留前
那么
一个非常重要的定理(Eckart–Young):
在所有 rank 不超过
的矩阵中, 是最接近 的矩阵。
它是 PCA、矩阵压缩、推荐系统、低秩建模的理论基础。
13. 低秩在机器学习里为什么重要?
低秩意味着:一个看起来很高维、很复杂的矩阵,其实主要由少数几个模式决定。这在机器学习里非常常见。
PCA:高维数据可能主要分布在低维子空间附近。例如图像虽然有很多像素,但自然图像不是任意像素组合,里面有很强结构,所以可以低维表示。
推荐系统:用户-物品评分矩阵
LoRA:大模型微调里的 LoRA 也是低秩思想。权重更新
Factor Analysis:协方差结构
14. SVD 和条件数:为什么小奇异值会导致不稳定?
矩阵
其中
条件数大说明:有些方向被放大很多,有些方向被压缩很多。这会导致求解非常不稳定。
15. 一个直观例子:小奇异值为什么危险?
假设矩阵在某个方向上只保留了非常小的量
如果你要反过来求解,就需要除以
小奇异值对应的是"几乎不可观测的方向",在这些方向上求逆会极其不稳定。
这就是为什么病态矩阵会导致参数爆炸。
16. 为什么不推荐直接用 ?
直接构造
会把原来的病态程度平方放大。
所以数值计算里经常不推荐直接求
17. SVD 和 Ridge:正则化如何处理小奇异值?
Ridge regression 的解是:
用 SVD 分析可以看得很清楚。设
注意这里有
Ridge 解可以写成:
这里的系数不是
Ridge 的 SVD 解释:对大奇异值方向基本保留,对小奇异值方向强烈抑制。
这就是正则化为什么能提高稳定性。
18. SVD 和噪声:为什么小奇异值方向容易过拟合?
假设标签中有噪声
如果
小奇异值方向的问题是:
真实信号可能不强
但噪声会被除以很小的 σ_i 放大
导致参数大幅波动
泛化变差
这就是为什么 Ridge、截断 SVD、PCA 降维等方法都倾向于抑制小奇异值方向。
19. 截断 SVD:直接丢掉小奇异值方向
除了 Ridge,还有一种方法叫 truncated SVD:只保留前
这可以看成一种更硬的正则化:
Ridge:小奇异值方向被软抑制
Truncated SVD:小奇异值方向被直接丢弃
PCA 本质上也是一种截断 SVD。
20. 你现在应该如何理解 SVD?
不要把 SVD 记成
V:输入空间中最重要的一组方向
Σ:每个方向的重要程度/缩放强度
U:这些方向被映射到输出空间后的方向
如果用于数据矩阵
V:特征空间中的主方向
Σ:每个主方向的强弱
U:样本空间中的对应模式
如果用于线性回归:
大 σ 方向:数据能清楚识别,参数稳定
小 σ 方向:数据几乎无法识别,参数不稳定
零 σ 方向:数据完全无法识别,属于 null space
如果用于 PCA:
大 σ 方向:高方差主成分
小 σ 方向:低方差方向,可能是噪声
如果用于低秩近似:
保留前 k 个 σ:保留主要结构
丢掉后面 σ:丢掉弱结构/噪声
21. 和前两讲串起来
第一讲讲
SVD 进一步告诉你:
rank 不满 = 某些奇异值为 0
null space = 零奇异值对应的输入方向
第二讲讲
SVD 进一步告诉你:
X^TX 的特征值 = X 的奇异值平方
X^TX 是否正定 = X 是否所有奇异值都 > 0
第三讲补充:
奇异值不仅告诉你是否可逆,还告诉你可逆得稳不稳。
σ_i = 0:完全不可逆
σ_i 很小:理论上可逆,但数值极不稳定
σ_i 很大:方向信号强,比较稳定
22. 第三讲核心链条
你可以把这一讲压缩成下面几条链条。
链条一:SVD 的几何意义
A = UΣV^T
→ V^T 旋转输入空间
→ Σ 按方向缩放
→ U 旋转输出空间
→ 奇异值表示每个方向的缩放强度
链条二:SVD 和 rank
σ_i > 0 的个数 = rank(A)
σ_i = 0 表示某个方向被压成 0
→ 信息丢失 → 矩阵不可逆 → null space 非空
链条三:SVD 和伪逆
A = UΣV^T → A⁺ = VΣ⁺U^T
→ 非零 σ_i 取倒数,零 σ_i 不处理
→ 能恢复的方向恢复,丢失的方向放弃
链条四:SVD 和 PCA
X = UΣV^T → X^TX = VΣ²V^T
→ V 是 PCA 主方向
→ σ_i² / m 是该方向方差
→ 保留大 σ_i 方向就是降维
链条五:SVD 和稳定性
小 σ_i → 反求时需要除以小数 → 噪声被放大
→ 参数不稳定 → 条件数大 → 需要 Ridge / 截断 SVD / 正则化
23. 一句话总结第三讲
SVD 最重要的思想是:
任何矩阵都可以被理解为:先找到输入空间的一组关键方向,再按奇异值大小缩放这些方向,最后映射到输出空间。
在机器学习里,它的作用是:
解释 rank:非零奇异值个数
解释 null space:零奇异值方向
解释伪逆:只反转非零奇异值方向
解释 PCA:保留最大奇异值方向
解释低秩:少数大奇异值捕捉主要结构
解释不稳定:小奇异值会放大噪声
解释正则化:抑制小奇异值方向
你现在可以先记住一句最核心的话:
SVD 告诉我们,一个矩阵在哪些方向上有信息,哪些方向上没信息,哪些方向上信息很脆弱。