翻译自:A Singularly Valuable Decomposition: The SVD of a Matrix – Dan Kalman
简单的介绍
最近在看一篇论文,其中使用的方法是基于奇异值分解的。之前学过的线性代数基本上都忘得差不多了,回头稍微翻了翻,发现其中只有特征分解,貌似没有过多的介绍奇异值分解。网上找了找,发现了 《A Singularly Valuable Decomposition: The SVD of a Matrix》 这篇文章貌似很是经典,所以想着要阅读看看,为了加深自己的理解,方便其他的阅读,我想将这篇文章翻译翻译,不过这篇文章挺长的,原文就有 25 页,需要点时间仔细阅读。
理论部分
简单回顾特征分解EVD
奇异值分解(以下统称 SVD)和对称矩阵对角化理论密切相关。
回顾一下,假设有个矩阵 A ,此矩阵是一个实对称矩阵,大小为 n×n 。则一定存在一个正交矩阵 V 和对角矩阵 D 使得下面的式子成立:
其中正交矩阵 V 中的列向量成为矩阵 A 的特征向量,并且是 n 维实空间 Rn 的一组基。 对角矩阵 D 对角线上的元素称为 A 的特征值。我们将 VDVT 称为矩阵 A 的特征分解(EVD)。
如有什么问题,请看大学线性代数的书
SVD 的形式
相比于特征分解,SVD 不需要矩阵 A 是方阵而且可以对角化。对于任意的矩阵 Am×n ,存在正交矩阵 U 和正交矩阵 V 以及对角矩阵 Σ 使得下式成立:
其中,矩阵 U 的大小是 m×m 。 矩阵 V 的大小是 n×n 。 矩阵 Σ 的大小是 m×n ,和矩阵 A 维度相同。
在矩阵 Σ 中 Σii=σi 称为奇异值(Singular value),一般非负,从大到小排列。矩阵 U 与矩阵 V 中的列向量分别称为左奇异向量(left singular vectors)和右奇异向量(right singular vectors)。
EVD 与 SVD 意义的对比
类比于对称矩阵的特征分解,任意矩阵的 SVD 可以看为是一种线性变换。对于实对称矩阵,特征分解可以看做是由 Rn 到 Rn 的一种变换,其中矩阵 V 的列向量即为变换后的基。 当用这组基来表示向量的时候,可以看到所谓的变换就是简单的将某些基矢量进行按比例缩放,其缩放的大小取决于特征值的大小。更重要的一点是,这个基是正交集,这是我们非常期望的一种形式。
现在让我们转过头来看看对于任意矩阵 Am×n 的 SVD 形式。它所形成的线性变换是从 Rn 到 Rm 的线性变换。因此对于每一个空间,使用自然基是一种非常合理的选择。 而矩阵 U 和矩阵 V 恰好提供了这样的两组基。 当我们将 U 和 V 表示为变换前后空间中的矩阵时,这种变换的本质就很清楚了:这个变换就是简单的根据奇异值的大小某些向量进行缩放;甚至将某些分量直接忽略或者置为零以达到空间维度的变换。从这个角度出发,SVD 告诉我们如何去选择一组正交基从而使得整个矩阵变换呈现一种最简单的形式,即对角矩阵的形式。
实现 SVD 的思路
为了方便描述,下面类比函数的形式,将变换前的空间称为定义域(domain),将变换后的空间称为值域(range)。
如何在定义域和值域中找到一组基: v1,v2,...,vn 和 {u1,u2,...,um} ?想要得到对角线的表示形式并不困难。我们只需要做到:
选择一个 Rn 上的正交基 v1,v2,...,vn ,它的前 k 个元素可以张(张量的张的发音)成矩阵 A 的行空间,其余的 n−k 个元素张成一个空空间,其中 k 是矩阵 A 的秩(rank)。
然后对于任意满足
1≤i≤k
的
i
,定义
为什么这么说呢? 因为对于任意矩阵 Am×n 它的秩 k 与 m,n 存在如下的关系:
k≤min(m,n)这样的话,对于 前 k 个 v1,v2,...,vn 中向量,一定能在 Rm 中找到 k 个单位向量,使得Avi=σiui其中:1≤i≤k成立。 (个人想法,仅供参考)
然而,一般情况尽管我们能保证
v1,v2,...,vn
中的各个向量正交,但是我们并不能保证按照上面的方法得出的
u1,u2,...,um
中的各个向量也是正交的。因此如何选择
v
基使其经矩阵
实现 SVD
下面我们展示的 n×n 对称矩阵 ATA 便会为我们提供最这样的一组基,我们称其为矩阵 ATm×nA 的特征向量。
对于矩阵 ATm×nA ,首先它是一个方阵,其次它是一个对称矩阵,故一定可以进行特征分解,所以有: ATA=VDVT 。其特征值为 λi 在 对角矩阵 D 的对角线按照降序排列(nonincreasing order)。
矩阵
V
中的列向量,即矩阵
ATA
的特征向量,其是
Rn
空间中的一组正交基,把有这个特征向量组成的正交基当做
v
基:
而 vi⋅vj≠0当且仅当i≠j
于是乎很容易得到, Av1,Av2,...,Avn 是 Rn 中的一组正交基。
至此我们似乎找到了:
1. 一组正交基,即
ATA
的特征向量,表示为
v1,v2,...,vn
2. 以及经过矩阵
A
变换后得到的向量两两正交,即
Av1,Av2,...,Avn
两两正交。
满足了上面的条件,于是乎可以将矩阵 A 对角化。
为了进一步完成我们的构造过程。首先需要对向量 Avi 进行归一化处理。
其中
vi
本来就是单位向量,故其模长等于 1。 从上式可看出
λi≥0
。将所有的
λi
从大到小排列可以得到:
λ1≥λ2≥...λk
,其中
k
是矩阵
如果 k<m 可以人为的将 u1,u2,...,uk 扩展为 Rm 的一组正交基。
这样一来,我们就分别构造了 Rn 和 Rm 两个空间中的正交基,分别是 v1,v2,...,un 和 u1,u2,...,um 。 设 σi=λi−−√ ,则有: Avi=σiui;i<k 。
然后将 vi 作为矩阵 V 的列向量;将 ui 作为矩阵 U 的列向量; σi 作为对角矩阵 Σ 的对角线的元素,其他位置的元素为零,并且其与矩阵 A 的维度相同。于是乎可以得到如下的式子:
这便是矩阵 A 的奇异值分解。
做一个小结
对于以上的过程,我们做一个小结。
对于任意的实矩阵 Am×n 都可以将其表示为 UΣVT 的形式,其中: U 和 V 都是正交矩阵,矩阵 Σ 是一个对角矩阵。
矩阵 V 可以从 ATA 的特征分解得到,即 ATA=VDVT 。 其中对角矩阵 D 对角线元素按照从大到小的顺序排列。
矩阵 U 来源于对 AV 中的每个列元素进行归一化处理。 必要的情况下,需要将其扩展为 Rm 的正交基。
矩阵 Σ 中的元素则对应于矩阵 D 中对角线元素的平方根。
结束语
这只是翻译了原文的前两页而已,理论部分基本上就这个么多,后面的部分暂时还没有翻译,翻译完成后,我会发在我自己的博客上:www.wangs0622.com 如果有兴趣的话,欢迎访问。
如果你有什么问题,欢迎评论~
还有就是这个 CSDN 的 markdown 模式下,编写公式的时候,公式后面会出现一个竖线,不知道为什么,就是这只是预览的时候会有这个竖线,正式阅读的时候,就会消失,不知道是不是真的。