SVD(奇异值分解)
SVD把矩阵拆成三块
亦作、亦称:奇异值分解 · Singular Value Decomposition
奇异值分解(SVD)是线性代数中将任意矩阵分解为三个结构矩阵之积的核心工具,能够揭示矩阵内部的「能量分布」与「主要方向」。它广泛应用于降维、图像压缩、推荐系统与大模型微调(LoRA)等领域,是现代机器学习的数学基石之一。
概述
奇异值分解(SVD)是线性代数中将任意矩阵分解为三个结构矩阵之积的核心工具,能够揭示矩阵内部的「能量分布」与「主要方向」。它广泛应用于降维、图像压缩、推荐系统与大模型微调(LoRA)等领域,是现代机器学习的数学基石之一。
核心定义
SVD 将任意 m×n 实矩阵 M 分解为三个矩阵的乘积 M = UΣVᵀ。
- U(m×m 正交矩阵):列向量称为左奇异向量,对应矩阵的「输出空间」主方向
- Σ(m×n 对角矩阵):对角线元素为奇异值,非负且按降序排列,代表各方向的「能量大小」
- Vᵀ(n×n 正交矩阵的转置):行向量称为右奇异向量,对应「输入空间」主方向
- 奇异值的平方等于矩阵 MᵀM(或 MMᵀ)的特征值,与主成分分析(PCA)密切相关
- 奇异值恒为非负实数,与特征值(可为负数或复数)在概念上不同
截断 SVD 与低秩近似
仅保留前 k 个最大奇异值及对应向量,得到原矩阵的最优 k 秩近似,这是 Eckart-Young 定理的核心结论。
- 截断 SVD:令 Σ 只保留前 k 个奇异值,重建矩阵 Mₖ = UₖΣₖVₖᵀ,存储量从 mn 降至 k(m+n)
- Eckart-Young 定理(1936):在 Frobenius 范数意义下,Mₖ 是所有秩为 k 矩阵中最接近原矩阵的,具有严格的最优性保证
- k 越小,存储与计算成本越低,但信息损失越大;常用累计奇异值能量比例(如保留 90%)或肘部法则来选 k
- 大多数真实数据矩阵的能量高度集中在前几个奇异值上,这是截断 SVD 有效的根本原因
典型应用场景
SVD 的低秩近似能力使其在多个工程领域发挥关键作用。
- 图像压缩:将图像视为像素矩阵,通过截断 SVD 以远少于原始像素的参数量重建近似图像,压缩比可灵活调节
- 推荐系统:对「用户×物品」评分矩阵做 SVD 提取隐语义特征,是 Netflix Prize(2006)协同过滤的核心方法
- 潜在语义分析(LSA):对词频矩阵做 SVD 降维,挖掘词义关联,是 1990 年代语义搜索的基础
- 数值线性代数:求矩阵的伪逆(Moore-Penrose pseudoinverse)、解超定方程组、计算矩阵的秩与条件数
与 LoRA 的关系
LoRA(低秩自适应)直接受 SVD 低秩思想启发,是大模型高效微调的主流方法。
- 核心洞见:预训练权重矩阵的「内禀秩」很低,微调时的权重变化量 ΔW 同样具有低秩结构
- LoRA 将 ΔW 分解为两个小矩阵之积 ΔW = BA(B 为 m×r,A 为 r×n,r ≪ min(m,n)),参数量从 mn 降至 r(m+n)
- 注意:LoRA 训练时并不显式计算 SVD,而是直接学习 A、B;部分变体(AdaLoRA、LoRA-XS)才用 SVD 来初始化或正则化
- 这一连接使 SVD 从经典数值方法成为现代大模型工程的必备基础知识
计算方法与工程实践
完整 SVD 计算代价较高,工程中通常使用近似或截断算法。
- 完整 SVD 时间复杂度为 O(min(m,n)·m·n),对亿级矩阵不可行
- Golub-Kahan 算法(1965):先将矩阵约化为双对角形再迭代,是数值稳定的经典方案
- 随机化 SVD(Halko 等,2011):通过随机投影先压缩矩阵再分解,复杂度降至 O(mnk),scikit-learn
TruncatedSVD采用此方案 - PyTorch(
torch.linalg.svd)、NumPy(np.linalg.svd)、cuSOLVER 均提供 CPU/GPU 高效实现
发展脉络
SVD 有着超过 150 年的历史,跨越纯数学与工程应用两条线索。
- 1873:意大利数学家 Beltrami 首次为实矩阵发表 SVD,从微分几何角度研究双线性型的不变量
- 1874:法国数学家 Jordan 独立提出 SVD,表述更为完整;两人均不知对方工作
- 1889:Sylvester 对实方阵再度独立推导出 SVD
- 1936:Eckart 与 Young 将 SVD 推广到矩形矩阵与复矩阵,并证明最优低秩近似定理
- 1965:Golub 与 Kahan 提出数值稳定计算算法,SVD 正式进入工程实用阶段
- 2006–2009:Netflix Prize 中,基于矩阵分解的协同过滤使 SVD 成为推荐系统标配
- 2021 至今:LoRA 等低秩微调方法兴起,SVD 在大模型时代焕发新生
常见误解
日常交流中容易听到的简化说法,未必准确,但能帮助理解误解从何而来。
- 「把矩阵拆成三块」
- 「低秩近似的基础」
- 「PCA 背后的矩阵分解」
相关术语
和本术语关联紧密的其他词条,便于串联理解。
🎯 考点练习
含该术语的高频面试题,含标准答案与追问。
- 中级概念查看详解 →
主成分分析(PCA)是如何降维的?
先中心化,求协方差矩阵的特征向量(或用 SVD),按方差大小取前 k 个主成分投影实现降维。
- 初级概念高频查看详解 →
协同过滤(UserCF / ItemCF / 矩阵分解)的原理是什么?
基于用户行为的相似度做推荐:UserCF/ItemCF 算相似邻居,MF 学隐向量点积,核心难点是冷启动与稀疏。
- 高级概念查看详解 →
统计学中总体与样本如何定义与区分?
总体(population)是关心的全部个体及其分布参数;样本(sample)是从总体抽取的子集,用统计量估计未知参数。
- 高级概念查看详解 →
什么是置信区间?在统计学中为何重要?
置信区间是在重复抽样下,有指定比例(如 95%)会覆盖真实参数值的区间范围;比单点估计更能表达不确定性,是推断统计的核心工具。
延伸阅读
从知识库精选 3 篇文章,帮助深入理解该术语。
外部参考
维基百科:查看「SVD」词条本页内容为本站原创撰写;维基百科链接仅作延伸参考。
