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

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

思考

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

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

子空间

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

    A V 1 = σ 1 U 1

    其中 σ 1 为伸缩因子。

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

    A ( V 1 , . . . , V r ) = ( U 1 , . . . , U r ) d i a g ( σ 1 , . . . , σ r )

    扫描二维码关注公众号,回复: 1069713 查看本文章

    其中, r 表示矩阵的秩。

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

    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

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

    A V = U

    A = U V 1 = U V T

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

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

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

    A T A = V T U T U V = V 2 V T = V d i a g ( σ 1 2 , . . . ) V T

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

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

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

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

总结

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

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

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

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

猜你喜欢

转载自blog.csdn.net/crazy_scott/article/details/80118087