本页讲解奇异值分解(singular value decomposition,SVD)——任意矩阵最稳定的分解工具,也是 LoRA(Low-Rank Adaptation,低秩适配)的数学基础。侧重点:几何直觉、易错点纠正、工业应用钩子。
段末注释:SVD 将 $A \in \mathbb{R}^{m \times n}$ 写成 $A = U \Sigma V^\top$:$U,V$ 正交,$\Sigma$ 对角且非负(奇异值 $\sigma_1 \ge \sigma_2 \ge \cdots$)。它把复杂线性变换拆成「旋转 → 缩放 → 再旋转」。
1. 为什么要发明 SVD?(D1)
| 对比项 | 特征值分解(EVD) | 奇异值分解(SVD) |
|---|---|---|
| 适用矩阵 | 必须方阵 $n \times n$ | 任意 $m \times n$ |
| 物理意义 | 方阵固有伸缩方向 | 任意线性变换的主轴与伸缩强度 |
一句话:EVD 只能处理「自己映射到自己」的方阵;现实数据矩阵往往是矩形的,SVD 是通用工具。
2. 几何直觉:三步变形(D2)

想象输入空间有一个单位球体,$A\mathbf{x}$ 整体等价于:
- $V^\top$(纯旋转):把球体旋转,使坐标轴对齐即将拉伸的方向——形状不变。
- $\Sigma$(纯缩放):沿坐标轴拉伸/压缩 → 正放的椭球;若 $m \neq n$,还会被「拍扁」(降维)——方向不变。
- $U$(纯旋转):把正放椭球旋到输出空间最终姿态——形状不变。
原矩阵 $A$ 是「暴力混合」;SVD 是「标准化流水线」。
3. 核心公式与维度地图(D2–D3)

$$
A_{m \times n} = U_{m \times m},\Sigma_{m \times n},V^\top_{n \times n}
$$
| 矩阵 | 维度 | 性质 | 几何角色 | 归属空间 |
|---|---|---|---|---|
| $U$ | $m \times m$ | 正交:$U^\top U = I$ | 最终旋转 | 输出(列空间) |
| $\Sigma$ | $m \times n$ | 对角、非对角为 0 | 沿轴缩放 | 跨空间桥梁 |
| $V$ | $n \times n$ | 正交:$V^\top V = I$ | 初始旋转 | 输入(行空间) |
紧凑形式($r = \mathrm{rank}(A)$):
$$
A = U_r \Sigma_r V_r^\top = \sum_{i=1}^{r} \sigma_i \mathbf{u}_i \mathbf{v}_i^\top
$$
每项 $\sigma_i \mathbf{u}_i \mathbf{v}_i^\top$ 是秩-1 矩阵;SVD 把 $A$ 拆成秩-1 片的加权和。
⚠️ 纠错 1:$\Sigma$ 绝对不是正交矩阵
- 旧认知:以为 $U,\Sigma,V$ 三个都正交。
- 正确:只有 $U$ 与 $V$ 正交;$\Sigma$ 是对角阵,且常为长方形。
- 检验:正交要求 $\Sigma^\top \Sigma = I$。但 $\Sigma^\top \Sigma$ 的对角元是 $\sigma_i^2$,除非全体 $\sigma_i=1$,否则 $\neq I$。
4. 计算执行顺序:从右往左(D3)
⚠️ 纠错 2:别从左往右「读公式」当计算序
数据 $\mathbf{x}$ 是列向量,写在最右($A\mathbf{x}$)。结合律给出:
$$
A\mathbf{x} = U \cdot \Sigma \cdot (V^\top \mathbf{x})
$$
- 先 $V^\top\mathbf{x}$:旋转输入(离数据最近)
- 再 $\Sigma$:拉伸
- 最后 $U$:旋转输出
穿衣模型:$\mathbf{x}$ 是身体;$V^\top$ 是内衣(先穿),$\Sigma$ 是外套,$U$ 是雨衣(最外层)。列式从左往右写,执行从右往左穿。
5. 奇异值数量、$A^\top A$ 与术语铁律(D3)
⚠️ 纠错 3:到底有几个奇异值?
- 理论坑位:$\min(m,n)$ 个对角位置。
- 有效个数:等于 $\mathrm{rank}(A)$(非零奇异值个数);$r < \min(m,n)$ 时多余位置严格为 0。
例($3\times 2$):
$$
\Sigma = \begin{bmatrix} \sigma_1 & 0 \ 0 & \sigma_2 \ 0 & 0 \end{bmatrix}
$$
满秩时 $\sigma_1,\sigma_2>0$;秩为 1 则 $\sigma_2=0$。
⚠️ 纠错 4:奇异值 ≠ 特征值
| 特征值 $\lambda$ | 奇异值 $\sigma$ | |
|---|---|---|
| 对象 | 方阵 | 任意矩阵 |
| 定义 | $A\mathbf{v}=\lambda\mathbf{v}$ | $\sigma_i=\sqrt{\lambda_i(A^\top A)}$(亦对 $AA^\top$) |
| 口诀 | 方阵有特征 | 矩形有奇异;开后门 $A^\top A$ 再开根号 |
关系(完整):
- $A^\top A$ 的特征值 $=\sigma_i^2$,特征向量 $=V$ 的列(右奇异向量)
- $AA^\top$ 的特征值 $=\sigma_i^2$,特征向量 $=U$ 的列(左奇异向量)
对称正半定方阵的谱分解可看成 SVD 特例($U=V$)。
微型数值例
$A=\begin{bmatrix}3&0\0&1\end{bmatrix}$:
- $A^\top A=\mathrm{diag}(9,1)$ → $\sigma_1=3,\ \sigma_2=1$
- $V=I$(已对齐坐标轴,无初始旋转)
- $U=I$($A\mathbf{v}_1/\sigma_1=(1,0)$)
- $A=I\cdot\mathrm{diag}(3,1)\cdot I$:仅沿 $x$ 拉 3 倍、$y$ 不变。
6. Eckart–Young:最优低秩近似(D3–D6)
保留前 $k$ 个奇异值:
$$
A_k = \sum_{i=1}^{k}\sigma_i\mathbf{u}_i\mathbf{v}_i^\top = U_k\Sigma_k V_k^\top
$$
$$
|A-A_k|F = \min{\mathrm{rank}(B)=k}|A-B|F = \sqrt{\sum{i=k+1}^{r}\sigma_i^2}
$$
含义:截断 SVD 是 Frobenius 范数下最佳秩-$k$ 近似——压缩、降噪、推荐系统的理论锚点。奇异值谱衰减越快,小 $k$ 越划算(见图 2 右半)。
7. 与 PCA:何时等价?(D6–D7)

⚠️ 纠错 5:SVD 的 $V$ 首列 = PCA 第一主成分?
仅当数据已中心化(去均值)时完全等价。
| 条件 | $v_1$ 实际最大化什么 | 含义 |
|---|---|---|
| 未中心化 | $|A\mathbf{v}|^2$ | 指向相对原点模长最大的方向(常指向数据云中心) |
| 已中心化 | $\mathbf{v}^\top(A^\top A)\mathbf{v}$(方差) | 指向散布最大方向(PCA) |
例:点云密集在 $(100,100)$ 附近——未中心化 $v_1$ 往往朝向 $(1,1)$;中心化后才抓住云内部的微小主散布。
算法提示:大矩阵少用显式 $A^\top A$(内存炸);幂迭代反复 $\mathbf{v}\leftarrow A^\top(A\mathbf{v})$ 并归一化,收敛到最大奇异方向。细节见 10 PCA。
8. LoRA 与 SVD 的三个挂钩(D7)
大模型微调冻结 $W_0$,只学低秩增量:
$$
W = W_0 + \Delta W,\quad \Delta W = BA
$$
- $B\in\mathbb{R}^{d_{\mathrm{out}}\times r}$,$A\in\mathbb{R}^{r\times d_{\mathrm{in}}}$
- 要求 $r\ll\min(d_{\mathrm{out}},d_{\mathrm{in}})$,只吃前 $r$ 个最大奇异方向的「能量」
| 环节 | SVD 作用 | 代表方法 |
|---|---|---|
| 智能初始化 | 分解 $W$,用前 $r$ 列初始化 $A,B$ | PiSSA、LoftQ |
| 秩分配 | 按层奇异值谱给重要层更大 $r$ | AdaLoRA |
| 剪枝/合并 | 对 $\Delta W$ 做 SVD,丢掉小 $\sigma$ 噪声方向 | Spectral Surgery 等 |
前向:$\mathbf{y}=W_0\mathbf{x}+BA\mathbf{x}$。衔接 20 Attention+LoRA。
其他 ML 用途
| 用途 | SVD 角色 |
|---|---|
| PCA | 中心化后 $X=U\Sigma V^\top$,主成分在 $V$ |
| 伪逆 | $A^+=V\Sigma^+U^\top$ |
| 词嵌入 / LSA | 隐语义低秩因子 |
| 权重压缩 | 截断分解网络层 |
| 条件数 | $\sigma_1/\sigma_r$ 刻画病态 |
9. 局限与数值(D8)

| 问题 | 对策 |
|---|---|
| 全 SVD 贵 | 随机 SVD、torch.svd_lowrank |
| 截断 $k$ / LoRA $r$ 过小 | 重建/表达力不足,看 $\sigma_i$ 衰减 |
| $k$、$r$ 过大 | 过拟合 + 参数膨胀 |
| 数据非流形线性 | SVD 仅线性子空间最优 |
10. NumPy / PyTorch 示例(D12)
1 | import numpy as np |
11. 速查卡片与小结
- $A=U\Sigma V^\top$:$V$ 找输入方向,$\Sigma$ 给倍率,$U$ 摆输出位置。
- 执行:从右往左($V^\top$ 最先碰数据)。
- $\Sigma$ 对角元叫奇异值不叫特征值;坑位 $\le\min(m,n)$,有效 $=$ 秩。
- 正交:只有 $U,V$;$\Sigma$ 不是。
- PCA:去均值后的 SVD $\Leftrightarrow$ PCA;否则找最大模长而非最大方差。
- LoRA:$r$ 吃前 $r$ 个大 $\sigma$;初始化 / 自适应秩 / 谱剪枝都绑在截断 SVD 上。