线性代数笔记17:SVD通俗理解

前面已经对SVD进行了推导,但自己一直理解不够深入,知道看了Strang教授的视频才恍然大悟。

思考

  • 对于对称矩阵,我们知道,可以分解为 A=QΛQT A = Q Λ Q T ,这是很美妙和对称的式子,但对于一般的矩阵,我们怎么能得到类似的式子呢?

  • 我们的目标是想要找到两组不同的正交矩阵( U U V V )和对角矩阵 Λ Λ ,来表示 A A

子空间

  • 这里,我们回到四个基本子空间。我们可以在行空间(row space)中找到一组标准正交基(这很容易),将其进行映射后(通过 A A ),转化为列空间(column space)中的标准正交基。也就是说,在行空间中的 V1 V 1 ,通过 AV1 A V 1 转化为列空间中的 U1 U 1

    AV1=σ1U1 A V 1 = σ 1 U 1

    其中 σ1 σ 1 为伸缩因子。

  • 将所有行空间和列空间中的标准正交基写成矩阵的形式:

    A(V1,...,Vr)=(U1,...,Ur)diag(σ1,...,σr) A ( V 1 , . . . , V r ) = ( U 1 , . . . , U r ) d i a g ( σ 1 , . . . , σ r )

    其中, r r 表示矩阵的秩。

  • 我们很容易将其扩充为整个行空间和列空间:

    A(V1,...,Vr,Vr+1,....Vm)=(U1,...,Ur,Ur+1,...,Un)diag(σ1,...,σr,0,...,0) A ( V 1 , . . . , V r , V r + 1 , . . . . V m ) = ( U 1 , . . . , U r , U r + 1 , . . . , U n ) d i a g ( σ 1 , . . . , σ r , 0 , . . . , 0 )

  • 其中,扩充的基向量来源于零空间和左零空间(这很容易)。

回到SVD

  • 这样,我们整理一下就得到:

    AV=U A V = U ∑

    A=UV1=UVT A = U ∑ V − 1 = U ∑ V T

  • 这就是SVD分解:我们需要在行空间和列空间中找到两组不同的基,并且这两组基可以通过 A A 相互转换。

  • 然而,这还不够。我们不知道如何求得 U U V V 。最常见的想法就是:我们把一个变量消去,只保留一个变量,这样就容易求解了。

  • 幸运的是,这很容易,考虑:

    ATA=VTUTUV=V2VT=Vdiag(σ21,...)VT A T A = V ∑ T U T U ∑ V = V ∑ 2 V T = V d i a g ( σ 1 2 , . . . ) V T

    我们发现, ATA A T A 这个对称矩阵中, V V 就是其特征值,而它的所有非零特征向量都是正的,因此这个矩阵是半正定的。

  • 可以对 AAT A A T 同样进行求解求得 U U

  • 我们发现,尽管 A A 是任意矩阵,但 ATA A T A AAT A A T 很特殊,并且可以通过求其的特征向量来对 A A 进行奇异值分解。

  • 实际上, ATA A T A AAT A A T 还有更为特殊的关系(特征值相同等等),严格的推导可以参考我这篇博客。

总结

其实SVD没什么特别的,就是我们对于实对称矩阵的推广。

经过分析,我们发现在列空间和行空间中找到一组基,可以使得任意矩阵分解成 A=UVT A = U ∑ V T 的形式。

并且,求解 U U V V 并不复杂,与 AAT A A T ATA A T A 有关。

在求解时,先求 AAT A A T 的特征值和特征向量,其特征向量单位化后就是 U U 的前r列,再将其扩充到左零空间;同样,求 ATA A T A 的特征向量,单位化后就是 V V 的前r列,再将其扩充到零空间;填充 ,即可求解。

你可能感兴趣的:(linear,algebra,数据科学的线性代数基础)