【深度学习数学基础:线性代数】5. 矩阵分解:5.6 SVD分解
5. 矩阵分解
5.6 SVD分解
SVD分解是用的最多的
奇异值分解(SVD)的定义与形式
1. 全SVD(Full SVD)
对任意实矩阵 \(\boldsymbol{A}_{m \times n}\)(秩为 \(r\)),可分解为:
其中:
- \(\boldsymbol{U}\):\(m \times m\) 正交矩阵(列向量两两正交且单位化,满足 \(\boldsymbol{U}^\mathrm{T}\boldsymbol{U} = \boldsymbol{I}\) ),其列向量称为 \(\boldsymbol{A}\) 的 左奇异向量;
- \(\boldsymbol{\Sigma}\):\(m \times n\) 对角矩阵,对角元为 \(\boldsymbol{A}\) 的 奇异值 \(\sigma_1 \geq \sigma_2 \geq \dots \geq \sigma_r > 0\),其余为 \(0\)(即 \(\boldsymbol{\Sigma} = \text{diag}(\sigma_1, \dots, \sigma_r, 0, \dots, 0)\) ,
diag表示对角元素构成的矩阵 ); - \(\boldsymbol{V}\):\(n \times n\) 正交矩阵(列向量两两正交且单位化,满足 \(\boldsymbol{V}^\mathrm{T}\boldsymbol{V} = \boldsymbol{I}\) ),其列向量称为 \(\boldsymbol{A}\) 的 右奇异向量。
2. 降阶SVD(Reduced SVD)
若 \(\boldsymbol{A}\) 的秩为 \(r\),可简化分解形式(更高效):
其中:
- \(\boldsymbol{U}_{m \times r}\):取 \(\boldsymbol{U}\) 的前 \(r\) 列(对应非零奇异值的左奇异向量 );
- \(\boldsymbol{\Sigma}_{r \times r}\):取 \(\boldsymbol{\Sigma}\) 的前 \(r\) 个非零奇异值构成的对角阵(\(\boldsymbol{\Sigma} = \text{diag}(\sigma_1, \dots, \sigma_r)\) );
- \(\boldsymbol{V}_{n \times r}\):取 \(\boldsymbol{V}\) 的前 \(r\) 列(对应非零奇异值的右奇异向量 )。
SVD的存在性证明(核心逻辑)
1. 奇异值非负性(由特征值推导)
要证明 \(\boldsymbol{A}\) 的奇异值非负,只需证明 \(\boldsymbol{A}^\mathrm{T}\boldsymbol{A}\)(或 \(\boldsymbol{A}\boldsymbol{A}^\mathrm{T}\))的特征值非负:
设 \(\boldsymbol{A}^\mathrm{T}\boldsymbol{A}\) 的特征值-特征向量对为 \((\lambda, \boldsymbol{x})\),即:
两边左乘 \(\boldsymbol{x}^\mathrm{T}\) 得:
左边等价于 \(\|\boldsymbol{A}\boldsymbol{x}\|^2\)(向量范数的平方),故:
因范数非负,且 \(\|\boldsymbol{x}\|^2 > 0\)(特征向量非零),故 \(\lambda \geq 0\)。
因此,\(\boldsymbol{A}^\mathrm{T}\boldsymbol{A}\) 的特征值 \(\lambda_i \geq 0\),取奇异值 \(\sigma_i = \sqrt{\lambda_i}\)(非负)。
2. 构造 \(\boldsymbol{U}\)、\(\boldsymbol{\Sigma}\)、\(\boldsymbol{V}\)
- 右奇异向量 \(\boldsymbol{V}\):由 \(\boldsymbol{A}^\mathrm{T}\boldsymbol{A}\) 的特征向量构成(因 \(\boldsymbol{A}^\mathrm{T}\boldsymbol{A}\) 是实对称阵,可谱分解为 \(\boldsymbol{A}^\mathrm{T}\boldsymbol{A} = \boldsymbol{V}\boldsymbol{\Sigma}^2\boldsymbol{V}^\mathrm{T}\) ,其中 \(\boldsymbol{\Sigma}^2 = \text{diag}(\sigma_1^2, \dots, \sigma_r^2)\) );
- 左奇异向量 \(\boldsymbol{U}\):由 \(\boldsymbol{A}\boldsymbol{A}^\mathrm{T}\) 的特征向量构成,且 \(\boldsymbol{u}_i = \frac{\boldsymbol{A}\boldsymbol{v}_i}{\sigma_i}\)(可验证 \(\boldsymbol{u}_i\) 正交且单位化 );
- 奇异值矩阵 \(\boldsymbol{\Sigma}\):由 \(\sigma_i = \sqrt{\lambda_i}\) 构成(\(\lambda_i\) 是 \(\boldsymbol{A}^\mathrm{T}\boldsymbol{A}\) 的非零特征值 )。
SVD的不同形式与应用场景
1. 截断SVD(Truncated SVD)
若 \(\boldsymbol{A}\) 的奇异值满足 \(\sigma_r \gg \sigma_{r+1} \approx 0\),可定义 有效秩 \(k\)(或数值秩),仅保留前 \(k\) 个奇异值及对应向量,分解为:
\(\boldsymbol{A}_k\) 是与 \(\boldsymbol{A}\) 在Frobenius范数下最接近的秩 \(k\) 矩阵,常用于数据压缩、降维(如PCA)。
2. SVD的不唯一性
因特征值可能有重数,调换 \(\boldsymbol{U}\) 或 \(\boldsymbol{V}\) 中对应重数奇异值的列向量位置,可得到不同的SVD分解,但奇异值集合本质不变(仅顺序可能调整 )。
SVD举例验证(以2×3矩阵为例)
设矩阵 \(\boldsymbol{A} = \begin{pmatrix} 3 & 2 & 2 \\ 2 & 3 & -2 \end{pmatrix}\)(秩为2 ),计算:
- \(\boldsymbol{A}\boldsymbol{A}^\mathrm{T} = \begin{pmatrix} 17 & 8 \\ 8 & 17 \end{pmatrix}\),其特征值为 \(\lambda_1 = 25, \lambda_2 = 9\),对应奇异值 \(\sigma_1 = 5, \sigma_2 = 3\);
- \(\boldsymbol{A}^\mathrm{T}\boldsymbol{A} = \begin{pmatrix} 13 & 12 & 2 \\ 12 & 13 & -2 \\ 2 & -2 & 8 \end{pmatrix}\),其非零特征值也为 \(25, 9\);
- 构造左奇异向量 \(\boldsymbol{U}\)(\(\boldsymbol{A}\boldsymbol{A}^\mathrm{T}\) 的特征向量单位化):\[\boldsymbol{U} = \begin{pmatrix} \dfrac{\sqrt{2}}{2} & \dfrac{\sqrt{2}}{2} \\ \dfrac{\sqrt{2}}{2} & -\dfrac{\sqrt{2}}{2} \end{pmatrix} \]
- 构造右奇异向量 \(\boldsymbol{V}\)(\(\boldsymbol{A}^\mathrm{T}\boldsymbol{A}\) 的特征向量单位化):\[\boldsymbol{V} = \begin{pmatrix} \dfrac{\sqrt{2}}{2} & \dfrac{\sqrt{2}}{6} & -\dfrac{2}{3} \\ \dfrac{\sqrt{2}}{2} & -\dfrac{\sqrt{2}}{6} & \dfrac{2}{3} \\ 0 & \dfrac{2\sqrt{2}}{3} & \dfrac{1}{3} \end{pmatrix} \]
- 验证SVD:\[\boldsymbol{U}\boldsymbol{\Sigma}\boldsymbol{V}^\mathrm{T} = \begin{pmatrix} \dfrac{\sqrt{2}}{2} & \dfrac{\sqrt{2}}{2} \\ \dfrac{\sqrt{2}}{2} & -\dfrac{\sqrt{2}}{2} \end{pmatrix} \begin{pmatrix} 5 & 0 & 0 \\ 0 & 3 & 0 \end{pmatrix} \begin{pmatrix} \dfrac{\sqrt{2}}{2} & \dfrac{\sqrt{2}}{2} & 0 \\ \dfrac{\sqrt{2}}{6} & -\dfrac{\sqrt{2}}{6} & \dfrac{2\sqrt{2}}{3} \\ -\dfrac{2}{3} & \dfrac{2}{3} & \dfrac{1}{3} \end{pmatrix}^\mathrm{T} = \boldsymbol{A} \]
SVD在PCA中的应用(高效降维)
1. 标准PCA vs SVD版PCA
- 标准PCA:先求数据集的协方差矩阵 \(\boldsymbol{S} = \frac{1}{N}\sum_{i=1}^N (\boldsymbol{x}_i - \bar{\boldsymbol{x}})(\boldsymbol{x}_i - \bar{\boldsymbol{x}})^\mathrm{T}\),再对 \(\boldsymbol{S}\) 做谱分解(因 \(\boldsymbol{S}\) 是对称阵,\(\boldsymbol{S} = \boldsymbol{Q}\boldsymbol{\Lambda}\boldsymbol{Q}^\mathrm{T}\) );
- SVD版PCA:直接对中心化数据矩阵 \(\boldsymbol{\tilde{X}} = \frac{1}{\sqrt{N}} \begin{pmatrix} (\boldsymbol{x}_1 - \bar{\boldsymbol{x}})^\mathrm{T} \\ \vdots \\ (\boldsymbol{x}_N - \bar{\boldsymbol{x}})^\mathrm{T} \end{pmatrix}\) 做SVD:\[\boldsymbol{\tilde{X}} = \boldsymbol{U}\boldsymbol{\Sigma}\boldsymbol{V}^\mathrm{T} \]此时 \(\boldsymbol{\tilde{X}}^\mathrm{T}\boldsymbol{\tilde{X}} = \boldsymbol{S}\),故 \(\boldsymbol{V}\) 等价于 \(\boldsymbol{S}\) 的特征向量矩阵 \(\boldsymbol{Q}\),无需显式计算协方差矩阵。
2. SVD版PCA的优势
- 避免高维协方差矩阵:直接对 \(\boldsymbol{\tilde{X}}\) 做SVD,节省存储和计算资源(尤其数据维度高时 );
- 数值稳定性:SVD算法对噪声更鲁棒,避免协方差矩阵计算中的误差累积;
- 高效性:求奇异向量比求特征向量更高效(大规模矩阵下算法复杂度更低 )。
关键结论
SVD是任意实矩阵的通用分解方法,涵盖特征分解(实对称阵的特殊情况),通过奇异值刻画矩阵的“重要成分”。在降维(PCA)、数据压缩、矩阵近似等领域应用广泛,是线性代数中连接几何意义与实际算法的核心工具。
浙公网安备 33010602011771号