SVD背后的直觉是什么?


50

我已经读过关于奇异值分解(SVD)的文章。在几乎所有的教科书中都提到将矩阵分解为具有给定规格的三个矩阵。

但是,以这种形式拆分矩阵背后的直觉是什么?PCA和其他用于降维的算法在算法具有良好的可视化特性的意义上是直观的,但使用SVD并非如此。


4
您可能想从特征值-特征向量分解的直觉开始,因为SVD是它对所有矩阵的扩展,而不仅仅是平方矩阵。
JohnK

互联网上有很多笔记,有关SVD及其工作原理的CV,这里有解答。
弗拉迪斯拉夫(Vladislavs Dovgalecs)2015年

2
SVD可以看作是一种压缩/学习算法。它是线性压缩机减压器。矩阵M可以通过SVD的乘法来表示。S是压缩器,V决定您想要多少误差(有损压缩),D是解压缩器。如果保留所有V的对角线值,那么您将拥有无损压缩器。如果您开始丢掉小的奇异值(将它们清零),那么您将无法精确地重建初始矩阵,但仍然很接近。在这里,术语“关闭”以Frobenius范数衡量。
Cagdas Ozgenc

2
@Cagdas如果这样做,请仔细定义数学上要采用的“ S”,“ V”和“ D”的含义。我之前从未看到过缩写过载到符号本身中(例如,其中有奇异值吗?)。这似乎是造成混乱的原因,
Glen_b 2015年

3
您知道如何用SVD估算PCA吗?如果您这样做了,那么您能否解释一下您为什么对SVD的理解缺少某些东西?看到这个
Aksakal

Answers:


63

写矩阵的SVD(实,)为 其中是,是对角和是。在矩阵的列的术语和,我们可以写出 。这表明写为 rank-1矩阵之和。等级1矩阵是什么样的?让我们来看看: n × p X = U D V T U n × p D p × p V T p × p UXn×p

X=UDVT
Un×pDp×pVTp×pUX = p i = 1 d i u i v T i X p 1 2 34 5 6 = 4 5 6 8 10 12 12 15VX=i=1pdiuiviTXp
(123)(456)=(45681012121518)
行成比例,列成比例。

现在考虑一下,它包含黑白图像的灰度值,矩阵中的每个条目代表一个像素。例如下面的狒狒图片:X

狒狒的形象

然后将此图像读取到R中,并使用库来获取结果结构的矩阵部分pixmap


如果您需要有关如何重现结果的分步指南,请在此处找到代码


计算SVD:

baboon.svd  <-  svd(bab) # May take some time

我们如何考虑呢?我们得到狒狒图像,表示为简单图像的总和,每个图像仅显示垂直和水平结构,即它是垂直和水平条纹的图像!因此,狒狒的SVD将狒狒图像表示为简单图像的叠加,每个图像仅显示水平/垂直条纹。让我们计算具有成分和成分的图像的低阶重建:512 512 1 20512×512512512120

baboon.1  <-  sweep(baboon.svd$u[,1,drop=FALSE],2,baboon.svd$d[1],"*") %*%
                   t(baboon.svd$v[,1,drop=FALSE])

baboon.20 <-  sweep(baboon.svd$u[,1:20,drop=FALSE],2,baboon.svd$d[1:20],"*") %*%
                   t(baboon.svd$v[,1:20,drop=FALSE])

产生以下两个图像:

狒狒图像排名第一和排名20

在左侧,我们可以轻松地在等级1图像中看到垂直/水平条纹。

最后,让我们看一下“残差图像”,即从奇异值最低的秩一图像中重建的图像(如上所述,未显示代码)。这里是:20

等级20狒狒重建中的残差图像

这很有趣:我们看到原始图像中难以表现为垂直/水平线重叠的部分,主要是对角鼻毛和一些纹理以及眼睛!


11
我认为您的意思是低阶重建,而不是低射程。没关系。这是一个很好的例子(+1)。这就是为什么它是线性压缩机解压缩器。图像用线近似。如果您实际上使用带有线性激活功能的神经网络执行类似的自动编码器,则实际上会看到它还允许具有任意斜率的线(不仅是垂直线和水平线),这使其比SVD的功能更强大。
Cagdas Ozgenc

@ kjetil-b-halvorsen 对于矩阵,SVD不应该导致为,为和为?错别字? Ñ × p X ù Ñ × Ñ Σ Ñ × p V p × pX=UΣVn×pXUn×nΣn×pVp×p
MartinKrämer17年


@ kjetil-b-halvorsen我很想知道如果我使用PCA来表示应用程序,则去污效果会如何变化。如果你能在这里回答我的问题,我将不胜感激stats.stackexchange.com/questions/412123/...
达希恩特·库马尔

@CowboyTrader有趣的观察。我对机器学习/神经网络的理解非常有限。因此,我无法理解,如果一个人只有一个嘈杂的图像而没有其他要训练的东西,那么神经网络将如何工作?
Dushyant Kumar

3

Am×nmnvA

(1)v1=argmaxvRnAv2subject to v2=1.
v1A
v2=argmaxvRnAv2subject to v1,v=0,v2=1.
v1,,vnRnRnA

令(因此量化在方向的爆炸力)。假设定义了单位向量,使得 等式(2)可以简明地使用矩阵符号作为待表达 其中是矩阵,它的列是,是矩阵,它的第列是和σi=Avi2σiAviui

(2)Avi=σiuifor i=1,,n.
(3)AV=UΣ,
Vn×niviUm×niuiΣ是第个对角线项是的对角矩阵。矩阵是正交的,因此我们可以将(3)的两边乘以以获得 看来我们现在以几乎零的努力得出了的SVD 。到目前为止,没有一个步骤很困难。但是,图片的关键部分缺失了-我们尚不知道是正交的。n×niσiVVT
A=UΣVT.
AU

这是关键的事实,是缺少的部分:事实证明与正交: 我声称如果这不是真的,则对于问题(1)并非最佳。确实,如果不满足(4),则有可能通过在方向上对其进行微扰来改善Av1Av2

(4)Av1,Av2=0.
v1 v1v2

假设(矛盾)不满足(4)。如果在正交方向受到轻微干扰,则的范数不会更改(或者至少可以忽略的范数的更改)。当我在地球表面行走时,我到地球中心的距离不会改变。但是,当在方向上受到扰动时,矢量在非正交方向受到扰动,因此范数的变化是不可忽略的。的规范v1v2v1v1v1v2Av1Av2Av1Av1可以增加不可忽略的数量。这意味着对于问题(1)并不是最佳的,这是一个矛盾。我喜欢这种说法,因为:1)直觉很明确;2)直觉可以直接转换为严格的证明。v1

类似的论点表明与和正交,依此类推。向量是成对正交的。这意味着单位矢量可以选择为成对正交,这意味着上面的矩阵是正交矩阵。这完成了我们对SVD的发现。Av3Av1Av2Av1,,Avnu1,,unU


为了将上述直观的论据转化为严格的证明,我们必须面对这样一个事实:如果在方向上受到扰动,则扰动向量 并不是真正的单位向量。(其规范为。)要获得严格的证明,请定义 向量实际上是一个单位向量。但是您可以很容易地看出,如果不满足(4),则对于足够小的值,我们有 (假设的符号v1v2

v~1=v1+ϵv2
1+ϵ2
v¯1(ϵ)=1ϵ2v1+ϵv2.
v¯1(ϵ)ϵ
f(ϵ)=Av¯1(ϵ)22>Av122
ϵ选择正确)。为了显示这一点,只需检查。这意味着对于问题(1)并不是最佳的,这是一个矛盾。f(0)0v1

(顺便说一句,我建议在这里阅读乔巧媛对SVD的解释。特别是,请看一下我们上面讨论的“关键引理#1”。正如乔楚说的那样,关键引理1是“技术的核心值分解”。)


0

杜德(Dude)花了一个小时的时间观看此讲座:https : //www.youtube.com/watch?v=EokL7E6o1AE

这个家伙超级直截了当,重要的是不要跳过任何一个,因为所有这些最终都会融合在一起。即使开始时看起来可能有点慢,他仍在努力确定一个关键点,他做到了!

我将为您总结一下,而不仅仅是给您提供每个人都做的三个矩阵(因为当我阅读其他说明时,这使我感到困惑)。这些矩阵从何而来,为什么我们要这样设置呢?讲座钉了它!可以从具有相同尺寸的基本矩阵构造每个矩阵(在有史以来的任何历史中),然后旋转并拉伸(这是线性代数的基本定理)。人们抛出的这三个矩阵中的每个矩阵都代表一个初始矩阵(U),一个缩放矩阵(sigma)和一个旋转矩阵(V)。

比例矩阵显示出主导旋转的矢量,这些称为奇异值。分解正在求解U,sigma和V。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.