好的,我将为您生成并讲解一个尚未出现在您列表中的计算数学词条。
数值奇异值分解
我们来循序渐进地学习“数值奇异值分解”的相关知识。
第一步:理解奇异值分解(SVD)的数学定义与意义
首先,我们要明白奇异值分解是什么。对于一个任意的 \(m \times n\) 实数矩阵 \(A\),它的奇异值分解定义为:
\[A = U \Sigma V^T \]
其中:
- \(U\) 是一个 \(m \times m\) 的正交矩阵(即 \(U^T U = I_m\)),它的列向量 \(\mathbf{u}_i\) 称为 左奇异向量。
- \(V\) 是一个 \(n \times n\) 的正交矩阵(即 \(V^T V = I_n\)),它的列向量 \(\mathbf{v}_i\) 称为 右奇异向量。
- \(\Sigma\) 是一个 \(m \times n\) 的“对角”矩阵(更准确地说,是矩形对角矩阵),其对角线上的非负元素 \(\sigma_1 \ge \sigma_2 \ge … \ge \sigma_p \ge 0\)(其中 \(p = \min(m, n)\))称为 奇异值,其余元素均为零。
几何意义:SVD揭示了线性变换 \(A: \mathbb{R}^n \to \mathbb{R}^m\) 的本质。它将输入空间 \(\mathbb{R}^n\) 中的一组标准正交基(\(V\) 的列),通过“拉伸”(由 \(\Sigma\) 的奇异值控制)和“旋转/反射”(由 \(U\) 的列对齐),映射到输出空间 \(\mathbb{R}^m\) 中的一组标准正交基上。
重要性:SVD是线性代数中最强大、应用最广泛的工具之一。它在数据降维(主成分分析PCA)、信号处理、图像压缩、求解最小二乘问题、推荐系统、自然语言处理(潜在语义分析)等领域有核心应用。
第二步:从定义到数值计算的挑战
理论上,SVD可以通过求解 \(A^T A\) 或 \(AA^T\) 的特征值问题得到。因为:
\[A^T A = (V \Sigma^T U^T)(U \Sigma V^T) = V (\Sigma^T \Sigma) V^T \]
这意味着,\(A^T A\) 的特征值是 \(\sigma_i^2\),其特征向量就是右奇异向量 \(\mathbf{v}_i\)。同理,\(AA^T\) 的特征向量是左奇异向量 \(\mathbf{u}_i\)。
那么,为什么不直接计算 \(A^T A\) 的特征分解呢?
原因在于数值稳定性。
- 条件数恶化:矩阵 \(A^T A\) 的条件数是 \(A\) 条件数的平方(\(\kappa(A^T A) = [\kappa(A)]^2\))。如果 \(A\) 本身是病态的(即奇异值变化范围大,小奇异值接近零),那么 \(A^T A\) 将极其病态,对其进行的浮点运算会引入巨大的舍入误差,导致计算出的特征向量精度严重丧失。
- 信息损失:当 \(A\) 的元素数量级差异很大,或者 \(A\) 的行数远大于列数时,显式形成 \(A^T A\) 会损失精度。
因此,我们需要数值稳定的、不依赖于显式计算 \(A^T A\) 或 \(AA^T\) 的算法。这就是“数值奇异值分解”的核心目标。
第三步:经典数值SVD算法的核心思想——二对角化与QR迭代
目前最稳定、应用最广的数值SVD算法是基于 Golub 和 Kahan 在1965年提出的框架。其主要步骤为:
阶段一:双对角化 (Bidiagonalization)
目标:通过一系列正交变换(只做旋转/反射,不改变奇异值),将原始稠密矩阵 \(A\) 转化为一个双对角矩阵 \(B\)。
过程:通过豪斯霍尔德反射(Householder Reflection),从左乘和右乘正交矩阵,逐步将 \(A\) 化为上双对角形式:
\[U_k^T … U_1^T A V_1 … V_l = B \]
其中 \(B\) 只有主对角线及其上方一条次对角线非零。这个步骤是有限步的精确变换,且正交变换保持了奇异值不变(\(B\) 的奇异值就是 \(A\) 的奇异值)。双对角化大大简化了后续问题的复杂度。
阶段二:双对角矩阵的SVD计算
现在问题转化为求双对角矩阵 \(B\) 的SVD。这里采用精妙的 QR迭代变种(Golub-Kahan SVD迭代)。
- 思想来源:类似于对称三对角矩阵特征值的QR迭代算法。对 \(B^T B\) 应用隐式QR迭代,但绝不显式计算 \(B^T B\)。
- 隐式位移QR迭代:
- 通过某种策略(如威尔金森位移,或使用 \(B\) 右下角 \(2 \times 2\) 矩阵的较小特征值),选择一个位移量 \(\mu\)。
- 计算一个特殊的正交矩阵(通常是吉文斯旋转Givens Rotation),作用于 \(B\),从左上角开始,引入一个非零元素。
- 通过“追-赶”(Chasing)技术,应用一系列吉文斯旋转,将这个非零元素“赶”出矩阵,最终使矩阵恢复双对角形式 \(B’\)。
- 这一过程在数学上等价于对 \(B^T B - \mu I\) 做了一步QR迭代,但完全在 \(B\) 上操作,避免了数值不稳定性。
- 收敛:经过多次这样的迭代,\(B\) 的次对角线元素会趋于零。当次对角线元素小于某个容差时,就可以认为它已经“断开”。断开后,原问题就分解为更小的双对角矩阵的SVD问题,可以递归求解。
- 奇异值和奇异向量:当 \(B\) 的对角线元素就是奇异值的近似时,迭代停止。通过累积迭代过程中所有的正交变换(吉文斯旋转),可以得到左、右奇异向量矩阵。
第四步:处理奇异值和向量的精度与特殊情形
- 符号确定:对于一个收敛的奇异值 \(\sigma_i\),其符号在SVD定义中是不确定的(因为 \(U\) 和 \(V\) 的对应列可以同时变号)。通常约定使 \(U\) 的列向量第一个分量为非负,或使 \(\Sigma\) 的对角元均为非负。
- 小奇异值:算法对小奇异值也能保持很高的相对精度,这是直接法(如计算 \(A^T A\) 的特征值)无法比拟的优势。
- 计算复杂度:对于 \(m \times n\) 矩阵(假设 \(m \ge n\)),完整SVD的计算量约为 \(O(mn^2)\) 量级。双对角化是主要开销。
- 截断SVD (Truncated SVD):在实际应用中(如大数据、降维),我们往往只需要最大的前 \(k\) 个奇异值及其对应的奇异向量。此时,不需要计算完整的SVD。有更高效的算法,如兰索斯迭代法 或 随机化SVD算法,它们可以直接近似计算这个部分分解,计算复杂度可降至 \(O(mn \log(k) + (m+n)k^2)\) 等,非常适合大规模稀疏矩阵。
总结
数值奇异值分解 是一套精心设计的、数值稳定的算法集合,其核心是通过双对角化将问题简化,再对双对角矩阵应用隐式位移的QR迭代来高精度地求解奇异值和奇异向量。它避免了平方矩阵的病态问题,是现代科学计算软件库(如LAPACK, MATLAB, NumPy/SciPy)中 svd 函数的标准实现基础。从完整的、稳定的直接法,到针对大尺度问题的迭代法和随机化算法,共同构成了“数值奇异值分解”这一丰富而关键的计算数学领域。