奇异值分解 SVD(Singular Value Decomposition)

翻译自: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 使得下面的式子成立:

A=VDVT

其中正交矩阵 V 中的列向量成为矩阵 A 的特征向量,并且是 n 维实空间 Rn 的一组基。 对角矩阵 D 对角线上的元素称为 A 的特征值。我们将 VDVT 称为矩阵 A 的特征分解(EVD)。

如有什么问题,请看大学线性代数的书


SVD 的形式

相比于特征分解,SVD 不需要矩阵 A 是方阵而且可以对角化。对于任意的矩阵 Am×n ,存在正交矩阵 U 和正交矩阵 V 以及对角矩阵 Σ 使得下式成立:

A=UΣVT

其中,矩阵 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} ?想要得到对角线的表示形式并不困难。我们只需要做到:

Avi=σiui

选择一个 Rn 上的正交基 v1,v2,...,vn ,它的前 k 个元素可以张(张量的张的发音)成矩阵 A 的行空间,其余的 nk 个元素张成一个空空间,其中 k 是矩阵 A 的秩(rank)。

然后对于任意满足 1ik i ,定义 Rm 空间中的单位向量 ui ,它平行于 Avi 。 将这个关系式在整个 Rm 空间推广。如此一来,矩阵 A 将会有一个对角形式的表示。

为什么这么说呢? 因为对于任意矩阵 Am×n 它的秩 k 与 m,n 存在如下的关系:

kmin(m,n)
这样的话,对于 前 k 个 v1,v2,...,vn 中向量,一定能在 Rm 中找到 k 个单位向量,使得
Avi=σiui:1ik
成立。 (个人想法,仅供参考)

然而,一般情况尽管我们能保证 v1,v2,...,vn 中的各个向量正交,但是我们并不能保证按照上面的方法得出的 u1,u2,...,um 中的各个向量也是正交的。因此如何选择 v 基使其经矩阵 A 变换后仍能保持正交性,这是一个很关键的问题。


实现 SVD

下面我们展示的 n×n 对称矩阵 ATA 便会为我们提供最这样的一组基,我们称其为矩阵 ATm×nA 的特征向量。

对于矩阵 ATm×nA ,首先它是一个方阵,其次它是一个对称矩阵,故一定可以进行特征分解,所以有: ATA=VDVT 。其特征值为 λi 在 对角矩阵 D 的对角线按照降序排列(nonincreasing order)。

矩阵 V 中的列向量,即矩阵 ATA 的特征向量,其是 Rn 空间中的一组正交基,把有这个特征向量组成的正交基当做 v 基:v1,v2,...,vn,则有:

AviAvj=(Avi)T(Avi)=vTiATAvj=vTi(λjvj)=λjvivj

vivj0ij

于是乎很容易得到, Av1,Av2,...,Avn Rn 中的一组正交基。

至此我们似乎找到了:
1. 一组正交基,即 ATA 的特征向量,表示为 v1,v2,...,vn
2. 以及经过矩阵 A 变换后得到的向量两两正交,即 Av1,Av2,...,Avn 两两正交。

满足了上面的条件,于是乎可以将矩阵 A 对角化。

为了进一步完成我们的构造过程。首先需要对向量 Avi 进行归一化处理。

|Avi|2=AviAvi=λivivi=λi

其中 vi 本来就是单位向量,故其模长等于 1。 从上式可看出 λi0 。将所有的 λi 从大到小排列可以得到: λ1λ2...λk ,其中 k 是矩阵 A 的秩。对于任意的 i>k 都有 λi=0 。于是乎可以将值域的正交基定义为:

ui=Avi|Avi|=1λiAvi;1ik

如果 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=UΣVT

这便是矩阵 A 奇异值分解


做一个小结

对于以上的过程,我们做一个小结。

对于任意的实矩阵 Am×n 都可以将其表示为 UΣVT 的形式,其中: U V 都是正交矩阵,矩阵 Σ 是一个对角矩阵。

矩阵 V 可以从 ATA 的特征分解得到,即 ATA=VDVT 。 其中对角矩阵 D 对角线元素按照从大到小的顺序排列。

矩阵 U 来源于对 AV 中的每个列元素进行归一化处理。 必要的情况下,需要将其扩展为 Rm 的正交基。

矩阵 Σ 中的元素则对应于矩阵 D 中对角线元素的平方根。

结束语

这只是翻译了原文的前两页而已,理论部分基本上就这个么多,后面的部分暂时还没有翻译,翻译完成后,我会发在我自己的博客上:www.wangs0622.com 如果有兴趣的话,欢迎访问。

如果你有什么问题,欢迎评论~

还有就是这个 CSDN 的 markdown 模式下,编写公式的时候,公式后面会出现一个竖线,不知道为什么,就是这只是预览的时候会有这个竖线,正式阅读的时候,就会消失,不知道是不是真的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 奇异值分解Singular Value DecompositionSVD)是一种矩阵分解的方法,将一个矩阵分解为三个矩阵的乘积,其中一个矩阵是正交矩阵,另外两个矩阵是对角矩阵。SVD在数据分析、信号处理、图像处理等领域有广泛的应用。它可以用于降维、数据压缩、矩阵近似、特征提取等任务。 ### 回答2: 奇异值分解Singular Value DecompositionSVD)是矩阵分解的一种方法,它可以将一个复杂的数据矩阵分解成三个简单的矩阵的乘积的形式。这三个矩阵包括:左奇异向量矩阵、奇异值矩阵和右奇异向量矩阵。 在SVD中,奇异值是矩阵的特征值,奇异向量是矩阵的特征向量,而左奇异向量和右奇异向量分别代表数据矩阵在两个不同空间上的特殊变换。在数据处理和分析中,SVD可以用于减少噪声,压缩数据,以及解决线性方程组等问题。 SVD最初由数学家Eckart和Young在1936年提出,而在20世纪60年代和70年代,它才得到了广泛的应用。目前,SVD已经成为了很多数据分析、机器学习和人工智能领域中最常用的技术之一。 在实际应用中,SVD可以用于图像处理、推荐系统、自然语言处理、文本分类、维度约简和信号处理等领域。例如,在推荐系统中,SVD可以用于预测用户对产品的评分,从而为用户推荐最符合他们兴趣的商品。在文本分类中,SVD可以将高维的单词向量映射到低维空间中,从而提高分类的性能。 虽然SVD在许多应用中取得了成功,但其计算代价很高,因此通常需要进行优化以提高效率。一些优化技术包括截断SVD(Truncated SVD)、随机SVD(Randomized SVD)和增量SVD(Incremental SVD)等。这些技术可以降低计算复杂度和内存消耗,提高SVD的速度和可用性。 ### 回答3: 奇异值分解singular value decomposition, 简称SVD)是一种用于矩阵分解的数学方法,它将一个复杂的矩阵分解成三个部分:U、Σ、V。其中U和V都是正交矩阵,而Σ是一个对角矩阵,对角线上的元素称为奇异值。SVD的应用广泛,例如在图像压缩、信号处理、语音识别、推荐系统等领域都有重要的作用。 SVD的本质目标是将矩阵M表示为下述的累加形式: M = UΣV^T 其中,U和V都是矩阵,Σ是一个对角线上元素按从大到小排列的矩阵,它们的关系是这样的:矩阵M的秩r等于Σ中非零元素的个数。因此,奇异值从大到小表示了矩阵中的信号能量大小,而U和V则表示了信号在不同的方向上的分解SVD可以应用于很多问题中。例如,在图像压缩中,可以使用SVD对图像矩阵进行分解,并选取前k个奇异值对应的列向量,再把它们相乘,得到一个近似于原图像的低维矩阵,从而实现图像的压缩。在推荐系统中,SVD可以用来将用户评价和物品特征分解成低维矩阵,从而实现对用户和物品的推荐。此外,SVD还被广泛地应用于语音识别、图像识别等领域。 总的来说,SVD是一种强有力的数学工具,它可以对矩阵进行分解,并提取出有用的信息。由于它的广泛应用和独特的分解方式,SVD也成为了计算机科学和应用数学中的一个热门研究领域。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值