假设你面对一间塞满衣物的房间。袜子和手套缠在一起,外套和围巾堆成小山,看起来乱糟糟的,可整理时你发现:整间屋子其实只包含“上班通勤”“周末休闲”“冬季保暖”三种风格。于是你不需要记住每一件衣服的位置,只要按三种风格分类放进三个收纳箱,就能还原出几乎整个衣柜。低秩近似做的正是这件事——面对一个庞大的数据矩阵,它找出藏在这些数据背后的“少数几种核心模式”,用很少的信息重建出和原来几乎一样的结果。本文我们就用这个“整理房间”的比喻,一步步看懂低秩近似的数学原理、核心定理、高效算法和真实应用。

岗位关联

掌握低秩近似,意味着你掌握了 AI 工程师最常用的“数据精简化”武器:它能压缩数据、剔除噪声、补全缺失值,还能支撑推荐系统和内容理解。这一技能让你从“只会调库”走向“懂原理、会选型”的进阶者。

目录
  1. 可视化演示
  2. 低秩近似思想
  3. Eckart-Young定理
  4. SVD低秩逼近
  5. 随机化SVD
  6. 核范数最小化
  7. 工程应用场景
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示SVD分解过程、截断秩k的误差权衡及矩阵压缩应用的三模态交互动画。

本节配有交互动效(进入视口后自动加载,约 3KB)。

SVD分解与奇异值排列 奇异值 分解 A=UΣV^T 矩阵分解为左奇异向量U对角奇异值Σ和右奇异向量V奇异值按降序排列反映信息重要性

低秩近似思想

整理房间前,你最先做的是判断:这间屋子真的需要记住每一件衣物吗?不需要。外套虽然厚薄长短各异,但“冬季保暖”这一个风格就能概括大半。把这个想法翻译成数学语言:数据表可以看作一个矩阵 A,它看起来有海量行和列(海量衣服),但真正独立的“风格维度”很少,这个性质就叫做“低秩”。

矩阵的“秩”(rank)指的是它包含的独立信息维度数。一个 1000 × 1000 的表格,如果秩只有 3,说明它本质上就是 3 个“基础模板”乘来拼去的结果。低秩近似要解决的正是这样一个问题:给定一个大矩阵 A,我们想找一个秩不超过 k 的矩阵 Â,使得两者之间的误差尽可能小。这里的 k 就相当于你决定使用几个收纳箱。

误差怎么衡量?最常用的是 Frobenius 范数——把两个矩阵中每个位置的差距平方后开根号,好比检查整理后每个抽屉的物品与原位置差了多远。整个问题的数学形式如下:

回到房间比喻。你定好了“三个收纳箱”的目标,规划好如何衡量还原效果,接下来最关键的疑问是:到底怎样才能保证三个收纳箱就能还原出最接近的房间?这就要靠后面的 Eckart-Young 定理给出答案——整理这件事,确实存在一个“最优攻略”。

min⁡rank(A^)≤k∥A−A^∥F2\displaystyle \min_{\mathrm{rank}(\hat{A})\le k} \|A - \hat{A}\|_F^2
公式说明:在所有“秩不超过 k”的候选矩阵中,挑出能让原始矩阵 A 与近似矩阵 Â 的逐元素平方误差总和最小的那个。它就是我们整理房间时的目标:用 k 个收纳箱,让还原出的房间与原来偏差最小。
  1. 目标函数计算原始矩阵与近似矩阵逐元素差值的平方和,作为“整理还原质量”的评分。
    ∥A−A^∥F2=∑i,j(aij−a^ij)2\displaystyle \|A - \hat{A}\|_F^2 = \sum_{i,j} (a_{ij} - \hat{a}_{ij})^2
  2. 约束条件限制近似矩阵的秩不超过 k,即收纳箱数量不能超过 k 个。
    rank(A^)≤k\displaystyle \mathrm{rank}(\hat{A}) \le k
  3. 取最小在所有满足约束的候选矩阵中,选择误差分数最低的那个作为最优近似。
    min⁡A^  ∥A−A^∥F2\displaystyle \min_{\hat{A}} \; \|A - \hat{A}\|_F^2

Eckart-Young定理

你找了两位整理师来比赛,看谁能用三个收纳箱把房间还原得最像。第一位凭借经验分类,第二位则先给全部衣物拍照、按“重要程度”排序再装箱。Eckart-Young 定理告诉你:第二位必胜——只要用奇异值分解(SVD),把矩阵按奇异值从大到小排列,只保留最大的 k 个奇异值,得到的近似矩阵就是全局最优的,任何其他方法都无法超越。

SVD 把任意矩阵 A 分解成三个因子乘积:左奇异向量矩阵 U、对角奇异值矩阵 Σ 和右奇异向量矩阵 V^T。奇异值从大到小排在对角线上,正如每件衣服的“重要程度清单”。截断 SVD 就是只保留前 k 项,丢弃后面的“琐碎衣物”。这个操作产生的误差恰好等于被丢弃的所有奇异值的平方和。

这个定理给了你一把“标尺”:无论整理师怎么吹嘘自己的方法,用 SVD 截断就是理论最优解。接下来我们不再纠结“有没有更好的方法”,而是专注研究怎么把 SVD 截断执行得又快又稳。

∥A−Ak∥F2=∑i=k+1nσi2\displaystyle \|A - A_k\|_F^2 = \sum_{i=k+1}^{n} \sigma_i^2
公式说明:A_k 表示只保留前 k 个奇异值的截断 SVD 结果。定理保证它是最优的,且它的误差精确等于从第 k+1 个到最后一个奇异值的平方和——被扔掉的杂乱物品,就是还原时损失的误差。
  1. 最优性Eckart-Young 定理断言,截断 SVD 得到的 A_k 是所有秩为 k 的矩阵中与 A 误差最小的。
    ∥A−Ak∥F=min⁡rank(B)≤k∥A−B∥F\displaystyle \|A - A_k\|_F = \min_{\mathrm{rank}(B)\le k}\|A - B\|_F
  2. 误差来源重构误差完全来自被丢弃的奇异值,奇异值越小,丢弃它造成的损失越小。
    ∑i=k+1nσi2\displaystyle \sum_{i=k+1}^{n} \sigma_i^2
  3. 奇异值降序因为奇异值按大小降序排列,截断总是先丢掉最不重要的部分。
    σ1≥σ2≥⋯≥σn≥0\displaystyle \sigma_1 \ge \sigma_2 \ge \cdots \ge \sigma_n \ge 0
  4. 平方和开根号Frobenius 范数下的误差是上述奇异值平方和的算术平方根,与压缩率直接挂钩。
    ∥A−Ak∥F=∑i=k+1nσi2\displaystyle \|A - A_k\|_F = \sqrt{\sum_{i=k+1}^{n} \sigma_i^2}

SVD低秩逼近

既然 SVD 截断是最优攻略,那具体怎么操作?想象你为整间房间做一次彻底清点:给每件衣服编号,记录它属于哪类风格,再按风格重要程度排序。SVD 就是数学上的“清点系统”——把大矩阵 A 拆分成 U、Σ、V^T 三块小积木,其中 U 的列是“左风格模板”,V 的列是“右搭配模板”,Σ 对角线上是每种风格的“权重值”。

截断 SVD 的做法非常直白:保留 Σ 中最大的 k 个权重,把其余全部置零,同时只取 U 和 V 中对应的前 k 列。三个小矩阵乘回去,就得到近似矩阵 A_k。从存储角度看,原来要存 m×n 个数,现在只需存 m×k + k + k×n 个数,压缩率极高。这个思路与主成分分析(PCA)一脉相承:PCA 本质上就是对均值中心化后的数据做 SVD,提取数据方差最大的方向。

至此,“如何整理”已经门儿清:清点、排序、截断。但当房间大到像仓库——矩阵有百万行百万列时,完整的 SVD 清点本身就要耗费天量时间。这时我们需要一个“先抽样再整理”的聪明办法,这就是随机化 SVD。

Ak=UkΣkVkT\displaystyle A_k = U_k \Sigma_k V_k^T
公式说明:U_k 是左奇异向量矩阵的前 k 列,Σ_k 是前 k 个奇异值组成的对角阵,V_k^T 是右奇异向量矩阵的前 k 行。三者相乘,用最少的存储换来最小误差的近似。
  1. 左奇异向量U_k 的每一列对应一种“核心风格”在原始行维度上的表现。
    Uk=[u1,u2,…,uk]\displaystyle U_k = [u_1, u_2, \dots, u_k]
  2. 权重对角阵Σ_k 只保留最大的 k 个奇异值,其他舍弃,记录每种风格的重要程度。
    Σk=diag(σ1,σ2,…,σk)\displaystyle \Sigma_k = \mathrm{diag}(\sigma_1, \sigma_2, \dots, \sigma_k)
  3. 右奇异向量V_k^T 的每一行对应一种“核心风格”在原始列维度上的表现。
    VkT=[v1,v2,…,vk]T\displaystyle V_k^T = [v_1, v_2, \dots, v_k]^T
  4. 矩阵乘法三个小矩阵相乘,还原出与原始矩阵最接近的秩 k 矩阵。
    Ak=∑i=1kσi uiviT\displaystyle A_k = \sum_{i=1}^{k} \sigma_i \, u_i v_i^T

随机化SVD

处理千万级数据的矩阵时,做一次完整 SVD 就像对一座巨型仓库逐一清点每一件物品,耗时过长。随机化 SVD 的思路是“先抽取一批有代表性的样本,快速判断仓库主要有哪些风格,再精准整理”。它先把矩阵 A 乘上一个随机矩阵 Ω,得到一个矮小的矩阵 Y = AΩ,Y 的列就是随机抽出的“风格样本”。

接下来对 Y 做 QR 分解,得到标准正交基 Q。Q 近似张成了 A 的主要列空间——相当于由抽样样品归纳出的“典型风格库”。然后把 A 投影到这个低维空间上,得到小矩阵 B = Q^T A,再对这个小矩阵做精确 SVD。因为 B 远小于 A,分解成本大幅下降。通过多轮“投影—回乘”的子空间迭代,还能把精度提升到与完整 SVD 几乎一致,且误差有严格的概率界保证。

随机化 SVD 就是“抽样整理法”:先看几件样本判断风格,再按风格快速装箱,效率远超逐件清点。但这类方法都假设矩阵数据基本完整。如果房间里的衣服本来就缺了不少——用户评分矩阵大量空白、传感器数据大量丢失——我们还能整理出原貌吗?这就轮到核范数最小化登场。

A≈Q (QTA),Y=AΩ,B=QTA\displaystyle A \approx Q \, (Q^T A), \quad Y = A\Omega, \quad B = Q^T A
公式说明:先用随机投影 Y=AΩ 采样列空间,再用 QR 分解得到正交基 Q,最后在低维小矩阵 B=Q^T A 上做精确 SVD。整条流水线大幅降低计算量,同时保持高精度。
  1. 随机采样A 乘上随机高斯矩阵 Ω,把原来的行空间压缩成少量代表性样本。
    Y=AΩ,Ω∈Rn×(k+p)\displaystyle Y = A\Omega,\quad \Omega \in \mathbb{R}^{n\times (k+p)}
  2. 构造正交基对 Y 做 QR 分解,Q 的列构成采样子空间的标准正交基。
    Y=QR\displaystyle Y = QR
  3. 投影减小规模把 A 投影到 Q 张成的低维空间,得到瘦身版矩阵 B。
    B=QTA\displaystyle B = Q^T A
  4. 小矩阵精确分解对 B 做精确 SVD,再通过 Q 映射回原空间,得到 A 的低秩近似。
    A≈QUBΣBVBT\displaystyle A \approx Q U_B \Sigma_B V_B^T

核范数最小化

房间整理到一半,你发现衣柜里少了三分之一衣服,不知款式和颜色。可你注意到剩下衣服的风格高度一致,于是大胆推测:缺失的那部分也遵循同样的风格。这就是矩阵补全的思想。问题是“寻找秩尽可能低的矩阵”在数学上是个极难求解的非凸问题,直接硬解就像让整理师闭眼猜全体衣物。

核范数最小化提供一个聪明的折中方案:用“奇异值之和”凸范数来近似替代“秩”。核范数等于矩阵所有奇异值的总和,它像一座平滑的桥梁,把非凸难题变成可高效求解的凸优化问题。给定部分观测到的数据,我们寻找一个秩尽量小、且与观测值一致的矩阵 X,其优化模型如下:

核范数最小化就是“缺衣少服也能推原貌”的数学魔法。它让我们在数据不完整的真实世界中依然可以完成整理。有了这些理论工具,最后把它们放进三个最具代表性的真实场景中检验成效。

min⁡X∥X∥∗s.t.Xij=Mij,(i,j)∈Ω\displaystyle \min_{X} \|X\|_* \quad \text{s.t.} \quad X_{ij} = M_{ij}, \quad (i,j)\in\Omega
公式说明:目标是最小化 X 的核范数(所有奇异值之和),约束是 X 在已观测位置 (i,j) 上必须等于已知数据 M_{ij}。这相当于“用风格一致性猜测缺失衣物”。
  1. 核范数矩阵的核范数定义为全部奇异值之和,是秩的凸松弛。
    ∥X∥∗=∑i=1nσi(X)\displaystyle \|X\|_* = \sum_{i=1}^{n} \sigma_i(X)
  2. 观测约束只在已知的索引集合 Ω 上要求 X 与观测矩阵 M 相等。
    Xij=Mij,(i,j)∈Ω\displaystyle X_{ij} = M_{ij}, \quad (i,j) \in \Omega
  3. 软阈值算子用迭代软阈值算法求解,每轮对奇异值做收缩,把小的奇异值压到接近零。
    Sλ(x)=sign(x)max⁡(∣x∣−λ,0)\displaystyle \mathcal{S}_\lambda(x) = \mathrm{sign}(x)\max(|x| - \lambda, 0)
  4. 迭代逼近反复执行“奇异值收缩 + 投影到观测约束”,最终收敛到低秩补全结果。
    X(t+1)=Sλt(X(t)+δ(MΩ−X(t)))\displaystyle X^{(t+1)} = \mathcal{S}_{\lambda t}\big(X^{(t)} + \delta (M_\Omega - X^{(t)})\big)

工程应用场景

理论工具备齐后,整理术开始大显身手。第一个场景是协同过滤推荐:视频平台只知道你看了哪些片子,不知道你没看的片子的评分,评分矩阵大量空白、正是典型的低秩结构——用户的喜好往往只由“动作、喜剧、文艺”等少数几个隐因子决定。SVD 将用户和物品映射到共享的隐因子空间,预测评分:

第二个场景是视频监控背景建模:监控画面中静止的街道是“低秩背景”,走动的行人车辆是“稀疏异常”。把视频帧拉成矩阵,低秩部分还原背景,残差就是移动目标,用鲁棒 PCA 即可分离。第三个场景是文本潜在语义分析(LSA):对“文档—词语”矩阵做 SVD,得到的低秩空间就是“语义主题空间”,同义词会被映射到相近位置,大幅改善检索质量。回到整理术——无论是猜你喜欢、抓异常目标还是理解文章,背后都是同一套“少数风格还原全貌”的智慧。

r^ui=μ+bu+bi+puTqi\displaystyle \hat{r}_{ui} = \mu + b_u + b_i + p_u^T q_i
公式说明:预测评分 = 全局平均分 + 用户偏差 + 物品偏差 + 用户隐因子与物品隐因子的内积。这正是 SVD++ 等推荐模型的核心思想:把行为矩阵压成低秩,就能预测你没见过的内容。
  1. 全局基准μ 是所有评分的平均值,作为预测的起点。
    μ=1∣R∣∑r∈Rr\displaystyle \mu = \frac{1}{|R|}\sum_{r\in R} r
  2. 个体偏差b_u 是用户 u 的评分习惯偏离平均值的程度,b_i 是物品 i 的受欢迎程度偏差。
    bu=用户偏差,bi=物品偏差\displaystyle b_u = \text{用户偏差}, \quad b_i = \text{物品偏差}
  3. 隐因子内积p_u 表示用户的兴趣画像,q_i 表示物品的属性画像,两者内积越高,匹配度越高。
    puTqi=∑f=1kpufqif\displaystyle p_u^T q_i = \sum_{f=1}^{k} p_{uf} q_{if}
  4. 总和预测四部分相加得到最终预测分,实现“猜你喜欢”。
    r^ui=μ+bu+bi+puTqi\displaystyle \hat{r}_{ui} = \mu + b_u + b_i + p_u^T q_i

AI 应用场景

视频平台的协同过滤推荐

阶段:召回与排序阶段的用户兴趣建模

解决的问题:用户-物品评分矩阵极其稀疏,直接使用原始矩阵做相似度计算,不仅计算量爆炸,而且大量空白评分让传统余弦相似度失效。低秩近似通过 SVD / SVD++ 把用户和物品映射到几十维隐因子空间,用低秩结构补齐缺失评分,同时缓解冷启动和稀疏性问题。

具体案例:某视频平台有 100 万用户、5 万部电影,评分矩阵 99% 空白。工程师用截断 SVD 选 k=50,把每个用户压缩成 50 维兴趣向量,每部电影压缩成 50 维属性向量。线上召回阶段,直接对兴趣向量做内积排序,延迟从 800ms 降到 30ms,推荐命中率提升 23%。

城市监控的视频背景建模

阶段:目标检测前的视频预处理

解决的问题:传统帧差法对光照突变和摄像头抖动极其敏感,且无法区分“静止车辆”和“背景”。将视频帧矩阵拆成“低秩背景 + 稀疏前景”,天然把静态结构与运动目标分离,抗噪能力强。

具体案例:某智慧城市项目对 200 路高清摄像头做实时异常检测。每 30 帧拉成一个矩阵,用鲁棒 PCA 在线更新低秩背景。当行人、车辆闯入时产生稀疏残差,自动触发报警。相比传统混合高斯模型,误报率下降 41%,且在雨天、夜间均能稳定运行。

企业知识库的语义检索

阶段:文档理解与特征提取

解决的问题:企业维基中“财务报告”和“季报”字面不同但语义相近,传统关键词检索无法识别。LSA 对“文档—词语”矩阵做 SVD 后,词语在低维语义空间中的位置相近,检索系统能自动理解同义表达。

具体案例:某证券公司的研报检索系统,对 10 万篇文档构建词频矩阵,SVD 降到 300 维语义空间。用户搜索“宏观经济态势”,系统不仅返回包含该词的文章,还召回大量提到“GDP增长”“通胀压力”的相关研报,检索召回率提升 67%。

Python 演示

python33 行
import numpy as np def truncated_svd(A, k):    U, S, Vt = np.linalg.svd(A, full_matrices=False)    return U[:, :k] @ np.diag(S[:k]) @ Vt[:k, :] def randomized_low_rank(A, k, oversample=5, n_iter=2):    m, n = A.shape    Omega = np.random.randn(n, k + oversample)    Y = A @ Omega    for _ in range(n_iter):        Z = A.T @ Y        Y = A @ Z    Q, _ = np.linalg.qr(Y)    B = Q.T @ A    Ub, Sb, Vtb = np.linalg.svd(B, full_matrices=False)    k = min(k, len(Sb))    return (Q @ Ub[:, :k]) @ np.diag(Sb[:k]) @ Vtb[:k, :] def relative_error(A, Ak):    return np.linalg.norm(A - Ak) / np.linalg.norm(A) if __name__ == "__main__":    np.random.seed(42)    true_rank = 5    U0 = np.random.randn(200, true_rank)    V0 = np.random.randn(300, true_rank)    A = U0 @ V0.T + 0.02 * np.random.randn(200, 300)    for k in [3, 5, 10]:        Ak = truncated_svd(A, k)        Ark = randomized_low_rank(A, k)        print(f"k={k}: SVD误差={relative_error(A, Ak):.5f}, "              f"随机SVD误差={relative_error(A, Ark):.5f}")
目的:构造一个天然含低秩结构的加噪矩阵,分别用截断 SVD 和随机化 SVD 做低秩逼近,对比两者在不同 k 下的重构误差,验证随机化方法的精度接近最优。
  1. Omega = np.random.randn(n, k + oversample)生成随机高斯矩阵,作为“抽样样本”探针,overample 额外采样以提升稳定性。
  2. Y = A @ Omega将原始大矩阵投影到随机方向,得到压缩后的样本矩阵 Y,相当于随机抽取风格样本。
  3. Q, _ = np.linalg.qr(Y)对样本做 QR 分解,Q 的列构成主要列空间的正交基,相当于“总结出的典型风格库”。
  4. B = Q.T @ A把原始矩阵投影到这个低维空间,得到小矩阵 B,后续分解只需在 B 上进行。
  5. return (Q @ Ub[:, :k]) @ np.diag(Sb[:k]) @ Vtb[:k, :]在小矩阵上做精确 SVD 后,通过 Q 映射回原空间,得到最终低秩近似结果。
  6. np.linalg.norm(A - Ak) / np.linalg.norm(A)计算相对误差,衡量“整理还原”与原矩阵的偏差程度。
  7. true_rank = 5人为设定潜在秩为 5,模拟真实数据中“少数核心风格”的生成过程。

常见误区

误区低秩近似只是为了省内存,把大矩阵换成小矩阵就行了,其他没什么用。

正解低秩近似的价值远不止存储压缩。它同时完成三件事:数据压缩(小矩阵替代大矩阵)、噪声去除(丢弃小奇异值对应的噪声成分)和特征提取(保留的奇异向量就是核心模式)。就像整理房间不只是为了让衣柜变小,更是为了看清房间的“风格本质”。

为何常见:初学时容易盯着“降维”这个最直观的效果,忽略了低秩结构本身就是一种对数据的理解方式。

误区既然误差随 k 增大而减小,那干脆把所有奇异值都保留,误差为零,不是更好吗?

正解k 越大,压缩率越低,存储和计算优势消失。更关键的是,过大的 k 会把噪声细节一并保留,造成过拟合。实际工程中常根据奇异值谱的“拐点”选择 k——奇异值出现明显平台的位置,就是信息与噪声的分界线。整理房间时,你也不会把所有小杂物都按个收纳,而是把它们归到一个“杂物箱”里。

为何常见:从数学形式上看误差确实单调递减,容易让人忽略压缩率与泛化能力的权衡。

误区随机化 SVD 听起来是“碰运气”,结果肯定不如完整 SVD 准确,不能用在关键任务上。

正解随机化 SVD 的误差有严格的概率界保证,且可以通过增加过采样数量和子空间迭代次数把误差压到与完整 SVD 几乎无法区分。它本质是“拿一点可控的随机性,换取数量级的加速”,而不是牺牲精度。就像抽样调查虽然只问了一部分人,但样本量足够大时也能准确反映整体民意。

为何常见:“随机”二字容易给人不靠谱的印象,而忽略了数学上已证明的误差上界。

误区评分矩阵有空白,直接把空白填成 0 再算 SVD,不就是低秩补全吗?

正解把缺失值填零会严重扭曲数据分布——用户没看过电影不等于打了零分。正确做法是只对观测位置施加约束(X_ij = M_ij),让优化算法自行推断缺失位置的值,这正是核范数最小化与零填充的本质区别。好比猜测丢失的衣物,应该依据整体风格推断,而不是直接认为“不存在该衣服”。

为何常见:零填充实现最简单,入门者容易把它误当成矩阵补全的标准做法,实际却是错误率极高的暴力方法。

面试题

Q1. 低秩近似中,矩阵的“秩”描述的是什么?

单选题 · easy

  • A.矩阵中非零元素的个数
  • B.矩阵独立信息维度的数量← 正确答案
  • C.矩阵行数与列数的乘积
  • D.矩阵中奇异值的平均值

答案:B。秩指矩阵中线性无关的行(或列)的最大个数,即独立信息维度的数量。非零元素个数是稀疏性,行数列数乘积是存储规模,奇异值平均值不是秩的定义。就像房间的“风格种类数”而不是衣物总件数。

Q2. Eckart-Young 定理的核心结论是什么?

单选题 · easy

  • A.SVD 分解总是收敛到全局最优
  • B.截断 SVD 是所有低秩近似中最优的← 正确答案
  • C.任意矩阵都可以分解为三个因子
  • D.奇异值总是从大到小排列

答案:B。Eckart-Young 定理断言,在 Frobenius 范数下,截断 SVD 得到的秩 k 矩阵是所有秩 k 矩阵中误差最小的。选项 A 描述的是 SVD 数值算法的收敛性,C 是 SVD 的存在性,D 是奇异值排序的约定,都不是定理的核心。

Q3. 截断 SVD 的重构误差等于什么?

单选题 · easy

  • A.被保留奇异值之和
  • B.被丢弃奇异值的平方和开根号← 正确答案
  • C.被丢弃奇异值的乘积
  • D.全部奇异值的平均值

答案:B。根据 Eckart-Young 定理,‖A−A_k‖_F = √(Σ_{i>k} σ_i²)。被丢弃的奇异值平方和再开根号才是误差,光求和或求积都不对。整理房间时,被扔掉的衣物的“杂乱程度”决定了还原误差。

Q4. 随机化 SVD 中,Y = AΩ 这一步的目的是什么?

单选题 · mid

  • A.对矩阵 A 做精确特征分解
  • B.通过随机投影压缩 A 的规模← 正确答案
  • C.消除矩阵中的噪声奇异值
  • D.计算 A 的所有奇异向量

答案:B。随机化 SVD 用随机矩阵 Ω 对 A 做投影,得到远小于 A 的矩阵 Y,以采样 A 的主要列空间。它不是精确分解,也不是去噪,更不计算全部奇异向量。就像先随机抽几件衣服判断整体风格,而不是清点每一件。

Q5. 核范数最小化中,核范数定义为矩阵的什么?

单选题 · mid

  • A.所有元素绝对值的和
  • B.所有奇异值的和← 正确答案
  • C.最大奇异值的平方
  • D.行列式的绝对值

答案:B。核范数是矩阵所有奇异值之和,它是秩函数的凸松弛。元素绝对值之和是 L1 范数,不是核范数;最大奇异值是谱范数;行列式与奇异值无直接关系。核范数让“低秩”这个非凸目标变得可解。

Q6. 以下哪个场景最适合用低秩近似解决?

单选题 · mid

  • A.对高维稀疏向量做归一化
  • B.从大量文本中提取潜在主题← 正确答案
  • C.对图像做边缘检测
  • D.对时间序列做差分平稳化

答案:B。LSA 正是对“文档—词语”矩阵做 SVD 提取潜在语义主题,低秩近似天然适用。归一化、边缘检测、差分平稳化分别属于特征缩放、图像处理和时序分析领域,与低秩结构建模关系不大。

Q7. 随机化 SVD 的误差控制依赖哪些手段?

单选题 · hard

  • A.增加过采样数量与子空间迭代次数← 正确答案
  • B.增大随机矩阵的方差
  • C.减少投影次数并降低 k
  • D.使用确定性矩阵替代随机矩阵

答案:A。过采样(额外采样几个方向)和子空间迭代(多轮投影—回乘)是提升随机化 SVD 精度的两大手段,误差有明确概率界。增大方差或减少投影都不会改善精度,确定性矩阵会失去随机采样的低复杂度优势。

Q8. 关于低秩近似的应用,以下说法正确的有?

多选题 · mid

  • A.协同过滤利用低秩假设补全稀疏评分矩阵← 正确答案
  • B.背景建模把视频拆成低秩背景加稀疏前景← 正确答案
  • C.LSA 用 SVD 提取文档的潜在语义主题← 正确答案
  • D.低秩近似可以完美还原任意稀疏矩阵

答案:ABC。A、B、C 分别是低秩近似在推荐、监控、文本检索中的标准应用。D 错误——低秩近似只能在矩阵本身具有低秩结构时有效还原,并非对所有稀疏矩阵都“完美”适用。

Q9. 相比完整 SVD,随机化 SVD 的优点包括哪些?

多选题 · hard

  • A.计算复杂度大幅降低← 正确答案
  • B.适用于内存放不下的大矩阵← 正确答案
  • C.结果精度一定高于完整 SVD
  • D.可通过迭代把误差压到接近最优← 正确答案

答案:ABD。随机化 SVD 通过把大矩阵投影到低维空间,显著降低计算和内存开销,并能通过子空间迭代逼近最优精度。但它不可能“一定高于”完整 SVD——完整 SVD 是精确分解,随机化方法最多无限逼近它。

Q10. 在“文档—词语”矩阵上做 LSA 时,选择 k 的合适策略有哪些?

多选题 · extreme

  • A.观察奇异值谱的拐点,取拐点之前个数← 正确答案
  • B.直接取文档总数作为 k
  • C.在验证集上测试检索效果后调参← 正确答案
  • D.令 k 等于词语总数以确保无损

答案:AC。奇异值谱拐点是区分信息与噪声的经验准则,在验证集上评测检索效果则是更严谨的调参方式。取文档总数或词语总数都不合理,那相当于不压缩,丢失了低秩近似去噪和降维的初衷。