从存在性到计算方法
在奇异值分解(一):基本概念与性质中,我们通过构造法证明了任何矩阵 都存在奇异值分解。这个证明过程本身就为我们指明了一条清晰的计算路径。而SVD的计算核心在于求解相关对称矩阵的特征值和特征向量。现在,我们将其系统化为一个具体的算法。
一、奇异值分解的计算步骤
给定一个 的实矩阵 ,其SVD 的计算步骤如下:
第一步:计算 的特征值和特征向量,以确定 和
- 构造对称矩阵 。这是一个 的方阵。
- 求解 的特征值。这需要解特征方程 ,得到 个(非负的)特征值。
- 将这些特征值按从大到小的顺序排列:。
- 计算奇异值 ,并用它们构建 的矩形对角矩阵 。
- 对每一个特征值 ,求解齐次线性方程组 ,得到对应的特征向量。
第二步:标准化特征向量,构造正交矩阵
-
补充:基与正交
- 基 (Basis):在一个向量空间(如 )中,一组“最基本”的向量,通过它们的线性组合可以表示空间中的任何一个向量。这组向量必须是线性无关的。例如,二维平面中的 和 就是一组标准基。
- 正交 (Orthogonal):如果两个向量的点积为零(即 ),我们称它们是正交的。几何上,这意味着它们互相垂直。
- 标准正交基 (Orthonormal Basis):这是一组特殊的基,其中所有基向量不仅相互正交,而且每个向量自身的长度(范数)都为1。
-
我们在第一步中得到的属于不同特征值的特征向量已经是相互正交的。我们需要将每个特征向量 单位化 (normalize),即将其除以自身的长度,使其长度变为1。
-
将这些单位化后的标准正交特征向量作为列,就构成了 的正交矩阵 。
第三步:计算左奇异向量,构造正交矩阵
-
确定 的前 列:设矩阵 的秩为 (即有 个非零奇异值)。对于 ,我们利用上一部分推导出的关系式来计算左奇异向量 :
我们已经证明过,这样得到的 是一个标准正交向量集。
-
确定 的剩余 列:如果 ,矩阵 还有 列需要确定。这些向量需要与 正交,且彼此之间也标准正交。
- 补充:零空间 (Null Space)
- 一个矩阵 的零空间,记为 ,是所有满足方程 的向量 的集合。零空间是一个向量子空间。
- 理论上,这剩下的 个左奇异向量 构成了矩阵 的零空间 的一组标准正交基。
- 因此,我们求解齐次线性方程组 ,找到其解空间的一组基,然后使用 格拉姆-施密特 (Gram-Schmidt) 正交化 方法将这组基转换为标准正交基。
- 补充:零空间 (Null Space)
-
将这两部分向量合并,构成 的正交矩阵 。
第四步:得到最终分解
将计算出的 组合起来,即得到 。
二、完整计算实例分析
问题: 试求矩阵 的奇异值分解。
这是一个 的矩阵。
解:
(1) 求 的特征值和特征向量
首先,计算 :
接下来,求解其特征值。特征方程为 :
解得特征值为 。
现在,我们求对应的特征向量:
-
对于 :
这得到方程 ,即 。我们可以取一个简单的特征向量为 。
-
对于 :
这得到方程 ,即 。我们可以取一个简单的特征向量为 。
(2) 构造矩阵 和
-
构造 : 奇异值为特征值的平方根:,。 是一个 的矩形对角矩阵:
-
构造 : 我们需要将特征向量单位化。 对于 的特征向量 ,其长度为 。单位化后得到 。 对于 的特征向量 ,其长度为 。单位化后得到 。 将它们作为列,构成正交矩阵 :
(3) 构造正交矩阵
矩阵 的秩 (因为只有一个非零奇异值)。
-
计算 :
-
计算 : 我们需要求 的零空间 的一组标准正交基。
求解方程 :
这意味着 , 可以是任意值。该零空间是二维的。我们需要找到两个相互正交的基向量。
- 取 ,得到一个基向量 。
- 取 ,并使其与 正交。一个简单的选择是 ,得到 ,即基向量 。可以验证 。 现在将这两个基向量单位化:
- 。
- 。
注: 零空间的基不是唯一的。例如,取 也是一个合法的基向量,标准化后得到 。只要保证基是标准正交的,最终的SVD分解都是正确的。我们这里采用与书中最终答案一致的 。
-
构造 :
(4) 得到矩阵A的奇异值分解
最后,我们将 组合起来:
所以,最终的SVD分解是:
关于实际计算的补充说明
正如《机器学习方法》所述,上面的基于特征值分解的计算方法主要是为了理论阐述和教学目的。在实际的大规模计算中,直接计算 会存在数值不稳定的风险(例如,如果 的某些奇异值非常小,那么在 中它们的平方会变得更小,可能导致精度损失)。
因此,实际应用中的SVD算法,如在NumPy或PyTorch库中实现的,通常采用更稳定、更高效的迭代方法,例如基于Householder变换或QR分解的变体,它们直接在矩阵 上操作,避免了显式构造 。